OpenSSL requires a signature length of exactly RSA_size()
This commit is contained in:
@@ -90,13 +90,11 @@ static bool verify_emsa_pkcs1_signature(private_openssl_rsa_public_key_t *this,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove any preceding 0-bytes from signature */
|
/* VerifyFinal expects a signature of exactly RSA size (no leading 0x00) */
|
||||||
while (signature.len && *(signature.ptr) == 0x00)
|
if (signature.len > RSA_size(this->rsa))
|
||||||
{
|
{
|
||||||
signature.len -= 1;
|
signature = chunk_skip(signature, signature.len - RSA_size(this->rsa));
|
||||||
signature.ptr++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
valid = (EVP_VerifyFinal(ctx, signature.ptr, signature.len, key) == 1);
|
valid = (EVP_VerifyFinal(ctx, signature.ptr, signature.len, key) == 1);
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|||||||
Reference in New Issue
Block a user