extern "C" int32_t EcDsaSign(const uint8_t* dgst, int32_t dgstlen, uint8_t* sig, int32_t* siglen, EC_KEY* key) { if (!siglen) { return 0; } unsigned int unsignedSigLength = UnsignedCast(*siglen); int ret = ECDSA_sign(0, dgst, dgstlen, sig, &unsignedSigLength, key); *siglen = SignedCast(unsignedSigLength); return ret; }
extern "C" int32_t CryptoNative_HmacFinal(HMAC_CTX* ctx, uint8_t* md, int32_t* len) { assert(ctx != nullptr); assert(len != nullptr); assert(md != nullptr || *len == 0); assert(*len >= 0); if (len == nullptr || *len < 0) { return 0; } unsigned int unsignedLen = UnsignedCast(*len); int ret = HMAC_Final(ctx, md, &unsignedLen); *len = SignedCast(unsignedLen); return ret; }