/* rfc 3447, section 7.1.2 */
static int unpad_oaep(unsigned char *in, size_t in_len, unsigned char *out,
size_t *out_len)
-{ int ret;
+{
unsigned char *masked_seed = in + 1;
unsigned char *db = in + 1 + HASH_SIZE;
unsigned char seed[HASH_SIZE], seed_mask[HASH_SIZE];
p++;
*out_len = in + in_len - p;
memcpy(out, p, *out_len);
- return ret;
+ return 1;
}
struct asymmetric_key {
PARA_DEBUG_LOG("decrypted buffer before unpad (%d bytes):\n",
key_size);
dump_buffer("non-unpadded decrypted buffer", oaep_buf, key_size);;
- unpad_oaep(oaep_buf, key_size, outbuf, nbytes);
+ ret = unpad_oaep(oaep_buf, key_size, outbuf, nbytes);
+ if (ret < 0)
+ goto out_mpi_release;
PARA_DEBUG_LOG("decrypted buffer after unpad (%zu bytes):\n",
*nbytes);
dump_buffer("unpadded decrypted buffer", outbuf, *nbytes);;