123456789101112131415161718192021222324252627282930313233343536373839 |
- #include "crypto-helpers.hpp"
- #include "mbedtls/md.h"
- #include "mbedtls/pk.h"
- bool VerifySignature(const uint8_t *pubKey, const size_t pubKeyLen,
- const uint8_t *buf, const size_t len, const uint8_t *sig,
- const size_t sigLen)
- {
- bool result = false;
- int ret = 1;
- unsigned char hash[64];
- mbedtls_pk_context pk;
- mbedtls_pk_init(&pk);
- // Parse PEM key
- if ((ret = mbedtls_pk_parse_public_key(&pk, pubKey, pubKeyLen + 1)) !=
- 0) {
- goto exit;
- }
- // Hash input buffer
- if ((ret = mbedtls_md(mbedtls_md_info_from_type(MBEDTLS_MD_SHA512), buf,
- len, hash)) != 0) {
- goto exit;
- }
- // Verify signautre
- if ((ret = mbedtls_pk_verify(&pk, MBEDTLS_MD_SHA512, hash, 64, sig,
- sigLen)) != 0) {
- goto exit;
- }
- result = true;
- exit:
- mbedtls_pk_free(&pk);
- return result;
- }
|