diff options
author | Ingela Anderton Andin <[email protected]> | 2010-09-27 10:17:22 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2010-09-27 10:17:22 +0200 |
commit | 2e96bd45aeab647a839cd8b0a0741267cc0a70e5 (patch) | |
tree | e0df325de559ff67f3a6d357d391fa9bc49e35cf /lib/ssl/src/ssl_certificate.erl | |
parent | 0a1f48c46cf629af7d3719e94250733d1589efa1 (diff) | |
parent | 266ea3592e49cc93e69735eea4572e95fedc6a19 (diff) | |
download | otp-2e96bd45aeab647a839cd8b0a0741267cc0a70e5.tar.gz otp-2e96bd45aeab647a839cd8b0a0741267cc0a70e5.tar.bz2 otp-2e96bd45aeab647a839cd8b0a0741267cc0a70e5.zip |
Merge branch 'ia/ssl-and-public_key/backwards-compatibility/OTP-8858' into dev
* ia/ssl-and-public_key/backwards-compatibility/OTP-8858:
Backwards compatibility
Conflicts:
lib/ssl/src/ssl_certificate_db.erl
Use short INFO-message. Debugging information can be fairly
easily recreated so we do not want to clutter the logs.
Diffstat (limited to 'lib/ssl/src/ssl_certificate.erl')
-rw-r--r-- | lib/ssl/src/ssl_certificate.erl | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/ssl/src/ssl_certificate.erl b/lib/ssl/src/ssl_certificate.erl index d2ab21657c..3c7ce837e4 100644 --- a/lib/ssl/src/ssl_certificate.erl +++ b/lib/ssl/src/ssl_certificate.erl @@ -57,30 +57,32 @@ trusted_cert_and_path(CertChain, CertDbRef) -> Path = [Cert | _] = lists:reverse(CertChain), OtpCert = public_key:pkix_decode_cert(Cert, otp), - IssuerID = + SignedAndIssuerID = case public_key:pkix_is_self_signed(OtpCert) of true -> {ok, IssuerId} = public_key:pkix_issuer_id(OtpCert, self), - IssuerId; + {self, IssuerId}; false -> case public_key:pkix_issuer_id(OtpCert, other) of {ok, IssuerId} -> - IssuerId; + {other, IssuerId}; {error, issuer_not_found} -> case find_issuer(OtpCert, no_candidate) of {ok, IssuerId} -> - IssuerId; + {other, IssuerId}; Other -> Other end end end, - case IssuerID of + case SignedAndIssuerID of {error, issuer_not_found} -> %% The root CA was not sent and can not be found. {unknown_ca, Path}; - {SerialNr, Issuer} -> + {self, _} when length(Path) == 1 -> + {selfsigned_peer, Path}; + {_ ,{SerialNr, Issuer}} -> case ssl_manager:lookup_trusted_cert(CertDbRef, SerialNr, Issuer) of {ok, {BinCert,_}} -> {BinCert, Path}; |