summaryrefslogtreecommitdiffstats
path: root/src/crypto/pkcs8/pkcs8.c
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2015-11-06 23:39:13 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-11-06 23:39:13 +0000
commitcf79b9c51a06c935943059d7800e3f15c0e6cb10 (patch)
tree37655d933cb72bcd7553af526581d3e24e051d7d /src/crypto/pkcs8/pkcs8.c
parent47e0ae95b75c3d1c435f16ccd959638015c6d9b9 (diff)
parente99801b603dea8893dcc61c70b327ef2d00b652c (diff)
downloadexternal_boringssl-cf79b9c51a06c935943059d7800e3f15c0e6cb10.zip
external_boringssl-cf79b9c51a06c935943059d7800e3f15c0e6cb10.tar.gz
external_boringssl-cf79b9c51a06c935943059d7800e3f15c0e6cb10.tar.bz2
Revert "Revert "external/boringssl: sync with upstream.""
am: e99801b603 * commit 'e99801b603dea8893dcc61c70b327ef2d00b652c': Revert "Revert "external/boringssl: sync with upstream.""
Diffstat (limited to 'src/crypto/pkcs8/pkcs8.c')
-rw-r--r--src/crypto/pkcs8/pkcs8.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/crypto/pkcs8/pkcs8.c b/src/crypto/pkcs8/pkcs8.c
index 8067c91..c097881 100644
--- a/src/crypto/pkcs8/pkcs8.c
+++ b/src/crypto/pkcs8/pkcs8.c
@@ -1176,6 +1176,31 @@ int PKCS12_parse(const PKCS12 *p12, const char *password, EVP_PKEY **out_pkey,
return 1;
}
+int PKCS12_verify_mac(const PKCS12 *p12, const char *password,
+ int password_len) {
+ if (password == NULL) {
+ if (password_len != 0) {
+ return 0;
+ }
+ } else if (password_len != -1 &&
+ (password[password_len] != 0 ||
+ memchr(password, 0, password_len) != NULL)) {
+ return 0;
+ }
+
+ EVP_PKEY *pkey = NULL;
+ X509 *cert = NULL;
+ if (!PKCS12_parse(p12, password, &pkey, &cert, NULL)) {
+ ERR_clear_error();
+ return 0;
+ }
+
+ EVP_PKEY_free(pkey);
+ X509_free(cert);
+
+ return 1;
+}
+
void PKCS12_free(PKCS12 *p12) {
OPENSSL_free(p12->ber_bytes);
OPENSSL_free(p12);