| Index: net/third_party/nss/patches/peercertchain2.patch
|
| ===================================================================
|
| --- net/third_party/nss/patches/peercertchain2.patch (revision 242942)
|
| +++ net/third_party/nss/patches/peercertchain2.patch (working copy)
|
| @@ -1,107 +0,0 @@
|
| -Index: net/third_party/nss/ssl/ssl.h
|
| -===================================================================
|
| ---- net/third_party/nss/ssl/ssl.h (revision 225295)
|
| -+++ net/third_party/nss/ssl/ssl.h (working copy)
|
| -@@ -434,6 +434,15 @@
|
| - */
|
| - SSL_IMPORT CERTCertificate *SSL_PeerCertificate(PRFileDesc *fd);
|
| -
|
| -+/*
|
| -+** Return the certificates presented by the SSL peer. If the SSL peer
|
| -+** did not present certificates, return NULL with the
|
| -+** SSL_ERROR_NO_CERTIFICATE error. On failure, return NULL with an error
|
| -+** code other than SSL_ERROR_NO_CERTIFICATE.
|
| -+** "fd" the socket "file" descriptor
|
| -+*/
|
| -+SSL_IMPORT CERTCertList *SSL_PeerCertificateChain(PRFileDesc *fd);
|
| -+
|
| - /* SSL_PeerStapledOCSPResponses returns the OCSP responses that were provided
|
| - * by the TLS server. The return value is a pointer to an internal SECItemArray
|
| - * that contains the returned OCSP responses; it is only valid until the
|
| -@@ -463,18 +472,6 @@
|
| - SSLKEAType kea);
|
| -
|
| - /*
|
| --** Return references to the certificates presented by the SSL peer.
|
| --** |maxNumCerts| must contain the size of the |certs| array. On successful
|
| --** return, |*numCerts| contains the number of certificates available and
|
| --** |certs| will contain references to as many certificates as would fit.
|
| --** Therefore if |*numCerts| contains a value less than or equal to
|
| --** |maxNumCerts|, then all certificates were returned.
|
| --*/
|
| --SSL_IMPORT SECStatus SSL_PeerCertificateChain(
|
| -- PRFileDesc *fd, CERTCertificate **certs,
|
| -- unsigned int *numCerts, unsigned int maxNumCerts);
|
| --
|
| --/*
|
| - ** Authenticate certificate hook. Called when a certificate comes in
|
| - ** (because of SSL_REQUIRE_CERTIFICATE in SSL_Enable) to authenticate the
|
| - ** certificate.
|
| -Index: net/third_party/nss/ssl/sslauth.c
|
| -===================================================================
|
| ---- net/third_party/nss/ssl/sslauth.c (revision 225295)
|
| -+++ net/third_party/nss/ssl/sslauth.c (working copy)
|
| -@@ -28,38 +28,43 @@
|
| - }
|
| -
|
| - /* NEED LOCKS IN HERE. */
|
| --SECStatus
|
| --SSL_PeerCertificateChain(PRFileDesc *fd, CERTCertificate **certs,
|
| -- unsigned int *numCerts, unsigned int maxNumCerts)
|
| -+CERTCertList *
|
| -+SSL_PeerCertificateChain(PRFileDesc *fd)
|
| - {
|
| - sslSocket *ss;
|
| -- ssl3CertNode* cur;
|
| -+ CERTCertList *chain = NULL;
|
| -+ CERTCertificate *cert;
|
| -+ ssl3CertNode *cur;
|
| -
|
| - ss = ssl_FindSocket(fd);
|
| - if (!ss) {
|
| - SSL_DBG(("%d: SSL[%d]: bad socket in PeerCertificateChain",
|
| - SSL_GETPID(), fd));
|
| -- return SECFailure;
|
| -+ return NULL;
|
| - }
|
| -- if (!ss->opt.useSecurity)
|
| -- return SECFailure;
|
| --
|
| -- if (ss->sec.peerCert == NULL) {
|
| -- *numCerts = 0;
|
| -- return SECSuccess;
|
| -+ if (!ss->opt.useSecurity || !ss->sec.peerCert) {
|
| -+ PORT_SetError(SSL_ERROR_NO_CERTIFICATE);
|
| -+ return NULL;
|
| - }
|
| --
|
| -- *numCerts = 1; /* for the leaf certificate */
|
| -- if (maxNumCerts > 0)
|
| -- certs[0] = CERT_DupCertificate(ss->sec.peerCert);
|
| --
|
| -+ chain = CERT_NewCertList();
|
| -+ if (!chain) {
|
| -+ return NULL;
|
| -+ }
|
| -+ cert = CERT_DupCertificate(ss->sec.peerCert);
|
| -+ if (CERT_AddCertToListTail(chain, cert) != SECSuccess) {
|
| -+ goto loser;
|
| -+ }
|
| - for (cur = ss->ssl3.peerCertChain; cur; cur = cur->next) {
|
| -- if (*numCerts < maxNumCerts)
|
| -- certs[*numCerts] = CERT_DupCertificate(cur->cert);
|
| -- (*numCerts)++;
|
| -+ cert = CERT_DupCertificate(cur->cert);
|
| -+ if (CERT_AddCertToListTail(chain, cert) != SECSuccess) {
|
| -+ goto loser;
|
| -+ }
|
| - }
|
| -+ return chain;
|
| -
|
| -- return SECSuccess;
|
| -+loser:
|
| -+ CERT_DestroyCertList(chain);
|
| -+ return NULL;
|
| - }
|
| -
|
| - /* NEED LOCKS IN HERE. */
|
|
|