summaryrefslogtreecommitdiffstats
path: root/crypto/pkcs12
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2015-09-26 13:24:00 +0100
committerDr. Stephen Henson <steve@openssl.org>2016-02-08 18:43:48 +0000
commita40d594984f774e8563f3d932807a07c5548b181 (patch)
treec50f76ffb5665468ce15de5da718d70050600894 /crypto/pkcs12
parent54c38b7f0dda668be82199b4e4aa56c1f6afe3ea (diff)
New PKCS12 accessors, change macros to functions.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/pkcs12')
-rw-r--r--crypto/pkcs12/p12_utl.c50
1 files changed, 46 insertions, 4 deletions
diff --git a/crypto/pkcs12/p12_utl.c b/crypto/pkcs12/p12_utl.c
index 8b7e52f08e..db4c139101 100644
--- a/crypto/pkcs12/p12_utl.c
+++ b/crypto/pkcs12/p12_utl.c
@@ -59,6 +59,7 @@
#include <stdio.h>
#include "internal/cryptlib.h"
#include <openssl/pkcs12.h>
+#include "p12_lcl.h"
/* Cheap and nasty Unicode stuff */
@@ -143,9 +144,9 @@ PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl)
X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag)
{
- if (M_PKCS12_bag_type(bag) != NID_certBag)
+ if (PKCS12_bag_type(bag) != NID_certBag)
return NULL;
- if (M_PKCS12_cert_bag_type(bag) != NID_x509Certificate)
+ if (PKCS12_cert_bag_type(bag) != NID_x509Certificate)
return NULL;
return ASN1_item_unpack(bag->value.bag->value.octet,
ASN1_ITEM_rptr(X509));
@@ -153,10 +154,51 @@ X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag)
X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag)
{
- if (M_PKCS12_bag_type(bag) != NID_crlBag)
+ if (PKCS12_bag_type(bag) != NID_crlBag)
return NULL;
- if (M_PKCS12_cert_bag_type(bag) != NID_x509Crl)
+ if (PKCS12_cert_bag_type(bag) != NID_x509Crl)
return NULL;
return ASN1_item_unpack(bag->value.bag->value.octet,
ASN1_ITEM_rptr(X509_CRL));
}
+
+ASN1_TYPE *PKCS12_get_attr(PKCS12_SAFEBAG *bag, int attr_nid)
+{
+ return PKCS12_get_attr_gen(bag->attrib, attr_nid);
+}
+
+ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid)
+{
+ return PKCS12_get_attr_gen(p8->attributes, attr_nid);
+}
+
+int PKCS12_mac_present(PKCS12 *p12)
+{
+return p12->mac ? 1 : 0;
+}
+
+int PKCS12_bag_type(PKCS12_SAFEBAG *bag)
+{
+ return OBJ_obj2nid(bag->type);
+}
+
+int PKCS12_cert_bag_type(PKCS12_SAFEBAG *bag)
+{
+ if (PKCS12_bag_type(bag) != NID_certBag)
+ return -1;
+ return OBJ_obj2nid(bag->value.bag->type);
+}
+
+PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(PKCS12_SAFEBAG *bag)
+{
+ if (PKCS12_bag_type(bag) != NID_keyBag)
+ return NULL;
+ return bag->value.keybag;
+}
+
+STACK_OF(PKCS12_SAFEBAG) *PKCS12_SAFEBAG_get0_safes(PKCS12_SAFEBAG *bag)
+{
+ if (OBJ_obj2nid(bag->type) != NID_safeContentsBag)
+ return NULL;
+ return bag->value.safes;
+}