OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/base/x509_certificate.h" | 5 #include "net/base/x509_certificate.h" |
6 | 6 |
7 #include <cert.h> | 7 #include <cert.h> |
8 #include <cryptohi.h> | 8 #include <cryptohi.h> |
9 #include <keyhi.h> | 9 #include <keyhi.h> |
10 #include <nss.h> | 10 #include <nss.h> |
(...skipping 1124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 } | 1135 } |
1136 | 1136 |
1137 // static | 1137 // static |
1138 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle, | 1138 bool X509Certificate::WriteOSCertHandleToPickle(OSCertHandle cert_handle, |
1139 Pickle* pickle) { | 1139 Pickle* pickle) { |
1140 return pickle->WriteData( | 1140 return pickle->WriteData( |
1141 reinterpret_cast<const char*>(cert_handle->derCert.data), | 1141 reinterpret_cast<const char*>(cert_handle->derCert.data), |
1142 cert_handle->derCert.len); | 1142 cert_handle->derCert.len); |
1143 } | 1143 } |
1144 | 1144 |
| 1145 // static |
| 1146 void X509Certificate::GetPublicKeyInfo(OSCertHandle cert_handle, |
| 1147 size_t* size_bits, |
| 1148 PublicKeyType* type) { |
| 1149 // Since we might fail, set the output parameters to default values first. |
| 1150 *type = kPublicKeyTypeUnknown; |
| 1151 *size_bits = 0; |
| 1152 |
| 1153 SECKEYPublicKey* key = CERT_ExtractPublicKey(cert_handle); |
| 1154 if (!key) |
| 1155 return; |
| 1156 |
| 1157 *size_bits = SECKEY_PublicKeyStrengthInBits(key); |
| 1158 |
| 1159 switch (key->keyType) { |
| 1160 case rsaKey: |
| 1161 *type = kPublicKeyTypeRSA; |
| 1162 break; |
| 1163 case dsaKey: |
| 1164 *type = kPublicKeyTypeDSA; |
| 1165 break; |
| 1166 case dhKey: |
| 1167 *type = kPublicKeyTypeDH; |
| 1168 break; |
| 1169 case ecKey: |
| 1170 *type = kPublicKeyTypeECDSA; |
| 1171 break; |
| 1172 default: |
| 1173 *type = kPublicKeyTypeUnknown; |
| 1174 *size_bits = 0; |
| 1175 break; |
| 1176 } |
| 1177 } |
| 1178 |
1145 } // namespace net | 1179 } // namespace net |
OLD | NEW |