如何使用此功能。
int mbedtls_pk_verify(mbedtls_pk_context * ctx,mbedtls_md_type_t md_alg,const unsigned char * hash,size_t hash_len,const unsigned char * sig,size_t sig_len)所以……
md 是个 message digest (通常是哈希值)。
md
message digest
要验证签名,您必须通过 相同的哈希算法 在创建签名时使用的。如果签名是使用SHA1创建的,则必须首先计算要验证的消息的SHA1哈希值。然后将此值及其长度(在本例中为20个字节)与函数一起传递。
您可以使用mbedtls库本身来计算消息摘要:
// Get the message digest info structure for SHA1 mbetdtls_md_info_t *mdinfo = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1); char *md = malloc(mdinfo->size); // Calculate the message digest for the data mbedtls_md(mdinfo, data, datalen, md); // Now verify the signature for the given hash of the data int st = mbedtls_pk_verify(&public_key_context, mdinfo->type, md, mdinfo->size, signature, signature_length); if (st != 0) { // Signature invalid! } else { // Signature valid } free(md);
这应该做你需要的。