| Index: net/socket/ssl_client_socket_nss.cc
|
| ===================================================================
|
| --- net/socket/ssl_client_socket_nss.cc (revision 196870)
|
| +++ net/socket/ssl_client_socket_nss.cc (working copy)
|
| @@ -1855,19 +1855,14 @@
|
| // TODO(agl): figure out how to plumb an OCSP response into the Mac
|
| // system library and update IsOCSPStaplingSupported for Mac.
|
| if (IsOCSPStaplingSupported()) {
|
| - unsigned int len = 0;
|
| - SSL_GetStapledOCSPResponse(nss_fd_, NULL, &len);
|
| - if (len) {
|
| - const unsigned int orig_len = len;
|
| - scoped_ptr<uint8[]> ocsp_response(new uint8[orig_len]);
|
| - SSL_GetStapledOCSPResponse(nss_fd_, ocsp_response.get(), &len);
|
| - DCHECK_EQ(orig_len, len);
|
| -
|
| + const SECItemArray* ocsp_responses =
|
| + SSL_PeerStapledOCSPResponses(nss_fd_);
|
| + if (ocsp_responses->len) {
|
| #if defined(OS_WIN)
|
| if (nss_handshake_state_.server_cert) {
|
| CRYPT_DATA_BLOB ocsp_response_blob;
|
| - ocsp_response_blob.cbData = len;
|
| - ocsp_response_blob.pbData = ocsp_response.get();
|
| + ocsp_response_blob.cbData = ocsp_responses->items[0].len;
|
| + ocsp_response_blob.pbData = ocsp_responses->items[0].data;
|
| BOOL ok = CertSetCertificateContextProperty(
|
| nss_handshake_state_.server_cert->os_cert_handle(),
|
| CERT_OCSP_RESPONSE_PROP_ID,
|
| @@ -1881,15 +1876,11 @@
|
| #elif defined(USE_NSS)
|
| CacheOCSPResponseFromSideChannelFunction cache_ocsp_response =
|
| GetCacheOCSPResponseFromSideChannelFunction();
|
| - SECItem ocsp_response_item;
|
| - ocsp_response_item.type = siBuffer;
|
| - ocsp_response_item.data = ocsp_response.get();
|
| - ocsp_response_item.len = len;
|
|
|
| cache_ocsp_response(
|
| CERT_GetDefaultCertDB(),
|
| nss_handshake_state_.server_cert_chain[0], PR_Now(),
|
| - &ocsp_response_item, NULL);
|
| + &ocsp_responses->items[0], NULL);
|
| #endif
|
| }
|
| }
|
|
|