diff options
author | Ingela Anderton Andin <[email protected]> | 2010-09-01 12:24:59 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2010-09-01 12:24:59 +0200 |
commit | 40436debcac9645817c4799fe27d32b6bfa8fddd (patch) | |
tree | d1061aaa1b2b148dd86bbcff7a7cdb4c79e00e54 | |
parent | d10b3698655328fc19a34fb6c7d37319547dc945 (diff) | |
parent | 0eefda04fc9bb93ab2c73ad4f75c8eb4d6e5dfa6 (diff) | |
download | otp-40436debcac9645817c4799fe27d32b6bfa8fddd.tar.gz otp-40436debcac9645817c4799fe27d32b6bfa8fddd.tar.bz2 otp-40436debcac9645817c4799fe27d32b6bfa8fddd.zip |
Merge branch 'ia/ssl-public_key-empty-cert-chain/OTP-8788' into dev
-rw-r--r-- | lib/ssl/src/ssl_certificate.erl | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/ssl/src/ssl_certificate.erl b/lib/ssl/src/ssl_certificate.erl index a42cd0c10d..5026c760bd 100644 --- a/lib/ssl/src/ssl_certificate.erl +++ b/lib/ssl/src/ssl_certificate.erl @@ -55,32 +55,32 @@ %% errors. Returns {RootCert, Path, VerifyErrors} %%-------------------------------------------------------------------- trusted_cert_and_path(CertChain, CertDbRef) -> - [Cert | RestPath] = lists:reverse(CertChain), + Path = [Cert | _] = lists:reverse(CertChain), OtpCert = public_key:pkix_decode_cert(Cert, otp), - IssuerAnPath = + IssuerID = case public_key:pkix_is_self_signed(OtpCert) of true -> {ok, IssuerId} = public_key:pkix_issuer_id(OtpCert, self), - {IssuerId, RestPath}; - false -> + IssuerId; + false -> case public_key:pkix_issuer_id(OtpCert, other) of {ok, IssuerId} -> - {IssuerId, [Cert | RestPath]}; + IssuerId; {error, issuer_not_found} -> case find_issuer(OtpCert, no_candidate) of {ok, IssuerId} -> - {IssuerId, [Cert | RestPath]}; + IssuerId; Other -> - {Other, [Cert | RestPath]} + Other end end end, - case IssuerAnPath of - {{error, issuer_not_found}, Path} -> + case IssuerID of + {error, issuer_not_found} -> %% The root CA was not sent and can not be found. {unknown_ca, Path}; - {{SerialNr, Issuer}, Path} -> + {SerialNr, Issuer} -> case ssl_manager:lookup_trusted_cert(CertDbRef, SerialNr, Issuer) of {ok, {BinCert,_}} -> {BinCert, Path}; |