Index: chrome/common/extensions/api/networking_private/networking_private_crypto_nss.cc |
diff --git a/chrome/common/extensions/api/networking_private/networking_private_crypto_nss.cc b/chrome/common/extensions/api/networking_private/networking_private_crypto_nss.cc |
index 2cdc33b68a0abca49eef4af2424e79c5e781c830..08397627d4ceeb2d9d1fee63be2606998f6b70aa 100644 |
--- a/chrome/common/extensions/api/networking_private/networking_private_crypto_nss.cc |
+++ b/chrome/common/extensions/api/networking_private/networking_private_crypto_nss.cc |
@@ -46,94 +46,6 @@ bool GetDERFromPEM(const std::string& pem_data, |
namespace networking_private_crypto { |
-bool VerifyCredentials(const std::string& certificate, |
- const std::string& signature, |
- const std::string& data, |
- const std::string& connected_mac) { |
- crypto::EnsureNSSInit(); |
- |
- std::vector<uint8_t> cert_data; |
- if (!GetDERFromPEM(certificate, "CERTIFICATE", &cert_data)) { |
- LOG(ERROR) << "Failed to parse certificate."; |
- return false; |
- } |
- SECItem der_cert; |
- der_cert.type = siDERCertBuffer; |
- der_cert.data = cert_data.data(); |
- der_cert.len = cert_data.size(); |
- |
- // Parse into a certificate structure. |
- typedef scoped_ptr< |
- CERTCertificate, |
- crypto::NSSDestroyer<CERTCertificate, CERT_DestroyCertificate> > |
- ScopedCERTCertificate; |
- ScopedCERTCertificate cert(CERT_NewTempCertificate( |
- CERT_GetDefaultCertDB(), &der_cert, NULL, PR_FALSE, PR_TRUE)); |
- if (!cert.get()) { |
- LOG(ERROR) << "Failed to parse certificate."; |
- return false; |
- } |
- |
- // Check that the certificate is signed by trusted CA. |
- SECItem trusted_ca_key_der_item; |
- trusted_ca_key_der_item.type = siDERCertBuffer; |
- trusted_ca_key_der_item.data = |
- const_cast<unsigned char*>(kTrustedCAPublicKeyDER); |
- trusted_ca_key_der_item.len = kTrustedCAPublicKeyDERLength; |
- crypto::ScopedSECKEYPublicKey ca_public_key( |
- SECKEY_ImportDERPublicKey(&trusted_ca_key_der_item, CKK_RSA)); |
- SECStatus verified = CERT_VerifySignedDataWithPublicKey( |
- &cert->signatureWrap, ca_public_key.get(), NULL); |
- if (verified != SECSuccess) { |
- LOG(ERROR) << "Certificate is not issued by the trusted CA."; |
- return false; |
- } |
- |
- // Check that the device listed in the certificate is correct. |
- // Something like evt_e161 001a11ffacdf |
- char* common_name = CERT_GetCommonName(&cert->subject); |
- if (!common_name) { |
- LOG(ERROR) << "Certificate does not have common name."; |
- return false; |
- } |
- |
- std::string subject_name(common_name); |
- PORT_Free(common_name); |
- std::string translated_mac; |
- base::RemoveChars(connected_mac, ":", &translated_mac); |
- if (!EndsWith(subject_name, translated_mac, false)) { |
- LOG(ERROR) << "MAC addresses don't match."; |
- return false; |
- } |
- |
- // Make sure that the certificate matches the unsigned data presented. |
- // Verify that the |signature| matches |data|. |
- crypto::ScopedSECKEYPublicKey public_key(CERT_ExtractPublicKey(cert.get())); |
- if (!public_key.get()) { |
- LOG(ERROR) << "Unable to extract public key from certificate."; |
- return false; |
- } |
- SECItem signature_item; |
- signature_item.type = siBuffer; |
- signature_item.data = |
- reinterpret_cast<unsigned char*>(const_cast<char*>(signature.c_str())); |
- signature_item.len = static_cast<unsigned int>(signature.size()); |
- verified = VFY_VerifyDataDirect( |
- reinterpret_cast<unsigned char*>(const_cast<char*>(data.c_str())), |
- data.size(), |
- public_key.get(), |
- &signature_item, |
- SEC_OID_PKCS1_RSA_ENCRYPTION, |
- SEC_OID_SHA1, |
- NULL, |
- NULL); |
- if (verified != SECSuccess) { |
- LOG(ERROR) << "Signed blobs did not match."; |
- return false; |
- } |
- return true; |
-} |
- |
bool EncryptByteString(const std::vector<uint8_t>& pub_key_der, |
const std::string& data, |
std::vector<uint8_t>* encrypted_output) { |