summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngela Anderton Andin <ingela@erlang.org>2022-02-07 16:33:42 +0100
committerIngela Anderton Andin <ingela@erlang.org>2022-02-28 09:50:49 +0100
commit8806ff232c2bd094f3ef19f15560d60485f94853 (patch)
tree1b06b7d1969a2ffb7488345773545036d45ac284
parentbf7081f32a19ee457f0c0c685b89ab1215a3ec53 (diff)
downloaderlang-8806ff232c2bd094f3ef19f15560d60485f94853.tar.gz
public_key: Make pkix_normalize_name/1 also handle der_encoded() input
-rw-r--r--lib/public_key/src/pubkey_cert.erl4
-rw-r--r--lib/public_key/src/public_key.erl8
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/public_key/src/pubkey_cert.erl b/lib/public_key/src/pubkey_cert.erl
index 9e3cc52d24..f3796736a1 100644
--- a/lib/public_key/src/pubkey_cert.erl
+++ b/lib/public_key/src/pubkey_cert.erl
@@ -244,12 +244,12 @@ validate_extensions(OtpCert, ValidationState, UserState, VerifyFun) ->
{ValidationState, UserState}
end.
%%--------------------------------------------------------------------
--spec normalize_general_name({rdnSequence, term()}) -> {rdnSequence, term()}.
+-spec normalize_general_name({rdnSequence, term()}| binary()) -> {rdnSequence, term()}.
%%
%% Description: Normalizes a general name so that it can be easily
%% compared to another genral name.
%%--------------------------------------------------------------------
-normalize_general_name({rdnSequence, Issuer}) ->
+normalize_general_name({rdnSequence, Issuer}) ->
NormIssuer = do_normalize_general_name(Issuer),
{rdnSequence, NormIssuer}.
diff --git a/lib/public_key/src/public_key.erl b/lib/public_key/src/public_key.erl
index b3b830b3c8..dc64a05ca4 100644
--- a/lib/public_key/src/public_key.erl
+++ b/lib/public_key/src/public_key.erl
@@ -767,7 +767,7 @@ compute_key(PubKey, PrivKey, #'DHParameter'{prime = P, base = G}) ->
when AlgorithmId :: oid(),
%% Relevant dsa digest type is a subset of rsa_digest_type()
DigestType :: crypto:rsa_digest_type() | none,
- SignatureType :: rsa | dsa | ecdsa .
+ SignatureType :: rsa | dsa | ecdsa | eddsa.
%% Description:
%%--------------------------------------------------------------------
pkix_sign_types(?sha1WithRSAEncryption) ->
@@ -1121,12 +1121,16 @@ pkix_crl_issuer(#'CertificateList'{} = CRL) ->
%%--------------------------------------------------------------------
-spec pkix_normalize_name(Issuer) -> Normalized
- when Issuer :: issuer_name(),
+ when Issuer :: issuer_name() | der_encoded(),
Normalized :: issuer_name() .
%%
%% Description: Normalizes a issuer name so that it can be easily
%% compared to another issuer name.
%%--------------------------------------------------------------------
+pkix_normalize_name(Issuer) when is_binary(Issuer) ->
+ PlainGenName = der_decode('Name', Issuer),
+ GenName = pubkey_cert_records:transform(PlainGenName, decode),
+ pkix_normalize_name(GenName);
pkix_normalize_name(Issuer) ->
pubkey_cert:normalize_general_name(Issuer).