summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs12/pkcs12.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs12/pkcs12.h')
-rw-r--r--src/lib/libcrypto/pkcs12/pkcs12.h71
1 files changed, 7 insertions, 64 deletions
diff --git a/src/lib/libcrypto/pkcs12/pkcs12.h b/src/lib/libcrypto/pkcs12/pkcs12.h
index a40659fcf3..44dbb38153 100644
--- a/src/lib/libcrypto/pkcs12/pkcs12.h
+++ b/src/lib/libcrypto/pkcs12/pkcs12.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: pkcs12.h,v 1.26 2022/08/03 20:16:06 tb Exp $ */ 1/* $OpenBSD: pkcs12.h,v 1.27 2022/09/11 17:30:13 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 1999. 3 * project 1999.
4 */ 4 */
@@ -96,43 +96,16 @@ extern "C" {
96#define KEY_EX 0x10 96#define KEY_EX 0x10
97#define KEY_SIG 0x80 97#define KEY_SIG 0x80
98 98
99typedef struct { 99typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA;
100 X509_SIG *dinfo; 100
101 ASN1_OCTET_STRING *salt; 101typedef struct PKCS12_st PKCS12;
102 ASN1_INTEGER *iter; /* defaults to 1 */ 102
103} PKCS12_MAC_DATA; 103typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG;
104
105typedef struct {
106 ASN1_INTEGER *version;
107 PKCS12_MAC_DATA *mac;
108 PKCS7 *authsafes;
109} PKCS12;
110
111typedef struct {
112 ASN1_OBJECT *type;
113 union {
114 struct pkcs12_bag_st *bag; /* secret, crl and certbag */
115 struct pkcs8_priv_key_info_st *keybag; /* keybag */
116 X509_SIG *shkeybag; /* shrouded key bag */
117 STACK_OF(PKCS12_SAFEBAG) *safes;
118 ASN1_TYPE *other;
119 } value;
120 STACK_OF(X509_ATTRIBUTE) *attrib;
121} PKCS12_SAFEBAG;
122 104
123DECLARE_STACK_OF(PKCS12_SAFEBAG) 105DECLARE_STACK_OF(PKCS12_SAFEBAG)
124DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG) 106DECLARE_PKCS12_STACK_OF(PKCS12_SAFEBAG)
125 107
126typedef struct pkcs12_bag_st { 108typedef struct pkcs12_bag_st PKCS12_BAGS;
127 ASN1_OBJECT *type;
128 union {
129 ASN1_OCTET_STRING *x509cert;
130 ASN1_OCTET_STRING *x509crl;
131 ASN1_OCTET_STRING *octet;
132 ASN1_IA5STRING *sdsicert;
133 ASN1_TYPE *other; /* Secret or other bag */
134 } value;
135} PKCS12_BAGS;
136 109
137#define PKCS12_ERROR 0 110#define PKCS12_ERROR 0
138#define PKCS12_OK 1 111#define PKCS12_OK 1
@@ -155,16 +128,8 @@ typedef struct pkcs12_bag_st {
155#define M_PKCS12_decrypt_skey PKCS12_decrypt_skey 128#define M_PKCS12_decrypt_skey PKCS12_decrypt_skey
156#define M_PKCS8_decrypt PKCS8_decrypt 129#define M_PKCS8_decrypt PKCS8_decrypt
157 130
158#if !defined(LIBRESSL_NEXT_API)
159#define M_PKCS12_bag_type(bg) OBJ_obj2nid((bg)->type)
160#define M_PKCS12_cert_bag_type(bg) OBJ_obj2nid((bg)->value.bag->type)
161#define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type
162#endif
163
164#endif /* !LIBRESSL_INTERNAL */ 131#endif /* !LIBRESSL_INTERNAL */
165 132
166#if defined(LIBRESSL_NEXT_API) || defined(LIBRESSL_INTERNAL)
167
168#define M_PKCS12_bag_type PKCS12_bag_type 133#define M_PKCS12_bag_type PKCS12_bag_type
169#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type 134#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type
170#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type 135#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type
@@ -210,28 +175,6 @@ const STACK_OF(PKCS12_SAFEBAG) *
210 PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); 175 PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag);
211const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); 176const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag);
212 177
213#else /* !LIBRESSL_NEXT_API && !LIBRESSL_INTERNAL*/
214
215#define PKCS12_get_attr(bag, attr_nid) \
216 PKCS12_get_attr_gen(bag->attrib, attr_nid)
217
218#define PKCS8_get_attr(p8, attr_nid) \
219 PKCS12_get_attr_gen(p8->attributes, attr_nid)
220
221#define PKCS12_mac_present(p12) ((p12)->mac ? 1 : 0)
222
223PKCS12_SAFEBAG *PKCS12_x5092certbag(X509 *x509);
224PKCS12_SAFEBAG *PKCS12_x509crl2certbag(X509_CRL *crl);
225X509 *PKCS12_certbag2x509(PKCS12_SAFEBAG *bag);
226X509_CRL *PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag);
227
228PKCS12_SAFEBAG *PKCS12_MAKE_KEYBAG(PKCS8_PRIV_KEY_INFO *p8);
229PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass,
230 int passlen, unsigned char *salt, int saltlen, int iter,
231 PKCS8_PRIV_KEY_INFO *p8);
232
233#endif /* !LIBRESSL_NEXT_API && !LIBRESSL_INTERNAL */
234
235PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, 178PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it,
236 int nid1, int nid2); 179 int nid1, int nid2);
237PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, 180PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass,