Chromium Code Reviews| Index: net/base/x509_certificate_nss.cc |
| =================================================================== |
| --- net/base/x509_certificate_nss.cc (revision 114571) |
| +++ net/base/x509_certificate_nss.cc (working copy) |
| @@ -1142,4 +1142,38 @@ |
| cert_handle->derCert.len); |
| } |
| +// static |
| +void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, |
| + size_t* size_bits, |
| + PublicKeyType* type) { |
| + // Since we might fail, set the output parameters to default values first. |
| + *type = kPublicKeyTypeUnknown; |
| + *size_bits = 0; |
| + |
| + SECKEYPublicKey* key = CERT_ExtractPublicKey(cert_handle); |
| + if (!key) |
| + return; |
| + |
| + *size_bits = SECKEY_PublicKeyStrengthInBits(key); |
| + |
| + switch (key->keyType) { |
| + case rsaKey: |
| + *type = kPublicKeyTypeRSA; |
| + break; |
| + case dsaKey: |
| + *type = kPublicKeyTypeDSA; |
| + break; |
| + case dhKey: |
| + *type = kPublicKeyTypeDH; |
| + break; |
| + case ecKey: |
| + *type = kPublicKeyTypeECDSA; |
| + break; |
| + default: |
| + *type = kPublicKeyTypeUnknown; |
| + *size_bits = 0; |
| + break; |
| + } |
|
Timur Iskhodzhanov
2011/12/16 08:35:39
forgotten to SECKEY_DestroyPublicKey(key) ?
|
| +} |
| + |
| } // namespace net |