Index: net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp |
diff --git a/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp b/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp |
index e3146609f2d3613b2908ed533b17f12fbf44dde6..d65990025eeaf9ea43016f1f7eddbf112e195fc1 100644 |
--- a/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp |
+++ b/net/third_party/mozilla_security_manager/nsPKCS12Blob.cpp |
@@ -228,13 +228,30 @@ finish: |
// We should use that error code instead of inventing a new one |
// for every error possible. |
if (srv != SECSuccess) { |
- if (SEC_ERROR_BAD_PASSWORD == PORT_GetError()) { |
- import_result = net::ERR_PKCS12_IMPORT_BAD_PASSWORD; |
- } |
- else |
- { |
- LOG(ERROR) << "PKCS#12 import failed with error " << PORT_GetError(); |
- import_result = net::ERR_PKCS12_IMPORT_FAILED; |
+ int error = PORT_GetError(); |
+ LOG(ERROR) << "PKCS#12 import failed with error " << error; |
+ switch (error) { |
+ case SEC_ERROR_BAD_PASSWORD: |
+ case SEC_ERROR_PKCS12_PRIVACY_PASSWORD_INCORRECT: |
+ import_result = net::ERR_PKCS12_IMPORT_BAD_PASSWORD; |
+ break; |
+ case SEC_ERROR_PKCS12_INVALID_MAC: |
+ import_result = net::ERR_PKCS12_IMPORT_INVALID_MAC; |
+ break; |
+ case SEC_ERROR_BAD_DER: |
+ case SEC_ERROR_PKCS12_DECODING_PFX: |
+ case SEC_ERROR_PKCS12_CORRUPT_PFX_STRUCTURE: |
+ import_result = net::ERR_PKCS12_IMPORT_INVALID_FILE; |
+ break; |
+ case SEC_ERROR_PKCS12_UNSUPPORTED_MAC_ALGORITHM: |
+ case SEC_ERROR_PKCS12_UNSUPPORTED_TRANSPORT_MODE: |
+ case SEC_ERROR_PKCS12_UNSUPPORTED_PBE_ALGORITHM: |
+ case SEC_ERROR_PKCS12_UNSUPPORTED_VERSION: |
+ import_result = net::ERR_PKCS12_IMPORT_UNSUPPORTED; |
+ break; |
+ default: |
+ import_result = net::ERR_PKCS12_IMPORT_FAILED; |
+ break; |
} |
} |
// Finish the decoder |