int RsaSSL_Verify(const byte* in, word32 inLen, byte* out, word32 outLen, RsaKey* key) { int plainLen, ret; byte* tmp; byte* pad = 0; if ( !(tmp = (byte*)XMALLOC(inLen, key->heap, DYNAMIC_TYPE_RSA)) ) return MEMORY_E; XMEMCPY(tmp, in, inLen); if ((ret = plainLen = RsaSSL_VerifyInline(tmp, inLen, &pad, key)) < 0) { XFREE(tmp, key->heap, DYNAMIC_TYPE_RSA); return ret; } if (plainLen > (int)outLen) plainLen = BAD_FUNC_ARG; else XMEMCPY(out, pad, plainLen); XMEMSET(tmp, 0x00, inLen); XFREE(tmp, key->heap, DYNAMIC_TYPE_RSA); return plainLen; }
int RsaSSL_Verify(const byte* in, word32 inLen, byte* out, word32 outLen, RsaKey* key) { int plainLen, ret; byte* tmp; byte* pad = 0; #ifdef HAVE_CAVIUM if (key->magic == CYASSL_RSA_CAVIUM_MAGIC) return CaviumRsaSSL_Verify(in, inLen, out, outLen, key); #endif tmp = (byte*)XMALLOC(inLen, key->heap, DYNAMIC_TYPE_RSA); if (tmp == NULL) { return MEMORY_E; } XMEMCPY(tmp, in, inLen); if ((ret = plainLen = RsaSSL_VerifyInline(tmp, inLen, &pad, key)) < 0) { XFREE(tmp, key->heap, DYNAMIC_TYPE_RSA); return ret; } if (plainLen > (int)outLen) plainLen = BAD_FUNC_ARG; else XMEMCPY(out, pad, plainLen); XMEMSET(tmp, 0x00, inLen); XFREE(tmp, key->heap, DYNAMIC_TYPE_RSA); return plainLen; }