| /* | 
 |  * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. | 
 |  * | 
 |  * Licensed under the Apache License 2.0 (the "License").  You may not use | 
 |  * this file except in compliance with the License.  You can obtain a copy | 
 |  * in the file LICENSE in the source distribution or at | 
 |  * https://www.openssl.org/source/license.html | 
 |  */ | 
 |  | 
 | struct PKCS12_MAC_DATA_st { | 
 |     X509_SIG *dinfo; | 
 |     ASN1_OCTET_STRING *salt; | 
 |     ASN1_INTEGER *iter;         /* defaults to 1 */ | 
 | }; | 
 |  | 
 | struct PKCS12_st { | 
 |     ASN1_INTEGER *version; | 
 |     PKCS12_MAC_DATA *mac; | 
 |     PKCS7 *authsafes; | 
 | }; | 
 |  | 
 | struct PKCS12_SAFEBAG_st { | 
 |     ASN1_OBJECT *type; | 
 |     union { | 
 |         struct pkcs12_bag_st *bag; /* secret, crl and certbag */ | 
 |         struct pkcs8_priv_key_info_st *keybag; /* keybag */ | 
 |         X509_SIG *shkeybag;     /* shrouded key bag */ | 
 |         STACK_OF(PKCS12_SAFEBAG) *safes; | 
 |         ASN1_TYPE *other; | 
 |     } value; | 
 |     STACK_OF(X509_ATTRIBUTE) *attrib; | 
 | }; | 
 |  | 
 | struct pkcs12_bag_st { | 
 |     ASN1_OBJECT *type; | 
 |     union { | 
 |         ASN1_OCTET_STRING *x509cert; | 
 |         ASN1_OCTET_STRING *x509crl; | 
 |         ASN1_OCTET_STRING *octet; | 
 |         ASN1_IA5STRING *sdsicert; | 
 |         ASN1_TYPE *other;       /* Secret or other bag */ | 
 |     } value; | 
 | }; |