diff options
Diffstat (limited to 'lib/public_key/src')
-rw-r--r-- | lib/public_key/src/pubkey_cert.erl | 6 | ||||
-rw-r--r-- | lib/public_key/src/public_key.erl | 7 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/public_key/src/pubkey_cert.erl b/lib/public_key/src/pubkey_cert.erl index 5ab9642279..b76e32a2a0 100644 --- a/lib/public_key/src/pubkey_cert.erl +++ b/lib/public_key/src/pubkey_cert.erl @@ -351,7 +351,7 @@ extensions_list(Extensions) -> extract_verify_data(OtpCert, DerCert) -> - {0, Signature} = OtpCert#'OTPCertificate'.signature, + {_, Signature} = OtpCert#'OTPCertificate'.signature, SigAlgRec = OtpCert#'OTPCertificate'.signatureAlgorithm, SigAlg = SigAlgRec#'SignatureAlgorithm'.algorithm, PlainText = encoded_tbs_cert(DerCert), @@ -376,6 +376,10 @@ encoded_tbs_cert(Cert) -> digest_type(?sha1WithRSAEncryption) -> sha; +digest_type(?sha256WithRSAEncryption) -> + sha256; +digest_type(?sha512WithRSAEncryption) -> + sha512; digest_type(?md5WithRSAEncryption) -> md5; digest_type(?'id-dsa-with-sha1') -> diff --git a/lib/public_key/src/public_key.erl b/lib/public_key/src/public_key.erl index 753322b46d..2e2a6cd296 100644 --- a/lib/public_key/src/public_key.erl +++ b/lib/public_key/src/public_key.erl @@ -48,7 +48,7 @@ -type rsa_padding() :: 'rsa_pkcs1_padding' | 'rsa_pkcs1_oaep_padding' | 'rsa_no_padding'. -type public_crypt_options() :: [{rsa_pad, rsa_padding()}]. --type rsa_digest_type() :: 'md5' | 'sha'. +-type rsa_digest_type() :: 'md5' | 'sha'| 'sha256' | 'sha512'. -type dss_digest_type() :: 'none' | 'sha'. -define(UINT32(X), X:32/unsigned-big-integer). @@ -354,7 +354,10 @@ sign(PlainText, sha, #'DSAPrivateKey'{p = P, q = Q, g = G, x = X}) %%-------------------------------------------------------------------- verify(PlainText, DigestType, Signature, #'RSAPublicKey'{modulus = Mod, publicExponent = Exp}) - when is_binary (PlainText), DigestType == sha; DigestType == md5 -> + when is_binary (PlainText) and (DigestType == sha orelse + DigestType == sha256 orelse + DigestType == sha512 orelse + DigestType == md5) -> crypto:rsa_verify(DigestType, sized_binary(PlainText), sized_binary(Signature), |