LCOV - code coverage report
Current view: top level - bin/default/third_party/heimdal/lib/asn1 - asn1_rfc2459_asn1.c (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 163 1731 9.4 %
Date: 2024-04-21 15:09:00 Functions: 59 654 9.0 %

          Line data    Source code
       1             : /* Generated from /builds/eaglegai/samba/third_party/heimdal/lib/asn1/rfc2459.asn1 */
       2             : /* Do not edit */
       3             : 
       4             : #if defined(_WIN32) && !defined(ASN1_LIB)
       5             : # error "ASN1_LIB must be defined"
       6             : #endif
       7             : #include <stdio.h>
       8             : #include <stdlib.h>
       9             : #include <time.h>
      10             : #include <string.h>
      11             : #include <errno.h>
      12             : #include <limits.h>
      13             : #include <krb5-types.h>
      14             : #include "rfc2459_asn1.h"
      15             : #include "rfc2459_asn1-priv.h"
      16             : #include <asn1_err.h>
      17             : #include <der.h>
      18             : #include <asn1-template.h>
      19             : 
      20             : #include <parse_units.h>
      21             : 
      22             : static const struct asn1_type_func asn1_extern_HEIM_ANY = {
      23             :         (asn1_type_encode)encode_HEIM_ANY,
      24             :         (asn1_type_decode)decode_HEIM_ANY,
      25             :         (asn1_type_length)length_HEIM_ANY,
      26             :         (asn1_type_copy)copy_HEIM_ANY,
      27             :         (asn1_type_release)free_HEIM_ANY,
      28             :         (asn1_type_print)print_HEIM_ANY,
      29             :         sizeof(HEIM_ANY)
      30             : };
      31             : static const struct asn1_type_func asn1_extern_PrincipalName = {
      32             :         (asn1_type_encode)encode_PrincipalName,
      33             :         (asn1_type_decode)decode_PrincipalName,
      34             :         (asn1_type_length)length_PrincipalName,
      35             :         (asn1_type_copy)copy_PrincipalName,
      36             :         (asn1_type_release)free_PrincipalName,
      37             :         (asn1_type_print)print_PrincipalName,
      38             :         sizeof(PrincipalName)
      39             : };
      40             : static const struct asn1_type_func asn1_extern_Realm = {
      41             :         (asn1_type_encode)encode_Realm,
      42             :         (asn1_type_decode)decode_Realm,
      43             :         (asn1_type_length)length_Realm,
      44             :         (asn1_type_copy)copy_Realm,
      45             :         (asn1_type_release)free_Realm,
      46             :         (asn1_type_print)print_Realm,
      47             :         sizeof(Realm)
      48             : };
      49             : extern const struct asn1_template asn1_Version[];
      50             : extern const struct asn1_template asn1_Version[];
      51             : static unsigned oid_id_pkcs_1_variable_num[6] =  { 1, 2, 840, 113549, 1, 1};
      52             : const heim_oid asn1_oid_id_pkcs_1 = { 6, oid_id_pkcs_1_variable_num };
      53             : 
      54             : static unsigned oid_id_pkcs1_rsaEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 1};
      55             : const heim_oid asn1_oid_id_pkcs1_rsaEncryption = { 7, oid_id_pkcs1_rsaEncryption_variable_num };
      56             : 
      57             : static unsigned oid_id_pkcs1_md2WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 2};
      58             : const heim_oid asn1_oid_id_pkcs1_md2WithRSAEncryption = { 7, oid_id_pkcs1_md2WithRSAEncryption_variable_num };
      59             : 
      60             : static unsigned oid_id_pkcs1_md5WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 4};
      61             : const heim_oid asn1_oid_id_pkcs1_md5WithRSAEncryption = { 7, oid_id_pkcs1_md5WithRSAEncryption_variable_num };
      62             : 
      63             : static unsigned oid_id_pkcs1_sha1WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 5};
      64             : const heim_oid asn1_oid_id_pkcs1_sha1WithRSAEncryption = { 7, oid_id_pkcs1_sha1WithRSAEncryption_variable_num };
      65             : 
      66             : static unsigned oid_id_pkcs1_sha256WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 11};
      67             : const heim_oid asn1_oid_id_pkcs1_sha256WithRSAEncryption = { 7, oid_id_pkcs1_sha256WithRSAEncryption_variable_num };
      68             : 
      69             : static unsigned oid_id_pkcs1_sha384WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 12};
      70             : const heim_oid asn1_oid_id_pkcs1_sha384WithRSAEncryption = { 7, oid_id_pkcs1_sha384WithRSAEncryption_variable_num };
      71             : 
      72             : static unsigned oid_id_pkcs1_sha512WithRSAEncryption_variable_num[7] =  { 1, 2, 840, 113549, 1, 1, 13};
      73             : const heim_oid asn1_oid_id_pkcs1_sha512WithRSAEncryption = { 7, oid_id_pkcs1_sha512WithRSAEncryption_variable_num };
      74             : 
      75             : static unsigned oid_id_heim_rsa_pkcs1_x509_variable_num[6] =  { 1, 2, 752, 43, 16, 1};
      76             : const heim_oid asn1_oid_id_heim_rsa_pkcs1_x509 = { 6, oid_id_heim_rsa_pkcs1_x509_variable_num };
      77             : 
      78             : static unsigned oid_id_pkcs_2_variable_num[6] =  { 1, 2, 840, 113549, 1, 2};
      79             : const heim_oid asn1_oid_id_pkcs_2 = { 6, oid_id_pkcs_2_variable_num };
      80             : 
      81             : static unsigned oid_id_pkcs2_md2_variable_num[7] =  { 1, 2, 840, 113549, 1, 2, 2};
      82             : const heim_oid asn1_oid_id_pkcs2_md2 = { 7, oid_id_pkcs2_md2_variable_num };
      83             : 
      84             : static unsigned oid_id_pkcs2_md4_variable_num[7] =  { 1, 2, 840, 113549, 1, 2, 4};
      85             : const heim_oid asn1_oid_id_pkcs2_md4 = { 7, oid_id_pkcs2_md4_variable_num };
      86             : 
      87             : static unsigned oid_id_pkcs2_md5_variable_num[7] =  { 1, 2, 840, 113549, 1, 2, 5};
      88             : const heim_oid asn1_oid_id_pkcs2_md5 = { 7, oid_id_pkcs2_md5_variable_num };
      89             : 
      90             : static unsigned oid_id_rsa_digestAlgorithm_variable_num[5] =  { 1, 2, 840, 113549, 2};
      91             : const heim_oid asn1_oid_id_rsa_digestAlgorithm = { 5, oid_id_rsa_digestAlgorithm_variable_num };
      92             : 
      93             : static unsigned oid_id_rsa_digest_md2_variable_num[6] =  { 1, 2, 840, 113549, 2, 2};
      94             : const heim_oid asn1_oid_id_rsa_digest_md2 = { 6, oid_id_rsa_digest_md2_variable_num };
      95             : 
      96             : static unsigned oid_id_rsa_digest_md4_variable_num[6] =  { 1, 2, 840, 113549, 2, 4};
      97             : const heim_oid asn1_oid_id_rsa_digest_md4 = { 6, oid_id_rsa_digest_md4_variable_num };
      98             : 
      99             : static unsigned oid_id_rsa_digest_md5_variable_num[6] =  { 1, 2, 840, 113549, 2, 5};
     100             : const heim_oid asn1_oid_id_rsa_digest_md5 = { 6, oid_id_rsa_digest_md5_variable_num };
     101             : 
     102             : static unsigned oid_id_pkcs_3_variable_num[6] =  { 1, 2, 840, 113549, 1, 3};
     103             : const heim_oid asn1_oid_id_pkcs_3 = { 6, oid_id_pkcs_3_variable_num };
     104             : 
     105             : static unsigned oid_id_pkcs3_rc2_cbc_variable_num[7] =  { 1, 2, 840, 113549, 1, 3, 2};
     106             : const heim_oid asn1_oid_id_pkcs3_rc2_cbc = { 7, oid_id_pkcs3_rc2_cbc_variable_num };
     107             : 
     108             : static unsigned oid_id_pkcs3_rc4_variable_num[7] =  { 1, 2, 840, 113549, 1, 3, 4};
     109             : const heim_oid asn1_oid_id_pkcs3_rc4 = { 7, oid_id_pkcs3_rc4_variable_num };
     110             : 
     111             : static unsigned oid_id_pkcs3_des_ede3_cbc_variable_num[7] =  { 1, 2, 840, 113549, 1, 3, 7};
     112             : const heim_oid asn1_oid_id_pkcs3_des_ede3_cbc = { 7, oid_id_pkcs3_des_ede3_cbc_variable_num };
     113             : 
     114             : static unsigned oid_id_rsadsi_encalg_variable_num[5] =  { 1, 2, 840, 113549, 3};
     115             : const heim_oid asn1_oid_id_rsadsi_encalg = { 5, oid_id_rsadsi_encalg_variable_num };
     116             : 
     117             : static unsigned oid_id_rsadsi_rc2_cbc_variable_num[6] =  { 1, 2, 840, 113549, 3, 2};
     118             : const heim_oid asn1_oid_id_rsadsi_rc2_cbc = { 6, oid_id_rsadsi_rc2_cbc_variable_num };
     119             : 
     120             : static unsigned oid_id_rsadsi_des_ede3_cbc_variable_num[6] =  { 1, 2, 840, 113549, 3, 7};
     121             : const heim_oid asn1_oid_id_rsadsi_des_ede3_cbc = { 6, oid_id_rsadsi_des_ede3_cbc_variable_num };
     122             : 
     123             : static unsigned oid_id_secsig_sha_1_variable_num[6] =  { 1, 3, 14, 3, 2, 26};
     124             : const heim_oid asn1_oid_id_secsig_sha_1 = { 6, oid_id_secsig_sha_1_variable_num };
     125             : 
     126             : static unsigned oid_id_secsig_sha_1WithRSAEncryption_variable_num[6] =  { 1, 3, 14, 3, 2, 29};
     127             : const heim_oid asn1_oid_id_secsig_sha_1WithRSAEncryption = { 6, oid_id_secsig_sha_1WithRSAEncryption_variable_num };
     128             : 
     129             : static unsigned oid_id_nistAlgorithm_variable_num[7] =  { 2, 16, 840, 1, 101, 3, 4};
     130             : const heim_oid asn1_oid_id_nistAlgorithm = { 7, oid_id_nistAlgorithm_variable_num };
     131             : 
     132             : static unsigned oid_id_nist_aes_algs_variable_num[8] =  { 2, 16, 840, 1, 101, 3, 4, 1};
     133             : const heim_oid asn1_oid_id_nist_aes_algs = { 8, oid_id_nist_aes_algs_variable_num };
     134             : 
     135             : static unsigned oid_id_aes_128_cbc_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 1, 2};
     136             : const heim_oid asn1_oid_id_aes_128_cbc = { 9, oid_id_aes_128_cbc_variable_num };
     137             : 
     138             : static unsigned oid_id_aes_192_cbc_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 1, 22};
     139             : const heim_oid asn1_oid_id_aes_192_cbc = { 9, oid_id_aes_192_cbc_variable_num };
     140             : 
     141             : static unsigned oid_id_aes_256_cbc_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 1, 42};
     142             : const heim_oid asn1_oid_id_aes_256_cbc = { 9, oid_id_aes_256_cbc_variable_num };
     143             : 
     144             : static unsigned oid_id_nist_sha_algs_variable_num[8] =  { 2, 16, 840, 1, 101, 3, 4, 2};
     145             : const heim_oid asn1_oid_id_nist_sha_algs = { 8, oid_id_nist_sha_algs_variable_num };
     146             : 
     147             : static unsigned oid_id_sha256_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 2, 1};
     148             : const heim_oid asn1_oid_id_sha256 = { 9, oid_id_sha256_variable_num };
     149             : 
     150             : static unsigned oid_id_sha224_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 2, 4};
     151             : const heim_oid asn1_oid_id_sha224 = { 9, oid_id_sha224_variable_num };
     152             : 
     153             : static unsigned oid_id_sha384_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 2, 2};
     154             : const heim_oid asn1_oid_id_sha384 = { 9, oid_id_sha384_variable_num };
     155             : 
     156             : static unsigned oid_id_sha512_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 4, 2, 3};
     157             : const heim_oid asn1_oid_id_sha512 = { 9, oid_id_sha512_variable_num };
     158             : 
     159             : static unsigned oid_id_dhpublicnumber_variable_num[6] =  { 1, 2, 840, 10046, 2, 1};
     160             : const heim_oid asn1_oid_id_dhpublicnumber = { 6, oid_id_dhpublicnumber_variable_num };
     161             : 
     162             : static unsigned oid_id_ecPublicKey_variable_num[6] =  { 1, 2, 840, 10045, 2, 1};
     163             : const heim_oid asn1_oid_id_ecPublicKey = { 6, oid_id_ecPublicKey_variable_num };
     164             : 
     165             : static unsigned oid_id_ecDH_variable_num[5] =  { 1, 3, 132, 1, 12};
     166             : const heim_oid asn1_oid_id_ecDH = { 5, oid_id_ecDH_variable_num };
     167             : 
     168             : static unsigned oid_id_ecMQV_variable_num[5] =  { 1, 3, 132, 1, 13};
     169             : const heim_oid asn1_oid_id_ecMQV = { 5, oid_id_ecMQV_variable_num };
     170             : 
     171             : static unsigned oid_id_ecdsa_with_SHA512_variable_num[7] =  { 1, 2, 840, 10045, 4, 3, 4};
     172             : const heim_oid asn1_oid_id_ecdsa_with_SHA512 = { 7, oid_id_ecdsa_with_SHA512_variable_num };
     173             : 
     174             : static unsigned oid_id_ecdsa_with_SHA384_variable_num[7] =  { 1, 2, 840, 10045, 4, 3, 3};
     175             : const heim_oid asn1_oid_id_ecdsa_with_SHA384 = { 7, oid_id_ecdsa_with_SHA384_variable_num };
     176             : 
     177             : static unsigned oid_id_ecdsa_with_SHA256_variable_num[7] =  { 1, 2, 840, 10045, 4, 3, 2};
     178             : const heim_oid asn1_oid_id_ecdsa_with_SHA256 = { 7, oid_id_ecdsa_with_SHA256_variable_num };
     179             : 
     180             : static unsigned oid_id_ecdsa_with_SHA224_variable_num[7] =  { 1, 2, 840, 10045, 4, 3, 1};
     181             : const heim_oid asn1_oid_id_ecdsa_with_SHA224 = { 7, oid_id_ecdsa_with_SHA224_variable_num };
     182             : 
     183             : static unsigned oid_id_ecdsa_with_SHA1_variable_num[6] =  { 1, 2, 840, 10045, 4, 1};
     184             : const heim_oid asn1_oid_id_ecdsa_with_SHA1 = { 6, oid_id_ecdsa_with_SHA1_variable_num };
     185             : 
     186             : static unsigned oid_id_ec_group_secp256r1_variable_num[7] =  { 1, 2, 840, 10045, 3, 1, 7};
     187             : const heim_oid asn1_oid_id_ec_group_secp256r1 = { 7, oid_id_ec_group_secp256r1_variable_num };
     188             : 
     189             : static unsigned oid_id_ec_group_secp160r1_variable_num[5] =  { 1, 3, 132, 0, 8};
     190             : const heim_oid asn1_oid_id_ec_group_secp160r1 = { 5, oid_id_ec_group_secp160r1_variable_num };
     191             : 
     192             : static unsigned oid_id_ec_group_secp160r2_variable_num[5] =  { 1, 3, 132, 0, 30};
     193             : const heim_oid asn1_oid_id_ec_group_secp160r2 = { 5, oid_id_ec_group_secp160r2_variable_num };
     194             : 
     195             : static unsigned oid_id_ec_group_secp224r1_variable_num[5] =  { 1, 3, 132, 0, 33};
     196             : const heim_oid asn1_oid_id_ec_group_secp224r1 = { 5, oid_id_ec_group_secp224r1_variable_num };
     197             : 
     198             : static unsigned oid_id_ec_group_secp384r1_variable_num[5] =  { 1, 3, 132, 0, 34};
     199             : const heim_oid asn1_oid_id_ec_group_secp384r1 = { 5, oid_id_ec_group_secp384r1_variable_num };
     200             : 
     201             : static unsigned oid_id_ec_group_secp521r1_variable_num[5] =  { 1, 3, 132, 0, 35};
     202             : const heim_oid asn1_oid_id_ec_group_secp521r1 = { 5, oid_id_ec_group_secp521r1_variable_num };
     203             : 
     204             : static unsigned oid_id_x9_57_variable_num[5] =  { 1, 2, 840, 10046, 4};
     205             : const heim_oid asn1_oid_id_x9_57 = { 5, oid_id_x9_57_variable_num };
     206             : 
     207             : static unsigned oid_id_dsa_variable_num[6] =  { 1, 2, 840, 10046, 4, 1};
     208             : const heim_oid asn1_oid_id_dsa = { 6, oid_id_dsa_variable_num };
     209             : 
     210             : static unsigned oid_id_dsa_with_sha1_variable_num[6] =  { 1, 2, 840, 10046, 4, 3};
     211             : const heim_oid asn1_oid_id_dsa_with_sha1 = { 6, oid_id_dsa_with_sha1_variable_num };
     212             : 
     213             : static unsigned oid_id_x520_at_variable_num[3] =  { 2, 5, 4};
     214             : const heim_oid asn1_oid_id_x520_at = { 3, oid_id_x520_at_variable_num };
     215             : 
     216             : static unsigned oid_id_at_commonName_variable_num[4] =  { 2, 5, 4, 3};
     217             : const heim_oid asn1_oid_id_at_commonName = { 4, oid_id_at_commonName_variable_num };
     218             : 
     219             : static unsigned oid_id_at_surname_variable_num[4] =  { 2, 5, 4, 4};
     220             : const heim_oid asn1_oid_id_at_surname = { 4, oid_id_at_surname_variable_num };
     221             : 
     222             : static unsigned oid_id_at_serialNumber_variable_num[4] =  { 2, 5, 4, 5};
     223             : const heim_oid asn1_oid_id_at_serialNumber = { 4, oid_id_at_serialNumber_variable_num };
     224             : 
     225             : static unsigned oid_id_at_countryName_variable_num[4] =  { 2, 5, 4, 6};
     226             : const heim_oid asn1_oid_id_at_countryName = { 4, oid_id_at_countryName_variable_num };
     227             : 
     228             : static unsigned oid_id_at_localityName_variable_num[4] =  { 2, 5, 4, 7};
     229             : const heim_oid asn1_oid_id_at_localityName = { 4, oid_id_at_localityName_variable_num };
     230             : 
     231             : static unsigned oid_id_at_stateOrProvinceName_variable_num[4] =  { 2, 5, 4, 8};
     232             : const heim_oid asn1_oid_id_at_stateOrProvinceName = { 4, oid_id_at_stateOrProvinceName_variable_num };
     233             : 
     234             : static unsigned oid_id_at_streetAddress_variable_num[4] =  { 2, 5, 4, 9};
     235             : const heim_oid asn1_oid_id_at_streetAddress = { 4, oid_id_at_streetAddress_variable_num };
     236             : 
     237             : static unsigned oid_id_at_organizationName_variable_num[4] =  { 2, 5, 4, 10};
     238             : const heim_oid asn1_oid_id_at_organizationName = { 4, oid_id_at_organizationName_variable_num };
     239             : 
     240             : static unsigned oid_id_at_organizationalUnitName_variable_num[4] =  { 2, 5, 4, 11};
     241             : const heim_oid asn1_oid_id_at_organizationalUnitName = { 4, oid_id_at_organizationalUnitName_variable_num };
     242             : 
     243             : static unsigned oid_id_at_title_variable_num[4] =  { 2, 5, 4, 12};
     244             : const heim_oid asn1_oid_id_at_title = { 4, oid_id_at_title_variable_num };
     245             : 
     246             : static unsigned oid_id_at_description_variable_num[4] =  { 2, 5, 4, 13};
     247             : const heim_oid asn1_oid_id_at_description = { 4, oid_id_at_description_variable_num };
     248             : 
     249             : static unsigned oid_id_at_name_variable_num[4] =  { 2, 5, 4, 41};
     250             : const heim_oid asn1_oid_id_at_name = { 4, oid_id_at_name_variable_num };
     251             : 
     252             : static unsigned oid_id_at_givenName_variable_num[4] =  { 2, 5, 4, 42};
     253             : const heim_oid asn1_oid_id_at_givenName = { 4, oid_id_at_givenName_variable_num };
     254             : 
     255             : static unsigned oid_id_at_initials_variable_num[4] =  { 2, 5, 4, 43};
     256             : const heim_oid asn1_oid_id_at_initials = { 4, oid_id_at_initials_variable_num };
     257             : 
     258             : static unsigned oid_id_at_generationQualifier_variable_num[4] =  { 2, 5, 4, 44};
     259             : const heim_oid asn1_oid_id_at_generationQualifier = { 4, oid_id_at_generationQualifier_variable_num };
     260             : 
     261             : static unsigned oid_id_at_dnQualifier_variable_num[4] =  { 2, 5, 4, 46};
     262             : const heim_oid asn1_oid_id_at_dnQualifier = { 4, oid_id_at_dnQualifier_variable_num };
     263             : 
     264             : static unsigned oid_id_at_pseudonym_variable_num[4] =  { 2, 5, 4, 65};
     265             : const heim_oid asn1_oid_id_at_pseudonym = { 4, oid_id_at_pseudonym_variable_num };
     266             : 
     267             : static unsigned oid_id_Userid_variable_num[7] =  { 0, 9, 2342, 19200300, 100, 1, 1};
     268             : const heim_oid asn1_oid_id_Userid = { 7, oid_id_Userid_variable_num };
     269             : 
     270             : static unsigned oid_id_domainComponent_variable_num[7] =  { 0, 9, 2342, 19200300, 100, 1, 25};
     271             : const heim_oid asn1_oid_id_domainComponent = { 7, oid_id_domainComponent_variable_num };
     272             : 
     273             : static unsigned oid_id_at_emailAddress_variable_num[7] =  { 1, 2, 840, 113549, 1, 9, 1};
     274             : const heim_oid asn1_oid_id_at_emailAddress = { 7, oid_id_at_emailAddress_variable_num };
     275             : 
     276             : static unsigned oid_id_x509_ce_variable_num[3] =  { 2, 5, 29};
     277             : const heim_oid asn1_oid_id_x509_ce = { 3, oid_id_x509_ce_variable_num };
     278             : 
     279             : extern const struct asn1_template asn1_AlgorithmIdentifier[];
     280             : extern const struct asn1_template asn1_AttributeType[];
     281             : extern const struct asn1_template asn1_AttributeType[];
     282             : extern const struct asn1_template asn1_AttributeValue[];
     283             : extern const struct asn1_template asn1_AttributeValue[];
     284             : extern const struct asn1_template asn1_DirectoryString[];
     285             : extern const struct asn1_template asn1_AttributeValues[];
     286             : extern const struct asn1_template asn1_Attribute[];
     287             : extern const struct asn1_template asn1_AttributeTypeAndValue[];
     288             : extern const struct asn1_template asn1_RelativeDistinguishedName[];
     289             : extern const struct asn1_template asn1_RDNSequence[];
     290             : extern const struct asn1_template asn1_Name[];
     291             : extern const struct asn1_template asn1_CertificateSerialNumber[];
     292             : extern const struct asn1_template asn1_CertificateSerialNumber[];
     293             : extern const struct asn1_template asn1_Time[];
     294             : extern const struct asn1_template asn1_Validity[];
     295             : extern const struct asn1_template asn1_UniqueIdentifier[];
     296             : extern const struct asn1_template asn1_UniqueIdentifier[];
     297             : extern const struct asn1_template asn1_SubjectPublicKeyInfo[];
     298             : extern const struct asn1_template asn1_Extensions[];
     299             : extern const struct asn1_template asn1_TBSCertificate[];
     300             : extern const struct asn1_template asn1_Certificate[];
     301             : extern const struct asn1_template asn1_Certificates[];
     302             : extern const struct asn1_template asn1_ValidationParms[];
     303             : extern const struct asn1_template asn1_DomainParameters[];
     304             : extern const struct asn1_template asn1_DHParameter[];
     305             : extern const struct asn1_template asn1_DHPublicKey[];
     306             : extern const struct asn1_template asn1_DHPublicKey[];
     307             : extern const struct asn1_template asn1_GeneralName[];
     308             : extern const struct asn1_template asn1_GeneralNames[];
     309             : static unsigned oid_id_x509_ce_keyUsage_variable_num[4] =  { 2, 5, 29, 15};
     310             : const heim_oid asn1_oid_id_x509_ce_keyUsage = { 4, oid_id_x509_ce_keyUsage_variable_num };
     311             : 
     312             : extern const struct asn1_template asn1_KeyUsage[];
     313             : extern const struct asn1_template asn1_KeyUsage[];
     314             : extern const struct asn1_template asn1_PrivateKeyUsagePeriod[];
     315             : extern const struct asn1_template asn1_CertPolicyId[];
     316             : extern const struct asn1_template asn1_CertPolicyId[];
     317             : extern const struct asn1_template asn1_PolicyQualifierId[];
     318             : extern const struct asn1_template asn1_PolicyQualifierId[];
     319             : extern const struct asn1_template asn1_PolicyQualifierInfos[];
     320             : extern const struct asn1_template asn1_PolicyInformation[];
     321             : extern const struct asn1_template asn1_CertificatePolicies[];
     322             : extern const struct asn1_template asn1_CPSuri[];
     323             : extern const struct asn1_template asn1_CPSuri[];
     324             : extern const struct asn1_template asn1_DisplayText[];
     325             : extern const struct asn1_template asn1_NoticeReference[];
     326             : extern const struct asn1_template asn1_UserNotice[];
     327             : extern const struct asn1_template asn1_PolicyMapping[];
     328             : extern const struct asn1_template asn1_PolicyMappings[];
     329             : static unsigned oid_id_x509_ce_authorityKeyIdentifier_variable_num[4] =  { 2, 5, 29, 35};
     330             : const heim_oid asn1_oid_id_x509_ce_authorityKeyIdentifier = { 4, oid_id_x509_ce_authorityKeyIdentifier_variable_num };
     331             : 
     332             : extern const struct asn1_template asn1_KeyIdentifier[];
     333             : extern const struct asn1_template asn1_KeyIdentifier[];
     334             : extern const struct asn1_template asn1_AuthorityKeyIdentifier[];
     335             : static unsigned oid_id_x509_ce_subjectKeyIdentifier_variable_num[4] =  { 2, 5, 29, 14};
     336             : const heim_oid asn1_oid_id_x509_ce_subjectKeyIdentifier = { 4, oid_id_x509_ce_subjectKeyIdentifier_variable_num };
     337             : 
     338             : extern const struct asn1_template asn1_SubjectKeyIdentifier[];
     339             : extern const struct asn1_template asn1_SubjectKeyIdentifier[];
     340             : static unsigned oid_id_x509_ce_basicConstraints_variable_num[4] =  { 2, 5, 29, 19};
     341             : const heim_oid asn1_oid_id_x509_ce_basicConstraints = { 4, oid_id_x509_ce_basicConstraints_variable_num };
     342             : 
     343             : extern const struct asn1_template asn1_BasicConstraints[];
     344             : static unsigned oid_id_x509_ce_nameConstraints_variable_num[4] =  { 2, 5, 29, 30};
     345             : const heim_oid asn1_oid_id_x509_ce_nameConstraints = { 4, oid_id_x509_ce_nameConstraints_variable_num };
     346             : 
     347             : extern const struct asn1_template asn1_BaseDistance[];
     348             : extern const struct asn1_template asn1_BaseDistance[];
     349             : extern const struct asn1_template asn1_GeneralSubtree[];
     350             : extern const struct asn1_template asn1_GeneralSubtrees[];
     351             : extern const struct asn1_template asn1_NameConstraints[];
     352             : static unsigned oid_id_x509_ce_privateKeyUsagePeriod_variable_num[4] =  { 2, 5, 29, 16};
     353             : const heim_oid asn1_oid_id_x509_ce_privateKeyUsagePeriod = { 4, oid_id_x509_ce_privateKeyUsagePeriod_variable_num };
     354             : 
     355             : static unsigned oid_id_x509_ce_certificatePolicies_variable_num[4] =  { 2, 5, 29, 32};
     356             : const heim_oid asn1_oid_id_x509_ce_certificatePolicies = { 4, oid_id_x509_ce_certificatePolicies_variable_num };
     357             : 
     358             : static unsigned oid_id_x509_ce_certificatePolicies_anyPolicy_variable_num[5] =  { 2, 5, 29, 32, 0};
     359             : const heim_oid asn1_oid_id_x509_ce_certificatePolicies_anyPolicy = { 5, oid_id_x509_ce_certificatePolicies_anyPolicy_variable_num };
     360             : 
     361             : static unsigned oid_id_x509_ce_policyMappings_variable_num[4] =  { 2, 5, 29, 33};
     362             : const heim_oid asn1_oid_id_x509_ce_policyMappings = { 4, oid_id_x509_ce_policyMappings_variable_num };
     363             : 
     364             : static unsigned oid_id_x509_ce_subjectAltName_variable_num[4] =  { 2, 5, 29, 17};
     365             : const heim_oid asn1_oid_id_x509_ce_subjectAltName = { 4, oid_id_x509_ce_subjectAltName_variable_num };
     366             : 
     367             : static unsigned oid_id_x509_ce_issuerAltName_variable_num[4] =  { 2, 5, 29, 18};
     368             : const heim_oid asn1_oid_id_x509_ce_issuerAltName = { 4, oid_id_x509_ce_issuerAltName_variable_num };
     369             : 
     370             : static unsigned oid_id_x509_ce_subjectDirectoryAttributes_variable_num[4] =  { 2, 5, 29, 9};
     371             : const heim_oid asn1_oid_id_x509_ce_subjectDirectoryAttributes = { 4, oid_id_x509_ce_subjectDirectoryAttributes_variable_num };
     372             : 
     373             : static unsigned oid_id_x509_ce_policyConstraints_variable_num[4] =  { 2, 5, 29, 36};
     374             : const heim_oid asn1_oid_id_x509_ce_policyConstraints = { 4, oid_id_x509_ce_policyConstraints_variable_num };
     375             : 
     376             : static unsigned oid_id_x509_ce_extKeyUsage_variable_num[4] =  { 2, 5, 29, 37};
     377             : const heim_oid asn1_oid_id_x509_ce_extKeyUsage = { 4, oid_id_x509_ce_extKeyUsage_variable_num };
     378             : 
     379             : static unsigned oid_id_x509_ce_anyExtendedKeyUsage_variable_num[5] =  { 2, 5, 29, 37, 0};
     380             : const heim_oid asn1_oid_id_x509_ce_anyExtendedKeyUsage = { 5, oid_id_x509_ce_anyExtendedKeyUsage_variable_num };
     381             : 
     382             : extern const struct asn1_template asn1_ExtKeyUsage[];
     383             : static unsigned oid_id_x509_ce_cRLReasons_variable_num[4] =  { 2, 5, 29, 21};
     384             : const heim_oid asn1_oid_id_x509_ce_cRLReasons = { 4, oid_id_x509_ce_cRLReasons_variable_num };
     385             : 
     386             : static unsigned oid_id_x509_ce_cRLDistributionPoints_variable_num[4] =  { 2, 5, 29, 31};
     387             : const heim_oid asn1_oid_id_x509_ce_cRLDistributionPoints = { 4, oid_id_x509_ce_cRLDistributionPoints_variable_num };
     388             : 
     389             : static unsigned oid_id_x509_ce_deltaCRLIndicator_variable_num[4] =  { 2, 5, 29, 27};
     390             : const heim_oid asn1_oid_id_x509_ce_deltaCRLIndicator = { 4, oid_id_x509_ce_deltaCRLIndicator_variable_num };
     391             : 
     392             : static unsigned oid_id_x509_ce_issuingDistributionPoint_variable_num[4] =  { 2, 5, 29, 28};
     393             : const heim_oid asn1_oid_id_x509_ce_issuingDistributionPoint = { 4, oid_id_x509_ce_issuingDistributionPoint_variable_num };
     394             : 
     395             : static unsigned oid_id_x509_ce_holdInstructionCode_variable_num[4] =  { 2, 5, 29, 23};
     396             : const heim_oid asn1_oid_id_x509_ce_holdInstructionCode = { 4, oid_id_x509_ce_holdInstructionCode_variable_num };
     397             : 
     398             : static unsigned oid_id_x509_ce_invalidityDate_variable_num[4] =  { 2, 5, 29, 24};
     399             : const heim_oid asn1_oid_id_x509_ce_invalidityDate = { 4, oid_id_x509_ce_invalidityDate_variable_num };
     400             : 
     401             : static unsigned oid_id_x509_ce_certificateIssuer_variable_num[4] =  { 2, 5, 29, 29};
     402             : const heim_oid asn1_oid_id_x509_ce_certificateIssuer = { 4, oid_id_x509_ce_certificateIssuer_variable_num };
     403             : 
     404             : static unsigned oid_id_x509_ce_inhibitAnyPolicy_variable_num[4] =  { 2, 5, 29, 54};
     405             : const heim_oid asn1_oid_id_x509_ce_inhibitAnyPolicy = { 4, oid_id_x509_ce_inhibitAnyPolicy_variable_num };
     406             : 
     407             : static unsigned oid_id_heim_ce_pkinit_princ_max_life_variable_num[6] =  { 1, 2, 752, 43, 16, 4};
     408             : const heim_oid asn1_oid_id_heim_ce_pkinit_princ_max_life = { 6, oid_id_heim_ce_pkinit_princ_max_life_variable_num };
     409             : 
     410             : extern const struct asn1_template asn1_DistributionPointReasonFlags[];
     411             : extern const struct asn1_template asn1_DistributionPointReasonFlags[];
     412             : extern const struct asn1_template asn1_DistributionPointName[];
     413             : extern const struct asn1_template asn1_DistributionPoint[];
     414             : extern const struct asn1_template asn1_CRLDistributionPoints[];
     415             : extern const struct asn1_template asn1_DSASigValue[];
     416             : extern const struct asn1_template asn1_DSAPublicKey[];
     417             : extern const struct asn1_template asn1_DSAPublicKey[];
     418             : extern const struct asn1_template asn1_DSAParams[];
     419             : extern const struct asn1_template asn1_ECPoint[];
     420             : extern const struct asn1_template asn1_ECPoint[];
     421             : extern const struct asn1_template asn1_ECParameters[];
     422             : extern const struct asn1_template asn1_ECDSA_Sig_Value[];
     423             : extern const struct asn1_template asn1_RSAPublicKey[];
     424             : extern const struct asn1_template asn1_RSAPrivateKey[];
     425             : extern const struct asn1_template asn1_DigestInfo[];
     426             : extern const struct asn1_template asn1_TBSCRLCertList[];
     427             : extern const struct asn1_template asn1_CRLCertificateList[];
     428             : static unsigned oid_id_x509_ce_cRLNumber_variable_num[4] =  { 2, 5, 29, 20};
     429             : const heim_oid asn1_oid_id_x509_ce_cRLNumber = { 4, oid_id_x509_ce_cRLNumber_variable_num };
     430             : 
     431             : static unsigned oid_id_x509_ce_freshestCRL_variable_num[4] =  { 2, 5, 29, 46};
     432             : const heim_oid asn1_oid_id_x509_ce_freshestCRL = { 4, oid_id_x509_ce_freshestCRL_variable_num };
     433             : 
     434             : static unsigned oid_id_x509_ce_cRLReason_variable_num[4] =  { 2, 5, 29, 21};
     435             : const heim_oid asn1_oid_id_x509_ce_cRLReason = { 4, oid_id_x509_ce_cRLReason_variable_num };
     436             : 
     437             : extern const struct asn1_template asn1_CRLReason[];
     438             : extern const struct asn1_template asn1_CRLReason[];
     439             : extern const struct asn1_template asn1_PKIXXmppAddr[];
     440             : extern const struct asn1_template asn1_PKIXXmppAddr[];
     441             : extern const struct asn1_template asn1_SRVName[];
     442             : extern const struct asn1_template asn1_SRVName[];
     443             : static unsigned oid_id_pkix_variable_num[7] =  { 1, 3, 6, 1, 5, 5, 7};
     444             : const heim_oid asn1_oid_id_pkix = { 7, oid_id_pkix_variable_num };
     445             : 
     446             : static unsigned oid_id_pkix_on_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 8};
     447             : const heim_oid asn1_oid_id_pkix_on = { 8, oid_id_pkix_on_variable_num };
     448             : 
     449             : static unsigned oid_id_pkix_on_xmppAddr_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 8, 5};
     450             : const heim_oid asn1_oid_id_pkix_on_xmppAddr = { 9, oid_id_pkix_on_xmppAddr_variable_num };
     451             : 
     452             : static unsigned oid_id_pkix_on_dnsSRV_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 8, 7};
     453             : const heim_oid asn1_oid_id_pkix_on_dnsSRV = { 9, oid_id_pkix_on_dnsSRV_variable_num };
     454             : 
     455             : static unsigned oid_id_pkix_on_hardwareModuleName_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 8, 4};
     456             : const heim_oid asn1_oid_id_pkix_on_hardwareModuleName = { 9, oid_id_pkix_on_hardwareModuleName_variable_num };
     457             : 
     458             : extern const struct asn1_template asn1_HardwareModuleName[];
     459             : static unsigned oid_id_pkix_on_pkinit_san_variable_num[7] =  { 1, 3, 6, 1, 5, 2, 2};
     460             : const heim_oid asn1_oid_id_pkix_on_pkinit_san = { 7, oid_id_pkix_on_pkinit_san_variable_num };
     461             : 
     462             : extern const struct asn1_template asn1_KRB5PrincipalName[];
     463             : static unsigned oid_id_pkix_on_permanentIdentifier_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 8, 3};
     464             : const heim_oid asn1_oid_id_pkix_on_permanentIdentifier = { 9, oid_id_pkix_on_permanentIdentifier_variable_num };
     465             : 
     466             : extern const struct asn1_template asn1_PermanentIdentifier[];
     467             : static unsigned oid_id_pkix_kp_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 3};
     468             : const heim_oid asn1_oid_id_pkix_kp = { 8, oid_id_pkix_kp_variable_num };
     469             : 
     470             : static unsigned oid_id_pkix_kp_serverAuth_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 1};
     471             : const heim_oid asn1_oid_id_pkix_kp_serverAuth = { 9, oid_id_pkix_kp_serverAuth_variable_num };
     472             : 
     473             : static unsigned oid_id_pkix_kp_clientAuth_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 2};
     474             : const heim_oid asn1_oid_id_pkix_kp_clientAuth = { 9, oid_id_pkix_kp_clientAuth_variable_num };
     475             : 
     476             : static unsigned oid_id_pkix_kp_codeSigning_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 3};
     477             : const heim_oid asn1_oid_id_pkix_kp_codeSigning = { 9, oid_id_pkix_kp_codeSigning_variable_num };
     478             : 
     479             : static unsigned oid_id_pkix_kp_emailProtection_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 4};
     480             : const heim_oid asn1_oid_id_pkix_kp_emailProtection = { 9, oid_id_pkix_kp_emailProtection_variable_num };
     481             : 
     482             : static unsigned oid_id_pkix_kp_ipsecEndSystem_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 5};
     483             : const heim_oid asn1_oid_id_pkix_kp_ipsecEndSystem = { 9, oid_id_pkix_kp_ipsecEndSystem_variable_num };
     484             : 
     485             : static unsigned oid_id_pkix_kp_ipsecTunnel_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 6};
     486             : const heim_oid asn1_oid_id_pkix_kp_ipsecTunnel = { 9, oid_id_pkix_kp_ipsecTunnel_variable_num };
     487             : 
     488             : static unsigned oid_id_pkix_kp_ipsecUser_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 7};
     489             : const heim_oid asn1_oid_id_pkix_kp_ipsecUser = { 9, oid_id_pkix_kp_ipsecUser_variable_num };
     490             : 
     491             : static unsigned oid_id_pkix_kp_timeStamping_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 8};
     492             : const heim_oid asn1_oid_id_pkix_kp_timeStamping = { 9, oid_id_pkix_kp_timeStamping_variable_num };
     493             : 
     494             : static unsigned oid_id_pkix_kp_OCSPSigning_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 9};
     495             : const heim_oid asn1_oid_id_pkix_kp_OCSPSigning = { 9, oid_id_pkix_kp_OCSPSigning_variable_num };
     496             : 
     497             : static unsigned oid_id_pkix_kp_DVCS_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 10};
     498             : const heim_oid asn1_oid_id_pkix_kp_DVCS = { 9, oid_id_pkix_kp_DVCS_variable_num };
     499             : 
     500             : static unsigned oid_id_pkix_kp_ipsecIKE_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 17};
     501             : const heim_oid asn1_oid_id_pkix_kp_ipsecIKE = { 9, oid_id_pkix_kp_ipsecIKE_variable_num };
     502             : 
     503             : static unsigned oid_id_pkix_kp_capwapAC_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 18};
     504             : const heim_oid asn1_oid_id_pkix_kp_capwapAC = { 9, oid_id_pkix_kp_capwapAC_variable_num };
     505             : 
     506             : static unsigned oid_id_pkix_kp_capwapWTP_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 19};
     507             : const heim_oid asn1_oid_id_pkix_kp_capwapWTP = { 9, oid_id_pkix_kp_capwapWTP_variable_num };
     508             : 
     509             : static unsigned oid_id_pkix_kp_sipDomain_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 20};
     510             : const heim_oid asn1_oid_id_pkix_kp_sipDomain = { 9, oid_id_pkix_kp_sipDomain_variable_num };
     511             : 
     512             : static unsigned oid_id_pkix_kp_secureShellClient_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 21};
     513             : const heim_oid asn1_oid_id_pkix_kp_secureShellClient = { 9, oid_id_pkix_kp_secureShellClient_variable_num };
     514             : 
     515             : static unsigned oid_id_pkix_kp_secureShellServer_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 22};
     516             : const heim_oid asn1_oid_id_pkix_kp_secureShellServer = { 9, oid_id_pkix_kp_secureShellServer_variable_num };
     517             : 
     518             : static unsigned oid_id_pkix_kp_sendRouter_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 23};
     519             : const heim_oid asn1_oid_id_pkix_kp_sendRouter = { 9, oid_id_pkix_kp_sendRouter_variable_num };
     520             : 
     521             : static unsigned oid_id_pkix_kp_sendProxiedRouter_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 24};
     522             : const heim_oid asn1_oid_id_pkix_kp_sendProxiedRouter = { 9, oid_id_pkix_kp_sendProxiedRouter_variable_num };
     523             : 
     524             : static unsigned oid_id_pkix_kp_sendOwner_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 25};
     525             : const heim_oid asn1_oid_id_pkix_kp_sendOwner = { 9, oid_id_pkix_kp_sendOwner_variable_num };
     526             : 
     527             : static unsigned oid_id_pkix_kp_sendProxiedOwner_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 26};
     528             : const heim_oid asn1_oid_id_pkix_kp_sendProxiedOwner = { 9, oid_id_pkix_kp_sendProxiedOwner_variable_num };
     529             : 
     530             : static unsigned oid_id_pkix_kp_cmcCA_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 27};
     531             : const heim_oid asn1_oid_id_pkix_kp_cmcCA = { 9, oid_id_pkix_kp_cmcCA_variable_num };
     532             : 
     533             : static unsigned oid_id_pkix_kp_cmcRA_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 28};
     534             : const heim_oid asn1_oid_id_pkix_kp_cmcRA = { 9, oid_id_pkix_kp_cmcRA_variable_num };
     535             : 
     536             : static unsigned oid_id_pkix_kp_cmcArchive_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 29};
     537             : const heim_oid asn1_oid_id_pkix_kp_cmcArchive = { 9, oid_id_pkix_kp_cmcArchive_variable_num };
     538             : 
     539             : static unsigned oid_id_pkix_kp_bgpsec_router_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 3, 30};
     540             : const heim_oid asn1_oid_id_pkix_kp_bgpsec_router = { 9, oid_id_pkix_kp_bgpsec_router_variable_num };
     541             : 
     542             : static unsigned oid_id_msft_variable_num[7] =  { 1, 3, 6, 1, 4, 1, 311};
     543             : const heim_oid asn1_oid_id_msft = { 7, oid_id_msft_variable_num };
     544             : 
     545             : static unsigned oid_id_msft_kp_msCodeInd_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 2, 1, 21};
     546             : const heim_oid asn1_oid_id_msft_kp_msCodeInd = { 10, oid_id_msft_kp_msCodeInd_variable_num };
     547             : 
     548             : static unsigned oid_id_msft_kp_msCodeCom_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 2, 1, 22};
     549             : const heim_oid asn1_oid_id_msft_kp_msCodeCom = { 10, oid_id_msft_kp_msCodeCom_variable_num };
     550             : 
     551             : static unsigned oid_id_msft_kp_msCTLSign_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 10, 3, 1};
     552             : const heim_oid asn1_oid_id_msft_kp_msCTLSign = { 10, oid_id_msft_kp_msCTLSign_variable_num };
     553             : 
     554             : static unsigned oid_id_msft_kp_msSGC_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 10, 3, 3};
     555             : const heim_oid asn1_oid_id_msft_kp_msSGC = { 10, oid_id_msft_kp_msSGC_variable_num };
     556             : 
     557             : static unsigned oid_id_msft_kp_msEFS_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 10, 3, 4};
     558             : const heim_oid asn1_oid_id_msft_kp_msEFS = { 10, oid_id_msft_kp_msEFS_variable_num };
     559             : 
     560             : static unsigned oid_id_msft_kp_msSmartcardLogin_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 20, 2, 2};
     561             : const heim_oid asn1_oid_id_msft_kp_msSmartcardLogin = { 10, oid_id_msft_kp_msSmartcardLogin_variable_num };
     562             : 
     563             : static unsigned oid_id_msft_kp_msUPN_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 20, 2, 3};
     564             : const heim_oid asn1_oid_id_msft_kp_msUPN = { 10, oid_id_msft_kp_msUPN_variable_num };
     565             : 
     566             : static unsigned oid_id_pkix_pe_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 1};
     567             : const heim_oid asn1_oid_id_pkix_pe = { 8, oid_id_pkix_pe_variable_num };
     568             : 
     569             : static unsigned oid_id_pkix_pe_authorityInfoAccess_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 1, 1};
     570             : const heim_oid asn1_oid_id_pkix_pe_authorityInfoAccess = { 9, oid_id_pkix_pe_authorityInfoAccess_variable_num };
     571             : 
     572             : extern const struct asn1_template asn1_AccessDescription[];
     573             : extern const struct asn1_template asn1_AuthorityInfoAccessSyntax[];
     574             : static unsigned oid_id_pkix_pe_proxyCertInfo_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 1, 14};
     575             : const heim_oid asn1_oid_id_pkix_pe_proxyCertInfo = { 9, oid_id_pkix_pe_proxyCertInfo_variable_num };
     576             : 
     577             : static unsigned oid_id_pkix_pe_subjectInfoAccess_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 1, 11};
     578             : const heim_oid asn1_oid_id_pkix_pe_subjectInfoAccess = { 9, oid_id_pkix_pe_subjectInfoAccess_variable_num };
     579             : 
     580             : extern const struct asn1_template asn1_SubjectInfoAccessSyntax[];
     581             : static unsigned oid_id_pkix_ppl_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 21};
     582             : const heim_oid asn1_oid_id_pkix_ppl = { 8, oid_id_pkix_ppl_variable_num };
     583             : 
     584             : static unsigned oid_id_pkix_ppl_anyLanguage_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 21, 0};
     585             : const heim_oid asn1_oid_id_pkix_ppl_anyLanguage = { 9, oid_id_pkix_ppl_anyLanguage_variable_num };
     586             : 
     587             : static unsigned oid_id_pkix_ppl_inheritAll_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 21, 1};
     588             : const heim_oid asn1_oid_id_pkix_ppl_inheritAll = { 9, oid_id_pkix_ppl_inheritAll_variable_num };
     589             : 
     590             : static unsigned oid_id_pkix_ppl_independent_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 21, 2};
     591             : const heim_oid asn1_oid_id_pkix_ppl_independent = { 9, oid_id_pkix_ppl_independent_variable_num };
     592             : 
     593             : extern const struct asn1_template asn1_ProxyPolicy[];
     594             : extern const struct asn1_template asn1_ProxyCertInfo[];
     595             : static unsigned oid_tcg_variable_num[3] =  { 2, 23, 133};
     596             : const heim_oid asn1_oid_tcg = { 3, oid_tcg_variable_num };
     597             : 
     598             : static unsigned oid_tcg_attribute_variable_num[4] =  { 2, 23, 133, 2};
     599             : const heim_oid asn1_oid_tcg_attribute = { 4, oid_tcg_attribute_variable_num };
     600             : 
     601             : static unsigned oid_tcg_kp_variable_num[4] =  { 2, 23, 133, 8};
     602             : const heim_oid asn1_oid_tcg_kp = { 4, oid_tcg_kp_variable_num };
     603             : 
     604             : static unsigned oid_tcg_at_tpmManufacturer_variable_num[5] =  { 2, 23, 133, 2, 1};
     605             : const heim_oid asn1_oid_tcg_at_tpmManufacturer = { 5, oid_tcg_at_tpmManufacturer_variable_num };
     606             : 
     607             : static unsigned oid_tcg_at_tpmModel_variable_num[5] =  { 2, 23, 133, 2, 2};
     608             : const heim_oid asn1_oid_tcg_at_tpmModel = { 5, oid_tcg_at_tpmModel_variable_num };
     609             : 
     610             : static unsigned oid_tcg_at_tpmVersion_variable_num[5] =  { 2, 23, 133, 2, 3};
     611             : const heim_oid asn1_oid_tcg_at_tpmVersion = { 5, oid_tcg_at_tpmVersion_variable_num };
     612             : 
     613             : static unsigned oid_tcg_at_tpmSpecification_variable_num[5] =  { 2, 23, 133, 2, 16};
     614             : const heim_oid asn1_oid_tcg_at_tpmSpecification = { 5, oid_tcg_at_tpmSpecification_variable_num };
     615             : 
     616             : static unsigned oid_tcg_at_tpmSecurityAssertions_variable_num[5] =  { 2, 23, 133, 2, 18};
     617             : const heim_oid asn1_oid_tcg_at_tpmSecurityAssertions = { 5, oid_tcg_at_tpmSecurityAssertions_variable_num };
     618             : 
     619             : static unsigned oid_tcg_kp_EKCertificate_variable_num[5] =  { 2, 23, 133, 8, 1};
     620             : const heim_oid asn1_oid_tcg_kp_EKCertificate = { 5, oid_tcg_kp_EKCertificate_variable_num };
     621             : 
     622             : static unsigned oid_tcg_tpm20_variable_num[5] =  { 2, 23, 133, 1, 2};
     623             : const heim_oid asn1_oid_tcg_tpm20 = { 5, oid_tcg_tpm20_variable_num };
     624             : 
     625             : static unsigned oid_tcg_on_ekPermIdSha256_variable_num[5] =  { 2, 23, 133, 12, 1};
     626             : const heim_oid asn1_oid_tcg_on_ekPermIdSha256 = { 5, oid_tcg_on_ekPermIdSha256_variable_num };
     627             : 
     628             : static unsigned oid_tcg_cap_verifiedTPMResidency_variable_num[6] =  { 2, 23, 133, 11, 1, 1};
     629             : const heim_oid asn1_oid_tcg_cap_verifiedTPMResidency = { 6, oid_tcg_cap_verifiedTPMResidency_variable_num };
     630             : 
     631             : static unsigned oid_tcg_cap_verifiedTPMFixed_variable_num[6] =  { 2, 23, 133, 11, 1, 2};
     632             : const heim_oid asn1_oid_tcg_cap_verifiedTPMFixed = { 6, oid_tcg_cap_verifiedTPMFixed_variable_num };
     633             : 
     634             : static unsigned oid_tcg_cap_verifiedTPMRestricted_variable_num[6] =  { 2, 23, 133, 11, 1, 3};
     635             : const heim_oid asn1_oid_tcg_cap_verifiedTPMRestricted = { 6, oid_tcg_cap_verifiedTPMRestricted_variable_num };
     636             : 
     637             : extern const struct asn1_template asn1_EKGenerationType[];
     638             : extern const struct asn1_template asn1_EKGenerationType[];
     639             : extern const struct asn1_template asn1_EKGenerationLocation[];
     640             : extern const struct asn1_template asn1_EKGenerationLocation[];
     641             : extern const struct asn1_template asn1_EKCertificateGenerationLocation[];
     642             : extern const struct asn1_template asn1_EKCertificateGenerationLocation[];
     643             : extern const struct asn1_template asn1_EvaluationAssuranceLevel[];
     644             : extern const struct asn1_template asn1_EvaluationAssuranceLevel[];
     645             : extern const struct asn1_template asn1_SecurityLevel[];
     646             : extern const struct asn1_template asn1_SecurityLevel[];
     647             : extern const struct asn1_template asn1_StrengthOfFunction[];
     648             : extern const struct asn1_template asn1_StrengthOfFunction[];
     649             : extern const struct asn1_template asn1_URIReference[];
     650             : extern const struct asn1_template asn1_EvaluationStatus[];
     651             : extern const struct asn1_template asn1_EvaluationStatus[];
     652             : extern const struct asn1_template asn1_TPMSpecification[];
     653             : extern const struct asn1_template asn1_CommonCriteriaMeasures[];
     654             : extern const struct asn1_template asn1_FIPSLevel[];
     655             : extern const struct asn1_template asn1_TPMVersion[];
     656             : extern const struct asn1_template asn1_TPMVersion[];
     657             : extern const struct asn1_template asn1_TPMSecurityAssertions[];
     658             : static unsigned oid_id_pkix_on_pkinit_ms_san_variable_num[10] =  { 1, 3, 6, 1, 4, 1, 311, 20, 2, 3};
     659             : const heim_oid asn1_oid_id_pkix_on_pkinit_ms_san = { 10, oid_id_pkix_on_pkinit_ms_san_variable_num };
     660             : 
     661             : extern const struct asn1_template asn1_AliasUTF8String[];
     662             : extern const struct asn1_template asn1_AliasUTF8String[];
     663             : extern const struct asn1_template asn1_AliasIA5String[];
     664             : extern const struct asn1_template asn1_AliasIA5String[];
     665             : extern const struct asn1_template asn1_AliasPrintableString[];
     666             : extern const struct asn1_template asn1_AliasPrintableString[];
     667             : extern const struct asn1_template asn1_KnownOtherNameTypes[];
     668             : extern const struct asn1_template asn1_OtherName[];
     669             : extern const struct asn1_template asn1_X520name[];
     670             : extern const struct asn1_template asn1_X520name[];
     671             : extern const struct asn1_template asn1_X520CommonName[];
     672             : extern const struct asn1_template asn1_X520CommonName[];
     673             : extern const struct asn1_template asn1_X520LocalityName[];
     674             : extern const struct asn1_template asn1_X520LocalityName[];
     675             : extern const struct asn1_template asn1_X520OrganizationName[];
     676             : extern const struct asn1_template asn1_X520OrganizationName[];
     677             : extern const struct asn1_template asn1_X520StateOrProvinceName[];
     678             : extern const struct asn1_template asn1_X520StateOrProvinceName[];
     679             : extern const struct asn1_template asn1_X520OrganizationalUnitName[];
     680             : extern const struct asn1_template asn1_X520OrganizationalUnitName[];
     681             : extern const struct asn1_template asn1_SupportedAttributes[];
     682             : extern const struct asn1_template asn1_SingleAttribute[];
     683             : extern const struct asn1_template asn1_AttributeSet[];
     684             : extern const struct asn1_template asn1_SubjectDirectoryAttributes[];
     685             : extern const struct asn1_template asn1_SkipCerts[];
     686             : extern const struct asn1_template asn1_SkipCerts[];
     687             : extern const struct asn1_template asn1_PolicyConstraints[];
     688             : extern const struct asn1_template asn1_HeimPkinitPrincMaxLifeSecs[];
     689             : extern const struct asn1_template asn1_HeimPkinitPrincMaxLifeSecs[];
     690             : extern const struct asn1_template asn1_CertExtensions[];
     691             : extern const struct asn1_template asn1_Extension[];
     692             : static unsigned oid_id_uspkicommon_card_id_variable_num[8] =  { 2, 16, 840, 1, 101, 3, 6, 6};
     693             : const heim_oid asn1_oid_id_uspkicommon_card_id = { 8, oid_id_uspkicommon_card_id_variable_num };
     694             : 
     695             : static unsigned oid_id_uspkicommon_piv_interim_variable_num[9] =  { 2, 16, 840, 1, 101, 3, 6, 9, 1};
     696             : const heim_oid asn1_oid_id_uspkicommon_piv_interim = { 9, oid_id_uspkicommon_piv_interim_variable_num };
     697             : 
     698             : static unsigned oid_id_netscape_variable_num[5] =  { 2, 16, 840, 1, 113730};
     699             : const heim_oid asn1_oid_id_netscape = { 5, oid_id_netscape_variable_num };
     700             : 
     701             : static unsigned oid_id_netscape_cert_comment_variable_num[7] =  { 2, 16, 840, 1, 113730, 1, 13};
     702             : const heim_oid asn1_oid_id_netscape_cert_comment = { 7, oid_id_netscape_cert_comment_variable_num };
     703             : 
     704             : static unsigned oid_id_ms_cert_enroll_domaincontroller_variable_num[9] =  { 1, 3, 6, 1, 4, 1, 311, 20, 2};
     705             : const heim_oid asn1_oid_id_ms_cert_enroll_domaincontroller = { 9, oid_id_ms_cert_enroll_domaincontroller_variable_num };
     706             : 
     707             : static unsigned oid_id_pkix_qt_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 2};
     708             : const heim_oid asn1_oid_id_pkix_qt = { 8, oid_id_pkix_qt_variable_num };
     709             : 
     710             : static unsigned oid_id_pkix_qt_cps_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 2, 1};
     711             : const heim_oid asn1_oid_id_pkix_qt_cps = { 9, oid_id_pkix_qt_cps_variable_num };
     712             : 
     713             : static unsigned oid_id_pkix_qt_unotice_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 2, 2};
     714             : const heim_oid asn1_oid_id_pkix_qt_unotice = { 9, oid_id_pkix_qt_unotice_variable_num };
     715             : 
     716             : static unsigned oid_id_pkix_ad_variable_num[8] =  { 1, 3, 6, 1, 5, 5, 7, 48};
     717             : const heim_oid asn1_oid_id_pkix_ad = { 8, oid_id_pkix_ad_variable_num };
     718             : 
     719             : static unsigned oid_id_pkix_ad_ocsp_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 48, 1};
     720             : const heim_oid asn1_oid_id_pkix_ad_ocsp = { 9, oid_id_pkix_ad_ocsp_variable_num };
     721             : 
     722             : static unsigned oid_id_pkix_ad_caIssuers_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 48, 2};
     723             : const heim_oid asn1_oid_id_pkix_ad_caIssuers = { 9, oid_id_pkix_ad_caIssuers_variable_num };
     724             : 
     725             : static unsigned oid_id_pkix_ad_timeStamping_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 48, 3};
     726             : const heim_oid asn1_oid_id_pkix_ad_timeStamping = { 9, oid_id_pkix_ad_timeStamping_variable_num };
     727             : 
     728             : static unsigned oid_id_pkix_ad_caRepository_variable_num[9] =  { 1, 3, 6, 1, 5, 5, 7, 48, 5};
     729             : const heim_oid asn1_oid_id_pkix_ad_caRepository = { 9, oid_id_pkix_ad_caRepository_variable_num };
     730             : 
     731             : extern const struct asn1_template asn1_KnownPolicyQualifiers[];
     732             : extern const struct asn1_template asn1_PolicyQualifierInfo[];
     733             : /* template_members: Version exp exp */
     734             : const struct asn1_template asn1_Version_enum_names[] = {
     735             : /* 0 */ { 0, 0, ((void *)(uintptr_t)3) },
     736             : /* 1 */ { A1_OP_NAME, 0, "rfc3280_version_1" },
     737             : /* 2 */ { A1_OP_NAME, 1, "rfc3280_version_2" },
     738             : /* 3 */ { A1_OP_NAME, 2, "rfc3280_version_3" }
     739             : };
     740             : /* generate_template_type: Version_tag__0 */
     741             : const struct asn1_template asn1_Version_tag__0[] = {
     742             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
     743             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_Version_enum_names }
     744             : };
     745             : /* generate_template_type: Version */
     746             : const struct asn1_template asn1_Version[] = {
     747             : /* 0 */ { 0, sizeof(Version), ((void *)(uintptr_t)1) },
     748             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_Version_tag__0 }
     749             : };
     750             : 
     751             : int ASN1CALL
     752           0 : decode_Version(const unsigned char *p, size_t len, Version *data, size_t *size)
     753             : {
     754           0 :     memset(data, 0, sizeof(*data));
     755           0 :     return _asn1_decode_top(asn1_Version, 0|0, p, len, data, size);
     756             : }
     757             : 
     758             : 
     759             : int ASN1CALL
     760           0 : encode_Version(unsigned char *p, size_t len, const Version *data, size_t *size)
     761             : {
     762           0 :     return _asn1_encode(asn1_Version, p, len, data, size);
     763             : }
     764             : 
     765             : 
     766             : size_t ASN1CALL
     767           0 : length_Version(const Version *data)
     768             : {
     769           0 :     return _asn1_length(asn1_Version, data);
     770             : }
     771             : 
     772             : 
     773             : void ASN1CALL
     774           0 : free_Version(Version *data)
     775             : {
     776           0 :     _asn1_free_top(asn1_Version, data);
     777           0 : }
     778             : 
     779             : 
     780             : int ASN1CALL
     781           0 : copy_Version(const Version *from, Version *to)
     782             : {
     783           0 :     return _asn1_copy_top(asn1_Version, from, to);
     784             : }
     785             : 
     786             : 
     787             : char * ASN1CALL
     788           0 : print_Version(const Version *data, int flags)
     789             : {
     790           0 :     return _asn1_print_top(asn1_Version, flags, data);
     791             : }
     792             : 
     793             : /* template_members: AttributeType exp exp */
     794             : /* generate_template_type: AttributeType_tag__1 */
     795             : const struct asn1_template asn1_AttributeType_tag__1[] = {
     796             : /* 0 */ { 0, sizeof(heim_oid), ((void *)(uintptr_t)1) },
     797             : /* 1 */ { A1_PARSE_T(A1T_OID), 0, NULL }
     798             : };
     799             : /* generate_template_type: AttributeType */
     800             : const struct asn1_template asn1_AttributeType[] = {
     801             : /* 0 */ { 0, sizeof(AttributeType), ((void *)(uintptr_t)1) },
     802             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), 0, asn1_AttributeType_tag__1 }
     803             : };
     804             : 
     805             : int ASN1CALL
     806           0 : decode_AttributeType(const unsigned char *p, size_t len, AttributeType *data, size_t *size)
     807             : {
     808           0 :     memset(data, 0, sizeof(*data));
     809           0 :     return _asn1_decode_top(asn1_AttributeType, 0|0, p, len, data, size);
     810             : }
     811             : 
     812             : 
     813             : int ASN1CALL
     814           0 : encode_AttributeType(unsigned char *p, size_t len, const AttributeType *data, size_t *size)
     815             : {
     816           0 :     return _asn1_encode(asn1_AttributeType, p, len, data, size);
     817             : }
     818             : 
     819             : 
     820             : size_t ASN1CALL
     821           0 : length_AttributeType(const AttributeType *data)
     822             : {
     823           0 :     return _asn1_length(asn1_AttributeType, data);
     824             : }
     825             : 
     826             : 
     827             : void ASN1CALL
     828           0 : free_AttributeType(AttributeType *data)
     829             : {
     830           0 :     _asn1_free_top(asn1_AttributeType, data);
     831           0 : }
     832             : 
     833             : 
     834             : int ASN1CALL
     835           0 : copy_AttributeType(const AttributeType *from, AttributeType *to)
     836             : {
     837           0 :     return _asn1_copy_top(asn1_AttributeType, from, to);
     838             : }
     839             : 
     840             : 
     841             : char * ASN1CALL
     842           0 : print_AttributeType(const AttributeType *data, int flags)
     843             : {
     844           0 :     return _asn1_print_top(asn1_AttributeType, flags, data);
     845             : }
     846             : 
     847             : /* template_members: AlgorithmIdentifier exp exp */
     848             : /* tsequence: members isstruct: 1 */
     849             : /* template_members: AlgorithmIdentifier exp exp */
     850             : /* generate_template_type: AlgorithmIdentifier_tag_algorithm_3 */
     851             : /* generate_template_type: AlgorithmIdentifier_tag__2 */
     852             : const struct asn1_template asn1_AlgorithmIdentifier_tag__2[] = {
     853             : /* 0 */ { 0, sizeof(struct AlgorithmIdentifier), ((void *)(uintptr_t)5) },
     854             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct AlgorithmIdentifier, algorithm), asn1_AttributeType_tag__1 },
     855             : /* 2 */ { A1_OP_TYPE_EXTERN |A1_FLAG_OPTIONAL, offsetof(struct AlgorithmIdentifier, parameters), &asn1_extern_HEIM_ANY},
     856             : /* 3 */ { A1_OP_NAME, 0, "AlgorithmIdentifier" },
     857             : /* 4 */ { A1_OP_NAME, 0, "algorithm" },
     858             : /* 5 */ { A1_OP_NAME, 0, "parameters" }
     859             : };
     860             : /* generate_template_type: AlgorithmIdentifier */
     861             : const struct asn1_template asn1_AlgorithmIdentifier[] = {
     862             : /* 0 */ { 0, sizeof(AlgorithmIdentifier), ((void *)(uintptr_t)1) },
     863             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AlgorithmIdentifier_tag__2 }
     864             : };
     865             : 
     866             : int ASN1CALL
     867         498 : decode_AlgorithmIdentifier(const unsigned char *p, size_t len, AlgorithmIdentifier *data, size_t *size)
     868             : {
     869         498 :     memset(data, 0, sizeof(*data));
     870         498 :     return _asn1_decode_top(asn1_AlgorithmIdentifier, 0|0, p, len, data, size);
     871             : }
     872             : 
     873             : 
     874             : int ASN1CALL
     875        2221 : encode_AlgorithmIdentifier(unsigned char *p, size_t len, const AlgorithmIdentifier *data, size_t *size)
     876             : {
     877        2221 :     return _asn1_encode(asn1_AlgorithmIdentifier, p, len, data, size);
     878             : }
     879             : 
     880             : 
     881             : size_t ASN1CALL
     882        2437 : length_AlgorithmIdentifier(const AlgorithmIdentifier *data)
     883             : {
     884        2437 :     return _asn1_length(asn1_AlgorithmIdentifier, data);
     885             : }
     886             : 
     887             : 
     888             : void ASN1CALL
     889        3231 : free_AlgorithmIdentifier(AlgorithmIdentifier *data)
     890             : {
     891        3231 :     _asn1_free_top(asn1_AlgorithmIdentifier, data);
     892        3231 : }
     893             : 
     894             : 
     895             : int ASN1CALL
     896        2626 : copy_AlgorithmIdentifier(const AlgorithmIdentifier *from, AlgorithmIdentifier *to)
     897             : {
     898        2626 :     return _asn1_copy_top(asn1_AlgorithmIdentifier, from, to);
     899             : }
     900             : 
     901             : 
     902             : char * ASN1CALL
     903           0 : print_AlgorithmIdentifier(const AlgorithmIdentifier *data, int flags)
     904             : {
     905           0 :     return _asn1_print_top(asn1_AlgorithmIdentifier, flags, data);
     906             : }
     907             : 
     908             : /* generate_template_type: AttributeValue */
     909             : const struct asn1_template asn1_AttributeValue[] = {
     910             : /* 0 */ { 0, sizeof(AttributeValue), ((void *)(uintptr_t)1) },
     911             : /* 1 */ { A1_OP_TYPE_EXTERN , 0, &asn1_extern_HEIM_ANY}
     912             : };
     913             : 
     914             : int ASN1CALL
     915           0 : decode_AttributeValue(const unsigned char *p, size_t len, AttributeValue *data, size_t *size)
     916             : {
     917           0 :     memset(data, 0, sizeof(*data));
     918           0 :     return _asn1_decode_top(asn1_AttributeValue, 0|0, p, len, data, size);
     919             : }
     920             : 
     921             : 
     922             : int ASN1CALL
     923           0 : encode_AttributeValue(unsigned char *p, size_t len, const AttributeValue *data, size_t *size)
     924             : {
     925           0 :     return _asn1_encode(asn1_AttributeValue, p, len, data, size);
     926             : }
     927             : 
     928             : 
     929             : size_t ASN1CALL
     930           0 : length_AttributeValue(const AttributeValue *data)
     931             : {
     932           0 :     return _asn1_length(asn1_AttributeValue, data);
     933             : }
     934             : 
     935             : 
     936             : void ASN1CALL
     937           0 : free_AttributeValue(AttributeValue *data)
     938             : {
     939           0 :     _asn1_free_top(asn1_AttributeValue, data);
     940           0 : }
     941             : 
     942             : 
     943             : int ASN1CALL
     944           0 : copy_AttributeValue(const AttributeValue *from, AttributeValue *to)
     945             : {
     946           0 :     return _asn1_copy_top(asn1_AttributeValue, from, to);
     947             : }
     948             : 
     949             : 
     950             : char * ASN1CALL
     951           0 : print_AttributeValue(const AttributeValue *data, int flags)
     952             : {
     953           0 :     return _asn1_print_top(asn1_AttributeValue, flags, data);
     954             : }
     955             : 
     956             : /* template_members: heim_ia5_string exp exp */
     957             : /* generate_template_type: heim_ia5_string_tag__4 */
     958             : const struct asn1_template asn1_heim_ia5_string_tag__4[] = {
     959             : /* 0 */ { 0, sizeof(heim_ia5_string), ((void *)(uintptr_t)1) },
     960             : /* 1 */ { A1_PARSE_T(A1T_IA5_STRING), 0, NULL }
     961             : };
     962             : /* generate_template_type: DirectoryString_choice_ia5String */
     963             : const struct asn1_template asn1_DirectoryString_choice_ia5String[] = {
     964             : /* 0 */ { 0, sizeof(heim_ia5_string), ((void *)(uintptr_t)1) },
     965             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), 0, asn1_heim_ia5_string_tag__4 }
     966             : };
     967             : /* template_members: heim_general_string exp exp */
     968             : /* generate_template_type: heim_general_string_tag__5 */
     969             : const struct asn1_template asn1_heim_general_string_tag__5[] = {
     970             : /* 0 */ { 0, sizeof(heim_general_string), ((void *)(uintptr_t)1) },
     971             : /* 1 */ { A1_PARSE_T(A1T_TELETEX_STRING), 0, NULL }
     972             : };
     973             : /* generate_template_type: DirectoryString_choice_teletexString */
     974             : const struct asn1_template asn1_DirectoryString_choice_teletexString[] = {
     975             : /* 0 */ { 0, sizeof(heim_general_string), ((void *)(uintptr_t)1) },
     976             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_TeletexString), 0, asn1_heim_general_string_tag__5 }
     977             : };
     978             : /* template_members: heim_printable_string exp exp */
     979             : /* generate_template_type: heim_printable_string_tag__6 */
     980             : const struct asn1_template asn1_heim_printable_string_tag__6[] = {
     981             : /* 0 */ { 0, sizeof(heim_printable_string), ((void *)(uintptr_t)1) },
     982             : /* 1 */ { A1_PARSE_T(A1T_PRINTABLE_STRING), 0, NULL }
     983             : };
     984             : /* generate_template_type: DirectoryString_choice_printableString */
     985             : const struct asn1_template asn1_DirectoryString_choice_printableString[] = {
     986             : /* 0 */ { 0, sizeof(heim_printable_string), ((void *)(uintptr_t)1) },
     987             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_PrintableString), 0, asn1_heim_printable_string_tag__6 }
     988             : };
     989             : /* template_members: heim_universal_string exp exp */
     990             : /* generate_template_type: heim_universal_string_tag__7 */
     991             : const struct asn1_template asn1_heim_universal_string_tag__7[] = {
     992             : /* 0 */ { 0, sizeof(heim_universal_string), ((void *)(uintptr_t)1) },
     993             : /* 1 */ { A1_PARSE_T(A1T_UNIVERSAL_STRING), 0, NULL }
     994             : };
     995             : /* generate_template_type: DirectoryString_choice_universalString */
     996             : const struct asn1_template asn1_DirectoryString_choice_universalString[] = {
     997             : /* 0 */ { 0, sizeof(heim_universal_string), ((void *)(uintptr_t)1) },
     998             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UniversalString), 0, asn1_heim_universal_string_tag__7 }
     999             : };
    1000             : /* template_members: heim_utf8_string exp exp */
    1001             : /* generate_template_type: heim_utf8_string_tag__8 */
    1002             : const struct asn1_template asn1_heim_utf8_string_tag__8[] = {
    1003             : /* 0 */ { 0, sizeof(heim_utf8_string), ((void *)(uintptr_t)1) },
    1004             : /* 1 */ { A1_PARSE_T(A1T_UTF8_STRING), 0, NULL }
    1005             : };
    1006             : /* generate_template_type: DirectoryString_choice_utf8String */
    1007             : const struct asn1_template asn1_DirectoryString_choice_utf8String[] = {
    1008             : /* 0 */ { 0, sizeof(heim_utf8_string), ((void *)(uintptr_t)1) },
    1009             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String), 0, asn1_heim_utf8_string_tag__8 }
    1010             : };
    1011             : /* template_members: heim_bmp_string exp exp */
    1012             : /* generate_template_type: heim_bmp_string_tag__9 */
    1013             : const struct asn1_template asn1_heim_bmp_string_tag__9[] = {
    1014             : /* 0 */ { 0, sizeof(heim_bmp_string), ((void *)(uintptr_t)1) },
    1015             : /* 1 */ { A1_PARSE_T(A1T_BMP_STRING), 0, NULL }
    1016             : };
    1017             : /* generate_template_type: DirectoryString_choice_bmpString */
    1018             : const struct asn1_template asn1_DirectoryString_choice_bmpString[] = {
    1019             : /* 0 */ { 0, sizeof(heim_bmp_string), ((void *)(uintptr_t)1) },
    1020             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BMPString), 0, asn1_heim_bmp_string_tag__9 }
    1021             : };
    1022             : static const struct asn1_template asn1_choice_DirectoryString_0[] = {
    1023             : /* 0 */ { 0, offsetof(DirectoryString, element), ((void *)(uintptr_t)12) },
    1024             : /* 1 */ { choice_DirectoryString_ia5String, offsetof(DirectoryString, u.ia5String), asn1_DirectoryString_choice_ia5String },
    1025             : /* 2 */ { choice_DirectoryString_teletexString, offsetof(DirectoryString, u.teletexString), asn1_DirectoryString_choice_teletexString },
    1026             : /* 3 */ { choice_DirectoryString_printableString, offsetof(DirectoryString, u.printableString), asn1_DirectoryString_choice_printableString },
    1027             : /* 4 */ { choice_DirectoryString_universalString, offsetof(DirectoryString, u.universalString), asn1_DirectoryString_choice_universalString },
    1028             : /* 5 */ { choice_DirectoryString_utf8String, offsetof(DirectoryString, u.utf8String), asn1_DirectoryString_choice_utf8String },
    1029             : /* 6 */ { choice_DirectoryString_bmpString, offsetof(DirectoryString, u.bmpString), asn1_DirectoryString_choice_bmpString },
    1030             : /* 7 */ { 0, 0, "ia5String" },
    1031             : /* 8 */ { 0, 0, "teletexString" },
    1032             : /* 9 */ { 0, 0, "printableString" },
    1033             : /* 10 */ { 0, 0, "universalString" },
    1034             : /* 11 */ { 0, 0, "utf8String" },
    1035             : /* 12 */ { 0, 0, "bmpString" }
    1036             : };
    1037             : /* generate_template_type: DirectoryString */
    1038             : const struct asn1_template asn1_DirectoryString[] = {
    1039             : /* 0 */ { 0, sizeof(DirectoryString), ((void *)(uintptr_t)1) },
    1040             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_DirectoryString_0 }
    1041             : };
    1042             : 
    1043             : int ASN1CALL
    1044           0 : decode_DirectoryString(const unsigned char *p, size_t len, DirectoryString *data, size_t *size)
    1045             : {
    1046           0 :     memset(data, 0, sizeof(*data));
    1047           0 :     return _asn1_decode_top(asn1_DirectoryString, 0|0, p, len, data, size);
    1048             : }
    1049             : 
    1050             : 
    1051             : int ASN1CALL
    1052           0 : encode_DirectoryString(unsigned char *p, size_t len, const DirectoryString *data, size_t *size)
    1053             : {
    1054           0 :     return _asn1_encode(asn1_DirectoryString, p, len, data, size);
    1055             : }
    1056             : 
    1057             : 
    1058             : size_t ASN1CALL
    1059           0 : length_DirectoryString(const DirectoryString *data)
    1060             : {
    1061           0 :     return _asn1_length(asn1_DirectoryString, data);
    1062             : }
    1063             : 
    1064             : 
    1065             : void ASN1CALL
    1066           0 : free_DirectoryString(DirectoryString *data)
    1067             : {
    1068           0 :     _asn1_free_top(asn1_DirectoryString, data);
    1069           0 : }
    1070             : 
    1071             : 
    1072             : int ASN1CALL
    1073           0 : copy_DirectoryString(const DirectoryString *from, DirectoryString *to)
    1074             : {
    1075           0 :     return _asn1_copy_top(asn1_DirectoryString, from, to);
    1076             : }
    1077             : 
    1078             : 
    1079             : char * ASN1CALL
    1080           0 : print_DirectoryString(const DirectoryString *data, int flags)
    1081             : {
    1082           0 :     return _asn1_print_top(asn1_DirectoryString, flags, data);
    1083             : }
    1084             : 
    1085             : /* template_members: AttributeValues exp exp */
    1086             : /* generate_template_type: AttributeValue_seofTstruct_0 */
    1087             : const struct asn1_template asn1_AttributeValue_seofTstruct_0[] = {
    1088             : /* 0 */ { 0, sizeof(AttributeValue), ((void *)(uintptr_t)1) },
    1089             : /* 1 */ { A1_OP_TYPE , 0, asn1_AttributeValue }
    1090             : };
    1091             : /* generate_template_type: AttributeValues_tag__10 */
    1092             : const struct asn1_template asn1_AttributeValues_tag__10[] = {
    1093             : /* 0 */ { 0, sizeof(AttributeValue), ((void *)(uintptr_t)1) },
    1094             : /* 1 */ { A1_OP_SETOF, 0, asn1_AttributeValue_seofTstruct_0 }
    1095             : };
    1096             : /* generate_template_type: AttributeValues */
    1097             : const struct asn1_template asn1_AttributeValues[] = {
    1098             : /* 0 */ { 0, sizeof(AttributeValues), ((void *)(uintptr_t)1) },
    1099             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Set), 0, asn1_AttributeValues_tag__10 }
    1100             : };
    1101             : 
    1102             : int ASN1CALL
    1103           0 : decode_AttributeValues(const unsigned char *p, size_t len, AttributeValues *data, size_t *size)
    1104             : {
    1105           0 :     memset(data, 0, sizeof(*data));
    1106           0 :     return _asn1_decode_top(asn1_AttributeValues, 0|0, p, len, data, size);
    1107             : }
    1108             : 
    1109             : 
    1110             : int ASN1CALL
    1111           0 : encode_AttributeValues(unsigned char *p, size_t len, const AttributeValues *data, size_t *size)
    1112             : {
    1113           0 :     return _asn1_encode(asn1_AttributeValues, p, len, data, size);
    1114             : }
    1115             : 
    1116             : 
    1117             : size_t ASN1CALL
    1118           0 : length_AttributeValues(const AttributeValues *data)
    1119             : {
    1120           0 :     return _asn1_length(asn1_AttributeValues, data);
    1121             : }
    1122             : 
    1123             : 
    1124             : void ASN1CALL
    1125           0 : free_AttributeValues(AttributeValues *data)
    1126             : {
    1127           0 :     _asn1_free_top(asn1_AttributeValues, data);
    1128           0 : }
    1129             : 
    1130             : 
    1131             : int ASN1CALL
    1132           0 : copy_AttributeValues(const AttributeValues *from, AttributeValues *to)
    1133             : {
    1134           0 :     return _asn1_copy_top(asn1_AttributeValues, from, to);
    1135             : }
    1136             : 
    1137             : 
    1138             : char * ASN1CALL
    1139           0 : print_AttributeValues(const AttributeValues *data, int flags)
    1140             : {
    1141           0 :     return _asn1_print_top(asn1_AttributeValues, flags, data);
    1142             : }
    1143             : 
    1144             : int ASN1CALL
    1145           0 : add_AttributeValues(AttributeValues *data, const AttributeValue *element)
    1146             : {
    1147           0 : int ret;
    1148           0 : void *ptr;
    1149             : 
    1150           0 : ptr = realloc(data->val, 
    1151           0 :         (data->len + 1) * sizeof(data->val[0]));
    1152           0 : if (ptr == NULL) return ENOMEM;
    1153           0 : data->val = ptr;
    1154             : 
    1155           0 : ret = copy_AttributeValue(element, &data->val[data->len]);
    1156           0 : if (ret) return ret;
    1157           0 : data->len++;
    1158           0 : return 0;
    1159             : }
    1160             : 
    1161             : int ASN1CALL
    1162           0 : remove_AttributeValues(AttributeValues *data, unsigned int element)
    1163             : {
    1164           0 : void *ptr;
    1165             : 
    1166           0 : if (data->len == 0 || element >= data->len)
    1167           0 :         return ASN1_OVERRUN;
    1168           0 : free_AttributeValue(&data->val[element]);
    1169           0 : data->len--;
    1170           0 : if (element < data->len)
    1171           0 :         memmove(&data->val[element], &data->val[element + 1], 
    1172           0 :                 sizeof(data->val[0]) * (data->len - element));
    1173           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    1174           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    1175           0 : return 0;
    1176             : }
    1177             : 
    1178             : /* template_members: Attribute exp exp */
    1179             : /* tsequence: members isstruct: 1 */
    1180             : /* generate_template_type: Attribute_tag__11 */
    1181             : const struct asn1_template asn1_Attribute_tag__11[] = {
    1182             : /* 0 */ { 0, sizeof(struct Attribute), ((void *)(uintptr_t)5) },
    1183             : /* 1 */ { A1_OP_TYPE , offsetof(struct Attribute, type), asn1_AttributeType },
    1184             : /* 2 */ { A1_OP_TYPE , offsetof(struct Attribute, value), asn1_AttributeValues },
    1185             : /* 3 */ { A1_OP_NAME, 0, "Attribute" },
    1186             : /* 4 */ { A1_OP_NAME, 0, "type" },
    1187             : /* 5 */ { A1_OP_NAME, 0, "value" }
    1188             : };
    1189             : /* generate_template_type: Attribute */
    1190             : const struct asn1_template asn1_Attribute[] = {
    1191             : /* 0 */ { 0, sizeof(Attribute), ((void *)(uintptr_t)1) },
    1192             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Attribute_tag__11 }
    1193             : };
    1194             : 
    1195             : int ASN1CALL
    1196          56 : decode_Attribute(const unsigned char *p, size_t len, Attribute *data, size_t *size)
    1197             : {
    1198          56 :     memset(data, 0, sizeof(*data));
    1199          56 :     return _asn1_decode_top(asn1_Attribute, 0|0, p, len, data, size);
    1200             : }
    1201             : 
    1202             : 
    1203             : int ASN1CALL
    1204         300 : encode_Attribute(unsigned char *p, size_t len, const Attribute *data, size_t *size)
    1205             : {
    1206         300 :     return _asn1_encode(asn1_Attribute, p, len, data, size);
    1207             : }
    1208             : 
    1209             : 
    1210             : size_t ASN1CALL
    1211         844 : length_Attribute(const Attribute *data)
    1212             : {
    1213         844 :     return _asn1_length(asn1_Attribute, data);
    1214             : }
    1215             : 
    1216             : 
    1217             : void ASN1CALL
    1218         178 : free_Attribute(Attribute *data)
    1219             : {
    1220         178 :     _asn1_free_top(asn1_Attribute, data);
    1221         178 : }
    1222             : 
    1223             : 
    1224             : int ASN1CALL
    1225           0 : copy_Attribute(const Attribute *from, Attribute *to)
    1226             : {
    1227           0 :     return _asn1_copy_top(asn1_Attribute, from, to);
    1228             : }
    1229             : 
    1230             : 
    1231             : char * ASN1CALL
    1232           0 : print_Attribute(const Attribute *data, int flags)
    1233             : {
    1234           0 :     return _asn1_print_top(asn1_Attribute, flags, data);
    1235             : }
    1236             : 
    1237             : /* template_members: AttributeTypeAndValue exp exp */
    1238             : /* tsequence: members isstruct: 1 */
    1239             : /* generate_template_type: AttributeTypeAndValue_tag__12 */
    1240             : const struct asn1_template asn1_AttributeTypeAndValue_tag__12[] = {
    1241             : /* 0 */ { 0, sizeof(struct AttributeTypeAndValue), ((void *)(uintptr_t)5) },
    1242             : /* 1 */ { A1_OP_TYPE , offsetof(struct AttributeTypeAndValue, type), asn1_AttributeType },
    1243             : /* 2 */ { A1_OP_TYPE , offsetof(struct AttributeTypeAndValue, value), asn1_DirectoryString },
    1244             : /* 3 */ { A1_OP_NAME, 0, "AttributeTypeAndValue" },
    1245             : /* 4 */ { A1_OP_NAME, 0, "type" },
    1246             : /* 5 */ { A1_OP_NAME, 0, "value" }
    1247             : };
    1248             : /* generate_template_type: AttributeTypeAndValue */
    1249             : const struct asn1_template asn1_AttributeTypeAndValue[] = {
    1250             : /* 0 */ { 0, sizeof(AttributeTypeAndValue), ((void *)(uintptr_t)1) },
    1251             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AttributeTypeAndValue_tag__12 }
    1252             : };
    1253             : 
    1254             : int ASN1CALL
    1255           0 : decode_AttributeTypeAndValue(const unsigned char *p, size_t len, AttributeTypeAndValue *data, size_t *size)
    1256             : {
    1257           0 :     memset(data, 0, sizeof(*data));
    1258           0 :     return _asn1_decode_top(asn1_AttributeTypeAndValue, 0|0, p, len, data, size);
    1259             : }
    1260             : 
    1261             : 
    1262             : int ASN1CALL
    1263           0 : encode_AttributeTypeAndValue(unsigned char *p, size_t len, const AttributeTypeAndValue *data, size_t *size)
    1264             : {
    1265           0 :     return _asn1_encode(asn1_AttributeTypeAndValue, p, len, data, size);
    1266             : }
    1267             : 
    1268             : 
    1269             : size_t ASN1CALL
    1270           0 : length_AttributeTypeAndValue(const AttributeTypeAndValue *data)
    1271             : {
    1272           0 :     return _asn1_length(asn1_AttributeTypeAndValue, data);
    1273             : }
    1274             : 
    1275             : 
    1276             : void ASN1CALL
    1277           0 : free_AttributeTypeAndValue(AttributeTypeAndValue *data)
    1278             : {
    1279           0 :     _asn1_free_top(asn1_AttributeTypeAndValue, data);
    1280           0 : }
    1281             : 
    1282             : 
    1283             : int ASN1CALL
    1284           0 : copy_AttributeTypeAndValue(const AttributeTypeAndValue *from, AttributeTypeAndValue *to)
    1285             : {
    1286           0 :     return _asn1_copy_top(asn1_AttributeTypeAndValue, from, to);
    1287             : }
    1288             : 
    1289             : 
    1290             : char * ASN1CALL
    1291           0 : print_AttributeTypeAndValue(const AttributeTypeAndValue *data, int flags)
    1292             : {
    1293           0 :     return _asn1_print_top(asn1_AttributeTypeAndValue, flags, data);
    1294             : }
    1295             : 
    1296             : /* template_members: RelativeDistinguishedName exp exp */
    1297             : /* generate_template_type: AttributeTypeAndValue_seofTstruct_1 */
    1298             : const struct asn1_template asn1_AttributeTypeAndValue_seofTstruct_1[] = {
    1299             : /* 0 */ { 0, sizeof(AttributeTypeAndValue), ((void *)(uintptr_t)1) },
    1300             : /* 1 */ { A1_OP_TYPE , 0, asn1_AttributeTypeAndValue }
    1301             : };
    1302             : /* generate_template_type: RelativeDistinguishedName_tag__13 */
    1303             : const struct asn1_template asn1_RelativeDistinguishedName_tag__13[] = {
    1304             : /* 0 */ { 0, sizeof(AttributeTypeAndValue), ((void *)(uintptr_t)1) },
    1305             : /* 1 */ { A1_OP_SETOF, 0, asn1_AttributeTypeAndValue_seofTstruct_1 }
    1306             : };
    1307             : /* generate_template_type: RelativeDistinguishedName */
    1308             : const struct asn1_template asn1_RelativeDistinguishedName[] = {
    1309             : /* 0 */ { 0, sizeof(RelativeDistinguishedName), ((void *)(uintptr_t)1) },
    1310             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Set), 0, asn1_RelativeDistinguishedName_tag__13 }
    1311             : };
    1312             : 
    1313             : int ASN1CALL
    1314           0 : decode_RelativeDistinguishedName(const unsigned char *p, size_t len, RelativeDistinguishedName *data, size_t *size)
    1315             : {
    1316           0 :     memset(data, 0, sizeof(*data));
    1317           0 :     return _asn1_decode_top(asn1_RelativeDistinguishedName, 0|0, p, len, data, size);
    1318             : }
    1319             : 
    1320             : 
    1321             : int ASN1CALL
    1322           0 : encode_RelativeDistinguishedName(unsigned char *p, size_t len, const RelativeDistinguishedName *data, size_t *size)
    1323             : {
    1324           0 :     return _asn1_encode(asn1_RelativeDistinguishedName, p, len, data, size);
    1325             : }
    1326             : 
    1327             : 
    1328             : size_t ASN1CALL
    1329           0 : length_RelativeDistinguishedName(const RelativeDistinguishedName *data)
    1330             : {
    1331           0 :     return _asn1_length(asn1_RelativeDistinguishedName, data);
    1332             : }
    1333             : 
    1334             : 
    1335             : void ASN1CALL
    1336           0 : free_RelativeDistinguishedName(RelativeDistinguishedName *data)
    1337             : {
    1338           0 :     _asn1_free_top(asn1_RelativeDistinguishedName, data);
    1339           0 : }
    1340             : 
    1341             : 
    1342             : int ASN1CALL
    1343           0 : copy_RelativeDistinguishedName(const RelativeDistinguishedName *from, RelativeDistinguishedName *to)
    1344             : {
    1345           0 :     return _asn1_copy_top(asn1_RelativeDistinguishedName, from, to);
    1346             : }
    1347             : 
    1348             : 
    1349             : char * ASN1CALL
    1350           0 : print_RelativeDistinguishedName(const RelativeDistinguishedName *data, int flags)
    1351             : {
    1352           0 :     return _asn1_print_top(asn1_RelativeDistinguishedName, flags, data);
    1353             : }
    1354             : 
    1355             : /* template_members: RDNSequence exp exp */
    1356             : /* generate_template_type: RelativeDistinguishedName_seofTstruct_2 */
    1357             : const struct asn1_template asn1_RelativeDistinguishedName_seofTstruct_2[] = {
    1358             : /* 0 */ { 0, sizeof(RelativeDistinguishedName), ((void *)(uintptr_t)1) },
    1359             : /* 1 */ { A1_OP_TYPE , 0, asn1_RelativeDistinguishedName }
    1360             : };
    1361             : /* generate_template_type: RDNSequence_tag__14 */
    1362             : const struct asn1_template asn1_RDNSequence_tag__14[] = {
    1363             : /* 0 */ { 0, sizeof(RelativeDistinguishedName), ((void *)(uintptr_t)1) },
    1364             : /* 1 */ { A1_OP_SEQOF, 0, asn1_RelativeDistinguishedName_seofTstruct_2 }
    1365             : };
    1366             : /* generate_template_type: RDNSequence */
    1367             : const struct asn1_template asn1_RDNSequence[] = {
    1368             : /* 0 */ { 0, sizeof(RDNSequence), ((void *)(uintptr_t)1) },
    1369             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_RDNSequence_tag__14 }
    1370             : };
    1371             : 
    1372             : int ASN1CALL
    1373           0 : decode_RDNSequence(const unsigned char *p, size_t len, RDNSequence *data, size_t *size)
    1374             : {
    1375           0 :     memset(data, 0, sizeof(*data));
    1376           0 :     return _asn1_decode_top(asn1_RDNSequence, 0|0, p, len, data, size);
    1377             : }
    1378             : 
    1379             : 
    1380             : int ASN1CALL
    1381           0 : encode_RDNSequence(unsigned char *p, size_t len, const RDNSequence *data, size_t *size)
    1382             : {
    1383           0 :     return _asn1_encode(asn1_RDNSequence, p, len, data, size);
    1384             : }
    1385             : 
    1386             : 
    1387             : size_t ASN1CALL
    1388           0 : length_RDNSequence(const RDNSequence *data)
    1389             : {
    1390           0 :     return _asn1_length(asn1_RDNSequence, data);
    1391             : }
    1392             : 
    1393             : 
    1394             : void ASN1CALL
    1395           0 : free_RDNSequence(RDNSequence *data)
    1396             : {
    1397           0 :     _asn1_free_top(asn1_RDNSequence, data);
    1398           0 : }
    1399             : 
    1400             : 
    1401             : int ASN1CALL
    1402           0 : copy_RDNSequence(const RDNSequence *from, RDNSequence *to)
    1403             : {
    1404           0 :     return _asn1_copy_top(asn1_RDNSequence, from, to);
    1405             : }
    1406             : 
    1407             : 
    1408             : char * ASN1CALL
    1409           0 : print_RDNSequence(const RDNSequence *data, int flags)
    1410             : {
    1411           0 :     return _asn1_print_top(asn1_RDNSequence, flags, data);
    1412             : }
    1413             : 
    1414             : int ASN1CALL
    1415           0 : add_RDNSequence(RDNSequence *data, const RelativeDistinguishedName *element)
    1416             : {
    1417           0 : int ret;
    1418           0 : void *ptr;
    1419             : 
    1420           0 : ptr = realloc(data->val, 
    1421           0 :         (data->len + 1) * sizeof(data->val[0]));
    1422           0 : if (ptr == NULL) return ENOMEM;
    1423           0 : data->val = ptr;
    1424             : 
    1425           0 : ret = copy_RelativeDistinguishedName(element, &data->val[data->len]);
    1426           0 : if (ret) return ret;
    1427           0 : data->len++;
    1428           0 : return 0;
    1429             : }
    1430             : 
    1431             : int ASN1CALL
    1432           0 : remove_RDNSequence(RDNSequence *data, unsigned int element)
    1433             : {
    1434           0 : void *ptr;
    1435             : 
    1436           0 : if (data->len == 0 || element >= data->len)
    1437           0 :         return ASN1_OVERRUN;
    1438           0 : free_RelativeDistinguishedName(&data->val[element]);
    1439           0 : data->len--;
    1440           0 : if (element < data->len)
    1441           0 :         memmove(&data->val[element], &data->val[element + 1], 
    1442           0 :                 sizeof(data->val[0]) * (data->len - element));
    1443           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    1444           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    1445           0 : return 0;
    1446             : }
    1447             : 
    1448             : /* generate_template_type: Name_choice_rdnSequence */
    1449             : const struct asn1_template asn1_Name_choice_rdnSequence[] = {
    1450             : /* 0 */ { 0, sizeof(RDNSequence), ((void *)(uintptr_t)1) },
    1451             : /* 1 */ { A1_OP_TYPE , 0, asn1_RDNSequence }
    1452             : };
    1453             : static const struct asn1_template asn1_choice_Name_1[] = {
    1454             : /* 0 */ { 0, offsetof(Name, element), ((void *)(uintptr_t)2) },
    1455             : /* 1 */ { choice_Name_rdnSequence, offsetof(Name, u.rdnSequence), asn1_Name_choice_rdnSequence },
    1456             : /* 2 */ { 0, 0, "rdnSequence" }
    1457             : };
    1458             : /* generate_template_type: Name */
    1459             : const struct asn1_template asn1_Name[] = {
    1460             : /* 0 */ { 0|A1_HF_PRESERVE, sizeof(Name), ((void *)(uintptr_t)1) },
    1461             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_Name_1 }
    1462             : };
    1463             : 
    1464             : int ASN1CALL
    1465          15 : decode_Name(const unsigned char *p, size_t len, Name *data, size_t *size)
    1466             : {
    1467          15 :     memset(data, 0, sizeof(*data));
    1468          15 :     return _asn1_decode_top(asn1_Name, 0|0, p, len, data, size);
    1469             : }
    1470             : 
    1471             : 
    1472             : int ASN1CALL
    1473         121 : encode_Name(unsigned char *p, size_t len, const Name *data, size_t *size)
    1474             : {
    1475         121 :     return _asn1_encode(asn1_Name, p, len, data, size);
    1476             : }
    1477             : 
    1478             : 
    1479             : size_t ASN1CALL
    1480         121 : length_Name(const Name *data)
    1481             : {
    1482         121 :     return _asn1_length(asn1_Name, data);
    1483             : }
    1484             : 
    1485             : 
    1486             : void ASN1CALL
    1487         653 : free_Name(Name *data)
    1488             : {
    1489         653 :     _asn1_free_top(asn1_Name, data);
    1490         653 : }
    1491             : 
    1492             : 
    1493             : int ASN1CALL
    1494         490 : copy_Name(const Name *from, Name *to)
    1495             : {
    1496         490 :     return _asn1_copy_top(asn1_Name, from, to);
    1497             : }
    1498             : 
    1499             : 
    1500             : char * ASN1CALL
    1501           0 : print_Name(const Name *data, int flags)
    1502             : {
    1503           0 :     return _asn1_print_top(asn1_Name, flags, data);
    1504             : }
    1505             : 
    1506             : /* template_members: CertificateSerialNumber exp exp */
    1507             : /* generate_template_type: CertificateSerialNumber_tag__15 */
    1508             : const struct asn1_template asn1_CertificateSerialNumber_tag__15[] = {
    1509             : /* 0 */ { 0, sizeof(heim_integer), ((void *)(uintptr_t)1) },
    1510             : /* 1 */ { A1_PARSE_T(A1T_HEIM_INTEGER), 0, NULL }
    1511             : };
    1512             : /* generate_template_type: CertificateSerialNumber */
    1513             : const struct asn1_template asn1_CertificateSerialNumber[] = {
    1514             : /* 0 */ { 0, sizeof(CertificateSerialNumber), ((void *)(uintptr_t)1) },
    1515             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_CertificateSerialNumber_tag__15 }
    1516             : };
    1517             : 
    1518             : int ASN1CALL
    1519          15 : decode_CertificateSerialNumber(const unsigned char *p, size_t len, CertificateSerialNumber *data, size_t *size)
    1520             : {
    1521          15 :     memset(data, 0, sizeof(*data));
    1522          15 :     return _asn1_decode_top(asn1_CertificateSerialNumber, 0|0, p, len, data, size);
    1523             : }
    1524             : 
    1525             : 
    1526             : int ASN1CALL
    1527         121 : encode_CertificateSerialNumber(unsigned char *p, size_t len, const CertificateSerialNumber *data, size_t *size)
    1528             : {
    1529         121 :     return _asn1_encode(asn1_CertificateSerialNumber, p, len, data, size);
    1530             : }
    1531             : 
    1532             : 
    1533             : size_t ASN1CALL
    1534         121 : length_CertificateSerialNumber(const CertificateSerialNumber *data)
    1535             : {
    1536         121 :     return _asn1_length(asn1_CertificateSerialNumber, data);
    1537             : }
    1538             : 
    1539             : 
    1540             : void ASN1CALL
    1541         210 : free_CertificateSerialNumber(CertificateSerialNumber *data)
    1542             : {
    1543         210 :     _asn1_free_top(asn1_CertificateSerialNumber, data);
    1544         210 : }
    1545             : 
    1546             : 
    1547             : int ASN1CALL
    1548           0 : copy_CertificateSerialNumber(const CertificateSerialNumber *from, CertificateSerialNumber *to)
    1549             : {
    1550           0 :     return _asn1_copy_top(asn1_CertificateSerialNumber, from, to);
    1551             : }
    1552             : 
    1553             : 
    1554             : char * ASN1CALL
    1555           0 : print_CertificateSerialNumber(const CertificateSerialNumber *data, int flags)
    1556             : {
    1557           0 :     return _asn1_print_top(asn1_CertificateSerialNumber, flags, data);
    1558             : }
    1559             : 
    1560             : /* template_members: time_t exp exp */
    1561             : /* generate_template_type: time_t_tag__16 */
    1562             : const struct asn1_template asn1_time_t_tag__16[] = {
    1563             : /* 0 */ { 0, sizeof(time_t), ((void *)(uintptr_t)1) },
    1564             : /* 1 */ { A1_PARSE_T(A1T_UTC_TIME), 0, NULL }
    1565             : };
    1566             : /* generate_template_type: Time_choice_utcTime */
    1567             : const struct asn1_template asn1_Time_choice_utcTime[] = {
    1568             : /* 0 */ { 0, sizeof(time_t), ((void *)(uintptr_t)1) },
    1569             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTCTime), 0, asn1_time_t_tag__16 }
    1570             : };
    1571             : /* template_members: time_t exp exp */
    1572             : /* generate_template_type: time_t_tag__17 */
    1573             : const struct asn1_template asn1_time_t_tag__17[] = {
    1574             : /* 0 */ { 0, sizeof(time_t), ((void *)(uintptr_t)1) },
    1575             : /* 1 */ { A1_PARSE_T(A1T_GENERALIZED_TIME), 0, NULL }
    1576             : };
    1577             : /* generate_template_type: Time_choice_generalTime */
    1578             : const struct asn1_template asn1_Time_choice_generalTime[] = {
    1579             : /* 0 */ { 0, sizeof(time_t), ((void *)(uintptr_t)1) },
    1580             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_GeneralizedTime), 0, asn1_time_t_tag__17 }
    1581             : };
    1582             : static const struct asn1_template asn1_choice_Time_2[] = {
    1583             : /* 0 */ { 0, offsetof(Time, element), ((void *)(uintptr_t)4) },
    1584             : /* 1 */ { choice_Time_utcTime, offsetof(Time, u.utcTime), asn1_Time_choice_utcTime },
    1585             : /* 2 */ { choice_Time_generalTime, offsetof(Time, u.generalTime), asn1_Time_choice_generalTime },
    1586             : /* 3 */ { 0, 0, "utcTime" },
    1587             : /* 4 */ { 0, 0, "generalTime" }
    1588             : };
    1589             : /* generate_template_type: Time */
    1590             : const struct asn1_template asn1_Time[] = {
    1591             : /* 0 */ { 0, sizeof(Time), ((void *)(uintptr_t)1) },
    1592             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_Time_2 }
    1593             : };
    1594             : 
    1595             : int ASN1CALL
    1596           0 : decode_Time(const unsigned char *p, size_t len, Time *data, size_t *size)
    1597             : {
    1598           0 :     memset(data, 0, sizeof(*data));
    1599           0 :     return _asn1_decode_top(asn1_Time, 0|0, p, len, data, size);
    1600             : }
    1601             : 
    1602             : 
    1603             : int ASN1CALL
    1604           0 : encode_Time(unsigned char *p, size_t len, const Time *data, size_t *size)
    1605             : {
    1606           0 :     return _asn1_encode(asn1_Time, p, len, data, size);
    1607             : }
    1608             : 
    1609             : 
    1610             : size_t ASN1CALL
    1611           0 : length_Time(const Time *data)
    1612             : {
    1613           0 :     return _asn1_length(asn1_Time, data);
    1614             : }
    1615             : 
    1616             : 
    1617             : void ASN1CALL
    1618           0 : free_Time(Time *data)
    1619             : {
    1620           0 :     _asn1_free_top(asn1_Time, data);
    1621           0 : }
    1622             : 
    1623             : 
    1624             : int ASN1CALL
    1625           0 : copy_Time(const Time *from, Time *to)
    1626             : {
    1627           0 :     return _asn1_copy_top(asn1_Time, from, to);
    1628             : }
    1629             : 
    1630             : 
    1631             : char * ASN1CALL
    1632           0 : print_Time(const Time *data, int flags)
    1633             : {
    1634           0 :     return _asn1_print_top(asn1_Time, flags, data);
    1635             : }
    1636             : 
    1637             : /* template_members: Validity exp exp */
    1638             : /* tsequence: members isstruct: 1 */
    1639             : /* generate_template_type: Validity_tag__18 */
    1640             : const struct asn1_template asn1_Validity_tag__18[] = {
    1641             : /* 0 */ { 0, sizeof(struct Validity), ((void *)(uintptr_t)5) },
    1642             : /* 1 */ { A1_OP_TYPE , offsetof(struct Validity, notBefore), asn1_Time },
    1643             : /* 2 */ { A1_OP_TYPE , offsetof(struct Validity, notAfter), asn1_Time },
    1644             : /* 3 */ { A1_OP_NAME, 0, "Validity" },
    1645             : /* 4 */ { A1_OP_NAME, 0, "notBefore" },
    1646             : /* 5 */ { A1_OP_NAME, 0, "notAfter" }
    1647             : };
    1648             : /* generate_template_type: Validity */
    1649             : const struct asn1_template asn1_Validity[] = {
    1650             : /* 0 */ { 0, sizeof(Validity), ((void *)(uintptr_t)1) },
    1651             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Validity_tag__18 }
    1652             : };
    1653             : 
    1654             : int ASN1CALL
    1655           0 : decode_Validity(const unsigned char *p, size_t len, Validity *data, size_t *size)
    1656             : {
    1657           0 :     memset(data, 0, sizeof(*data));
    1658           0 :     return _asn1_decode_top(asn1_Validity, 0|0, p, len, data, size);
    1659             : }
    1660             : 
    1661             : 
    1662             : int ASN1CALL
    1663           0 : encode_Validity(unsigned char *p, size_t len, const Validity *data, size_t *size)
    1664             : {
    1665           0 :     return _asn1_encode(asn1_Validity, p, len, data, size);
    1666             : }
    1667             : 
    1668             : 
    1669             : size_t ASN1CALL
    1670           0 : length_Validity(const Validity *data)
    1671             : {
    1672           0 :     return _asn1_length(asn1_Validity, data);
    1673             : }
    1674             : 
    1675             : 
    1676             : void ASN1CALL
    1677           0 : free_Validity(Validity *data)
    1678             : {
    1679           0 :     _asn1_free_top(asn1_Validity, data);
    1680           0 : }
    1681             : 
    1682             : 
    1683             : int ASN1CALL
    1684           0 : copy_Validity(const Validity *from, Validity *to)
    1685             : {
    1686           0 :     return _asn1_copy_top(asn1_Validity, from, to);
    1687             : }
    1688             : 
    1689             : 
    1690             : char * ASN1CALL
    1691           0 : print_Validity(const Validity *data, int flags)
    1692             : {
    1693           0 :     return _asn1_print_top(asn1_Validity, flags, data);
    1694             : }
    1695             : 
    1696             : /* template_members: UniqueIdentifier exp exp */
    1697             : /* generate_template_type: UniqueIdentifier_tag__19 */
    1698             : const struct asn1_template asn1_UniqueIdentifier_tag__19[] = {
    1699             : /* 0 */ { 0, sizeof(UniqueIdentifier), ((void *)(uintptr_t)1) },
    1700             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    1701             : };
    1702             : /* generate_template_type: UniqueIdentifier */
    1703             : const struct asn1_template asn1_UniqueIdentifier[] = {
    1704             : /* 0 */ { 0, sizeof(UniqueIdentifier), ((void *)(uintptr_t)1) },
    1705             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), 0, asn1_UniqueIdentifier_tag__19 }
    1706             : };
    1707             : 
    1708             : int ASN1CALL
    1709           0 : decode_UniqueIdentifier(const unsigned char *p, size_t len, UniqueIdentifier *data, size_t *size)
    1710             : {
    1711           0 :     memset(data, 0, sizeof(*data));
    1712           0 :     return _asn1_decode_top(asn1_UniqueIdentifier, 0|0, p, len, data, size);
    1713             : }
    1714             : 
    1715             : 
    1716             : int ASN1CALL
    1717           0 : encode_UniqueIdentifier(unsigned char *p, size_t len, const UniqueIdentifier *data, size_t *size)
    1718             : {
    1719           0 :     return _asn1_encode(asn1_UniqueIdentifier, p, len, data, size);
    1720             : }
    1721             : 
    1722             : 
    1723             : size_t ASN1CALL
    1724           0 : length_UniqueIdentifier(const UniqueIdentifier *data)
    1725             : {
    1726           0 :     return _asn1_length(asn1_UniqueIdentifier, data);
    1727             : }
    1728             : 
    1729             : 
    1730             : void ASN1CALL
    1731           0 : free_UniqueIdentifier(UniqueIdentifier *data)
    1732             : {
    1733           0 :     _asn1_free_top(asn1_UniqueIdentifier, data);
    1734           0 : }
    1735             : 
    1736             : 
    1737             : int ASN1CALL
    1738           0 : copy_UniqueIdentifier(const UniqueIdentifier *from, UniqueIdentifier *to)
    1739             : {
    1740           0 :     return _asn1_copy_top(asn1_UniqueIdentifier, from, to);
    1741             : }
    1742             : 
    1743             : 
    1744             : char * ASN1CALL
    1745           0 : print_UniqueIdentifier(const UniqueIdentifier *data, int flags)
    1746             : {
    1747           0 :     return _asn1_print_top(asn1_UniqueIdentifier, flags, data);
    1748             : }
    1749             : 
    1750             : /* template_members: SubjectPublicKeyInfo exp exp */
    1751             : /* tsequence: members isstruct: 1 */
    1752             : /* template_members: SubjectPublicKeyInfo exp exp */
    1753             : /* generate_template_type: SubjectPublicKeyInfo_tag_subjectPublicKey_21 */
    1754             : const struct asn1_template asn1_SubjectPublicKeyInfo_tag_subjectPublicKey_21[] = {
    1755             : /* 0 */ { 0, sizeof(SubjectPublicKeyInfo), ((void *)(uintptr_t)1) },
    1756             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    1757             : };
    1758             : /* generate_template_type: SubjectPublicKeyInfo_tag__20 */
    1759             : const struct asn1_template asn1_SubjectPublicKeyInfo_tag__20[] = {
    1760             : /* 0 */ { 0, sizeof(struct SubjectPublicKeyInfo), ((void *)(uintptr_t)5) },
    1761             : /* 1 */ { A1_OP_TYPE , offsetof(struct SubjectPublicKeyInfo, algorithm), asn1_AlgorithmIdentifier },
    1762             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), offsetof(struct SubjectPublicKeyInfo, subjectPublicKey), asn1_SubjectPublicKeyInfo_tag_subjectPublicKey_21 },
    1763             : /* 3 */ { A1_OP_NAME, 0, "SubjectPublicKeyInfo" },
    1764             : /* 4 */ { A1_OP_NAME, 0, "algorithm" },
    1765             : /* 5 */ { A1_OP_NAME, 0, "subjectPublicKey" }
    1766             : };
    1767             : /* generate_template_type: SubjectPublicKeyInfo */
    1768             : const struct asn1_template asn1_SubjectPublicKeyInfo[] = {
    1769             : /* 0 */ { 0, sizeof(SubjectPublicKeyInfo), ((void *)(uintptr_t)1) },
    1770             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_SubjectPublicKeyInfo_tag__20 }
    1771             : };
    1772             : 
    1773             : int ASN1CALL
    1774          32 : decode_SubjectPublicKeyInfo(const unsigned char *p, size_t len, SubjectPublicKeyInfo *data, size_t *size)
    1775             : {
    1776          32 :     memset(data, 0, sizeof(*data));
    1777          32 :     return _asn1_decode_top(asn1_SubjectPublicKeyInfo, 0|0, p, len, data, size);
    1778             : }
    1779             : 
    1780             : 
    1781             : int ASN1CALL
    1782         124 : encode_SubjectPublicKeyInfo(unsigned char *p, size_t len, const SubjectPublicKeyInfo *data, size_t *size)
    1783             : {
    1784         124 :     return _asn1_encode(asn1_SubjectPublicKeyInfo, p, len, data, size);
    1785             : }
    1786             : 
    1787             : 
    1788             : size_t ASN1CALL
    1789         124 : length_SubjectPublicKeyInfo(const SubjectPublicKeyInfo *data)
    1790             : {
    1791         124 :     return _asn1_length(asn1_SubjectPublicKeyInfo, data);
    1792             : }
    1793             : 
    1794             : 
    1795             : void ASN1CALL
    1796         156 : free_SubjectPublicKeyInfo(SubjectPublicKeyInfo *data)
    1797             : {
    1798         156 :     _asn1_free_top(asn1_SubjectPublicKeyInfo, data);
    1799         156 : }
    1800             : 
    1801             : 
    1802             : int ASN1CALL
    1803           0 : copy_SubjectPublicKeyInfo(const SubjectPublicKeyInfo *from, SubjectPublicKeyInfo *to)
    1804             : {
    1805           0 :     return _asn1_copy_top(asn1_SubjectPublicKeyInfo, from, to);
    1806             : }
    1807             : 
    1808             : 
    1809             : char * ASN1CALL
    1810           0 : print_SubjectPublicKeyInfo(const SubjectPublicKeyInfo *data, int flags)
    1811             : {
    1812           0 :     return _asn1_print_top(asn1_SubjectPublicKeyInfo, flags, data);
    1813             : }
    1814             : 
    1815             : /* template_members: Extension exp exp */
    1816             : /* tsequence: members isstruct: 1 */
    1817             : /* template_members: Extension exp exp */
    1818             : /* generate_template_type: Extension_tag_extnID_23 */
    1819             : /* template_members: Extension exp exp */
    1820             : /* generate_template_type: Extension_tag_critical_24 */
    1821             : const struct asn1_template asn1_Extension_tag_critical_24[] = {
    1822             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    1823             : /* 1 */ { A1_PARSE_T(A1T_BOOLEAN), 0, NULL }
    1824             : };
    1825             : /* template_members: Extension exp exp */
    1826             : /* generate_template_type: Extension_tag_extnValue_25 */
    1827             : const struct asn1_template asn1_Extension_tag_extnValue_25[] = {
    1828             : /* 0 */ { 0, sizeof(heim_octet_string), ((void *)(uintptr_t)1) },
    1829             : /* 1 */ { A1_PARSE_T(A1T_OCTET_STRING), 0, NULL }
    1830             : };
    1831             : const struct asn1_template asn1_CertExtensions[] = {
    1832             : /* 0 */ { 0, 0, ((void *)(uintptr_t)20) },
    1833             : /* 1 */ { A1_OP_NAME, 0, "CertExtensions" },
    1834             : /* 2 */ { A1_OP_NAME, 0, "ext-HeimPkinitPrincMaxLife" },
    1835             : /* 3 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_heim_ce_pkinit_princ_max_life },
    1836             : /* 4 */ { A1_OP_OPENTYPE, sizeof(HeimPkinitPrincMaxLifeSecs), (const void *)&asn1_HeimPkinitPrincMaxLifeSecs },
    1837             : /* 5 */ { A1_OP_NAME, 0, "ext-AuthorityInfoAccess" },
    1838             : /* 6 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_pe_authorityInfoAccess },
    1839             : /* 7 */ { A1_OP_OPENTYPE, sizeof(AuthorityInfoAccessSyntax), (const void *)&asn1_AuthorityInfoAccessSyntax },
    1840             : /* 8 */ { A1_OP_NAME, 0, "ext-SubjectInfoAccessSyntax" },
    1841             : /* 9 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_pe_subjectInfoAccess },
    1842             : /* 10 */ { A1_OP_OPENTYPE, sizeof(SubjectInfoAccessSyntax), (const void *)&asn1_SubjectInfoAccessSyntax },
    1843             : /* 11 */ { A1_OP_NAME, 0, "ext-ProxyCertInfo" },
    1844             : /* 12 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_pe_proxyCertInfo },
    1845             : /* 13 */ { A1_OP_OPENTYPE, sizeof(ProxyCertInfo), (const void *)&asn1_ProxyCertInfo },
    1846             : /* 14 */ { A1_OP_NAME, 0, "ext-SubjectDirectoryAttributes" },
    1847             : /* 15 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_subjectDirectoryAttributes },
    1848             : /* 16 */ { A1_OP_OPENTYPE, sizeof(SubjectDirectoryAttributes), (const void *)&asn1_SubjectDirectoryAttributes },
    1849             : /* 17 */ { A1_OP_NAME, 0, "ext-SubjectKeyIdentifier" },
    1850             : /* 18 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_subjectKeyIdentifier },
    1851             : /* 19 */ { A1_OP_OPENTYPE, sizeof(SubjectKeyIdentifier), (const void *)&asn1_SubjectKeyIdentifier },
    1852             : /* 20 */ { A1_OP_NAME, 0, "ext-KeyUsage" },
    1853             : /* 21 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_keyUsage },
    1854             : /* 22 */ { A1_OP_OPENTYPE, sizeof(KeyUsage), (const void *)&asn1_KeyUsage },
    1855             : /* 23 */ { A1_OP_NAME, 0, "ext-PrivateKeyUsagePeriod" },
    1856             : /* 24 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_privateKeyUsagePeriod },
    1857             : /* 25 */ { A1_OP_OPENTYPE, sizeof(PrivateKeyUsagePeriod), (const void *)&asn1_PrivateKeyUsagePeriod },
    1858             : /* 26 */ { A1_OP_NAME, 0, "ext-SubjectAltName" },
    1859             : /* 27 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_subjectAltName },
    1860             : /* 28 */ { A1_OP_OPENTYPE, sizeof(GeneralNames), (const void *)&asn1_GeneralNames },
    1861             : /* 29 */ { A1_OP_NAME, 0, "ext-IssuerAltName" },
    1862             : /* 30 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_issuerAltName },
    1863             : /* 31 */ { A1_OP_OPENTYPE, sizeof(GeneralNames), (const void *)&asn1_GeneralNames },
    1864             : /* 32 */ { A1_OP_NAME, 0, "ext-BasicConstraints" },
    1865             : /* 33 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_basicConstraints },
    1866             : /* 34 */ { A1_OP_OPENTYPE, sizeof(BasicConstraints), (const void *)&asn1_BasicConstraints },
    1867             : /* 35 */ { A1_OP_NAME, 0, "ext-NameConstraints" },
    1868             : /* 36 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_nameConstraints },
    1869             : /* 37 */ { A1_OP_OPENTYPE, sizeof(NameConstraints), (const void *)&asn1_NameConstraints },
    1870             : /* 38 */ { A1_OP_NAME, 0, "ext-CRLDistributionPoints" },
    1871             : /* 39 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_cRLDistributionPoints },
    1872             : /* 40 */ { A1_OP_OPENTYPE, sizeof(CRLDistributionPoints), (const void *)&asn1_CRLDistributionPoints },
    1873             : /* 41 */ { A1_OP_NAME, 0, "ext-CertificatePolicies" },
    1874             : /* 42 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_certificatePolicies },
    1875             : /* 43 */ { A1_OP_OPENTYPE, sizeof(CertificatePolicies), (const void *)&asn1_CertificatePolicies },
    1876             : /* 44 */ { A1_OP_NAME, 0, "ext-PolicyMappings" },
    1877             : /* 45 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_policyMappings },
    1878             : /* 46 */ { A1_OP_OPENTYPE, sizeof(PolicyMappings), (const void *)&asn1_PolicyMappings },
    1879             : /* 47 */ { A1_OP_NAME, 0, "ext-AuthorityKeyIdentifier" },
    1880             : /* 48 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_authorityKeyIdentifier },
    1881             : /* 49 */ { A1_OP_OPENTYPE, sizeof(AuthorityKeyIdentifier), (const void *)&asn1_AuthorityKeyIdentifier },
    1882             : /* 50 */ { A1_OP_NAME, 0, "ext-PolicyConstraints" },
    1883             : /* 51 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_policyConstraints },
    1884             : /* 52 */ { A1_OP_OPENTYPE, sizeof(PolicyConstraints), (const void *)&asn1_PolicyConstraints },
    1885             : /* 53 */ { A1_OP_NAME, 0, "ext-ExtKeyUsage" },
    1886             : /* 54 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_extKeyUsage },
    1887             : /* 55 */ { A1_OP_OPENTYPE, sizeof(ExtKeyUsage), (const void *)&asn1_ExtKeyUsage },
    1888             : /* 56 */ { A1_OP_NAME, 0, "ext-FreshestCRL" },
    1889             : /* 57 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_freshestCRL },
    1890             : /* 58 */ { A1_OP_OPENTYPE, sizeof(CRLDistributionPoints), (const void *)&asn1_CRLDistributionPoints },
    1891             : /* 59 */ { A1_OP_NAME, 0, "ext-InhibitAnyPolicy" },
    1892             : /* 60 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_x509_ce_inhibitAnyPolicy },
    1893             : /* 61 */ { A1_OP_OPENTYPE, sizeof(SkipCerts), (const void *)&asn1_SkipCerts }
    1894             : };
    1895             : /* generate_template_type: Extension_tag__22 */
    1896             : const struct asn1_template asn1_Extension_tag__22[] = {
    1897             : /* 0 */ { 0, sizeof(struct Extension), ((void *)(uintptr_t)9) },
    1898             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct Extension, extnID), asn1_AttributeType_tag__1 },
    1899             : /* 2 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    1900             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean)|A1_FLAG_DEFAULT, offsetof(struct Extension, critical), asn1_Extension_tag_critical_24 },
    1901             : /* 4 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), offsetof(struct Extension, extnValue), asn1_Extension_tag_extnValue_25 },
    1902             : /* 5 */ { A1_OP_OPENTYPE_OBJSET | A1_OS_IS_SORTED |0 | (2 << 10) | 0, offsetof(Extension, _ioschoice_extnValue), asn1_CertExtensions },
    1903             : /* 6 */ { A1_OP_NAME, 0, "Extension" },
    1904             : /* 7 */ { A1_OP_NAME, 0, "extnID" },
    1905             : /* 8 */ { A1_OP_NAME, 0, "critical" },
    1906             : /* 9 */ { A1_OP_NAME, 0, "extnValue" }
    1907             : };
    1908             : /* generate_template_type: Extension */
    1909             : const struct asn1_template asn1_Extension[] = {
    1910             : /* 0 */ { 0, sizeof(Extension), ((void *)(uintptr_t)1) },
    1911             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Extension_tag__22 }
    1912             : };
    1913             : 
    1914             : int ASN1CALL
    1915           0 : decode_Extension(const unsigned char *p, size_t len, Extension *data, size_t *size)
    1916             : {
    1917           0 :     memset(data, 0, sizeof(*data));
    1918           0 :     return _asn1_decode_top(asn1_Extension, 0|0, p, len, data, size);
    1919             : }
    1920             : 
    1921             : 
    1922             : int ASN1CALL
    1923           0 : encode_Extension(unsigned char *p, size_t len, const Extension *data, size_t *size)
    1924             : {
    1925           0 :     return _asn1_encode(asn1_Extension, p, len, data, size);
    1926             : }
    1927             : 
    1928             : 
    1929             : size_t ASN1CALL
    1930           0 : length_Extension(const Extension *data)
    1931             : {
    1932           0 :     return _asn1_length(asn1_Extension, data);
    1933             : }
    1934             : 
    1935             : 
    1936             : void ASN1CALL
    1937           0 : free_Extension(Extension *data)
    1938             : {
    1939           0 :     _asn1_free_top(asn1_Extension, data);
    1940           0 : }
    1941             : 
    1942             : 
    1943             : int ASN1CALL
    1944           0 : copy_Extension(const Extension *from, Extension *to)
    1945             : {
    1946           0 :     return _asn1_copy_top(asn1_Extension, from, to);
    1947             : }
    1948             : 
    1949             : 
    1950             : char * ASN1CALL
    1951           0 : print_Extension(const Extension *data, int flags)
    1952             : {
    1953           0 :     return _asn1_print_top(asn1_Extension, flags, data);
    1954             : }
    1955             : 
    1956             : /* template_members: Extensions exp exp */
    1957             : /* generate_template_type: Extension_seofTstruct_3 */
    1958             : const struct asn1_template asn1_Extension_seofTstruct_3[] = {
    1959             : /* 0 */ { 0, sizeof(Extension), ((void *)(uintptr_t)1) },
    1960             : /* 1 */ { A1_OP_TYPE , 0, asn1_Extension }
    1961             : };
    1962             : /* generate_template_type: Extensions_tag__26 */
    1963             : const struct asn1_template asn1_Extensions_tag__26[] = {
    1964             : /* 0 */ { 0, sizeof(Extension), ((void *)(uintptr_t)1) },
    1965             : /* 1 */ { A1_OP_SEQOF, 0, asn1_Extension_seofTstruct_3 }
    1966             : };
    1967             : /* generate_template_type: Extensions */
    1968             : const struct asn1_template asn1_Extensions[] = {
    1969             : /* 0 */ { 0, sizeof(Extensions), ((void *)(uintptr_t)1) },
    1970             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Extensions_tag__26 }
    1971             : };
    1972             : 
    1973             : int ASN1CALL
    1974           0 : decode_Extensions(const unsigned char *p, size_t len, Extensions *data, size_t *size)
    1975             : {
    1976           0 :     memset(data, 0, sizeof(*data));
    1977           0 :     return _asn1_decode_top(asn1_Extensions, 0|0, p, len, data, size);
    1978             : }
    1979             : 
    1980             : 
    1981             : int ASN1CALL
    1982           0 : encode_Extensions(unsigned char *p, size_t len, const Extensions *data, size_t *size)
    1983             : {
    1984           0 :     return _asn1_encode(asn1_Extensions, p, len, data, size);
    1985             : }
    1986             : 
    1987             : 
    1988             : size_t ASN1CALL
    1989           0 : length_Extensions(const Extensions *data)
    1990             : {
    1991           0 :     return _asn1_length(asn1_Extensions, data);
    1992             : }
    1993             : 
    1994             : 
    1995             : void ASN1CALL
    1996           0 : free_Extensions(Extensions *data)
    1997             : {
    1998           0 :     _asn1_free_top(asn1_Extensions, data);
    1999           0 : }
    2000             : 
    2001             : 
    2002             : int ASN1CALL
    2003           0 : copy_Extensions(const Extensions *from, Extensions *to)
    2004             : {
    2005           0 :     return _asn1_copy_top(asn1_Extensions, from, to);
    2006             : }
    2007             : 
    2008             : 
    2009             : char * ASN1CALL
    2010           0 : print_Extensions(const Extensions *data, int flags)
    2011             : {
    2012           0 :     return _asn1_print_top(asn1_Extensions, flags, data);
    2013             : }
    2014             : 
    2015             : int ASN1CALL
    2016           0 : add_Extensions(Extensions *data, const Extension *element)
    2017             : {
    2018           0 : int ret;
    2019           0 : void *ptr;
    2020             : 
    2021           0 : ptr = realloc(data->val, 
    2022           0 :         (data->len + 1) * sizeof(data->val[0]));
    2023           0 : if (ptr == NULL) return ENOMEM;
    2024           0 : data->val = ptr;
    2025             : 
    2026           0 : ret = copy_Extension(element, &data->val[data->len]);
    2027           0 : if (ret) return ret;
    2028           0 : data->len++;
    2029           0 : return 0;
    2030             : }
    2031             : 
    2032             : int ASN1CALL
    2033           0 : remove_Extensions(Extensions *data, unsigned int element)
    2034             : {
    2035           0 : void *ptr;
    2036             : 
    2037           0 : if (data->len == 0 || element >= data->len)
    2038           0 :         return ASN1_OVERRUN;
    2039           0 : free_Extension(&data->val[element]);
    2040           0 : data->len--;
    2041           0 : if (element < data->len)
    2042           0 :         memmove(&data->val[element], &data->val[element + 1], 
    2043           0 :                 sizeof(data->val[0]) * (data->len - element));
    2044           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    2045           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    2046           0 : return 0;
    2047             : }
    2048             : 
    2049             : /* template_members: TBSCertificate exp exp */
    2050             : /* tsequence: members isstruct: 1 */
    2051             : /* template_members: TBSCertificate exp exp */
    2052             : /* generate_template_type: TBSCertificate_tag_version_28 */
    2053             : const struct asn1_template asn1_TBSCertificate_tag_version_28[] = {
    2054             : /* 0 */ { 0, sizeof(Version), ((void *)(uintptr_t)1) },
    2055             : /* 1 */ { A1_OP_TYPE , 0, asn1_Version }
    2056             : };
    2057             : /* template_members: TBSCertificate exp imp */
    2058             : /* template_members: TBSCertificate exp exp */
    2059             : /* generate_template_type: TBSCertificate_tag_issuerUniqueID_30 */
    2060             : const struct asn1_template asn1_TBSCertificate_tag_issuerUniqueID_30[] = {
    2061             : /* 0 */ { 0, sizeof(TBSCertificate), ((void *)(uintptr_t)1) },
    2062             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    2063             : };
    2064             : /* generate_template_type: TBSCertificate_tag_issuerUniqueID_29 */
    2065             : const struct asn1_template asn1_TBSCertificate_tag_issuerUniqueID_29[] = {
    2066             : /* 0 */ { 0, sizeof(TBSCertificate), ((void *)(uintptr_t)1) },
    2067             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), 0, asn1_TBSCertificate_tag_issuerUniqueID_30 }
    2068             : };
    2069             : /* template_members: TBSCertificate exp imp */
    2070             : /* template_members: TBSCertificate exp exp */
    2071             : /* generate_template_type: TBSCertificate_tag_subjectUniqueID_32 */
    2072             : /* generate_template_type: TBSCertificate_tag_subjectUniqueID_31 */
    2073             : /* template_members: TBSCertificate exp exp */
    2074             : /* generate_template_type: TBSCertificate_tag_extensions_33 */
    2075             : const struct asn1_template asn1_TBSCertificate_tag_extensions_33[] = {
    2076             : /* 0 */ { 0, sizeof(Extensions), ((void *)(uintptr_t)1) },
    2077             : /* 1 */ { A1_OP_TYPE , 0, asn1_Extensions }
    2078             : };
    2079             : /* generate_template_type: TBSCertificate_tag__27 */
    2080             : const struct asn1_template asn1_TBSCertificate_tag__27[] = {
    2081             : /* 0 */ { 0, sizeof(struct TBSCertificate), ((void *)(uintptr_t)21) },
    2082             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_OPTIONAL, offsetof(struct TBSCertificate, version), asn1_TBSCertificate_tag_version_28 },
    2083             : /* 2 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, serialNumber), asn1_CertificateSerialNumber },
    2084             : /* 3 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, signature), asn1_AlgorithmIdentifier },
    2085             : /* 4 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, issuer), asn1_Name },
    2086             : /* 5 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, validity), asn1_Validity },
    2087             : /* 6 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, subject), asn1_Name },
    2088             : /* 7 */ { A1_OP_TYPE , offsetof(struct TBSCertificate, subjectPublicKeyInfo), asn1_SubjectPublicKeyInfo },
    2089             : /* 8 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct TBSCertificate, issuerUniqueID), asn1_TBSCertificate_tag_issuerUniqueID_29 },
    2090             : /* 9 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,2)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct TBSCertificate, subjectUniqueID), asn1_TBSCertificate_tag_issuerUniqueID_29 },
    2091             : /* 10 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,3)|A1_FLAG_OPTIONAL, offsetof(struct TBSCertificate, extensions), asn1_TBSCertificate_tag_extensions_33 },
    2092             : /* 11 */ { A1_OP_NAME, 0, "TBSCertificate" },
    2093             : /* 12 */ { A1_OP_NAME, 0, "version" },
    2094             : /* 13 */ { A1_OP_NAME, 0, "serialNumber" },
    2095             : /* 14 */ { A1_OP_NAME, 0, "signature" },
    2096             : /* 15 */ { A1_OP_NAME, 0, "issuer" },
    2097             : /* 16 */ { A1_OP_NAME, 0, "validity" },
    2098             : /* 17 */ { A1_OP_NAME, 0, "subject" },
    2099             : /* 18 */ { A1_OP_NAME, 0, "subjectPublicKeyInfo" },
    2100             : /* 19 */ { A1_OP_NAME, 0, "issuerUniqueID" },
    2101             : /* 20 */ { A1_OP_NAME, 0, "subjectUniqueID" },
    2102             : /* 21 */ { A1_OP_NAME, 0, "extensions" }
    2103             : };
    2104             : /* generate_template_type: TBSCertificate */
    2105             : const struct asn1_template asn1_TBSCertificate[] = {
    2106             : /* 0 */ { 0|A1_HF_PRESERVE, sizeof(TBSCertificate), ((void *)(uintptr_t)1) },
    2107             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TBSCertificate_tag__27 }
    2108             : };
    2109             : 
    2110             : int ASN1CALL
    2111           0 : decode_TBSCertificate(const unsigned char *p, size_t len, TBSCertificate *data, size_t *size)
    2112             : {
    2113           0 :     memset(data, 0, sizeof(*data));
    2114           0 :     return _asn1_decode_top(asn1_TBSCertificate, 0|0, p, len, data, size);
    2115             : }
    2116             : 
    2117             : 
    2118             : int ASN1CALL
    2119           0 : encode_TBSCertificate(unsigned char *p, size_t len, const TBSCertificate *data, size_t *size)
    2120             : {
    2121           0 :     return _asn1_encode(asn1_TBSCertificate, p, len, data, size);
    2122             : }
    2123             : 
    2124             : 
    2125             : size_t ASN1CALL
    2126           0 : length_TBSCertificate(const TBSCertificate *data)
    2127             : {
    2128           0 :     return _asn1_length(asn1_TBSCertificate, data);
    2129             : }
    2130             : 
    2131             : 
    2132             : void ASN1CALL
    2133           0 : free_TBSCertificate(TBSCertificate *data)
    2134             : {
    2135           0 :     _asn1_free_top(asn1_TBSCertificate, data);
    2136           0 : }
    2137             : 
    2138             : 
    2139             : int ASN1CALL
    2140           0 : copy_TBSCertificate(const TBSCertificate *from, TBSCertificate *to)
    2141             : {
    2142           0 :     return _asn1_copy_top(asn1_TBSCertificate, from, to);
    2143             : }
    2144             : 
    2145             : 
    2146             : char * ASN1CALL
    2147           0 : print_TBSCertificate(const TBSCertificate *data, int flags)
    2148             : {
    2149           0 :     return _asn1_print_top(asn1_TBSCertificate, flags, data);
    2150             : }
    2151             : 
    2152             : /* template_members: Certificate exp exp */
    2153             : /* tsequence: members isstruct: 1 */
    2154             : /* template_members: Certificate exp exp */
    2155             : /* generate_template_type: Certificate_tag_signatureValue_35 */
    2156             : const struct asn1_template asn1_Certificate_tag_signatureValue_35[] = {
    2157             : /* 0 */ { 0, sizeof(Certificate), ((void *)(uintptr_t)1) },
    2158             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    2159             : };
    2160             : /* generate_template_type: Certificate_tag__34 */
    2161             : const struct asn1_template asn1_Certificate_tag__34[] = {
    2162             : /* 0 */ { 0, sizeof(struct Certificate), ((void *)(uintptr_t)7) },
    2163             : /* 1 */ { A1_OP_TYPE , offsetof(struct Certificate, tbsCertificate), asn1_TBSCertificate },
    2164             : /* 2 */ { A1_OP_TYPE , offsetof(struct Certificate, signatureAlgorithm), asn1_AlgorithmIdentifier },
    2165             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), offsetof(struct Certificate, signatureValue), asn1_Certificate_tag_signatureValue_35 },
    2166             : /* 4 */ { A1_OP_NAME, 0, "Certificate" },
    2167             : /* 5 */ { A1_OP_NAME, 0, "tbsCertificate" },
    2168             : /* 6 */ { A1_OP_NAME, 0, "signatureAlgorithm" },
    2169             : /* 7 */ { A1_OP_NAME, 0, "signatureValue" }
    2170             : };
    2171             : /* generate_template_type: Certificate */
    2172             : const struct asn1_template asn1_Certificate[] = {
    2173             : /* 0 */ { 0, sizeof(Certificate), ((void *)(uintptr_t)1) },
    2174             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Certificate_tag__34 }
    2175             : };
    2176             : 
    2177             : int ASN1CALL
    2178         323 : decode_Certificate(const unsigned char *p, size_t len, Certificate *data, size_t *size)
    2179             : {
    2180         323 :     memset(data, 0, sizeof(*data));
    2181         323 :     return _asn1_decode_top(asn1_Certificate, 0|0, p, len, data, size);
    2182             : }
    2183             : 
    2184             : 
    2185             : int ASN1CALL
    2186          65 : encode_Certificate(unsigned char *p, size_t len, const Certificate *data, size_t *size)
    2187             : {
    2188          65 :     return _asn1_encode(asn1_Certificate, p, len, data, size);
    2189             : }
    2190             : 
    2191             : 
    2192             : size_t ASN1CALL
    2193          65 : length_Certificate(const Certificate *data)
    2194             : {
    2195          65 :     return _asn1_length(asn1_Certificate, data);
    2196             : }
    2197             : 
    2198             : 
    2199             : void ASN1CALL
    2200         538 : free_Certificate(Certificate *data)
    2201             : {
    2202         538 :     _asn1_free_top(asn1_Certificate, data);
    2203         538 : }
    2204             : 
    2205             : 
    2206             : int ASN1CALL
    2207         323 : copy_Certificate(const Certificate *from, Certificate *to)
    2208             : {
    2209         323 :     return _asn1_copy_top(asn1_Certificate, from, to);
    2210             : }
    2211             : 
    2212             : 
    2213             : char * ASN1CALL
    2214           0 : print_Certificate(const Certificate *data, int flags)
    2215             : {
    2216           0 :     return _asn1_print_top(asn1_Certificate, flags, data);
    2217             : }
    2218             : 
    2219             : /* template_members: Certificates exp exp */
    2220             : /* generate_template_type: Certificate_seofTstruct_4 */
    2221             : const struct asn1_template asn1_Certificate_seofTstruct_4[] = {
    2222             : /* 0 */ { 0, sizeof(Certificate), ((void *)(uintptr_t)1) },
    2223             : /* 1 */ { A1_OP_TYPE , 0, asn1_Certificate }
    2224             : };
    2225             : /* generate_template_type: Certificates_tag__36 */
    2226             : const struct asn1_template asn1_Certificates_tag__36[] = {
    2227             : /* 0 */ { 0, sizeof(Certificate), ((void *)(uintptr_t)1) },
    2228             : /* 1 */ { A1_OP_SEQOF, 0, asn1_Certificate_seofTstruct_4 }
    2229             : };
    2230             : /* generate_template_type: Certificates */
    2231             : const struct asn1_template asn1_Certificates[] = {
    2232             : /* 0 */ { 0, sizeof(Certificates), ((void *)(uintptr_t)1) },
    2233             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_Certificates_tag__36 }
    2234             : };
    2235             : 
    2236             : int ASN1CALL
    2237           0 : decode_Certificates(const unsigned char *p, size_t len, Certificates *data, size_t *size)
    2238             : {
    2239           0 :     memset(data, 0, sizeof(*data));
    2240           0 :     return _asn1_decode_top(asn1_Certificates, 0|0, p, len, data, size);
    2241             : }
    2242             : 
    2243             : 
    2244             : int ASN1CALL
    2245           0 : encode_Certificates(unsigned char *p, size_t len, const Certificates *data, size_t *size)
    2246             : {
    2247           0 :     return _asn1_encode(asn1_Certificates, p, len, data, size);
    2248             : }
    2249             : 
    2250             : 
    2251             : size_t ASN1CALL
    2252           0 : length_Certificates(const Certificates *data)
    2253             : {
    2254           0 :     return _asn1_length(asn1_Certificates, data);
    2255             : }
    2256             : 
    2257             : 
    2258             : void ASN1CALL
    2259           0 : free_Certificates(Certificates *data)
    2260             : {
    2261           0 :     _asn1_free_top(asn1_Certificates, data);
    2262           0 : }
    2263             : 
    2264             : 
    2265             : int ASN1CALL
    2266           0 : copy_Certificates(const Certificates *from, Certificates *to)
    2267             : {
    2268           0 :     return _asn1_copy_top(asn1_Certificates, from, to);
    2269             : }
    2270             : 
    2271             : 
    2272             : char * ASN1CALL
    2273           0 : print_Certificates(const Certificates *data, int flags)
    2274             : {
    2275           0 :     return _asn1_print_top(asn1_Certificates, flags, data);
    2276             : }
    2277             : 
    2278             : int ASN1CALL
    2279           0 : add_Certificates(Certificates *data, const Certificate *element)
    2280             : {
    2281           0 : int ret;
    2282           0 : void *ptr;
    2283             : 
    2284           0 : ptr = realloc(data->val, 
    2285           0 :         (data->len + 1) * sizeof(data->val[0]));
    2286           0 : if (ptr == NULL) return ENOMEM;
    2287           0 : data->val = ptr;
    2288             : 
    2289           0 : ret = copy_Certificate(element, &data->val[data->len]);
    2290           0 : if (ret) return ret;
    2291           0 : data->len++;
    2292           0 : return 0;
    2293             : }
    2294             : 
    2295             : int ASN1CALL
    2296           0 : remove_Certificates(Certificates *data, unsigned int element)
    2297             : {
    2298           0 : void *ptr;
    2299             : 
    2300           0 : if (data->len == 0 || element >= data->len)
    2301           0 :         return ASN1_OVERRUN;
    2302           0 : free_Certificate(&data->val[element]);
    2303           0 : data->len--;
    2304           0 : if (element < data->len)
    2305           0 :         memmove(&data->val[element], &data->val[element + 1], 
    2306           0 :                 sizeof(data->val[0]) * (data->len - element));
    2307           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    2308           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    2309           0 : return 0;
    2310             : }
    2311             : 
    2312             : /* template_members: ValidationParms exp exp */
    2313             : /* tsequence: members isstruct: 1 */
    2314             : /* template_members: ValidationParms exp exp */
    2315             : /* generate_template_type: ValidationParms_tag_seed_38 */
    2316             : const struct asn1_template asn1_ValidationParms_tag_seed_38[] = {
    2317             : /* 0 */ { 0, sizeof(ValidationParms), ((void *)(uintptr_t)1) },
    2318             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    2319             : };
    2320             : /* template_members: ValidationParms exp exp */
    2321             : /* generate_template_type: ValidationParms_tag_pgenCounter_39 */
    2322             : /* generate_template_type: ValidationParms_tag__37 */
    2323             : const struct asn1_template asn1_ValidationParms_tag__37[] = {
    2324             : /* 0 */ { 0, sizeof(struct ValidationParms), ((void *)(uintptr_t)5) },
    2325             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), offsetof(struct ValidationParms, seed), asn1_ValidationParms_tag_seed_38 },
    2326             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct ValidationParms, pgenCounter), asn1_CertificateSerialNumber_tag__15 },
    2327             : /* 3 */ { A1_OP_NAME, 0, "ValidationParms" },
    2328             : /* 4 */ { A1_OP_NAME, 0, "seed" },
    2329             : /* 5 */ { A1_OP_NAME, 0, "pgenCounter" }
    2330             : };
    2331             : /* generate_template_type: ValidationParms */
    2332             : const struct asn1_template asn1_ValidationParms[] = {
    2333             : /* 0 */ { 0, sizeof(ValidationParms), ((void *)(uintptr_t)1) },
    2334             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_ValidationParms_tag__37 }
    2335             : };
    2336             : 
    2337             : int ASN1CALL
    2338           0 : decode_ValidationParms(const unsigned char *p, size_t len, ValidationParms *data, size_t *size)
    2339             : {
    2340           0 :     memset(data, 0, sizeof(*data));
    2341           0 :     return _asn1_decode_top(asn1_ValidationParms, 0|0, p, len, data, size);
    2342             : }
    2343             : 
    2344             : 
    2345             : int ASN1CALL
    2346           0 : encode_ValidationParms(unsigned char *p, size_t len, const ValidationParms *data, size_t *size)
    2347             : {
    2348           0 :     return _asn1_encode(asn1_ValidationParms, p, len, data, size);
    2349             : }
    2350             : 
    2351             : 
    2352             : size_t ASN1CALL
    2353           0 : length_ValidationParms(const ValidationParms *data)
    2354             : {
    2355           0 :     return _asn1_length(asn1_ValidationParms, data);
    2356             : }
    2357             : 
    2358             : 
    2359             : void ASN1CALL
    2360           0 : free_ValidationParms(ValidationParms *data)
    2361             : {
    2362           0 :     _asn1_free_top(asn1_ValidationParms, data);
    2363           0 : }
    2364             : 
    2365             : 
    2366             : int ASN1CALL
    2367           0 : copy_ValidationParms(const ValidationParms *from, ValidationParms *to)
    2368             : {
    2369           0 :     return _asn1_copy_top(asn1_ValidationParms, from, to);
    2370             : }
    2371             : 
    2372             : 
    2373             : char * ASN1CALL
    2374           0 : print_ValidationParms(const ValidationParms *data, int flags)
    2375             : {
    2376           0 :     return _asn1_print_top(asn1_ValidationParms, flags, data);
    2377             : }
    2378             : 
    2379             : /* template_members: DomainParameters exp exp */
    2380             : /* tsequence: members isstruct: 1 */
    2381             : /* template_members: DomainParameters exp exp */
    2382             : /* generate_template_type: DomainParameters_tag_p_41 */
    2383             : /* template_members: DomainParameters exp exp */
    2384             : /* generate_template_type: DomainParameters_tag_g_42 */
    2385             : /* template_members: DomainParameters exp exp */
    2386             : /* generate_template_type: DomainParameters_tag_q_43 */
    2387             : /* template_members: DomainParameters exp exp */
    2388             : /* generate_template_type: DomainParameters_tag_j_44 */
    2389             : /* generate_template_type: DomainParameters_tag__40 */
    2390             : const struct asn1_template asn1_DomainParameters_tag__40[] = {
    2391             : /* 0 */ { 0, sizeof(struct DomainParameters), ((void *)(uintptr_t)11) },
    2392             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DomainParameters, p), asn1_CertificateSerialNumber_tag__15 },
    2393             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DomainParameters, g), asn1_CertificateSerialNumber_tag__15 },
    2394             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer)|A1_FLAG_OPTIONAL, offsetof(struct DomainParameters, q), asn1_CertificateSerialNumber_tag__15 },
    2395             : /* 4 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer)|A1_FLAG_OPTIONAL, offsetof(struct DomainParameters, j), asn1_CertificateSerialNumber_tag__15 },
    2396             : /* 5 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct DomainParameters, validationParms), asn1_ValidationParms },
    2397             : /* 6 */ { A1_OP_NAME, 0, "DomainParameters" },
    2398             : /* 7 */ { A1_OP_NAME, 0, "p" },
    2399             : /* 8 */ { A1_OP_NAME, 0, "g" },
    2400             : /* 9 */ { A1_OP_NAME, 0, "q" },
    2401             : /* 10 */ { A1_OP_NAME, 0, "j" },
    2402             : /* 11 */ { A1_OP_NAME, 0, "validationParms" }
    2403             : };
    2404             : /* generate_template_type: DomainParameters */
    2405             : const struct asn1_template asn1_DomainParameters[] = {
    2406             : /* 0 */ { 0, sizeof(DomainParameters), ((void *)(uintptr_t)1) },
    2407             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DomainParameters_tag__40 }
    2408             : };
    2409             : 
    2410             : int ASN1CALL
    2411          32 : decode_DomainParameters(const unsigned char *p, size_t len, DomainParameters *data, size_t *size)
    2412             : {
    2413          32 :     memset(data, 0, sizeof(*data));
    2414          32 :     return _asn1_decode_top(asn1_DomainParameters, 0|0, p, len, data, size);
    2415             : }
    2416             : 
    2417             : 
    2418             : int ASN1CALL
    2419         124 : encode_DomainParameters(unsigned char *p, size_t len, const DomainParameters *data, size_t *size)
    2420             : {
    2421         124 :     return _asn1_encode(asn1_DomainParameters, p, len, data, size);
    2422             : }
    2423             : 
    2424             : 
    2425             : size_t ASN1CALL
    2426         124 : length_DomainParameters(const DomainParameters *data)
    2427             : {
    2428         124 :     return _asn1_length(asn1_DomainParameters, data);
    2429             : }
    2430             : 
    2431             : 
    2432             : void ASN1CALL
    2433         156 : free_DomainParameters(DomainParameters *data)
    2434             : {
    2435         156 :     _asn1_free_top(asn1_DomainParameters, data);
    2436         156 : }
    2437             : 
    2438             : 
    2439             : int ASN1CALL
    2440           0 : copy_DomainParameters(const DomainParameters *from, DomainParameters *to)
    2441             : {
    2442           0 :     return _asn1_copy_top(asn1_DomainParameters, from, to);
    2443             : }
    2444             : 
    2445             : 
    2446             : char * ASN1CALL
    2447           0 : print_DomainParameters(const DomainParameters *data, int flags)
    2448             : {
    2449           0 :     return _asn1_print_top(asn1_DomainParameters, flags, data);
    2450             : }
    2451             : 
    2452             : /* template_members: DHParameter exp exp */
    2453             : /* tsequence: members isstruct: 1 */
    2454             : /* template_members: DHParameter exp exp */
    2455             : /* generate_template_type: DHParameter_tag_prime_46 */
    2456             : /* template_members: DHParameter exp exp */
    2457             : /* generate_template_type: DHParameter_tag_base_47 */
    2458             : /* template_members: DHParameter exp exp */
    2459             : /* generate_template_type: DHParameter_tag_privateValueLength_48 */
    2460             : /* generate_template_type: DHParameter_tag__45 */
    2461             : const struct asn1_template asn1_DHParameter_tag__45[] = {
    2462             : /* 0 */ { 0, sizeof(struct DHParameter), ((void *)(uintptr_t)7) },
    2463             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DHParameter, prime), asn1_CertificateSerialNumber_tag__15 },
    2464             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DHParameter, base), asn1_CertificateSerialNumber_tag__15 },
    2465             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer)|A1_FLAG_OPTIONAL, offsetof(struct DHParameter, privateValueLength), asn1_CertificateSerialNumber_tag__15 },
    2466             : /* 4 */ { A1_OP_NAME, 0, "DHParameter" },
    2467             : /* 5 */ { A1_OP_NAME, 0, "prime" },
    2468             : /* 6 */ { A1_OP_NAME, 0, "base" },
    2469             : /* 7 */ { A1_OP_NAME, 0, "privateValueLength" }
    2470             : };
    2471             : /* generate_template_type: DHParameter */
    2472             : const struct asn1_template asn1_DHParameter[] = {
    2473             : /* 0 */ { 0, sizeof(DHParameter), ((void *)(uintptr_t)1) },
    2474             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DHParameter_tag__45 }
    2475             : };
    2476             : 
    2477             : int ASN1CALL
    2478           0 : decode_DHParameter(const unsigned char *p, size_t len, DHParameter *data, size_t *size)
    2479             : {
    2480           0 :     memset(data, 0, sizeof(*data));
    2481           0 :     return _asn1_decode_top(asn1_DHParameter, 0|0, p, len, data, size);
    2482             : }
    2483             : 
    2484             : 
    2485             : int ASN1CALL
    2486           0 : encode_DHParameter(unsigned char *p, size_t len, const DHParameter *data, size_t *size)
    2487             : {
    2488           0 :     return _asn1_encode(asn1_DHParameter, p, len, data, size);
    2489             : }
    2490             : 
    2491             : 
    2492             : size_t ASN1CALL
    2493           0 : length_DHParameter(const DHParameter *data)
    2494             : {
    2495           0 :     return _asn1_length(asn1_DHParameter, data);
    2496             : }
    2497             : 
    2498             : 
    2499             : void ASN1CALL
    2500           0 : free_DHParameter(DHParameter *data)
    2501             : {
    2502           0 :     _asn1_free_top(asn1_DHParameter, data);
    2503           0 : }
    2504             : 
    2505             : 
    2506             : int ASN1CALL
    2507           0 : copy_DHParameter(const DHParameter *from, DHParameter *to)
    2508             : {
    2509           0 :     return _asn1_copy_top(asn1_DHParameter, from, to);
    2510             : }
    2511             : 
    2512             : 
    2513             : char * ASN1CALL
    2514           0 : print_DHParameter(const DHParameter *data, int flags)
    2515             : {
    2516           0 :     return _asn1_print_top(asn1_DHParameter, flags, data);
    2517             : }
    2518             : 
    2519             : /* template_members: DHPublicKey exp exp */
    2520             : /* generate_template_type: DHPublicKey_tag__49 */
    2521             : /* generate_template_type: DHPublicKey */
    2522             : const struct asn1_template asn1_DHPublicKey[] = {
    2523             : /* 0 */ { 0, sizeof(DHPublicKey), ((void *)(uintptr_t)1) },
    2524             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_CertificateSerialNumber_tag__15 }
    2525             : };
    2526             : 
    2527             : int ASN1CALL
    2528          45 : decode_DHPublicKey(const unsigned char *p, size_t len, DHPublicKey *data, size_t *size)
    2529             : {
    2530          45 :     memset(data, 0, sizeof(*data));
    2531          45 :     return _asn1_decode_top(asn1_DHPublicKey, 0|0, p, len, data, size);
    2532             : }
    2533             : 
    2534             : 
    2535             : int ASN1CALL
    2536         148 : encode_DHPublicKey(unsigned char *p, size_t len, const DHPublicKey *data, size_t *size)
    2537             : {
    2538         148 :     return _asn1_encode(asn1_DHPublicKey, p, len, data, size);
    2539             : }
    2540             : 
    2541             : 
    2542             : size_t ASN1CALL
    2543         148 : length_DHPublicKey(const DHPublicKey *data)
    2544             : {
    2545         148 :     return _asn1_length(asn1_DHPublicKey, data);
    2546             : }
    2547             : 
    2548             : 
    2549             : void ASN1CALL
    2550          13 : free_DHPublicKey(DHPublicKey *data)
    2551             : {
    2552          13 :     _asn1_free_top(asn1_DHPublicKey, data);
    2553          13 : }
    2554             : 
    2555             : 
    2556             : int ASN1CALL
    2557           0 : copy_DHPublicKey(const DHPublicKey *from, DHPublicKey *to)
    2558             : {
    2559           0 :     return _asn1_copy_top(asn1_DHPublicKey, from, to);
    2560             : }
    2561             : 
    2562             : 
    2563             : char * ASN1CALL
    2564           0 : print_DHPublicKey(const DHPublicKey *data, int flags)
    2565             : {
    2566           0 :     return _asn1_print_top(asn1_DHPublicKey, flags, data);
    2567             : }
    2568             : 
    2569             : /* template_members: OtherName exp exp */
    2570             : /* tsequence: members isstruct: 1 */
    2571             : /* template_members: OtherName exp exp */
    2572             : /* generate_template_type: OtherName_tag_type_id_51 */
    2573             : /* template_members: OtherName exp exp */
    2574             : /* generate_template_type: OtherName_tag_value_52 */
    2575             : const struct asn1_template asn1_OtherName_tag_value_52[] = {
    2576             : /* 0 */ { 0, sizeof(HEIM_ANY), ((void *)(uintptr_t)1) },
    2577             : /* 1 */ { A1_OP_TYPE_EXTERN , 0, &asn1_extern_HEIM_ANY}
    2578             : };
    2579             : const struct asn1_template asn1_KnownOtherNameTypes[] = {
    2580             : /* 0 */ { 0, 0, ((void *)(uintptr_t)6) },
    2581             : /* 1 */ { A1_OP_NAME, 0, "KnownOtherNameTypes" },
    2582             : /* 2 */ { A1_OP_NAME, 0, "on-pkinit-ms-san" },
    2583             : /* 3 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_pkinit_ms_san },
    2584             : /* 4 */ { A1_OP_OPENTYPE, sizeof(AliasUTF8String), (const void *)&asn1_AliasUTF8String },
    2585             : /* 5 */ { A1_OP_NAME, 0, "on-krb5PrincipalName" },
    2586             : /* 6 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_pkinit_san },
    2587             : /* 7 */ { A1_OP_OPENTYPE, sizeof(KRB5PrincipalName), (const void *)&asn1_KRB5PrincipalName },
    2588             : /* 8 */ { A1_OP_NAME, 0, "on-permanentIdentifier" },
    2589             : /* 9 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_permanentIdentifier },
    2590             : /* 10 */ { A1_OP_OPENTYPE, sizeof(PermanentIdentifier), (const void *)&asn1_PermanentIdentifier },
    2591             : /* 11 */ { A1_OP_NAME, 0, "on-hardwareModuleName" },
    2592             : /* 12 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_hardwareModuleName },
    2593             : /* 13 */ { A1_OP_OPENTYPE, sizeof(HardwareModuleName), (const void *)&asn1_HardwareModuleName },
    2594             : /* 14 */ { A1_OP_NAME, 0, "on-xmppAddr" },
    2595             : /* 15 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_xmppAddr },
    2596             : /* 16 */ { A1_OP_OPENTYPE, sizeof(AliasUTF8String), (const void *)&asn1_AliasUTF8String },
    2597             : /* 17 */ { A1_OP_NAME, 0, "on-dnsSRV" },
    2598             : /* 18 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_on_dnsSRV },
    2599             : /* 19 */ { A1_OP_OPENTYPE, sizeof(AliasIA5String), (const void *)&asn1_AliasIA5String }
    2600             : };
    2601             : /* generate_template_type: OtherName_tag__50 */
    2602             : const struct asn1_template asn1_OtherName_tag__50[] = {
    2603             : /* 0 */ { 0, sizeof(struct OtherName), ((void *)(uintptr_t)6) },
    2604             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct OtherName, type_id), asn1_AttributeType_tag__1 },
    2605             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0), offsetof(struct OtherName, value), asn1_OtherName_tag_value_52 },
    2606             : /* 3 */ { A1_OP_OPENTYPE_OBJSET | A1_OS_IS_SORTED |0 | (1 << 10) | 0, offsetof(OtherName, _ioschoice_value), asn1_KnownOtherNameTypes },
    2607             : /* 4 */ { A1_OP_NAME, 0, "OtherName" },
    2608             : /* 5 */ { A1_OP_NAME, 0, "type-id" },
    2609             : /* 6 */ { A1_OP_NAME, 0, "value" }
    2610             : };
    2611             : /* generate_template_type: OtherName */
    2612             : const struct asn1_template asn1_OtherName[] = {
    2613             : /* 0 */ { 0, sizeof(OtherName), ((void *)(uintptr_t)1) },
    2614             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_OtherName_tag__50 }
    2615             : };
    2616             : 
    2617             : int ASN1CALL
    2618           0 : decode_OtherName(const unsigned char *p, size_t len, OtherName *data, size_t *size)
    2619             : {
    2620           0 :     memset(data, 0, sizeof(*data));
    2621           0 :     return _asn1_decode_top(asn1_OtherName, 0|0, p, len, data, size);
    2622             : }
    2623             : 
    2624             : 
    2625             : int ASN1CALL
    2626           0 : encode_OtherName(unsigned char *p, size_t len, const OtherName *data, size_t *size)
    2627             : {
    2628           0 :     return _asn1_encode(asn1_OtherName, p, len, data, size);
    2629             : }
    2630             : 
    2631             : 
    2632             : size_t ASN1CALL
    2633           0 : length_OtherName(const OtherName *data)
    2634             : {
    2635           0 :     return _asn1_length(asn1_OtherName, data);
    2636             : }
    2637             : 
    2638             : 
    2639             : void ASN1CALL
    2640           0 : free_OtherName(OtherName *data)
    2641             : {
    2642           0 :     _asn1_free_top(asn1_OtherName, data);
    2643           0 : }
    2644             : 
    2645             : 
    2646             : int ASN1CALL
    2647           0 : copy_OtherName(const OtherName *from, OtherName *to)
    2648             : {
    2649           0 :     return _asn1_copy_top(asn1_OtherName, from, to);
    2650             : }
    2651             : 
    2652             : 
    2653             : char * ASN1CALL
    2654           0 : print_OtherName(const OtherName *data, int flags)
    2655             : {
    2656           0 :     return _asn1_print_top(asn1_OtherName, flags, data);
    2657             : }
    2658             : 
    2659             : /* template_members: OtherName imp imp */
    2660             : /* generate_template_type: OtherName_tag__53 */
    2661             : const struct asn1_template asn1_OtherName_tag__53[] = {
    2662             : /* 0 */ { 0, sizeof(OtherName), ((void *)(uintptr_t)1) },
    2663             : /* 1 */ { A1_OP_TYPE , 0, asn1_OtherName }
    2664             : };
    2665             : /* generate_template_type: GeneralName_choice_otherName */
    2666             : const struct asn1_template asn1_GeneralName_choice_otherName[] = {
    2667             : /* 0 */ { 0, sizeof(OtherName), ((void *)(uintptr_t)1) },
    2668             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_IMPLICIT, 0, asn1_OtherName_tag__53 }
    2669             : };
    2670             : /* template_members: heim_ia5_string imp imp */
    2671             : /* template_members: heim_ia5_string exp exp */
    2672             : /* generate_template_type: heim_ia5_string_tag__55 */
    2673             : /* generate_template_type: heim_ia5_string_tag__54 */
    2674             : /* generate_template_type: GeneralName_choice_rfc822Name */
    2675             : const struct asn1_template asn1_GeneralName_choice_rfc822Name[] = {
    2676             : /* 0 */ { 0, sizeof(heim_ia5_string), ((void *)(uintptr_t)1) },
    2677             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_IMPLICIT, 0, asn1_DirectoryString_choice_ia5String }
    2678             : };
    2679             : /* template_members: heim_ia5_string imp imp */
    2680             : /* template_members: heim_ia5_string exp exp */
    2681             : /* generate_template_type: heim_ia5_string_tag__57 */
    2682             : /* generate_template_type: heim_ia5_string_tag__56 */
    2683             : /* generate_template_type: GeneralName_choice_dNSName */
    2684             : const struct asn1_template asn1_GeneralName_choice_dNSName[] = {
    2685             : /* 0 */ { 0, sizeof(heim_ia5_string), ((void *)(uintptr_t)1) },
    2686             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,2)|A1_FLAG_IMPLICIT, 0, asn1_DirectoryString_choice_ia5String }
    2687             : };
    2688             : /* template_members: Name exp exp */
    2689             : /* generate_template_type: Name_tag__58 */
    2690             : const struct asn1_template asn1_Name_tag__58[] = {
    2691             : /* 0 */ { 0, sizeof(Name), ((void *)(uintptr_t)1) },
    2692             : /* 1 */ { A1_OP_TYPE , 0, asn1_Name }
    2693             : };
    2694             : /* generate_template_type: GeneralName_choice_directoryName */
    2695             : const struct asn1_template asn1_GeneralName_choice_directoryName[] = {
    2696             : /* 0 */ { 0, sizeof(Name), ((void *)(uintptr_t)1) },
    2697             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,4), 0, asn1_Name_tag__58 }
    2698             : };
    2699             : /* template_members: heim_ia5_string imp imp */
    2700             : /* template_members: heim_ia5_string exp exp */
    2701             : /* generate_template_type: heim_ia5_string_tag__60 */
    2702             : /* generate_template_type: heim_ia5_string_tag__59 */
    2703             : /* generate_template_type: GeneralName_choice_uniformResourceIdentifier */
    2704             : const struct asn1_template asn1_GeneralName_choice_uniformResourceIdentifier[] = {
    2705             : /* 0 */ { 0, sizeof(heim_ia5_string), ((void *)(uintptr_t)1) },
    2706             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,6)|A1_FLAG_IMPLICIT, 0, asn1_DirectoryString_choice_ia5String }
    2707             : };
    2708             : /* template_members: heim_octet_string imp imp */
    2709             : /* template_members: heim_octet_string exp exp */
    2710             : /* generate_template_type: heim_octet_string_tag__62 */
    2711             : /* generate_template_type: heim_octet_string_tag__61 */
    2712             : const struct asn1_template asn1_heim_octet_string_tag__61[] = {
    2713             : /* 0 */ { 0, sizeof(heim_octet_string), ((void *)(uintptr_t)1) },
    2714             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), 0, asn1_Extension_tag_extnValue_25 }
    2715             : };
    2716             : /* generate_template_type: GeneralName_choice_iPAddress */
    2717             : const struct asn1_template asn1_GeneralName_choice_iPAddress[] = {
    2718             : /* 0 */ { 0, sizeof(heim_octet_string), ((void *)(uintptr_t)1) },
    2719             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,7)|A1_FLAG_IMPLICIT, 0, asn1_heim_octet_string_tag__61 }
    2720             : };
    2721             : /* template_members: heim_oid imp imp */
    2722             : /* template_members: heim_oid exp exp */
    2723             : /* generate_template_type: heim_oid_tag__64 */
    2724             : /* generate_template_type: heim_oid_tag__63 */
    2725             : const struct asn1_template asn1_heim_oid_tag__63[] = {
    2726             : /* 0 */ { 0, sizeof(heim_oid), ((void *)(uintptr_t)1) },
    2727             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), 0, asn1_AttributeType_tag__1 }
    2728             : };
    2729             : /* generate_template_type: GeneralName_choice_registeredID */
    2730             : const struct asn1_template asn1_GeneralName_choice_registeredID[] = {
    2731             : /* 0 */ { 0, sizeof(heim_oid), ((void *)(uintptr_t)1) },
    2732             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,8)|A1_FLAG_IMPLICIT, 0, asn1_heim_oid_tag__63 }
    2733             : };
    2734             : static const struct asn1_template asn1_choice_GeneralName_3[] = {
    2735             : /* 0 */ { 0, offsetof(GeneralName, element), ((void *)(uintptr_t)14) },
    2736             : /* 1 */ { choice_GeneralName_otherName, offsetof(GeneralName, u.otherName), asn1_GeneralName_choice_otherName },
    2737             : /* 2 */ { choice_GeneralName_rfc822Name, offsetof(GeneralName, u.rfc822Name), asn1_GeneralName_choice_rfc822Name },
    2738             : /* 3 */ { choice_GeneralName_dNSName, offsetof(GeneralName, u.dNSName), asn1_GeneralName_choice_dNSName },
    2739             : /* 4 */ { choice_GeneralName_directoryName, offsetof(GeneralName, u.directoryName), asn1_GeneralName_choice_directoryName },
    2740             : /* 5 */ { choice_GeneralName_uniformResourceIdentifier, offsetof(GeneralName, u.uniformResourceIdentifier), asn1_GeneralName_choice_uniformResourceIdentifier },
    2741             : /* 6 */ { choice_GeneralName_iPAddress, offsetof(GeneralName, u.iPAddress), asn1_GeneralName_choice_iPAddress },
    2742             : /* 7 */ { choice_GeneralName_registeredID, offsetof(GeneralName, u.registeredID), asn1_GeneralName_choice_registeredID },
    2743             : /* 8 */ { 0, 0, "otherName" },
    2744             : /* 9 */ { 0, 0, "rfc822Name" },
    2745             : /* 10 */ { 0, 0, "dNSName" },
    2746             : /* 11 */ { 0, 0, "directoryName" },
    2747             : /* 12 */ { 0, 0, "uniformResourceIdentifier" },
    2748             : /* 13 */ { 0, 0, "iPAddress" },
    2749             : /* 14 */ { 0, 0, "registeredID" }
    2750             : };
    2751             : /* generate_template_type: GeneralName */
    2752             : const struct asn1_template asn1_GeneralName[] = {
    2753             : /* 0 */ { 0, sizeof(GeneralName), ((void *)(uintptr_t)1) },
    2754             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_GeneralName_3 }
    2755             : };
    2756             : 
    2757             : int ASN1CALL
    2758           0 : decode_GeneralName(const unsigned char *p, size_t len, GeneralName *data, size_t *size)
    2759             : {
    2760           0 :     memset(data, 0, sizeof(*data));
    2761           0 :     return _asn1_decode_top(asn1_GeneralName, 0|0, p, len, data, size);
    2762             : }
    2763             : 
    2764             : 
    2765             : int ASN1CALL
    2766           0 : encode_GeneralName(unsigned char *p, size_t len, const GeneralName *data, size_t *size)
    2767             : {
    2768           0 :     return _asn1_encode(asn1_GeneralName, p, len, data, size);
    2769             : }
    2770             : 
    2771             : 
    2772             : size_t ASN1CALL
    2773           0 : length_GeneralName(const GeneralName *data)
    2774             : {
    2775           0 :     return _asn1_length(asn1_GeneralName, data);
    2776             : }
    2777             : 
    2778             : 
    2779             : void ASN1CALL
    2780           0 : free_GeneralName(GeneralName *data)
    2781             : {
    2782           0 :     _asn1_free_top(asn1_GeneralName, data);
    2783           0 : }
    2784             : 
    2785             : 
    2786             : int ASN1CALL
    2787           0 : copy_GeneralName(const GeneralName *from, GeneralName *to)
    2788             : {
    2789           0 :     return _asn1_copy_top(asn1_GeneralName, from, to);
    2790             : }
    2791             : 
    2792             : 
    2793             : char * ASN1CALL
    2794           0 : print_GeneralName(const GeneralName *data, int flags)
    2795             : {
    2796           0 :     return _asn1_print_top(asn1_GeneralName, flags, data);
    2797             : }
    2798             : 
    2799             : /* template_members: GeneralNames exp exp */
    2800             : /* generate_template_type: GeneralName_seofTstruct_5 */
    2801             : const struct asn1_template asn1_GeneralName_seofTstruct_5[] = {
    2802             : /* 0 */ { 0, sizeof(GeneralName), ((void *)(uintptr_t)1) },
    2803             : /* 1 */ { A1_OP_TYPE , 0, asn1_GeneralName }
    2804             : };
    2805             : /* generate_template_type: GeneralNames_tag__65 */
    2806             : const struct asn1_template asn1_GeneralNames_tag__65[] = {
    2807             : /* 0 */ { 0, sizeof(GeneralName), ((void *)(uintptr_t)1) },
    2808             : /* 1 */ { A1_OP_SEQOF, 0, asn1_GeneralName_seofTstruct_5 }
    2809             : };
    2810             : /* generate_template_type: GeneralNames */
    2811             : const struct asn1_template asn1_GeneralNames[] = {
    2812             : /* 0 */ { 0, sizeof(GeneralNames), ((void *)(uintptr_t)1) },
    2813             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_GeneralNames_tag__65 }
    2814             : };
    2815             : 
    2816             : int ASN1CALL
    2817          94 : decode_GeneralNames(const unsigned char *p, size_t len, GeneralNames *data, size_t *size)
    2818             : {
    2819          94 :     memset(data, 0, sizeof(*data));
    2820          94 :     return _asn1_decode_top(asn1_GeneralNames, 0|0, p, len, data, size);
    2821             : }
    2822             : 
    2823             : 
    2824             : int ASN1CALL
    2825           0 : encode_GeneralNames(unsigned char *p, size_t len, const GeneralNames *data, size_t *size)
    2826             : {
    2827           0 :     return _asn1_encode(asn1_GeneralNames, p, len, data, size);
    2828             : }
    2829             : 
    2830             : 
    2831             : size_t ASN1CALL
    2832           0 : length_GeneralNames(const GeneralNames *data)
    2833             : {
    2834           0 :     return _asn1_length(asn1_GeneralNames, data);
    2835             : }
    2836             : 
    2837             : 
    2838             : void ASN1CALL
    2839          94 : free_GeneralNames(GeneralNames *data)
    2840             : {
    2841          94 :     _asn1_free_top(asn1_GeneralNames, data);
    2842          94 : }
    2843             : 
    2844             : 
    2845             : int ASN1CALL
    2846           0 : copy_GeneralNames(const GeneralNames *from, GeneralNames *to)
    2847             : {
    2848           0 :     return _asn1_copy_top(asn1_GeneralNames, from, to);
    2849             : }
    2850             : 
    2851             : 
    2852             : char * ASN1CALL
    2853           0 : print_GeneralNames(const GeneralNames *data, int flags)
    2854             : {
    2855           0 :     return _asn1_print_top(asn1_GeneralNames, flags, data);
    2856             : }
    2857             : 
    2858             : int ASN1CALL
    2859           0 : add_GeneralNames(GeneralNames *data, const GeneralName *element)
    2860             : {
    2861           0 : int ret;
    2862           0 : void *ptr;
    2863             : 
    2864           0 : ptr = realloc(data->val, 
    2865           0 :         (data->len + 1) * sizeof(data->val[0]));
    2866           0 : if (ptr == NULL) return ENOMEM;
    2867           0 : data->val = ptr;
    2868             : 
    2869           0 : ret = copy_GeneralName(element, &data->val[data->len]);
    2870           0 : if (ret) return ret;
    2871           0 : data->len++;
    2872           0 : return 0;
    2873             : }
    2874             : 
    2875             : int ASN1CALL
    2876           0 : remove_GeneralNames(GeneralNames *data, unsigned int element)
    2877             : {
    2878           0 : void *ptr;
    2879             : 
    2880           0 : if (data->len == 0 || element >= data->len)
    2881           0 :         return ASN1_OVERRUN;
    2882           0 : free_GeneralName(&data->val[element]);
    2883           0 : data->len--;
    2884           0 : if (element < data->len)
    2885           0 :         memmove(&data->val[element], &data->val[element + 1], 
    2886           0 :                 sizeof(data->val[0]) * (data->len - element));
    2887           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    2888           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    2889           0 : return 0;
    2890             : }
    2891             : 
    2892             : /* template_members: KeyUsage exp exp */
    2893             : static const struct asn1_template asn1_KeyUsage_bmember__0[] = {
    2894             : /* 0 */ { 0, sizeof(KeyUsage), ((void *)(uintptr_t)9) },
    2895             : /* 1 */ { 0, 0, "digitalSignature" },
    2896             : /* 2 */ { 0, 1, "nonRepudiation" },
    2897             : /* 3 */ { 0, 2, "keyEncipherment" },
    2898             : /* 4 */ { 0, 3, "dataEncipherment" },
    2899             : /* 5 */ { 0, 4, "keyAgreement" },
    2900             : /* 6 */ { 0, 5, "keyCertSign" },
    2901             : /* 7 */ { 0, 6, "cRLSign" },
    2902             : /* 8 */ { 0, 7, "encipherOnly" },
    2903             : /* 9 */ { 0, 8, "decipherOnly" }
    2904             : };
    2905             : /* generate_template_type: KeyUsage_tag__66 */
    2906             : const struct asn1_template asn1_KeyUsage_tag__66[] = {
    2907             : /* 0 */ { 0, sizeof(KeyUsage), ((void *)(uintptr_t)1) },
    2908             : /* 1 */ { A1_OP_BMEMBER, 0, asn1_KeyUsage_bmember__0 }
    2909             : };
    2910             : /* generate_template_type: KeyUsage */
    2911             : const struct asn1_template asn1_KeyUsage[] = {
    2912             : /* 0 */ { 0, sizeof(KeyUsage), ((void *)(uintptr_t)1) },
    2913             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), 0, asn1_KeyUsage_tag__66 }
    2914             : };
    2915             : 
    2916             : int ASN1CALL
    2917         202 : decode_KeyUsage(const unsigned char *p, size_t len, KeyUsage *data, size_t *size)
    2918             : {
    2919         202 :     memset(data, 0, sizeof(*data));
    2920         202 :     return _asn1_decode_top(asn1_KeyUsage, 0|0, p, len, data, size);
    2921             : }
    2922             : 
    2923             : 
    2924             : int ASN1CALL
    2925           0 : encode_KeyUsage(unsigned char *p, size_t len, const KeyUsage *data, size_t *size)
    2926             : {
    2927           0 :     return _asn1_encode(asn1_KeyUsage, p, len, data, size);
    2928             : }
    2929             : 
    2930             : 
    2931             : size_t ASN1CALL
    2932           0 : length_KeyUsage(const KeyUsage *data)
    2933             : {
    2934           0 :     return _asn1_length(asn1_KeyUsage, data);
    2935             : }
    2936             : 
    2937             : 
    2938             : void ASN1CALL
    2939           0 : free_KeyUsage(KeyUsage *data)
    2940             : {
    2941           0 :     _asn1_free_top(asn1_KeyUsage, data);
    2942           0 : }
    2943             : 
    2944             : 
    2945             : int ASN1CALL
    2946           0 : copy_KeyUsage(const KeyUsage *from, KeyUsage *to)
    2947             : {
    2948           0 :     return _asn1_copy_top(asn1_KeyUsage, from, to);
    2949             : }
    2950             : 
    2951             : 
    2952             : char * ASN1CALL
    2953           0 : print_KeyUsage(const KeyUsage *data, int flags)
    2954             : {
    2955           0 :     return _asn1_print_top(asn1_KeyUsage, flags, data);
    2956             : }
    2957             : 
    2958         202 : uint64_t KeyUsage2int(KeyUsage f)
    2959             : {
    2960         202 : uint64_t r = 0;
    2961         202 : if(f.digitalSignature) r |= (1ULL << 0);
    2962         202 : if(f.nonRepudiation) r |= (1ULL << 1);
    2963         202 : if(f.keyEncipherment) r |= (1ULL << 2);
    2964         202 : if(f.dataEncipherment) r |= (1ULL << 3);
    2965         202 : if(f.keyAgreement) r |= (1ULL << 4);
    2966         202 : if(f.keyCertSign) r |= (1ULL << 5);
    2967         202 : if(f.cRLSign) r |= (1ULL << 6);
    2968         202 : if(f.encipherOnly) r |= (1ULL << 7);
    2969         202 : if(f.decipherOnly) r |= (1ULL << 8);
    2970         202 : return r;
    2971             : }
    2972             : 
    2973           0 : KeyUsage int2KeyUsage(uint64_t n)
    2974             : {
    2975           0 :         KeyUsage flags;
    2976             : 
    2977           0 :         memset(&flags, 0, sizeof(flags));
    2978             : 
    2979           0 :         flags.digitalSignature = (n >> 0) & 1;
    2980           0 :         flags.nonRepudiation = (n >> 1) & 1;
    2981           0 :         flags.keyEncipherment = (n >> 2) & 1;
    2982           0 :         flags.dataEncipherment = (n >> 3) & 1;
    2983           0 :         flags.keyAgreement = (n >> 4) & 1;
    2984           0 :         flags.keyCertSign = (n >> 5) & 1;
    2985           0 :         flags.cRLSign = (n >> 6) & 1;
    2986           0 :         flags.encipherOnly = (n >> 7) & 1;
    2987           0 :         flags.decipherOnly = (n >> 8) & 1;
    2988           0 :         return flags;
    2989             : }
    2990             : 
    2991             : static struct units KeyUsage_units[] = {
    2992             :         {"decipherOnly",      1ULL << 8},
    2993             :         {"encipherOnly",      1ULL << 7},
    2994             :         {"cRLSign",   1ULL << 6},
    2995             :         {"keyCertSign",       1ULL << 5},
    2996             :         {"keyAgreement",      1ULL << 4},
    2997             :         {"dataEncipherment",  1ULL << 3},
    2998             :         {"keyEncipherment",   1ULL << 2},
    2999             :         {"nonRepudiation",    1ULL << 1},
    3000             :         {"digitalSignature",  1ULL << 0},
    3001             :         {NULL,  0}
    3002             : };
    3003             : 
    3004           0 : const struct units * asn1_KeyUsage_units(void){
    3005           0 : return KeyUsage_units;
    3006             : }
    3007             : 
    3008             : /* template_members: PrivateKeyUsagePeriod exp exp */
    3009             : /* tsequence: members isstruct: 1 */
    3010             : /* template_members: PrivateKeyUsagePeriod exp imp */
    3011             : /* template_members: time_t exp exp */
    3012             : /* generate_template_type: time_t_tag_notBefore_69 */
    3013             : /* generate_template_type: PrivateKeyUsagePeriod_tag_notBefore_68 */
    3014             : /* template_members: PrivateKeyUsagePeriod exp imp */
    3015             : /* template_members: time_t exp exp */
    3016             : /* generate_template_type: time_t_tag_notAfter_71 */
    3017             : /* generate_template_type: PrivateKeyUsagePeriod_tag_notAfter_70 */
    3018             : /* generate_template_type: PrivateKeyUsagePeriod_tag__67 */
    3019             : const struct asn1_template asn1_PrivateKeyUsagePeriod_tag__67[] = {
    3020             : /* 0 */ { 0, sizeof(struct PrivateKeyUsagePeriod), ((void *)(uintptr_t)5) },
    3021             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,0)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct PrivateKeyUsagePeriod, notBefore), asn1_Time_choice_generalTime },
    3022             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct PrivateKeyUsagePeriod, notAfter), asn1_Time_choice_generalTime },
    3023             : /* 3 */ { A1_OP_NAME, 0, "PrivateKeyUsagePeriod" },
    3024             : /* 4 */ { A1_OP_NAME, 0, "notBefore" },
    3025             : /* 5 */ { A1_OP_NAME, 0, "notAfter" }
    3026             : };
    3027             : /* generate_template_type: PrivateKeyUsagePeriod */
    3028             : const struct asn1_template asn1_PrivateKeyUsagePeriod[] = {
    3029             : /* 0 */ { 0, sizeof(PrivateKeyUsagePeriod), ((void *)(uintptr_t)1) },
    3030             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PrivateKeyUsagePeriod_tag__67 }
    3031             : };
    3032             : 
    3033             : int ASN1CALL
    3034           0 : decode_PrivateKeyUsagePeriod(const unsigned char *p, size_t len, PrivateKeyUsagePeriod *data, size_t *size)
    3035             : {
    3036           0 :     memset(data, 0, sizeof(*data));
    3037           0 :     return _asn1_decode_top(asn1_PrivateKeyUsagePeriod, 0|0, p, len, data, size);
    3038             : }
    3039             : 
    3040             : 
    3041             : int ASN1CALL
    3042           0 : encode_PrivateKeyUsagePeriod(unsigned char *p, size_t len, const PrivateKeyUsagePeriod *data, size_t *size)
    3043             : {
    3044           0 :     return _asn1_encode(asn1_PrivateKeyUsagePeriod, p, len, data, size);
    3045             : }
    3046             : 
    3047             : 
    3048             : size_t ASN1CALL
    3049           0 : length_PrivateKeyUsagePeriod(const PrivateKeyUsagePeriod *data)
    3050             : {
    3051           0 :     return _asn1_length(asn1_PrivateKeyUsagePeriod, data);
    3052             : }
    3053             : 
    3054             : 
    3055             : void ASN1CALL
    3056           0 : free_PrivateKeyUsagePeriod(PrivateKeyUsagePeriod *data)
    3057             : {
    3058           0 :     _asn1_free_top(asn1_PrivateKeyUsagePeriod, data);
    3059           0 : }
    3060             : 
    3061             : 
    3062             : int ASN1CALL
    3063           0 : copy_PrivateKeyUsagePeriod(const PrivateKeyUsagePeriod *from, PrivateKeyUsagePeriod *to)
    3064             : {
    3065           0 :     return _asn1_copy_top(asn1_PrivateKeyUsagePeriod, from, to);
    3066             : }
    3067             : 
    3068             : 
    3069             : char * ASN1CALL
    3070           0 : print_PrivateKeyUsagePeriod(const PrivateKeyUsagePeriod *data, int flags)
    3071             : {
    3072           0 :     return _asn1_print_top(asn1_PrivateKeyUsagePeriod, flags, data);
    3073             : }
    3074             : 
    3075             : /* template_members: CertPolicyId exp exp */
    3076             : /* generate_template_type: CertPolicyId_tag__72 */
    3077             : /* generate_template_type: CertPolicyId */
    3078             : const struct asn1_template asn1_CertPolicyId[] = {
    3079             : /* 0 */ { 0, sizeof(CertPolicyId), ((void *)(uintptr_t)1) },
    3080             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), 0, asn1_AttributeType_tag__1 }
    3081             : };
    3082             : 
    3083             : int ASN1CALL
    3084           0 : decode_CertPolicyId(const unsigned char *p, size_t len, CertPolicyId *data, size_t *size)
    3085             : {
    3086           0 :     memset(data, 0, sizeof(*data));
    3087           0 :     return _asn1_decode_top(asn1_CertPolicyId, 0|0, p, len, data, size);
    3088             : }
    3089             : 
    3090             : 
    3091             : int ASN1CALL
    3092           0 : encode_CertPolicyId(unsigned char *p, size_t len, const CertPolicyId *data, size_t *size)
    3093             : {
    3094           0 :     return _asn1_encode(asn1_CertPolicyId, p, len, data, size);
    3095             : }
    3096             : 
    3097             : 
    3098             : size_t ASN1CALL
    3099           0 : length_CertPolicyId(const CertPolicyId *data)
    3100             : {
    3101           0 :     return _asn1_length(asn1_CertPolicyId, data);
    3102             : }
    3103             : 
    3104             : 
    3105             : void ASN1CALL
    3106           0 : free_CertPolicyId(CertPolicyId *data)
    3107             : {
    3108           0 :     _asn1_free_top(asn1_CertPolicyId, data);
    3109           0 : }
    3110             : 
    3111             : 
    3112             : int ASN1CALL
    3113           0 : copy_CertPolicyId(const CertPolicyId *from, CertPolicyId *to)
    3114             : {
    3115           0 :     return _asn1_copy_top(asn1_CertPolicyId, from, to);
    3116             : }
    3117             : 
    3118             : 
    3119             : char * ASN1CALL
    3120           0 : print_CertPolicyId(const CertPolicyId *data, int flags)
    3121             : {
    3122           0 :     return _asn1_print_top(asn1_CertPolicyId, flags, data);
    3123             : }
    3124             : 
    3125             : /* template_members: PolicyQualifierId exp exp */
    3126             : /* generate_template_type: PolicyQualifierId_tag__73 */
    3127             : /* generate_template_type: PolicyQualifierId */
    3128             : const struct asn1_template asn1_PolicyQualifierId[] = {
    3129             : /* 0 */ { 0, sizeof(PolicyQualifierId), ((void *)(uintptr_t)1) },
    3130             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), 0, asn1_AttributeType_tag__1 }
    3131             : };
    3132             : 
    3133             : int ASN1CALL
    3134           0 : decode_PolicyQualifierId(const unsigned char *p, size_t len, PolicyQualifierId *data, size_t *size)
    3135             : {
    3136           0 :     memset(data, 0, sizeof(*data));
    3137           0 :     return _asn1_decode_top(asn1_PolicyQualifierId, 0|0, p, len, data, size);
    3138             : }
    3139             : 
    3140             : 
    3141             : int ASN1CALL
    3142           0 : encode_PolicyQualifierId(unsigned char *p, size_t len, const PolicyQualifierId *data, size_t *size)
    3143             : {
    3144           0 :     return _asn1_encode(asn1_PolicyQualifierId, p, len, data, size);
    3145             : }
    3146             : 
    3147             : 
    3148             : size_t ASN1CALL
    3149           0 : length_PolicyQualifierId(const PolicyQualifierId *data)
    3150             : {
    3151           0 :     return _asn1_length(asn1_PolicyQualifierId, data);
    3152             : }
    3153             : 
    3154             : 
    3155             : void ASN1CALL
    3156           0 : free_PolicyQualifierId(PolicyQualifierId *data)
    3157             : {
    3158           0 :     _asn1_free_top(asn1_PolicyQualifierId, data);
    3159           0 : }
    3160             : 
    3161             : 
    3162             : int ASN1CALL
    3163           0 : copy_PolicyQualifierId(const PolicyQualifierId *from, PolicyQualifierId *to)
    3164             : {
    3165           0 :     return _asn1_copy_top(asn1_PolicyQualifierId, from, to);
    3166             : }
    3167             : 
    3168             : 
    3169             : char * ASN1CALL
    3170           0 : print_PolicyQualifierId(const PolicyQualifierId *data, int flags)
    3171             : {
    3172           0 :     return _asn1_print_top(asn1_PolicyQualifierId, flags, data);
    3173             : }
    3174             : 
    3175             : /* template_members: PolicyQualifierInfo exp exp */
    3176             : /* tsequence: members isstruct: 1 */
    3177             : /* template_members: PolicyQualifierInfo exp exp */
    3178             : /* generate_template_type: PolicyQualifierInfo_tag_policyQualifierId_75 */
    3179             : const struct asn1_template asn1_KnownPolicyQualifiers[] = {
    3180             : /* 0 */ { 0, 0, ((void *)(uintptr_t)2) },
    3181             : /* 1 */ { A1_OP_NAME, 0, "KnownPolicyQualifiers" },
    3182             : /* 2 */ { A1_OP_NAME, 0, "pq-CPS" },
    3183             : /* 3 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_qt_cps },
    3184             : /* 4 */ { A1_OP_OPENTYPE, sizeof(AliasIA5String), (const void *)&asn1_AliasIA5String },
    3185             : /* 5 */ { A1_OP_NAME, 0, "pq-UserNotice" },
    3186             : /* 6 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_pkix_qt_unotice },
    3187             : /* 7 */ { A1_OP_OPENTYPE, sizeof(UserNotice), (const void *)&asn1_UserNotice }
    3188             : };
    3189             : /* generate_template_type: PolicyQualifierInfo_tag__74 */
    3190             : const struct asn1_template asn1_PolicyQualifierInfo_tag__74[] = {
    3191             : /* 0 */ { 0, sizeof(struct PolicyQualifierInfo), ((void *)(uintptr_t)6) },
    3192             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct PolicyQualifierInfo, policyQualifierId), asn1_AttributeType_tag__1 },
    3193             : /* 2 */ { A1_OP_TYPE_EXTERN , offsetof(struct PolicyQualifierInfo, qualifier), &asn1_extern_HEIM_ANY},
    3194             : /* 3 */ { A1_OP_OPENTYPE_OBJSET | A1_OS_IS_SORTED |0 | (1 << 10) | 0, offsetof(PolicyQualifierInfo, _ioschoice_qualifier), asn1_KnownPolicyQualifiers },
    3195             : /* 4 */ { A1_OP_NAME, 0, "PolicyQualifierInfo" },
    3196             : /* 5 */ { A1_OP_NAME, 0, "policyQualifierId" },
    3197             : /* 6 */ { A1_OP_NAME, 0, "qualifier" }
    3198             : };
    3199             : /* generate_template_type: PolicyQualifierInfo */
    3200             : const struct asn1_template asn1_PolicyQualifierInfo[] = {
    3201             : /* 0 */ { 0, sizeof(PolicyQualifierInfo), ((void *)(uintptr_t)1) },
    3202             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyQualifierInfo_tag__74 }
    3203             : };
    3204             : 
    3205             : int ASN1CALL
    3206           0 : decode_PolicyQualifierInfo(const unsigned char *p, size_t len, PolicyQualifierInfo *data, size_t *size)
    3207             : {
    3208           0 :     memset(data, 0, sizeof(*data));
    3209           0 :     return _asn1_decode_top(asn1_PolicyQualifierInfo, 0|0, p, len, data, size);
    3210             : }
    3211             : 
    3212             : 
    3213             : int ASN1CALL
    3214           0 : encode_PolicyQualifierInfo(unsigned char *p, size_t len, const PolicyQualifierInfo *data, size_t *size)
    3215             : {
    3216           0 :     return _asn1_encode(asn1_PolicyQualifierInfo, p, len, data, size);
    3217             : }
    3218             : 
    3219             : 
    3220             : size_t ASN1CALL
    3221           0 : length_PolicyQualifierInfo(const PolicyQualifierInfo *data)
    3222             : {
    3223           0 :     return _asn1_length(asn1_PolicyQualifierInfo, data);
    3224             : }
    3225             : 
    3226             : 
    3227             : void ASN1CALL
    3228           0 : free_PolicyQualifierInfo(PolicyQualifierInfo *data)
    3229             : {
    3230           0 :     _asn1_free_top(asn1_PolicyQualifierInfo, data);
    3231           0 : }
    3232             : 
    3233             : 
    3234             : int ASN1CALL
    3235           0 : copy_PolicyQualifierInfo(const PolicyQualifierInfo *from, PolicyQualifierInfo *to)
    3236             : {
    3237           0 :     return _asn1_copy_top(asn1_PolicyQualifierInfo, from, to);
    3238             : }
    3239             : 
    3240             : 
    3241             : char * ASN1CALL
    3242           0 : print_PolicyQualifierInfo(const PolicyQualifierInfo *data, int flags)
    3243             : {
    3244           0 :     return _asn1_print_top(asn1_PolicyQualifierInfo, flags, data);
    3245             : }
    3246             : 
    3247             : /* template_members: PolicyQualifierInfos exp exp */
    3248             : /* generate_template_type: PolicyQualifierInfo_seofTstruct_6 */
    3249             : const struct asn1_template asn1_PolicyQualifierInfo_seofTstruct_6[] = {
    3250             : /* 0 */ { 0, sizeof(PolicyQualifierInfo), ((void *)(uintptr_t)1) },
    3251             : /* 1 */ { A1_OP_TYPE , 0, asn1_PolicyQualifierInfo }
    3252             : };
    3253             : /* generate_template_type: PolicyQualifierInfos_tag__76 */
    3254             : const struct asn1_template asn1_PolicyQualifierInfos_tag__76[] = {
    3255             : /* 0 */ { 0, sizeof(PolicyQualifierInfo), ((void *)(uintptr_t)1) },
    3256             : /* 1 */ { A1_OP_SEQOF, 0, asn1_PolicyQualifierInfo_seofTstruct_6 }
    3257             : };
    3258             : /* generate_template_type: PolicyQualifierInfos */
    3259             : const struct asn1_template asn1_PolicyQualifierInfos[] = {
    3260             : /* 0 */ { 0, sizeof(PolicyQualifierInfos), ((void *)(uintptr_t)1) },
    3261             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyQualifierInfos_tag__76 }
    3262             : };
    3263             : 
    3264             : int ASN1CALL
    3265           0 : decode_PolicyQualifierInfos(const unsigned char *p, size_t len, PolicyQualifierInfos *data, size_t *size)
    3266             : {
    3267           0 :     memset(data, 0, sizeof(*data));
    3268           0 :     return _asn1_decode_top(asn1_PolicyQualifierInfos, 0|0, p, len, data, size);
    3269             : }
    3270             : 
    3271             : 
    3272             : int ASN1CALL
    3273           0 : encode_PolicyQualifierInfos(unsigned char *p, size_t len, const PolicyQualifierInfos *data, size_t *size)
    3274             : {
    3275           0 :     return _asn1_encode(asn1_PolicyQualifierInfos, p, len, data, size);
    3276             : }
    3277             : 
    3278             : 
    3279             : size_t ASN1CALL
    3280           0 : length_PolicyQualifierInfos(const PolicyQualifierInfos *data)
    3281             : {
    3282           0 :     return _asn1_length(asn1_PolicyQualifierInfos, data);
    3283             : }
    3284             : 
    3285             : 
    3286             : void ASN1CALL
    3287           0 : free_PolicyQualifierInfos(PolicyQualifierInfos *data)
    3288             : {
    3289           0 :     _asn1_free_top(asn1_PolicyQualifierInfos, data);
    3290           0 : }
    3291             : 
    3292             : 
    3293             : int ASN1CALL
    3294           0 : copy_PolicyQualifierInfos(const PolicyQualifierInfos *from, PolicyQualifierInfos *to)
    3295             : {
    3296           0 :     return _asn1_copy_top(asn1_PolicyQualifierInfos, from, to);
    3297             : }
    3298             : 
    3299             : 
    3300             : char * ASN1CALL
    3301           0 : print_PolicyQualifierInfos(const PolicyQualifierInfos *data, int flags)
    3302             : {
    3303           0 :     return _asn1_print_top(asn1_PolicyQualifierInfos, flags, data);
    3304             : }
    3305             : 
    3306             : int ASN1CALL
    3307           0 : add_PolicyQualifierInfos(PolicyQualifierInfos *data, const PolicyQualifierInfo *element)
    3308             : {
    3309           0 : int ret;
    3310           0 : void *ptr;
    3311             : 
    3312           0 : ptr = realloc(data->val, 
    3313           0 :         (data->len + 1) * sizeof(data->val[0]));
    3314           0 : if (ptr == NULL) return ENOMEM;
    3315           0 : data->val = ptr;
    3316             : 
    3317           0 : ret = copy_PolicyQualifierInfo(element, &data->val[data->len]);
    3318           0 : if (ret) return ret;
    3319           0 : data->len++;
    3320           0 : return 0;
    3321             : }
    3322             : 
    3323             : int ASN1CALL
    3324           0 : remove_PolicyQualifierInfos(PolicyQualifierInfos *data, unsigned int element)
    3325             : {
    3326           0 : void *ptr;
    3327             : 
    3328           0 : if (data->len == 0 || element >= data->len)
    3329           0 :         return ASN1_OVERRUN;
    3330           0 : free_PolicyQualifierInfo(&data->val[element]);
    3331           0 : data->len--;
    3332           0 : if (element < data->len)
    3333           0 :         memmove(&data->val[element], &data->val[element + 1], 
    3334           0 :                 sizeof(data->val[0]) * (data->len - element));
    3335           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    3336           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    3337           0 : return 0;
    3338             : }
    3339             : 
    3340             : /* template_members: PolicyInformation exp exp */
    3341             : /* tsequence: members isstruct: 1 */
    3342             : /* generate_template_type: PolicyInformation_tag__77 */
    3343             : const struct asn1_template asn1_PolicyInformation_tag__77[] = {
    3344             : /* 0 */ { 0, sizeof(struct PolicyInformation), ((void *)(uintptr_t)5) },
    3345             : /* 1 */ { A1_OP_TYPE , offsetof(struct PolicyInformation, policyIdentifier), asn1_CertPolicyId },
    3346             : /* 2 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct PolicyInformation, policyQualifiers), asn1_PolicyQualifierInfos },
    3347             : /* 3 */ { A1_OP_NAME, 0, "PolicyInformation" },
    3348             : /* 4 */ { A1_OP_NAME, 0, "policyIdentifier" },
    3349             : /* 5 */ { A1_OP_NAME, 0, "policyQualifiers" }
    3350             : };
    3351             : /* generate_template_type: PolicyInformation */
    3352             : const struct asn1_template asn1_PolicyInformation[] = {
    3353             : /* 0 */ { 0, sizeof(PolicyInformation), ((void *)(uintptr_t)1) },
    3354             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyInformation_tag__77 }
    3355             : };
    3356             : 
    3357             : int ASN1CALL
    3358           0 : decode_PolicyInformation(const unsigned char *p, size_t len, PolicyInformation *data, size_t *size)
    3359             : {
    3360           0 :     memset(data, 0, sizeof(*data));
    3361           0 :     return _asn1_decode_top(asn1_PolicyInformation, 0|0, p, len, data, size);
    3362             : }
    3363             : 
    3364             : 
    3365             : int ASN1CALL
    3366           0 : encode_PolicyInformation(unsigned char *p, size_t len, const PolicyInformation *data, size_t *size)
    3367             : {
    3368           0 :     return _asn1_encode(asn1_PolicyInformation, p, len, data, size);
    3369             : }
    3370             : 
    3371             : 
    3372             : size_t ASN1CALL
    3373           0 : length_PolicyInformation(const PolicyInformation *data)
    3374             : {
    3375           0 :     return _asn1_length(asn1_PolicyInformation, data);
    3376             : }
    3377             : 
    3378             : 
    3379             : void ASN1CALL
    3380           0 : free_PolicyInformation(PolicyInformation *data)
    3381             : {
    3382           0 :     _asn1_free_top(asn1_PolicyInformation, data);
    3383           0 : }
    3384             : 
    3385             : 
    3386             : int ASN1CALL
    3387           0 : copy_PolicyInformation(const PolicyInformation *from, PolicyInformation *to)
    3388             : {
    3389           0 :     return _asn1_copy_top(asn1_PolicyInformation, from, to);
    3390             : }
    3391             : 
    3392             : 
    3393             : char * ASN1CALL
    3394           0 : print_PolicyInformation(const PolicyInformation *data, int flags)
    3395             : {
    3396           0 :     return _asn1_print_top(asn1_PolicyInformation, flags, data);
    3397             : }
    3398             : 
    3399             : /* template_members: CertificatePolicies exp exp */
    3400             : /* generate_template_type: PolicyInformation_seofTstruct_7 */
    3401             : const struct asn1_template asn1_PolicyInformation_seofTstruct_7[] = {
    3402             : /* 0 */ { 0, sizeof(PolicyInformation), ((void *)(uintptr_t)1) },
    3403             : /* 1 */ { A1_OP_TYPE , 0, asn1_PolicyInformation }
    3404             : };
    3405             : /* generate_template_type: CertificatePolicies_tag__78 */
    3406             : const struct asn1_template asn1_CertificatePolicies_tag__78[] = {
    3407             : /* 0 */ { 0, sizeof(PolicyInformation), ((void *)(uintptr_t)1) },
    3408             : /* 1 */ { A1_OP_SEQOF, 0, asn1_PolicyInformation_seofTstruct_7 }
    3409             : };
    3410             : /* generate_template_type: CertificatePolicies */
    3411             : const struct asn1_template asn1_CertificatePolicies[] = {
    3412             : /* 0 */ { 0, sizeof(CertificatePolicies), ((void *)(uintptr_t)1) },
    3413             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_CertificatePolicies_tag__78 }
    3414             : };
    3415             : 
    3416             : int ASN1CALL
    3417           0 : decode_CertificatePolicies(const unsigned char *p, size_t len, CertificatePolicies *data, size_t *size)
    3418             : {
    3419           0 :     memset(data, 0, sizeof(*data));
    3420           0 :     return _asn1_decode_top(asn1_CertificatePolicies, 0|0, p, len, data, size);
    3421             : }
    3422             : 
    3423             : 
    3424             : int ASN1CALL
    3425           0 : encode_CertificatePolicies(unsigned char *p, size_t len, const CertificatePolicies *data, size_t *size)
    3426             : {
    3427           0 :     return _asn1_encode(asn1_CertificatePolicies, p, len, data, size);
    3428             : }
    3429             : 
    3430             : 
    3431             : size_t ASN1CALL
    3432           0 : length_CertificatePolicies(const CertificatePolicies *data)
    3433             : {
    3434           0 :     return _asn1_length(asn1_CertificatePolicies, data);
    3435             : }
    3436             : 
    3437             : 
    3438             : void ASN1CALL
    3439           0 : free_CertificatePolicies(CertificatePolicies *data)
    3440             : {
    3441           0 :     _asn1_free_top(asn1_CertificatePolicies, data);
    3442           0 : }
    3443             : 
    3444             : 
    3445             : int ASN1CALL
    3446           0 : copy_CertificatePolicies(const CertificatePolicies *from, CertificatePolicies *to)
    3447             : {
    3448           0 :     return _asn1_copy_top(asn1_CertificatePolicies, from, to);
    3449             : }
    3450             : 
    3451             : 
    3452             : char * ASN1CALL
    3453           0 : print_CertificatePolicies(const CertificatePolicies *data, int flags)
    3454             : {
    3455           0 :     return _asn1_print_top(asn1_CertificatePolicies, flags, data);
    3456             : }
    3457             : 
    3458             : int ASN1CALL
    3459           0 : add_CertificatePolicies(CertificatePolicies *data, const PolicyInformation *element)
    3460             : {
    3461           0 : int ret;
    3462           0 : void *ptr;
    3463             : 
    3464           0 : ptr = realloc(data->val, 
    3465           0 :         (data->len + 1) * sizeof(data->val[0]));
    3466           0 : if (ptr == NULL) return ENOMEM;
    3467           0 : data->val = ptr;
    3468             : 
    3469           0 : ret = copy_PolicyInformation(element, &data->val[data->len]);
    3470           0 : if (ret) return ret;
    3471           0 : data->len++;
    3472           0 : return 0;
    3473             : }
    3474             : 
    3475             : int ASN1CALL
    3476           0 : remove_CertificatePolicies(CertificatePolicies *data, unsigned int element)
    3477             : {
    3478           0 : void *ptr;
    3479             : 
    3480           0 : if (data->len == 0 || element >= data->len)
    3481           0 :         return ASN1_OVERRUN;
    3482           0 : free_PolicyInformation(&data->val[element]);
    3483           0 : data->len--;
    3484           0 : if (element < data->len)
    3485           0 :         memmove(&data->val[element], &data->val[element + 1], 
    3486           0 :                 sizeof(data->val[0]) * (data->len - element));
    3487           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    3488           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    3489           0 : return 0;
    3490             : }
    3491             : 
    3492             : /* template_members: CPSuri exp exp */
    3493             : /* generate_template_type: CPSuri_tag__79 */
    3494             : /* generate_template_type: CPSuri */
    3495             : const struct asn1_template asn1_CPSuri[] = {
    3496             : /* 0 */ { 0, sizeof(CPSuri), ((void *)(uintptr_t)1) },
    3497             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), 0, asn1_heim_ia5_string_tag__4 }
    3498             : };
    3499             : 
    3500             : int ASN1CALL
    3501           0 : decode_CPSuri(const unsigned char *p, size_t len, CPSuri *data, size_t *size)
    3502             : {
    3503           0 :     memset(data, 0, sizeof(*data));
    3504           0 :     return _asn1_decode_top(asn1_CPSuri, 0|0, p, len, data, size);
    3505             : }
    3506             : 
    3507             : 
    3508             : int ASN1CALL
    3509           0 : encode_CPSuri(unsigned char *p, size_t len, const CPSuri *data, size_t *size)
    3510             : {
    3511           0 :     return _asn1_encode(asn1_CPSuri, p, len, data, size);
    3512             : }
    3513             : 
    3514             : 
    3515             : size_t ASN1CALL
    3516           0 : length_CPSuri(const CPSuri *data)
    3517             : {
    3518           0 :     return _asn1_length(asn1_CPSuri, data);
    3519             : }
    3520             : 
    3521             : 
    3522             : void ASN1CALL
    3523           0 : free_CPSuri(CPSuri *data)
    3524             : {
    3525           0 :     _asn1_free_top(asn1_CPSuri, data);
    3526           0 : }
    3527             : 
    3528             : 
    3529             : int ASN1CALL
    3530           0 : copy_CPSuri(const CPSuri *from, CPSuri *to)
    3531             : {
    3532           0 :     return _asn1_copy_top(asn1_CPSuri, from, to);
    3533             : }
    3534             : 
    3535             : 
    3536             : char * ASN1CALL
    3537           0 : print_CPSuri(const CPSuri *data, int flags)
    3538             : {
    3539           0 :     return _asn1_print_top(asn1_CPSuri, flags, data);
    3540             : }
    3541             : 
    3542             : /* template_members: heim_ia5_string exp exp */
    3543             : /* generate_template_type: heim_ia5_string_tag__80 */
    3544             : /* generate_template_type: DisplayText_choice_ia5String */
    3545             : /* template_members: heim_visible_string exp exp */
    3546             : /* generate_template_type: heim_visible_string_tag__81 */
    3547             : const struct asn1_template asn1_heim_visible_string_tag__81[] = {
    3548             : /* 0 */ { 0, sizeof(heim_visible_string), ((void *)(uintptr_t)1) },
    3549             : /* 1 */ { A1_PARSE_T(A1T_VISIBLE_STRING), 0, NULL }
    3550             : };
    3551             : /* generate_template_type: DisplayText_choice_visibleString */
    3552             : const struct asn1_template asn1_DisplayText_choice_visibleString[] = {
    3553             : /* 0 */ { 0, sizeof(heim_visible_string), ((void *)(uintptr_t)1) },
    3554             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_VisibleString), 0, asn1_heim_visible_string_tag__81 }
    3555             : };
    3556             : /* template_members: heim_bmp_string exp exp */
    3557             : /* generate_template_type: heim_bmp_string_tag__82 */
    3558             : /* generate_template_type: DisplayText_choice_bmpString */
    3559             : /* template_members: heim_utf8_string exp exp */
    3560             : /* generate_template_type: heim_utf8_string_tag__83 */
    3561             : /* generate_template_type: DisplayText_choice_utf8String */
    3562             : static const struct asn1_template asn1_choice_DisplayText_4[] = {
    3563             : /* 0 */ { 0, offsetof(DisplayText, element), ((void *)(uintptr_t)8) },
    3564             : /* 1 */ { choice_DisplayText_ia5String, offsetof(DisplayText, u.ia5String), asn1_DirectoryString_choice_ia5String },
    3565             : /* 2 */ { choice_DisplayText_visibleString, offsetof(DisplayText, u.visibleString), asn1_DisplayText_choice_visibleString },
    3566             : /* 3 */ { choice_DisplayText_bmpString, offsetof(DisplayText, u.bmpString), asn1_DirectoryString_choice_bmpString },
    3567             : /* 4 */ { choice_DisplayText_utf8String, offsetof(DisplayText, u.utf8String), asn1_DirectoryString_choice_utf8String },
    3568             : /* 5 */ { 0, 0, "ia5String" },
    3569             : /* 6 */ { 0, 0, "visibleString" },
    3570             : /* 7 */ { 0, 0, "bmpString" },
    3571             : /* 8 */ { 0, 0, "utf8String" }
    3572             : };
    3573             : /* generate_template_type: DisplayText */
    3574             : const struct asn1_template asn1_DisplayText[] = {
    3575             : /* 0 */ { 0, sizeof(DisplayText), ((void *)(uintptr_t)1) },
    3576             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_DisplayText_4 }
    3577             : };
    3578             : 
    3579             : int ASN1CALL
    3580           0 : decode_DisplayText(const unsigned char *p, size_t len, DisplayText *data, size_t *size)
    3581             : {
    3582           0 :     memset(data, 0, sizeof(*data));
    3583           0 :     return _asn1_decode_top(asn1_DisplayText, 0|0, p, len, data, size);
    3584             : }
    3585             : 
    3586             : 
    3587             : int ASN1CALL
    3588           0 : encode_DisplayText(unsigned char *p, size_t len, const DisplayText *data, size_t *size)
    3589             : {
    3590           0 :     return _asn1_encode(asn1_DisplayText, p, len, data, size);
    3591             : }
    3592             : 
    3593             : 
    3594             : size_t ASN1CALL
    3595           0 : length_DisplayText(const DisplayText *data)
    3596             : {
    3597           0 :     return _asn1_length(asn1_DisplayText, data);
    3598             : }
    3599             : 
    3600             : 
    3601             : void ASN1CALL
    3602           0 : free_DisplayText(DisplayText *data)
    3603             : {
    3604           0 :     _asn1_free_top(asn1_DisplayText, data);
    3605           0 : }
    3606             : 
    3607             : 
    3608             : int ASN1CALL
    3609           0 : copy_DisplayText(const DisplayText *from, DisplayText *to)
    3610             : {
    3611           0 :     return _asn1_copy_top(asn1_DisplayText, from, to);
    3612             : }
    3613             : 
    3614             : 
    3615             : char * ASN1CALL
    3616           0 : print_DisplayText(const DisplayText *data, int flags)
    3617             : {
    3618           0 :     return _asn1_print_top(asn1_DisplayText, flags, data);
    3619             : }
    3620             : 
    3621             : /* template_members: NoticeReference exp exp */
    3622             : /* tsequence: members isstruct: 1 */
    3623             : /* template_members: NoticeReference exp exp */
    3624             : /* template_members: heim_integer exp exp */
    3625             : /* generate_template_type: heim_integer_tag__86 */
    3626             : /* generate_template_type: NoticeReference_noticeNumbers_8 */
    3627             : const struct asn1_template asn1_NoticeReference_noticeNumbers_8[] = {
    3628             : /* 0 */ { 0, sizeof(heim_integer), ((void *)(uintptr_t)1) },
    3629             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_CertificateSerialNumber_tag__15 }
    3630             : };
    3631             : /* generate_template_type: NoticeReference_tag_noticeNumbers_85 */
    3632             : const struct asn1_template asn1_NoticeReference_tag_noticeNumbers_85[] = {
    3633             : /* 0 */ { 0, sizeof(struct NoticeReference_noticeNumbers), ((void *)(uintptr_t)1) },
    3634             : /* 1 */ { A1_OP_SEQOF, 0, asn1_NoticeReference_noticeNumbers_8 }
    3635             : };
    3636             : /* generate_template_type: NoticeReference_tag__84 */
    3637             : const struct asn1_template asn1_NoticeReference_tag__84[] = {
    3638             : /* 0 */ { 0, sizeof(struct NoticeReference), ((void *)(uintptr_t)5) },
    3639             : /* 1 */ { A1_OP_TYPE , offsetof(struct NoticeReference, organization), asn1_DisplayText },
    3640             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), offsetof(struct NoticeReference, noticeNumbers), asn1_NoticeReference_tag_noticeNumbers_85 },
    3641             : /* 3 */ { A1_OP_NAME, 0, "NoticeReference" },
    3642             : /* 4 */ { A1_OP_NAME, 0, "organization" },
    3643             : /* 5 */ { A1_OP_NAME, 0, "noticeNumbers" }
    3644             : };
    3645             : /* generate_template_type: NoticeReference */
    3646             : const struct asn1_template asn1_NoticeReference[] = {
    3647             : /* 0 */ { 0, sizeof(NoticeReference), ((void *)(uintptr_t)1) },
    3648             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_NoticeReference_tag__84 }
    3649             : };
    3650             : 
    3651             : int ASN1CALL
    3652           0 : decode_NoticeReference(const unsigned char *p, size_t len, NoticeReference *data, size_t *size)
    3653             : {
    3654           0 :     memset(data, 0, sizeof(*data));
    3655           0 :     return _asn1_decode_top(asn1_NoticeReference, 0|0, p, len, data, size);
    3656             : }
    3657             : 
    3658             : 
    3659             : int ASN1CALL
    3660           0 : encode_NoticeReference(unsigned char *p, size_t len, const NoticeReference *data, size_t *size)
    3661             : {
    3662           0 :     return _asn1_encode(asn1_NoticeReference, p, len, data, size);
    3663             : }
    3664             : 
    3665             : 
    3666             : size_t ASN1CALL
    3667           0 : length_NoticeReference(const NoticeReference *data)
    3668             : {
    3669           0 :     return _asn1_length(asn1_NoticeReference, data);
    3670             : }
    3671             : 
    3672             : 
    3673             : void ASN1CALL
    3674           0 : free_NoticeReference(NoticeReference *data)
    3675             : {
    3676           0 :     _asn1_free_top(asn1_NoticeReference, data);
    3677           0 : }
    3678             : 
    3679             : 
    3680             : int ASN1CALL
    3681           0 : copy_NoticeReference(const NoticeReference *from, NoticeReference *to)
    3682             : {
    3683           0 :     return _asn1_copy_top(asn1_NoticeReference, from, to);
    3684             : }
    3685             : 
    3686             : 
    3687             : char * ASN1CALL
    3688           0 : print_NoticeReference(const NoticeReference *data, int flags)
    3689             : {
    3690           0 :     return _asn1_print_top(asn1_NoticeReference, flags, data);
    3691             : }
    3692             : 
    3693             : /* template_members: UserNotice exp exp */
    3694             : /* tsequence: members isstruct: 1 */
    3695             : /* generate_template_type: UserNotice_tag__87 */
    3696             : const struct asn1_template asn1_UserNotice_tag__87[] = {
    3697             : /* 0 */ { 0, sizeof(struct UserNotice), ((void *)(uintptr_t)5) },
    3698             : /* 1 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct UserNotice, noticeRef), asn1_NoticeReference },
    3699             : /* 2 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct UserNotice, explicitText), asn1_DisplayText },
    3700             : /* 3 */ { A1_OP_NAME, 0, "UserNotice" },
    3701             : /* 4 */ { A1_OP_NAME, 0, "noticeRef" },
    3702             : /* 5 */ { A1_OP_NAME, 0, "explicitText" }
    3703             : };
    3704             : /* generate_template_type: UserNotice */
    3705             : const struct asn1_template asn1_UserNotice[] = {
    3706             : /* 0 */ { 0, sizeof(UserNotice), ((void *)(uintptr_t)1) },
    3707             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_UserNotice_tag__87 }
    3708             : };
    3709             : 
    3710             : int ASN1CALL
    3711           0 : decode_UserNotice(const unsigned char *p, size_t len, UserNotice *data, size_t *size)
    3712             : {
    3713           0 :     memset(data, 0, sizeof(*data));
    3714           0 :     return _asn1_decode_top(asn1_UserNotice, 0|0, p, len, data, size);
    3715             : }
    3716             : 
    3717             : 
    3718             : int ASN1CALL
    3719           0 : encode_UserNotice(unsigned char *p, size_t len, const UserNotice *data, size_t *size)
    3720             : {
    3721           0 :     return _asn1_encode(asn1_UserNotice, p, len, data, size);
    3722             : }
    3723             : 
    3724             : 
    3725             : size_t ASN1CALL
    3726           0 : length_UserNotice(const UserNotice *data)
    3727             : {
    3728           0 :     return _asn1_length(asn1_UserNotice, data);
    3729             : }
    3730             : 
    3731             : 
    3732             : void ASN1CALL
    3733           0 : free_UserNotice(UserNotice *data)
    3734             : {
    3735           0 :     _asn1_free_top(asn1_UserNotice, data);
    3736           0 : }
    3737             : 
    3738             : 
    3739             : int ASN1CALL
    3740           0 : copy_UserNotice(const UserNotice *from, UserNotice *to)
    3741             : {
    3742           0 :     return _asn1_copy_top(asn1_UserNotice, from, to);
    3743             : }
    3744             : 
    3745             : 
    3746             : char * ASN1CALL
    3747           0 : print_UserNotice(const UserNotice *data, int flags)
    3748             : {
    3749           0 :     return _asn1_print_top(asn1_UserNotice, flags, data);
    3750             : }
    3751             : 
    3752             : /* template_members: PolicyMapping exp exp */
    3753             : /* tsequence: members isstruct: 1 */
    3754             : /* generate_template_type: PolicyMapping_tag__88 */
    3755             : const struct asn1_template asn1_PolicyMapping_tag__88[] = {
    3756             : /* 0 */ { 0, sizeof(struct PolicyMapping), ((void *)(uintptr_t)5) },
    3757             : /* 1 */ { A1_OP_TYPE , offsetof(struct PolicyMapping, issuerDomainPolicy), asn1_CertPolicyId },
    3758             : /* 2 */ { A1_OP_TYPE , offsetof(struct PolicyMapping, subjectDomainPolicy), asn1_CertPolicyId },
    3759             : /* 3 */ { A1_OP_NAME, 0, "PolicyMapping" },
    3760             : /* 4 */ { A1_OP_NAME, 0, "issuerDomainPolicy" },
    3761             : /* 5 */ { A1_OP_NAME, 0, "subjectDomainPolicy" }
    3762             : };
    3763             : /* generate_template_type: PolicyMapping */
    3764             : const struct asn1_template asn1_PolicyMapping[] = {
    3765             : /* 0 */ { 0, sizeof(PolicyMapping), ((void *)(uintptr_t)1) },
    3766             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyMapping_tag__88 }
    3767             : };
    3768             : 
    3769             : int ASN1CALL
    3770           0 : decode_PolicyMapping(const unsigned char *p, size_t len, PolicyMapping *data, size_t *size)
    3771             : {
    3772           0 :     memset(data, 0, sizeof(*data));
    3773           0 :     return _asn1_decode_top(asn1_PolicyMapping, 0|0, p, len, data, size);
    3774             : }
    3775             : 
    3776             : 
    3777             : int ASN1CALL
    3778           0 : encode_PolicyMapping(unsigned char *p, size_t len, const PolicyMapping *data, size_t *size)
    3779             : {
    3780           0 :     return _asn1_encode(asn1_PolicyMapping, p, len, data, size);
    3781             : }
    3782             : 
    3783             : 
    3784             : size_t ASN1CALL
    3785           0 : length_PolicyMapping(const PolicyMapping *data)
    3786             : {
    3787           0 :     return _asn1_length(asn1_PolicyMapping, data);
    3788             : }
    3789             : 
    3790             : 
    3791             : void ASN1CALL
    3792           0 : free_PolicyMapping(PolicyMapping *data)
    3793             : {
    3794           0 :     _asn1_free_top(asn1_PolicyMapping, data);
    3795           0 : }
    3796             : 
    3797             : 
    3798             : int ASN1CALL
    3799           0 : copy_PolicyMapping(const PolicyMapping *from, PolicyMapping *to)
    3800             : {
    3801           0 :     return _asn1_copy_top(asn1_PolicyMapping, from, to);
    3802             : }
    3803             : 
    3804             : 
    3805             : char * ASN1CALL
    3806           0 : print_PolicyMapping(const PolicyMapping *data, int flags)
    3807             : {
    3808           0 :     return _asn1_print_top(asn1_PolicyMapping, flags, data);
    3809             : }
    3810             : 
    3811             : /* template_members: PolicyMappings exp exp */
    3812             : /* generate_template_type: PolicyMapping_seofTstruct_9 */
    3813             : const struct asn1_template asn1_PolicyMapping_seofTstruct_9[] = {
    3814             : /* 0 */ { 0, sizeof(PolicyMapping), ((void *)(uintptr_t)1) },
    3815             : /* 1 */ { A1_OP_TYPE , 0, asn1_PolicyMapping }
    3816             : };
    3817             : /* generate_template_type: PolicyMappings_tag__89 */
    3818             : const struct asn1_template asn1_PolicyMappings_tag__89[] = {
    3819             : /* 0 */ { 0, sizeof(PolicyMapping), ((void *)(uintptr_t)1) },
    3820             : /* 1 */ { A1_OP_SEQOF, 0, asn1_PolicyMapping_seofTstruct_9 }
    3821             : };
    3822             : /* generate_template_type: PolicyMappings */
    3823             : const struct asn1_template asn1_PolicyMappings[] = {
    3824             : /* 0 */ { 0, sizeof(PolicyMappings), ((void *)(uintptr_t)1) },
    3825             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyMappings_tag__89 }
    3826             : };
    3827             : 
    3828             : int ASN1CALL
    3829           0 : decode_PolicyMappings(const unsigned char *p, size_t len, PolicyMappings *data, size_t *size)
    3830             : {
    3831           0 :     memset(data, 0, sizeof(*data));
    3832           0 :     return _asn1_decode_top(asn1_PolicyMappings, 0|0, p, len, data, size);
    3833             : }
    3834             : 
    3835             : 
    3836             : int ASN1CALL
    3837           0 : encode_PolicyMappings(unsigned char *p, size_t len, const PolicyMappings *data, size_t *size)
    3838             : {
    3839           0 :     return _asn1_encode(asn1_PolicyMappings, p, len, data, size);
    3840             : }
    3841             : 
    3842             : 
    3843             : size_t ASN1CALL
    3844           0 : length_PolicyMappings(const PolicyMappings *data)
    3845             : {
    3846           0 :     return _asn1_length(asn1_PolicyMappings, data);
    3847             : }
    3848             : 
    3849             : 
    3850             : void ASN1CALL
    3851           0 : free_PolicyMappings(PolicyMappings *data)
    3852             : {
    3853           0 :     _asn1_free_top(asn1_PolicyMappings, data);
    3854           0 : }
    3855             : 
    3856             : 
    3857             : int ASN1CALL
    3858           0 : copy_PolicyMappings(const PolicyMappings *from, PolicyMappings *to)
    3859             : {
    3860           0 :     return _asn1_copy_top(asn1_PolicyMappings, from, to);
    3861             : }
    3862             : 
    3863             : 
    3864             : char * ASN1CALL
    3865           0 : print_PolicyMappings(const PolicyMappings *data, int flags)
    3866             : {
    3867           0 :     return _asn1_print_top(asn1_PolicyMappings, flags, data);
    3868             : }
    3869             : 
    3870             : int ASN1CALL
    3871           0 : add_PolicyMappings(PolicyMappings *data, const PolicyMapping *element)
    3872             : {
    3873           0 : int ret;
    3874           0 : void *ptr;
    3875             : 
    3876           0 : ptr = realloc(data->val, 
    3877           0 :         (data->len + 1) * sizeof(data->val[0]));
    3878           0 : if (ptr == NULL) return ENOMEM;
    3879           0 : data->val = ptr;
    3880             : 
    3881           0 : ret = copy_PolicyMapping(element, &data->val[data->len]);
    3882           0 : if (ret) return ret;
    3883           0 : data->len++;
    3884           0 : return 0;
    3885             : }
    3886             : 
    3887             : int ASN1CALL
    3888           0 : remove_PolicyMappings(PolicyMappings *data, unsigned int element)
    3889             : {
    3890           0 : void *ptr;
    3891             : 
    3892           0 : if (data->len == 0 || element >= data->len)
    3893           0 :         return ASN1_OVERRUN;
    3894           0 : free_PolicyMapping(&data->val[element]);
    3895           0 : data->len--;
    3896           0 : if (element < data->len)
    3897           0 :         memmove(&data->val[element], &data->val[element + 1], 
    3898           0 :                 sizeof(data->val[0]) * (data->len - element));
    3899           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    3900           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    3901           0 : return 0;
    3902             : }
    3903             : 
    3904             : /* template_members: KeyIdentifier exp exp */
    3905             : /* generate_template_type: KeyIdentifier_tag__90 */
    3906             : /* generate_template_type: KeyIdentifier */
    3907             : const struct asn1_template asn1_KeyIdentifier[] = {
    3908             : /* 0 */ { 0, sizeof(KeyIdentifier), ((void *)(uintptr_t)1) },
    3909             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), 0, asn1_Extension_tag_extnValue_25 }
    3910             : };
    3911             : 
    3912             : int ASN1CALL
    3913           0 : decode_KeyIdentifier(const unsigned char *p, size_t len, KeyIdentifier *data, size_t *size)
    3914             : {
    3915           0 :     memset(data, 0, sizeof(*data));
    3916           0 :     return _asn1_decode_top(asn1_KeyIdentifier, 0|0, p, len, data, size);
    3917             : }
    3918             : 
    3919             : 
    3920             : int ASN1CALL
    3921           0 : encode_KeyIdentifier(unsigned char *p, size_t len, const KeyIdentifier *data, size_t *size)
    3922             : {
    3923           0 :     return _asn1_encode(asn1_KeyIdentifier, p, len, data, size);
    3924             : }
    3925             : 
    3926             : 
    3927             : size_t ASN1CALL
    3928           0 : length_KeyIdentifier(const KeyIdentifier *data)
    3929             : {
    3930           0 :     return _asn1_length(asn1_KeyIdentifier, data);
    3931             : }
    3932             : 
    3933             : 
    3934             : void ASN1CALL
    3935           0 : free_KeyIdentifier(KeyIdentifier *data)
    3936             : {
    3937           0 :     _asn1_free_top(asn1_KeyIdentifier, data);
    3938           0 : }
    3939             : 
    3940             : 
    3941             : int ASN1CALL
    3942           0 : copy_KeyIdentifier(const KeyIdentifier *from, KeyIdentifier *to)
    3943             : {
    3944           0 :     return _asn1_copy_top(asn1_KeyIdentifier, from, to);
    3945             : }
    3946             : 
    3947             : 
    3948             : char * ASN1CALL
    3949           0 : print_KeyIdentifier(const KeyIdentifier *data, int flags)
    3950             : {
    3951           0 :     return _asn1_print_top(asn1_KeyIdentifier, flags, data);
    3952             : }
    3953             : 
    3954             : /* template_members: AuthorityKeyIdentifier exp exp */
    3955             : /* tsequence: members isstruct: 1 */
    3956             : /* template_members: AuthorityKeyIdentifier exp imp */
    3957             : /* template_members: heim_octet_string exp exp */
    3958             : /* generate_template_type: heim_octet_string_tag_keyIdentifier_93 */
    3959             : /* generate_template_type: AuthorityKeyIdentifier_tag_keyIdentifier_92 */
    3960             : /* template_members: AuthorityKeyIdentifier exp imp */
    3961             : /* template_members: AuthorityKeyIdentifier exp exp */
    3962             : /* generate_template_type: AuthorityKeyIdentifier_authorityCertIssuer_10 */
    3963             : /* generate_template_type: AuthorityKeyIdentifier_tag_authorityCertIssuer_95 */
    3964             : const struct asn1_template asn1_AuthorityKeyIdentifier_tag_authorityCertIssuer_95[] = {
    3965             : /* 0 */ { 0, sizeof(struct AuthorityKeyIdentifier_authorityCertIssuer), ((void *)(uintptr_t)1) },
    3966             : /* 1 */ { A1_OP_SEQOF, 0, asn1_GeneralName_seofTstruct_5 }
    3967             : };
    3968             : /* generate_template_type: AuthorityKeyIdentifier_tag_authorityCertIssuer_94 */
    3969             : const struct asn1_template asn1_AuthorityKeyIdentifier_tag_authorityCertIssuer_94[] = {
    3970             : /* 0 */ { 0, sizeof(struct AuthorityKeyIdentifier_authorityCertIssuer), ((void *)(uintptr_t)1) },
    3971             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AuthorityKeyIdentifier_tag_authorityCertIssuer_95 }
    3972             : };
    3973             : /* template_members: AuthorityKeyIdentifier exp imp */
    3974             : /* template_members: heim_integer exp exp */
    3975             : /* generate_template_type: heim_integer_tag_authorityCertSerialNumber_97 */
    3976             : /* generate_template_type: AuthorityKeyIdentifier_tag_authorityCertSerialNumber_96 */
    3977             : /* generate_template_type: AuthorityKeyIdentifier_tag__91 */
    3978             : const struct asn1_template asn1_AuthorityKeyIdentifier_tag__91[] = {
    3979             : /* 0 */ { 0, sizeof(struct AuthorityKeyIdentifier), ((void *)(uintptr_t)7) },
    3980             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,0)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct AuthorityKeyIdentifier, keyIdentifier), asn1_heim_octet_string_tag__61 },
    3981             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct AuthorityKeyIdentifier, authorityCertIssuer), asn1_AuthorityKeyIdentifier_tag_authorityCertIssuer_94 },
    3982             : /* 3 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,2)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct AuthorityKeyIdentifier, authorityCertSerialNumber), asn1_NoticeReference_noticeNumbers_8 },
    3983             : /* 4 */ { A1_OP_NAME, 0, "AuthorityKeyIdentifier" },
    3984             : /* 5 */ { A1_OP_NAME, 0, "keyIdentifier" },
    3985             : /* 6 */ { A1_OP_NAME, 0, "authorityCertIssuer" },
    3986             : /* 7 */ { A1_OP_NAME, 0, "authorityCertSerialNumber" }
    3987             : };
    3988             : /* generate_template_type: AuthorityKeyIdentifier */
    3989             : const struct asn1_template asn1_AuthorityKeyIdentifier[] = {
    3990             : /* 0 */ { 0, sizeof(AuthorityKeyIdentifier), ((void *)(uintptr_t)1) },
    3991             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AuthorityKeyIdentifier_tag__91 }
    3992             : };
    3993             : 
    3994             : int ASN1CALL
    3995          28 : decode_AuthorityKeyIdentifier(const unsigned char *p, size_t len, AuthorityKeyIdentifier *data, size_t *size)
    3996             : {
    3997          28 :     memset(data, 0, sizeof(*data));
    3998          28 :     return _asn1_decode_top(asn1_AuthorityKeyIdentifier, 0|0, p, len, data, size);
    3999             : }
    4000             : 
    4001             : 
    4002             : int ASN1CALL
    4003           0 : encode_AuthorityKeyIdentifier(unsigned char *p, size_t len, const AuthorityKeyIdentifier *data, size_t *size)
    4004             : {
    4005           0 :     return _asn1_encode(asn1_AuthorityKeyIdentifier, p, len, data, size);
    4006             : }
    4007             : 
    4008             : 
    4009             : size_t ASN1CALL
    4010           0 : length_AuthorityKeyIdentifier(const AuthorityKeyIdentifier *data)
    4011             : {
    4012           0 :     return _asn1_length(asn1_AuthorityKeyIdentifier, data);
    4013             : }
    4014             : 
    4015             : 
    4016             : void ASN1CALL
    4017         213 : free_AuthorityKeyIdentifier(AuthorityKeyIdentifier *data)
    4018             : {
    4019         213 :     _asn1_free_top(asn1_AuthorityKeyIdentifier, data);
    4020         213 : }
    4021             : 
    4022             : 
    4023             : int ASN1CALL
    4024           0 : copy_AuthorityKeyIdentifier(const AuthorityKeyIdentifier *from, AuthorityKeyIdentifier *to)
    4025             : {
    4026           0 :     return _asn1_copy_top(asn1_AuthorityKeyIdentifier, from, to);
    4027             : }
    4028             : 
    4029             : 
    4030             : char * ASN1CALL
    4031           0 : print_AuthorityKeyIdentifier(const AuthorityKeyIdentifier *data, int flags)
    4032             : {
    4033           0 :     return _asn1_print_top(asn1_AuthorityKeyIdentifier, flags, data);
    4034             : }
    4035             : 
    4036             : /* generate_template_type: SubjectKeyIdentifier */
    4037             : const struct asn1_template asn1_SubjectKeyIdentifier[] = {
    4038             : /* 0 */ { 0, sizeof(SubjectKeyIdentifier), ((void *)(uintptr_t)1) },
    4039             : /* 1 */ { A1_OP_TYPE , 0, asn1_KeyIdentifier }
    4040             : };
    4041             : 
    4042             : int ASN1CALL
    4043         308 : decode_SubjectKeyIdentifier(const unsigned char *p, size_t len, SubjectKeyIdentifier *data, size_t *size)
    4044             : {
    4045         308 :     memset(data, 0, sizeof(*data));
    4046         308 :     return _asn1_decode_top(asn1_SubjectKeyIdentifier, 0|0, p, len, data, size);
    4047             : }
    4048             : 
    4049             : 
    4050             : int ASN1CALL
    4051          86 : encode_SubjectKeyIdentifier(unsigned char *p, size_t len, const SubjectKeyIdentifier *data, size_t *size)
    4052             : {
    4053          86 :     return _asn1_encode(asn1_SubjectKeyIdentifier, p, len, data, size);
    4054             : }
    4055             : 
    4056             : 
    4057             : size_t ASN1CALL
    4058         172 : length_SubjectKeyIdentifier(const SubjectKeyIdentifier *data)
    4059             : {
    4060         172 :     return _asn1_length(asn1_SubjectKeyIdentifier, data);
    4061             : }
    4062             : 
    4063             : 
    4064             : void ASN1CALL
    4065         308 : free_SubjectKeyIdentifier(SubjectKeyIdentifier *data)
    4066             : {
    4067         308 :     _asn1_free_top(asn1_SubjectKeyIdentifier, data);
    4068         308 : }
    4069             : 
    4070             : 
    4071             : int ASN1CALL
    4072           0 : copy_SubjectKeyIdentifier(const SubjectKeyIdentifier *from, SubjectKeyIdentifier *to)
    4073             : {
    4074           0 :     return _asn1_copy_top(asn1_SubjectKeyIdentifier, from, to);
    4075             : }
    4076             : 
    4077             : 
    4078             : char * ASN1CALL
    4079           0 : print_SubjectKeyIdentifier(const SubjectKeyIdentifier *data, int flags)
    4080             : {
    4081           0 :     return _asn1_print_top(asn1_SubjectKeyIdentifier, flags, data);
    4082             : }
    4083             : 
    4084             : /* template_members: BasicConstraints exp exp */
    4085             : /* tsequence: members isstruct: 1 */
    4086             : /* template_members: BasicConstraints exp exp */
    4087             : /* generate_template_type: BasicConstraints_tag_cA_99 */
    4088             : /* template_members: BasicConstraints exp exp */
    4089             : /* generate_template_type: BasicConstraints_tag_pathLenConstraint_100 */
    4090             : const struct asn1_template asn1_BasicConstraints_tag_pathLenConstraint_100[] = {
    4091             : /* 0 */ { 0, sizeof(unsigned), ((void *)(uintptr_t)1) },
    4092             : /* 1 */ { A1_PARSE_T(A1T_UNSIGNED), 0, NULL }
    4093             : };
    4094             : /* generate_template_type: BasicConstraints_tag__98 */
    4095             : const struct asn1_template asn1_BasicConstraints_tag__98[] = {
    4096             : /* 0 */ { 0, sizeof(struct BasicConstraints), ((void *)(uintptr_t)6) },
    4097             : /* 1 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    4098             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean)|A1_FLAG_DEFAULT, offsetof(struct BasicConstraints, cA), asn1_Extension_tag_critical_24 },
    4099             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer)|A1_FLAG_OPTIONAL, offsetof(struct BasicConstraints, pathLenConstraint), asn1_BasicConstraints_tag_pathLenConstraint_100 },
    4100             : /* 4 */ { A1_OP_NAME, 0, "BasicConstraints" },
    4101             : /* 5 */ { A1_OP_NAME, 0, "cA" },
    4102             : /* 6 */ { A1_OP_NAME, 0, "pathLenConstraint" }
    4103             : };
    4104             : /* generate_template_type: BasicConstraints */
    4105             : const struct asn1_template asn1_BasicConstraints[] = {
    4106             : /* 0 */ { 0, sizeof(BasicConstraints), ((void *)(uintptr_t)1) },
    4107             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_BasicConstraints_tag__98 }
    4108             : };
    4109             : 
    4110             : int ASN1CALL
    4111         148 : decode_BasicConstraints(const unsigned char *p, size_t len, BasicConstraints *data, size_t *size)
    4112             : {
    4113         148 :     memset(data, 0, sizeof(*data));
    4114         148 :     return _asn1_decode_top(asn1_BasicConstraints, 0|0, p, len, data, size);
    4115             : }
    4116             : 
    4117             : 
    4118             : int ASN1CALL
    4119           0 : encode_BasicConstraints(unsigned char *p, size_t len, const BasicConstraints *data, size_t *size)
    4120             : {
    4121           0 :     return _asn1_encode(asn1_BasicConstraints, p, len, data, size);
    4122             : }
    4123             : 
    4124             : 
    4125             : size_t ASN1CALL
    4126           0 : length_BasicConstraints(const BasicConstraints *data)
    4127             : {
    4128           0 :     return _asn1_length(asn1_BasicConstraints, data);
    4129             : }
    4130             : 
    4131             : 
    4132             : void ASN1CALL
    4133         148 : free_BasicConstraints(BasicConstraints *data)
    4134             : {
    4135         148 :     _asn1_free_top(asn1_BasicConstraints, data);
    4136         148 : }
    4137             : 
    4138             : 
    4139             : int ASN1CALL
    4140           0 : copy_BasicConstraints(const BasicConstraints *from, BasicConstraints *to)
    4141             : {
    4142           0 :     return _asn1_copy_top(asn1_BasicConstraints, from, to);
    4143             : }
    4144             : 
    4145             : 
    4146             : char * ASN1CALL
    4147           0 : print_BasicConstraints(const BasicConstraints *data, int flags)
    4148             : {
    4149           0 :     return _asn1_print_top(asn1_BasicConstraints, flags, data);
    4150             : }
    4151             : 
    4152             : /* template_members: BaseDistance exp exp */
    4153             : /* generate_template_type: BaseDistance_tag__101 */
    4154             : /* generate_template_type: BaseDistance */
    4155             : const struct asn1_template asn1_BaseDistance[] = {
    4156             : /* 0 */ { 0, sizeof(BaseDistance), ((void *)(uintptr_t)1) },
    4157             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_BasicConstraints_tag_pathLenConstraint_100 }
    4158             : };
    4159             : 
    4160             : int ASN1CALL
    4161           0 : decode_BaseDistance(const unsigned char *p, size_t len, BaseDistance *data, size_t *size)
    4162             : {
    4163           0 :     memset(data, 0, sizeof(*data));
    4164           0 :     return _asn1_decode_top(asn1_BaseDistance, 0|0, p, len, data, size);
    4165             : }
    4166             : 
    4167             : 
    4168             : int ASN1CALL
    4169           0 : encode_BaseDistance(unsigned char *p, size_t len, const BaseDistance *data, size_t *size)
    4170             : {
    4171           0 :     return _asn1_encode(asn1_BaseDistance, p, len, data, size);
    4172             : }
    4173             : 
    4174             : 
    4175             : size_t ASN1CALL
    4176           0 : length_BaseDistance(const BaseDistance *data)
    4177             : {
    4178           0 :     return _asn1_length(asn1_BaseDistance, data);
    4179             : }
    4180             : 
    4181             : 
    4182             : void ASN1CALL
    4183           0 : free_BaseDistance(BaseDistance *data)
    4184             : {
    4185           0 :     _asn1_free_top(asn1_BaseDistance, data);
    4186           0 : }
    4187             : 
    4188             : 
    4189             : int ASN1CALL
    4190           0 : copy_BaseDistance(const BaseDistance *from, BaseDistance *to)
    4191             : {
    4192           0 :     return _asn1_copy_top(asn1_BaseDistance, from, to);
    4193             : }
    4194             : 
    4195             : 
    4196             : char * ASN1CALL
    4197           0 : print_BaseDistance(const BaseDistance *data, int flags)
    4198             : {
    4199           0 :     return _asn1_print_top(asn1_BaseDistance, flags, data);
    4200             : }
    4201             : 
    4202             : /* template_members: GeneralSubtree exp exp */
    4203             : /* tsequence: members isstruct: 1 */
    4204             : /* template_members: GeneralSubtree exp imp */
    4205             : /* generate_template_type: GeneralSubtree_tag_minimum_103 */
    4206             : const struct asn1_template asn1_GeneralSubtree_tag_minimum_103[] = {
    4207             : /* 0 */ { 0, sizeof(BaseDistance), ((void *)(uintptr_t)1) },
    4208             : /* 1 */ { A1_OP_TYPE , 0, asn1_BaseDistance }
    4209             : };
    4210             : /* template_members: GeneralSubtree exp imp */
    4211             : /* generate_template_type: GeneralSubtree_tag_maximum_104 */
    4212             : /* generate_template_type: GeneralSubtree_tag__102 */
    4213             : const struct asn1_template asn1_GeneralSubtree_tag__102[] = {
    4214             : /* 0 */ { 0, sizeof(struct GeneralSubtree), ((void *)(uintptr_t)8) },
    4215             : /* 1 */ { A1_OP_TYPE , offsetof(struct GeneralSubtree, base), asn1_GeneralName },
    4216             : /* 2 */ { A1_OP_DEFVAL|A1_DV_INTEGER32, ~0, (void *)(uintptr_t)0 },
    4217             : /* 3 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,0)|A1_FLAG_DEFAULT|A1_FLAG_IMPLICIT, offsetof(struct GeneralSubtree, minimum), asn1_GeneralSubtree_tag_minimum_103 },
    4218             : /* 4 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct GeneralSubtree, maximum), asn1_GeneralSubtree_tag_minimum_103 },
    4219             : /* 5 */ { A1_OP_NAME, 0, "GeneralSubtree" },
    4220             : /* 6 */ { A1_OP_NAME, 0, "base" },
    4221             : /* 7 */ { A1_OP_NAME, 0, "minimum" },
    4222             : /* 8 */ { A1_OP_NAME, 0, "maximum" }
    4223             : };
    4224             : /* generate_template_type: GeneralSubtree */
    4225             : const struct asn1_template asn1_GeneralSubtree[] = {
    4226             : /* 0 */ { 0, sizeof(GeneralSubtree), ((void *)(uintptr_t)1) },
    4227             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_GeneralSubtree_tag__102 }
    4228             : };
    4229             : 
    4230             : int ASN1CALL
    4231           0 : decode_GeneralSubtree(const unsigned char *p, size_t len, GeneralSubtree *data, size_t *size)
    4232             : {
    4233           0 :     memset(data, 0, sizeof(*data));
    4234           0 :     return _asn1_decode_top(asn1_GeneralSubtree, 0|0, p, len, data, size);
    4235             : }
    4236             : 
    4237             : 
    4238             : int ASN1CALL
    4239           0 : encode_GeneralSubtree(unsigned char *p, size_t len, const GeneralSubtree *data, size_t *size)
    4240             : {
    4241           0 :     return _asn1_encode(asn1_GeneralSubtree, p, len, data, size);
    4242             : }
    4243             : 
    4244             : 
    4245             : size_t ASN1CALL
    4246           0 : length_GeneralSubtree(const GeneralSubtree *data)
    4247             : {
    4248           0 :     return _asn1_length(asn1_GeneralSubtree, data);
    4249             : }
    4250             : 
    4251             : 
    4252             : void ASN1CALL
    4253           0 : free_GeneralSubtree(GeneralSubtree *data)
    4254             : {
    4255           0 :     _asn1_free_top(asn1_GeneralSubtree, data);
    4256           0 : }
    4257             : 
    4258             : 
    4259             : int ASN1CALL
    4260           0 : copy_GeneralSubtree(const GeneralSubtree *from, GeneralSubtree *to)
    4261             : {
    4262           0 :     return _asn1_copy_top(asn1_GeneralSubtree, from, to);
    4263             : }
    4264             : 
    4265             : 
    4266             : char * ASN1CALL
    4267           0 : print_GeneralSubtree(const GeneralSubtree *data, int flags)
    4268             : {
    4269           0 :     return _asn1_print_top(asn1_GeneralSubtree, flags, data);
    4270             : }
    4271             : 
    4272             : /* template_members: GeneralSubtrees exp exp */
    4273             : /* generate_template_type: GeneralSubtree_seofTstruct_11 */
    4274             : const struct asn1_template asn1_GeneralSubtree_seofTstruct_11[] = {
    4275             : /* 0 */ { 0, sizeof(GeneralSubtree), ((void *)(uintptr_t)1) },
    4276             : /* 1 */ { A1_OP_TYPE , 0, asn1_GeneralSubtree }
    4277             : };
    4278             : /* generate_template_type: GeneralSubtrees_tag__105 */
    4279             : const struct asn1_template asn1_GeneralSubtrees_tag__105[] = {
    4280             : /* 0 */ { 0, sizeof(GeneralSubtree), ((void *)(uintptr_t)1) },
    4281             : /* 1 */ { A1_OP_SEQOF, 0, asn1_GeneralSubtree_seofTstruct_11 }
    4282             : };
    4283             : /* generate_template_type: GeneralSubtrees */
    4284             : const struct asn1_template asn1_GeneralSubtrees[] = {
    4285             : /* 0 */ { 0, sizeof(GeneralSubtrees), ((void *)(uintptr_t)1) },
    4286             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_GeneralSubtrees_tag__105 }
    4287             : };
    4288             : 
    4289             : int ASN1CALL
    4290           0 : decode_GeneralSubtrees(const unsigned char *p, size_t len, GeneralSubtrees *data, size_t *size)
    4291             : {
    4292           0 :     memset(data, 0, sizeof(*data));
    4293           0 :     return _asn1_decode_top(asn1_GeneralSubtrees, 0|0, p, len, data, size);
    4294             : }
    4295             : 
    4296             : 
    4297             : int ASN1CALL
    4298           0 : encode_GeneralSubtrees(unsigned char *p, size_t len, const GeneralSubtrees *data, size_t *size)
    4299             : {
    4300           0 :     return _asn1_encode(asn1_GeneralSubtrees, p, len, data, size);
    4301             : }
    4302             : 
    4303             : 
    4304             : size_t ASN1CALL
    4305           0 : length_GeneralSubtrees(const GeneralSubtrees *data)
    4306             : {
    4307           0 :     return _asn1_length(asn1_GeneralSubtrees, data);
    4308             : }
    4309             : 
    4310             : 
    4311             : void ASN1CALL
    4312           0 : free_GeneralSubtrees(GeneralSubtrees *data)
    4313             : {
    4314           0 :     _asn1_free_top(asn1_GeneralSubtrees, data);
    4315           0 : }
    4316             : 
    4317             : 
    4318             : int ASN1CALL
    4319           0 : copy_GeneralSubtrees(const GeneralSubtrees *from, GeneralSubtrees *to)
    4320             : {
    4321           0 :     return _asn1_copy_top(asn1_GeneralSubtrees, from, to);
    4322             : }
    4323             : 
    4324             : 
    4325             : char * ASN1CALL
    4326           0 : print_GeneralSubtrees(const GeneralSubtrees *data, int flags)
    4327             : {
    4328           0 :     return _asn1_print_top(asn1_GeneralSubtrees, flags, data);
    4329             : }
    4330             : 
    4331             : /* template_members: NameConstraints exp exp */
    4332             : /* tsequence: members isstruct: 1 */
    4333             : /* template_members: NameConstraints exp imp */
    4334             : /* template_members: NameConstraints exp exp */
    4335             : /* generate_template_type: NameConstraints_permittedSubtrees_12 */
    4336             : /* generate_template_type: NameConstraints_tag_permittedSubtrees_108 */
    4337             : const struct asn1_template asn1_NameConstraints_tag_permittedSubtrees_108[] = {
    4338             : /* 0 */ { 0, sizeof(struct NameConstraints_permittedSubtrees), ((void *)(uintptr_t)1) },
    4339             : /* 1 */ { A1_OP_SEQOF, 0, asn1_GeneralSubtree_seofTstruct_11 }
    4340             : };
    4341             : /* generate_template_type: NameConstraints_tag_permittedSubtrees_107 */
    4342             : const struct asn1_template asn1_NameConstraints_tag_permittedSubtrees_107[] = {
    4343             : /* 0 */ { 0, sizeof(struct NameConstraints_permittedSubtrees), ((void *)(uintptr_t)1) },
    4344             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_NameConstraints_tag_permittedSubtrees_108 }
    4345             : };
    4346             : /* template_members: NameConstraints exp imp */
    4347             : /* template_members: NameConstraints exp exp */
    4348             : /* generate_template_type: NameConstraints_excludedSubtrees_13 */
    4349             : /* generate_template_type: NameConstraints_tag_excludedSubtrees_110 */
    4350             : const struct asn1_template asn1_NameConstraints_tag_excludedSubtrees_110[] = {
    4351             : /* 0 */ { 0, sizeof(struct NameConstraints_excludedSubtrees), ((void *)(uintptr_t)1) },
    4352             : /* 1 */ { A1_OP_SEQOF, 0, asn1_GeneralSubtree_seofTstruct_11 }
    4353             : };
    4354             : /* generate_template_type: NameConstraints_tag_excludedSubtrees_109 */
    4355             : const struct asn1_template asn1_NameConstraints_tag_excludedSubtrees_109[] = {
    4356             : /* 0 */ { 0, sizeof(struct NameConstraints_excludedSubtrees), ((void *)(uintptr_t)1) },
    4357             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_NameConstraints_tag_excludedSubtrees_110 }
    4358             : };
    4359             : /* generate_template_type: NameConstraints_tag__106 */
    4360             : const struct asn1_template asn1_NameConstraints_tag__106[] = {
    4361             : /* 0 */ { 0, sizeof(struct NameConstraints), ((void *)(uintptr_t)5) },
    4362             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct NameConstraints, permittedSubtrees), asn1_NameConstraints_tag_permittedSubtrees_107 },
    4363             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct NameConstraints, excludedSubtrees), asn1_NameConstraints_tag_excludedSubtrees_109 },
    4364             : /* 3 */ { A1_OP_NAME, 0, "NameConstraints" },
    4365             : /* 4 */ { A1_OP_NAME, 0, "permittedSubtrees" },
    4366             : /* 5 */ { A1_OP_NAME, 0, "excludedSubtrees" }
    4367             : };
    4368             : /* generate_template_type: NameConstraints */
    4369             : const struct asn1_template asn1_NameConstraints[] = {
    4370             : /* 0 */ { 0, sizeof(NameConstraints), ((void *)(uintptr_t)1) },
    4371             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_NameConstraints_tag__106 }
    4372             : };
    4373             : 
    4374             : int ASN1CALL
    4375           0 : decode_NameConstraints(const unsigned char *p, size_t len, NameConstraints *data, size_t *size)
    4376             : {
    4377           0 :     memset(data, 0, sizeof(*data));
    4378           0 :     return _asn1_decode_top(asn1_NameConstraints, 0|0, p, len, data, size);
    4379             : }
    4380             : 
    4381             : 
    4382             : int ASN1CALL
    4383           0 : encode_NameConstraints(unsigned char *p, size_t len, const NameConstraints *data, size_t *size)
    4384             : {
    4385           0 :     return _asn1_encode(asn1_NameConstraints, p, len, data, size);
    4386             : }
    4387             : 
    4388             : 
    4389             : size_t ASN1CALL
    4390           0 : length_NameConstraints(const NameConstraints *data)
    4391             : {
    4392           0 :     return _asn1_length(asn1_NameConstraints, data);
    4393             : }
    4394             : 
    4395             : 
    4396             : void ASN1CALL
    4397           0 : free_NameConstraints(NameConstraints *data)
    4398             : {
    4399           0 :     _asn1_free_top(asn1_NameConstraints, data);
    4400           0 : }
    4401             : 
    4402             : 
    4403             : int ASN1CALL
    4404           0 : copy_NameConstraints(const NameConstraints *from, NameConstraints *to)
    4405             : {
    4406           0 :     return _asn1_copy_top(asn1_NameConstraints, from, to);
    4407             : }
    4408             : 
    4409             : 
    4410             : char * ASN1CALL
    4411           0 : print_NameConstraints(const NameConstraints *data, int flags)
    4412             : {
    4413           0 :     return _asn1_print_top(asn1_NameConstraints, flags, data);
    4414             : }
    4415             : 
    4416             : /* template_members: ExtKeyUsage exp exp */
    4417             : /* template_members: heim_oid exp exp */
    4418             : /* generate_template_type: heim_oid_tag__112 */
    4419             : /* generate_template_type: heim_oid_seofTstruct_14 */
    4420             : /* generate_template_type: ExtKeyUsage_tag__111 */
    4421             : const struct asn1_template asn1_ExtKeyUsage_tag__111[] = {
    4422             : /* 0 */ { 0, sizeof(heim_oid), ((void *)(uintptr_t)1) },
    4423             : /* 1 */ { A1_OP_SEQOF, 0, asn1_heim_oid_tag__63 }
    4424             : };
    4425             : /* generate_template_type: ExtKeyUsage */
    4426             : const struct asn1_template asn1_ExtKeyUsage[] = {
    4427             : /* 0 */ { 0, sizeof(ExtKeyUsage), ((void *)(uintptr_t)1) },
    4428             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_ExtKeyUsage_tag__111 }
    4429             : };
    4430             : 
    4431             : int ASN1CALL
    4432          99 : decode_ExtKeyUsage(const unsigned char *p, size_t len, ExtKeyUsage *data, size_t *size)
    4433             : {
    4434          99 :     memset(data, 0, sizeof(*data));
    4435          99 :     return _asn1_decode_top(asn1_ExtKeyUsage, 0|0, p, len, data, size);
    4436             : }
    4437             : 
    4438             : 
    4439             : int ASN1CALL
    4440           0 : encode_ExtKeyUsage(unsigned char *p, size_t len, const ExtKeyUsage *data, size_t *size)
    4441             : {
    4442           0 :     return _asn1_encode(asn1_ExtKeyUsage, p, len, data, size);
    4443             : }
    4444             : 
    4445             : 
    4446             : size_t ASN1CALL
    4447           0 : length_ExtKeyUsage(const ExtKeyUsage *data)
    4448             : {
    4449           0 :     return _asn1_length(asn1_ExtKeyUsage, data);
    4450             : }
    4451             : 
    4452             : 
    4453             : void ASN1CALL
    4454          99 : free_ExtKeyUsage(ExtKeyUsage *data)
    4455             : {
    4456          99 :     _asn1_free_top(asn1_ExtKeyUsage, data);
    4457          99 : }
    4458             : 
    4459             : 
    4460             : int ASN1CALL
    4461           0 : copy_ExtKeyUsage(const ExtKeyUsage *from, ExtKeyUsage *to)
    4462             : {
    4463           0 :     return _asn1_copy_top(asn1_ExtKeyUsage, from, to);
    4464             : }
    4465             : 
    4466             : 
    4467             : char * ASN1CALL
    4468           0 : print_ExtKeyUsage(const ExtKeyUsage *data, int flags)
    4469             : {
    4470           0 :     return _asn1_print_top(asn1_ExtKeyUsage, flags, data);
    4471             : }
    4472             : 
    4473             : /* template_members: DistributionPointReasonFlags exp exp */
    4474             : static const struct asn1_template asn1_DistributionPointReasonFlags_bmember__1[] = {
    4475             : /* 0 */ { 0, sizeof(DistributionPointReasonFlags), ((void *)(uintptr_t)9) },
    4476             : /* 1 */ { 0, 0, "unused" },
    4477             : /* 2 */ { 0, 1, "keyCompromise" },
    4478             : /* 3 */ { 0, 2, "cACompromise" },
    4479             : /* 4 */ { 0, 3, "affiliationChanged" },
    4480             : /* 5 */ { 0, 4, "superseded" },
    4481             : /* 6 */ { 0, 5, "cessationOfOperation" },
    4482             : /* 7 */ { 0, 6, "certificateHold" },
    4483             : /* 8 */ { 0, 7, "privilegeWithdrawn" },
    4484             : /* 9 */ { 0, 8, "aACompromise" }
    4485             : };
    4486             : /* generate_template_type: DistributionPointReasonFlags_tag__113 */
    4487             : const struct asn1_template asn1_DistributionPointReasonFlags_tag__113[] = {
    4488             : /* 0 */ { 0, sizeof(DistributionPointReasonFlags), ((void *)(uintptr_t)1) },
    4489             : /* 1 */ { A1_OP_BMEMBER, 0, asn1_DistributionPointReasonFlags_bmember__1 }
    4490             : };
    4491             : /* generate_template_type: DistributionPointReasonFlags */
    4492             : const struct asn1_template asn1_DistributionPointReasonFlags[] = {
    4493             : /* 0 */ { 0, sizeof(DistributionPointReasonFlags), ((void *)(uintptr_t)1) },
    4494             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), 0, asn1_DistributionPointReasonFlags_tag__113 }
    4495             : };
    4496             : 
    4497             : int ASN1CALL
    4498           0 : decode_DistributionPointReasonFlags(const unsigned char *p, size_t len, DistributionPointReasonFlags *data, size_t *size)
    4499             : {
    4500           0 :     memset(data, 0, sizeof(*data));
    4501           0 :     return _asn1_decode_top(asn1_DistributionPointReasonFlags, 0|0, p, len, data, size);
    4502             : }
    4503             : 
    4504             : 
    4505             : int ASN1CALL
    4506           0 : encode_DistributionPointReasonFlags(unsigned char *p, size_t len, const DistributionPointReasonFlags *data, size_t *size)
    4507             : {
    4508           0 :     return _asn1_encode(asn1_DistributionPointReasonFlags, p, len, data, size);
    4509             : }
    4510             : 
    4511             : 
    4512             : size_t ASN1CALL
    4513           0 : length_DistributionPointReasonFlags(const DistributionPointReasonFlags *data)
    4514             : {
    4515           0 :     return _asn1_length(asn1_DistributionPointReasonFlags, data);
    4516             : }
    4517             : 
    4518             : 
    4519             : void ASN1CALL
    4520           0 : free_DistributionPointReasonFlags(DistributionPointReasonFlags *data)
    4521             : {
    4522           0 :     _asn1_free_top(asn1_DistributionPointReasonFlags, data);
    4523           0 : }
    4524             : 
    4525             : 
    4526             : int ASN1CALL
    4527           0 : copy_DistributionPointReasonFlags(const DistributionPointReasonFlags *from, DistributionPointReasonFlags *to)
    4528             : {
    4529           0 :     return _asn1_copy_top(asn1_DistributionPointReasonFlags, from, to);
    4530             : }
    4531             : 
    4532             : 
    4533             : char * ASN1CALL
    4534           0 : print_DistributionPointReasonFlags(const DistributionPointReasonFlags *data, int flags)
    4535             : {
    4536           0 :     return _asn1_print_top(asn1_DistributionPointReasonFlags, flags, data);
    4537             : }
    4538             : 
    4539           0 : uint64_t DistributionPointReasonFlags2int(DistributionPointReasonFlags f)
    4540             : {
    4541           0 : uint64_t r = 0;
    4542           0 : if(f.unused) r |= (1ULL << 0);
    4543           0 : if(f.keyCompromise) r |= (1ULL << 1);
    4544           0 : if(f.cACompromise) r |= (1ULL << 2);
    4545           0 : if(f.affiliationChanged) r |= (1ULL << 3);
    4546           0 : if(f.superseded) r |= (1ULL << 4);
    4547           0 : if(f.cessationOfOperation) r |= (1ULL << 5);
    4548           0 : if(f.certificateHold) r |= (1ULL << 6);
    4549           0 : if(f.privilegeWithdrawn) r |= (1ULL << 7);
    4550           0 : if(f.aACompromise) r |= (1ULL << 8);
    4551           0 : return r;
    4552             : }
    4553             : 
    4554           0 : DistributionPointReasonFlags int2DistributionPointReasonFlags(uint64_t n)
    4555             : {
    4556           0 :         DistributionPointReasonFlags flags;
    4557             : 
    4558           0 :         memset(&flags, 0, sizeof(flags));
    4559             : 
    4560           0 :         flags.unused = (n >> 0) & 1;
    4561           0 :         flags.keyCompromise = (n >> 1) & 1;
    4562           0 :         flags.cACompromise = (n >> 2) & 1;
    4563           0 :         flags.affiliationChanged = (n >> 3) & 1;
    4564           0 :         flags.superseded = (n >> 4) & 1;
    4565           0 :         flags.cessationOfOperation = (n >> 5) & 1;
    4566           0 :         flags.certificateHold = (n >> 6) & 1;
    4567           0 :         flags.privilegeWithdrawn = (n >> 7) & 1;
    4568           0 :         flags.aACompromise = (n >> 8) & 1;
    4569           0 :         return flags;
    4570             : }
    4571             : 
    4572             : static struct units DistributionPointReasonFlags_units[] = {
    4573             :         {"aACompromise",      1ULL << 8},
    4574             :         {"privilegeWithdrawn",        1ULL << 7},
    4575             :         {"certificateHold",   1ULL << 6},
    4576             :         {"cessationOfOperation",      1ULL << 5},
    4577             :         {"superseded",        1ULL << 4},
    4578             :         {"affiliationChanged",        1ULL << 3},
    4579             :         {"cACompromise",      1ULL << 2},
    4580             :         {"keyCompromise",     1ULL << 1},
    4581             :         {"unused",    1ULL << 0},
    4582             :         {NULL,  0}
    4583             : };
    4584             : 
    4585           0 : const struct units * asn1_DistributionPointReasonFlags_units(void){
    4586           0 : return DistributionPointReasonFlags_units;
    4587             : }
    4588             : 
    4589             : /* template_members: GeneralName imp imp */
    4590             : /* template_members: GeneralName exp exp */
    4591             : /* generate_template_type: GeneralName_seofTstruct_15 */
    4592             : /* generate_template_type: GeneralName_tag__115 */
    4593             : /* generate_template_type: GeneralName_tag__114 */
    4594             : const struct asn1_template asn1_GeneralName_tag__114[] = {
    4595             : /* 0 */ { 0, sizeof(GeneralName), ((void *)(uintptr_t)1) },
    4596             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_GeneralNames_tag__65 }
    4597             : };
    4598             : /* generate_template_type: DistributionPointName_choice_fullName */
    4599             : const struct asn1_template asn1_DistributionPointName_choice_fullName[] = {
    4600             : /* 0 */ { 0, sizeof(GeneralName), ((void *)(uintptr_t)1) },
    4601             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_IMPLICIT, 0, asn1_GeneralName_tag__114 }
    4602             : };
    4603             : /* template_members: RelativeDistinguishedName exp exp */
    4604             : /* generate_template_type: RelativeDistinguishedName_tag__116 */
    4605             : /* generate_template_type: DistributionPointName_choice_nameRelativeToCRLIssuer */
    4606             : const struct asn1_template asn1_DistributionPointName_choice_nameRelativeToCRLIssuer[] = {
    4607             : /* 0 */ { 0, sizeof(RelativeDistinguishedName), ((void *)(uintptr_t)1) },
    4608             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,1), 0, asn1_RelativeDistinguishedName_seofTstruct_2 }
    4609             : };
    4610             : static const struct asn1_template asn1_choice_DistributionPointName_5[] = {
    4611             : /* 0 */ { 0, offsetof(DistributionPointName, element), ((void *)(uintptr_t)4) },
    4612             : /* 1 */ { choice_DistributionPointName_fullName, offsetof(DistributionPointName, u.fullName), asn1_DistributionPointName_choice_fullName },
    4613             : /* 2 */ { choice_DistributionPointName_nameRelativeToCRLIssuer, offsetof(DistributionPointName, u.nameRelativeToCRLIssuer), asn1_DistributionPointName_choice_nameRelativeToCRLIssuer },
    4614             : /* 3 */ { 0, 0, "fullName" },
    4615             : /* 4 */ { 0, 0, "nameRelativeToCRLIssuer" }
    4616             : };
    4617             : /* generate_template_type: DistributionPointName */
    4618             : const struct asn1_template asn1_DistributionPointName[] = {
    4619             : /* 0 */ { 0, sizeof(DistributionPointName), ((void *)(uintptr_t)1) },
    4620             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_DistributionPointName_5 }
    4621             : };
    4622             : 
    4623             : int ASN1CALL
    4624           0 : decode_DistributionPointName(const unsigned char *p, size_t len, DistributionPointName *data, size_t *size)
    4625             : {
    4626           0 :     memset(data, 0, sizeof(*data));
    4627           0 :     return _asn1_decode_top(asn1_DistributionPointName, 0|0, p, len, data, size);
    4628             : }
    4629             : 
    4630             : 
    4631             : int ASN1CALL
    4632           0 : encode_DistributionPointName(unsigned char *p, size_t len, const DistributionPointName *data, size_t *size)
    4633             : {
    4634           0 :     return _asn1_encode(asn1_DistributionPointName, p, len, data, size);
    4635             : }
    4636             : 
    4637             : 
    4638             : size_t ASN1CALL
    4639           0 : length_DistributionPointName(const DistributionPointName *data)
    4640             : {
    4641           0 :     return _asn1_length(asn1_DistributionPointName, data);
    4642             : }
    4643             : 
    4644             : 
    4645             : void ASN1CALL
    4646           0 : free_DistributionPointName(DistributionPointName *data)
    4647             : {
    4648           0 :     _asn1_free_top(asn1_DistributionPointName, data);
    4649           0 : }
    4650             : 
    4651             : 
    4652             : int ASN1CALL
    4653           0 : copy_DistributionPointName(const DistributionPointName *from, DistributionPointName *to)
    4654             : {
    4655           0 :     return _asn1_copy_top(asn1_DistributionPointName, from, to);
    4656             : }
    4657             : 
    4658             : 
    4659             : char * ASN1CALL
    4660           0 : print_DistributionPointName(const DistributionPointName *data, int flags)
    4661             : {
    4662           0 :     return _asn1_print_top(asn1_DistributionPointName, flags, data);
    4663             : }
    4664             : 
    4665             : /* template_members: DistributionPoint exp exp */
    4666             : /* tsequence: members isstruct: 1 */
    4667             : /* template_members: DistributionPoint exp exp */
    4668             : /* generate_template_type: DistributionPoint_tag_distributionPoint_118 */
    4669             : const struct asn1_template asn1_DistributionPoint_tag_distributionPoint_118[] = {
    4670             : /* 0 */ { 0, sizeof(DistributionPointName), ((void *)(uintptr_t)1) },
    4671             : /* 1 */ { A1_OP_TYPE , 0, asn1_DistributionPointName }
    4672             : };
    4673             : /* template_members: DistributionPoint exp imp */
    4674             : /* generate_template_type: DistributionPoint_tag_reasons_119 */
    4675             : const struct asn1_template asn1_DistributionPoint_tag_reasons_119[] = {
    4676             : /* 0 */ { 0, sizeof(DistributionPointReasonFlags), ((void *)(uintptr_t)1) },
    4677             : /* 1 */ { A1_OP_TYPE , 0, asn1_DistributionPointReasonFlags }
    4678             : };
    4679             : /* template_members: DistributionPoint exp imp */
    4680             : /* generate_template_type: DistributionPoint_tag_cRLIssuer_120 */
    4681             : const struct asn1_template asn1_DistributionPoint_tag_cRLIssuer_120[] = {
    4682             : /* 0 */ { 0, sizeof(GeneralNames), ((void *)(uintptr_t)1) },
    4683             : /* 1 */ { A1_OP_TYPE , 0, asn1_GeneralNames }
    4684             : };
    4685             : /* generate_template_type: DistributionPoint_tag__117 */
    4686             : const struct asn1_template asn1_DistributionPoint_tag__117[] = {
    4687             : /* 0 */ { 0, sizeof(struct DistributionPoint), ((void *)(uintptr_t)7) },
    4688             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_OPTIONAL, offsetof(struct DistributionPoint, distributionPoint), asn1_DistributionPoint_tag_distributionPoint_118 },
    4689             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct DistributionPoint, reasons), asn1_DistributionPoint_tag_reasons_119 },
    4690             : /* 3 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,2)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct DistributionPoint, cRLIssuer), asn1_DistributionPoint_tag_cRLIssuer_120 },
    4691             : /* 4 */ { A1_OP_NAME, 0, "DistributionPoint" },
    4692             : /* 5 */ { A1_OP_NAME, 0, "distributionPoint" },
    4693             : /* 6 */ { A1_OP_NAME, 0, "reasons" },
    4694             : /* 7 */ { A1_OP_NAME, 0, "cRLIssuer" }
    4695             : };
    4696             : /* generate_template_type: DistributionPoint */
    4697             : const struct asn1_template asn1_DistributionPoint[] = {
    4698             : /* 0 */ { 0, sizeof(DistributionPoint), ((void *)(uintptr_t)1) },
    4699             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DistributionPoint_tag__117 }
    4700             : };
    4701             : 
    4702             : int ASN1CALL
    4703           0 : decode_DistributionPoint(const unsigned char *p, size_t len, DistributionPoint *data, size_t *size)
    4704             : {
    4705           0 :     memset(data, 0, sizeof(*data));
    4706           0 :     return _asn1_decode_top(asn1_DistributionPoint, 0|0, p, len, data, size);
    4707             : }
    4708             : 
    4709             : 
    4710             : int ASN1CALL
    4711           0 : encode_DistributionPoint(unsigned char *p, size_t len, const DistributionPoint *data, size_t *size)
    4712             : {
    4713           0 :     return _asn1_encode(asn1_DistributionPoint, p, len, data, size);
    4714             : }
    4715             : 
    4716             : 
    4717             : size_t ASN1CALL
    4718           0 : length_DistributionPoint(const DistributionPoint *data)
    4719             : {
    4720           0 :     return _asn1_length(asn1_DistributionPoint, data);
    4721             : }
    4722             : 
    4723             : 
    4724             : void ASN1CALL
    4725           0 : free_DistributionPoint(DistributionPoint *data)
    4726             : {
    4727           0 :     _asn1_free_top(asn1_DistributionPoint, data);
    4728           0 : }
    4729             : 
    4730             : 
    4731             : int ASN1CALL
    4732           0 : copy_DistributionPoint(const DistributionPoint *from, DistributionPoint *to)
    4733             : {
    4734           0 :     return _asn1_copy_top(asn1_DistributionPoint, from, to);
    4735             : }
    4736             : 
    4737             : 
    4738             : char * ASN1CALL
    4739           0 : print_DistributionPoint(const DistributionPoint *data, int flags)
    4740             : {
    4741           0 :     return _asn1_print_top(asn1_DistributionPoint, flags, data);
    4742             : }
    4743             : 
    4744             : /* template_members: CRLDistributionPoints exp exp */
    4745             : /* generate_template_type: DistributionPoint_seofTstruct_16 */
    4746             : const struct asn1_template asn1_DistributionPoint_seofTstruct_16[] = {
    4747             : /* 0 */ { 0, sizeof(DistributionPoint), ((void *)(uintptr_t)1) },
    4748             : /* 1 */ { A1_OP_TYPE , 0, asn1_DistributionPoint }
    4749             : };
    4750             : /* generate_template_type: CRLDistributionPoints_tag__121 */
    4751             : const struct asn1_template asn1_CRLDistributionPoints_tag__121[] = {
    4752             : /* 0 */ { 0, sizeof(DistributionPoint), ((void *)(uintptr_t)1) },
    4753             : /* 1 */ { A1_OP_SEQOF, 0, asn1_DistributionPoint_seofTstruct_16 }
    4754             : };
    4755             : /* generate_template_type: CRLDistributionPoints */
    4756             : const struct asn1_template asn1_CRLDistributionPoints[] = {
    4757             : /* 0 */ { 0, sizeof(CRLDistributionPoints), ((void *)(uintptr_t)1) },
    4758             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_CRLDistributionPoints_tag__121 }
    4759             : };
    4760             : 
    4761             : int ASN1CALL
    4762           0 : decode_CRLDistributionPoints(const unsigned char *p, size_t len, CRLDistributionPoints *data, size_t *size)
    4763             : {
    4764           0 :     memset(data, 0, sizeof(*data));
    4765           0 :     return _asn1_decode_top(asn1_CRLDistributionPoints, 0|0, p, len, data, size);
    4766             : }
    4767             : 
    4768             : 
    4769             : int ASN1CALL
    4770           0 : encode_CRLDistributionPoints(unsigned char *p, size_t len, const CRLDistributionPoints *data, size_t *size)
    4771             : {
    4772           0 :     return _asn1_encode(asn1_CRLDistributionPoints, p, len, data, size);
    4773             : }
    4774             : 
    4775             : 
    4776             : size_t ASN1CALL
    4777           0 : length_CRLDistributionPoints(const CRLDistributionPoints *data)
    4778             : {
    4779           0 :     return _asn1_length(asn1_CRLDistributionPoints, data);
    4780             : }
    4781             : 
    4782             : 
    4783             : void ASN1CALL
    4784           0 : free_CRLDistributionPoints(CRLDistributionPoints *data)
    4785             : {
    4786           0 :     _asn1_free_top(asn1_CRLDistributionPoints, data);
    4787           0 : }
    4788             : 
    4789             : 
    4790             : int ASN1CALL
    4791           0 : copy_CRLDistributionPoints(const CRLDistributionPoints *from, CRLDistributionPoints *to)
    4792             : {
    4793           0 :     return _asn1_copy_top(asn1_CRLDistributionPoints, from, to);
    4794             : }
    4795             : 
    4796             : 
    4797             : char * ASN1CALL
    4798           0 : print_CRLDistributionPoints(const CRLDistributionPoints *data, int flags)
    4799             : {
    4800           0 :     return _asn1_print_top(asn1_CRLDistributionPoints, flags, data);
    4801             : }
    4802             : 
    4803             : int ASN1CALL
    4804           0 : add_CRLDistributionPoints(CRLDistributionPoints *data, const DistributionPoint *element)
    4805             : {
    4806           0 : int ret;
    4807           0 : void *ptr;
    4808             : 
    4809           0 : ptr = realloc(data->val, 
    4810           0 :         (data->len + 1) * sizeof(data->val[0]));
    4811           0 : if (ptr == NULL) return ENOMEM;
    4812           0 : data->val = ptr;
    4813             : 
    4814           0 : ret = copy_DistributionPoint(element, &data->val[data->len]);
    4815           0 : if (ret) return ret;
    4816           0 : data->len++;
    4817           0 : return 0;
    4818             : }
    4819             : 
    4820             : int ASN1CALL
    4821           0 : remove_CRLDistributionPoints(CRLDistributionPoints *data, unsigned int element)
    4822             : {
    4823           0 : void *ptr;
    4824             : 
    4825           0 : if (data->len == 0 || element >= data->len)
    4826           0 :         return ASN1_OVERRUN;
    4827           0 : free_DistributionPoint(&data->val[element]);
    4828           0 : data->len--;
    4829           0 : if (element < data->len)
    4830           0 :         memmove(&data->val[element], &data->val[element + 1], 
    4831           0 :                 sizeof(data->val[0]) * (data->len - element));
    4832           0 : ptr = realloc(data->val, data->len * sizeof(data->val[0]));
    4833           0 : if (ptr != NULL || data->len == 0) data->val = ptr;
    4834           0 : return 0;
    4835             : }
    4836             : 
    4837             : /* template_members: DSASigValue exp exp */
    4838             : /* tsequence: members isstruct: 1 */
    4839             : /* template_members: DSASigValue exp exp */
    4840             : /* generate_template_type: DSASigValue_tag_r_123 */
    4841             : /* template_members: DSASigValue exp exp */
    4842             : /* generate_template_type: DSASigValue_tag_s_124 */
    4843             : /* generate_template_type: DSASigValue_tag__122 */
    4844             : const struct asn1_template asn1_DSASigValue_tag__122[] = {
    4845             : /* 0 */ { 0, sizeof(struct DSASigValue), ((void *)(uintptr_t)5) },
    4846             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DSASigValue, r), asn1_CertificateSerialNumber_tag__15 },
    4847             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DSASigValue, s), asn1_CertificateSerialNumber_tag__15 },
    4848             : /* 3 */ { A1_OP_NAME, 0, "DSASigValue" },
    4849             : /* 4 */ { A1_OP_NAME, 0, "r" },
    4850             : /* 5 */ { A1_OP_NAME, 0, "s" }
    4851             : };
    4852             : /* generate_template_type: DSASigValue */
    4853             : const struct asn1_template asn1_DSASigValue[] = {
    4854             : /* 0 */ { 0, sizeof(DSASigValue), ((void *)(uintptr_t)1) },
    4855             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DSASigValue_tag__122 }
    4856             : };
    4857             : 
    4858             : int ASN1CALL
    4859           0 : decode_DSASigValue(const unsigned char *p, size_t len, DSASigValue *data, size_t *size)
    4860             : {
    4861           0 :     memset(data, 0, sizeof(*data));
    4862           0 :     return _asn1_decode_top(asn1_DSASigValue, 0|0, p, len, data, size);
    4863             : }
    4864             : 
    4865             : 
    4866             : int ASN1CALL
    4867           0 : encode_DSASigValue(unsigned char *p, size_t len, const DSASigValue *data, size_t *size)
    4868             : {
    4869           0 :     return _asn1_encode(asn1_DSASigValue, p, len, data, size);
    4870             : }
    4871             : 
    4872             : 
    4873             : size_t ASN1CALL
    4874           0 : length_DSASigValue(const DSASigValue *data)
    4875             : {
    4876           0 :     return _asn1_length(asn1_DSASigValue, data);
    4877             : }
    4878             : 
    4879             : 
    4880             : void ASN1CALL
    4881           0 : free_DSASigValue(DSASigValue *data)
    4882             : {
    4883           0 :     _asn1_free_top(asn1_DSASigValue, data);
    4884           0 : }
    4885             : 
    4886             : 
    4887             : int ASN1CALL
    4888           0 : copy_DSASigValue(const DSASigValue *from, DSASigValue *to)
    4889             : {
    4890           0 :     return _asn1_copy_top(asn1_DSASigValue, from, to);
    4891             : }
    4892             : 
    4893             : 
    4894             : char * ASN1CALL
    4895           0 : print_DSASigValue(const DSASigValue *data, int flags)
    4896             : {
    4897           0 :     return _asn1_print_top(asn1_DSASigValue, flags, data);
    4898             : }
    4899             : 
    4900             : /* template_members: DSAPublicKey exp exp */
    4901             : /* generate_template_type: DSAPublicKey_tag__125 */
    4902             : /* generate_template_type: DSAPublicKey */
    4903             : const struct asn1_template asn1_DSAPublicKey[] = {
    4904             : /* 0 */ { 0, sizeof(DSAPublicKey), ((void *)(uintptr_t)1) },
    4905             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_CertificateSerialNumber_tag__15 }
    4906             : };
    4907             : 
    4908             : int ASN1CALL
    4909           0 : decode_DSAPublicKey(const unsigned char *p, size_t len, DSAPublicKey *data, size_t *size)
    4910             : {
    4911           0 :     memset(data, 0, sizeof(*data));
    4912           0 :     return _asn1_decode_top(asn1_DSAPublicKey, 0|0, p, len, data, size);
    4913             : }
    4914             : 
    4915             : 
    4916             : int ASN1CALL
    4917           0 : encode_DSAPublicKey(unsigned char *p, size_t len, const DSAPublicKey *data, size_t *size)
    4918             : {
    4919           0 :     return _asn1_encode(asn1_DSAPublicKey, p, len, data, size);
    4920             : }
    4921             : 
    4922             : 
    4923             : size_t ASN1CALL
    4924           0 : length_DSAPublicKey(const DSAPublicKey *data)
    4925             : {
    4926           0 :     return _asn1_length(asn1_DSAPublicKey, data);
    4927             : }
    4928             : 
    4929             : 
    4930             : void ASN1CALL
    4931           0 : free_DSAPublicKey(DSAPublicKey *data)
    4932             : {
    4933           0 :     _asn1_free_top(asn1_DSAPublicKey, data);
    4934           0 : }
    4935             : 
    4936             : 
    4937             : int ASN1CALL
    4938           0 : copy_DSAPublicKey(const DSAPublicKey *from, DSAPublicKey *to)
    4939             : {
    4940           0 :     return _asn1_copy_top(asn1_DSAPublicKey, from, to);
    4941             : }
    4942             : 
    4943             : 
    4944             : char * ASN1CALL
    4945           0 : print_DSAPublicKey(const DSAPublicKey *data, int flags)
    4946             : {
    4947           0 :     return _asn1_print_top(asn1_DSAPublicKey, flags, data);
    4948             : }
    4949             : 
    4950             : /* template_members: DSAParams exp exp */
    4951             : /* tsequence: members isstruct: 1 */
    4952             : /* template_members: DSAParams exp exp */
    4953             : /* generate_template_type: DSAParams_tag_p_127 */
    4954             : /* template_members: DSAParams exp exp */
    4955             : /* generate_template_type: DSAParams_tag_q_128 */
    4956             : /* template_members: DSAParams exp exp */
    4957             : /* generate_template_type: DSAParams_tag_g_129 */
    4958             : /* generate_template_type: DSAParams_tag__126 */
    4959             : const struct asn1_template asn1_DSAParams_tag__126[] = {
    4960             : /* 0 */ { 0, sizeof(struct DSAParams), ((void *)(uintptr_t)7) },
    4961             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DSAParams, p), asn1_CertificateSerialNumber_tag__15 },
    4962             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DSAParams, q), asn1_CertificateSerialNumber_tag__15 },
    4963             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct DSAParams, g), asn1_CertificateSerialNumber_tag__15 },
    4964             : /* 4 */ { A1_OP_NAME, 0, "DSAParams" },
    4965             : /* 5 */ { A1_OP_NAME, 0, "p" },
    4966             : /* 6 */ { A1_OP_NAME, 0, "q" },
    4967             : /* 7 */ { A1_OP_NAME, 0, "g" }
    4968             : };
    4969             : /* generate_template_type: DSAParams */
    4970             : const struct asn1_template asn1_DSAParams[] = {
    4971             : /* 0 */ { 0, sizeof(DSAParams), ((void *)(uintptr_t)1) },
    4972             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DSAParams_tag__126 }
    4973             : };
    4974             : 
    4975             : int ASN1CALL
    4976           0 : decode_DSAParams(const unsigned char *p, size_t len, DSAParams *data, size_t *size)
    4977             : {
    4978           0 :     memset(data, 0, sizeof(*data));
    4979           0 :     return _asn1_decode_top(asn1_DSAParams, 0|0, p, len, data, size);
    4980             : }
    4981             : 
    4982             : 
    4983             : int ASN1CALL
    4984           0 : encode_DSAParams(unsigned char *p, size_t len, const DSAParams *data, size_t *size)
    4985             : {
    4986           0 :     return _asn1_encode(asn1_DSAParams, p, len, data, size);
    4987             : }
    4988             : 
    4989             : 
    4990             : size_t ASN1CALL
    4991           0 : length_DSAParams(const DSAParams *data)
    4992             : {
    4993           0 :     return _asn1_length(asn1_DSAParams, data);
    4994             : }
    4995             : 
    4996             : 
    4997             : void ASN1CALL
    4998           0 : free_DSAParams(DSAParams *data)
    4999             : {
    5000           0 :     _asn1_free_top(asn1_DSAParams, data);
    5001           0 : }
    5002             : 
    5003             : 
    5004             : int ASN1CALL
    5005           0 : copy_DSAParams(const DSAParams *from, DSAParams *to)
    5006             : {
    5007           0 :     return _asn1_copy_top(asn1_DSAParams, from, to);
    5008             : }
    5009             : 
    5010             : 
    5011             : char * ASN1CALL
    5012           0 : print_DSAParams(const DSAParams *data, int flags)
    5013             : {
    5014           0 :     return _asn1_print_top(asn1_DSAParams, flags, data);
    5015             : }
    5016             : 
    5017             : /* template_members: ECPoint exp exp */
    5018             : /* generate_template_type: ECPoint_tag__130 */
    5019             : /* generate_template_type: ECPoint */
    5020             : const struct asn1_template asn1_ECPoint[] = {
    5021             : /* 0 */ { 0, sizeof(ECPoint), ((void *)(uintptr_t)1) },
    5022             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), 0, asn1_Extension_tag_extnValue_25 }
    5023             : };
    5024             : 
    5025             : int ASN1CALL
    5026           0 : decode_ECPoint(const unsigned char *p, size_t len, ECPoint *data, size_t *size)
    5027             : {
    5028           0 :     memset(data, 0, sizeof(*data));
    5029           0 :     return _asn1_decode_top(asn1_ECPoint, 0|0, p, len, data, size);
    5030             : }
    5031             : 
    5032             : 
    5033             : int ASN1CALL
    5034           0 : encode_ECPoint(unsigned char *p, size_t len, const ECPoint *data, size_t *size)
    5035             : {
    5036           0 :     return _asn1_encode(asn1_ECPoint, p, len, data, size);
    5037             : }
    5038             : 
    5039             : 
    5040             : size_t ASN1CALL
    5041           0 : length_ECPoint(const ECPoint *data)
    5042             : {
    5043           0 :     return _asn1_length(asn1_ECPoint, data);
    5044             : }
    5045             : 
    5046             : 
    5047             : void ASN1CALL
    5048           0 : free_ECPoint(ECPoint *data)
    5049             : {
    5050           0 :     _asn1_free_top(asn1_ECPoint, data);
    5051           0 : }
    5052             : 
    5053             : 
    5054             : int ASN1CALL
    5055           0 : copy_ECPoint(const ECPoint *from, ECPoint *to)
    5056             : {
    5057           0 :     return _asn1_copy_top(asn1_ECPoint, from, to);
    5058             : }
    5059             : 
    5060             : 
    5061             : char * ASN1CALL
    5062           0 : print_ECPoint(const ECPoint *data, int flags)
    5063             : {
    5064           0 :     return _asn1_print_top(asn1_ECPoint, flags, data);
    5065             : }
    5066             : 
    5067             : /* template_members: heim_oid exp exp */
    5068             : /* generate_template_type: heim_oid_tag__131 */
    5069             : /* generate_template_type: ECParameters_choice_namedCurve */
    5070             : static const struct asn1_template asn1_choice_ECParameters_6[] = {
    5071             : /* 0 */ { 0, offsetof(ECParameters, element), ((void *)(uintptr_t)2) },
    5072             : /* 1 */ { choice_ECParameters_namedCurve, offsetof(ECParameters, u.namedCurve), asn1_heim_oid_tag__63 },
    5073             : /* 2 */ { 0, 0, "namedCurve" }
    5074             : };
    5075             : /* generate_template_type: ECParameters */
    5076             : const struct asn1_template asn1_ECParameters[] = {
    5077             : /* 0 */ { 0, sizeof(ECParameters), ((void *)(uintptr_t)1) },
    5078             : /* 1 */ { A1_OP_CHOICE, 0, asn1_choice_ECParameters_6 }
    5079             : };
    5080             : 
    5081             : int ASN1CALL
    5082           0 : decode_ECParameters(const unsigned char *p, size_t len, ECParameters *data, size_t *size)
    5083             : {
    5084           0 :     memset(data, 0, sizeof(*data));
    5085           0 :     return _asn1_decode_top(asn1_ECParameters, 0|0, p, len, data, size);
    5086             : }
    5087             : 
    5088             : 
    5089             : int ASN1CALL
    5090           0 : encode_ECParameters(unsigned char *p, size_t len, const ECParameters *data, size_t *size)
    5091             : {
    5092           0 :     return _asn1_encode(asn1_ECParameters, p, len, data, size);
    5093             : }
    5094             : 
    5095             : 
    5096             : size_t ASN1CALL
    5097           0 : length_ECParameters(const ECParameters *data)
    5098             : {
    5099           0 :     return _asn1_length(asn1_ECParameters, data);
    5100             : }
    5101             : 
    5102             : 
    5103             : void ASN1CALL
    5104           0 : free_ECParameters(ECParameters *data)
    5105             : {
    5106           0 :     _asn1_free_top(asn1_ECParameters, data);
    5107           0 : }
    5108             : 
    5109             : 
    5110             : int ASN1CALL
    5111           0 : copy_ECParameters(const ECParameters *from, ECParameters *to)
    5112             : {
    5113           0 :     return _asn1_copy_top(asn1_ECParameters, from, to);
    5114             : }
    5115             : 
    5116             : 
    5117             : char * ASN1CALL
    5118           0 : print_ECParameters(const ECParameters *data, int flags)
    5119             : {
    5120           0 :     return _asn1_print_top(asn1_ECParameters, flags, data);
    5121             : }
    5122             : 
    5123             : /* template_members: ECDSA_Sig_Value exp exp */
    5124             : /* tsequence: members isstruct: 1 */
    5125             : /* template_members: ECDSA_Sig_Value exp exp */
    5126             : /* generate_template_type: ECDSA_Sig_Value_tag_r_133 */
    5127             : /* template_members: ECDSA_Sig_Value exp exp */
    5128             : /* generate_template_type: ECDSA_Sig_Value_tag_s_134 */
    5129             : /* generate_template_type: ECDSA_Sig_Value_tag__132 */
    5130             : const struct asn1_template asn1_ECDSA_Sig_Value_tag__132[] = {
    5131             : /* 0 */ { 0, sizeof(struct ECDSA_Sig_Value), ((void *)(uintptr_t)5) },
    5132             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct ECDSA_Sig_Value, r), asn1_CertificateSerialNumber_tag__15 },
    5133             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct ECDSA_Sig_Value, s), asn1_CertificateSerialNumber_tag__15 },
    5134             : /* 3 */ { A1_OP_NAME, 0, "ECDSA_Sig_Value" },
    5135             : /* 4 */ { A1_OP_NAME, 0, "r" },
    5136             : /* 5 */ { A1_OP_NAME, 0, "s" }
    5137             : };
    5138             : /* generate_template_type: ECDSA_Sig_Value */
    5139             : const struct asn1_template asn1_ECDSA_Sig_Value[] = {
    5140             : /* 0 */ { 0, sizeof(ECDSA_Sig_Value), ((void *)(uintptr_t)1) },
    5141             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_ECDSA_Sig_Value_tag__132 }
    5142             : };
    5143             : 
    5144             : int ASN1CALL
    5145           0 : decode_ECDSA_Sig_Value(const unsigned char *p, size_t len, ECDSA_Sig_Value *data, size_t *size)
    5146             : {
    5147           0 :     memset(data, 0, sizeof(*data));
    5148           0 :     return _asn1_decode_top(asn1_ECDSA_Sig_Value, 0|0, p, len, data, size);
    5149             : }
    5150             : 
    5151             : 
    5152             : int ASN1CALL
    5153           0 : encode_ECDSA_Sig_Value(unsigned char *p, size_t len, const ECDSA_Sig_Value *data, size_t *size)
    5154             : {
    5155           0 :     return _asn1_encode(asn1_ECDSA_Sig_Value, p, len, data, size);
    5156             : }
    5157             : 
    5158             : 
    5159             : size_t ASN1CALL
    5160           0 : length_ECDSA_Sig_Value(const ECDSA_Sig_Value *data)
    5161             : {
    5162           0 :     return _asn1_length(asn1_ECDSA_Sig_Value, data);
    5163             : }
    5164             : 
    5165             : 
    5166             : void ASN1CALL
    5167           0 : free_ECDSA_Sig_Value(ECDSA_Sig_Value *data)
    5168             : {
    5169           0 :     _asn1_free_top(asn1_ECDSA_Sig_Value, data);
    5170           0 : }
    5171             : 
    5172             : 
    5173             : int ASN1CALL
    5174           0 : copy_ECDSA_Sig_Value(const ECDSA_Sig_Value *from, ECDSA_Sig_Value *to)
    5175             : {
    5176           0 :     return _asn1_copy_top(asn1_ECDSA_Sig_Value, from, to);
    5177             : }
    5178             : 
    5179             : 
    5180             : char * ASN1CALL
    5181           0 : print_ECDSA_Sig_Value(const ECDSA_Sig_Value *data, int flags)
    5182             : {
    5183           0 :     return _asn1_print_top(asn1_ECDSA_Sig_Value, flags, data);
    5184             : }
    5185             : 
    5186             : /* template_members: RSAPublicKey exp exp */
    5187             : /* tsequence: members isstruct: 1 */
    5188             : /* template_members: RSAPublicKey exp exp */
    5189             : /* generate_template_type: RSAPublicKey_tag_modulus_136 */
    5190             : /* template_members: RSAPublicKey exp exp */
    5191             : /* generate_template_type: RSAPublicKey_tag_publicExponent_137 */
    5192             : /* generate_template_type: RSAPublicKey_tag__135 */
    5193             : const struct asn1_template asn1_RSAPublicKey_tag__135[] = {
    5194             : /* 0 */ { 0, sizeof(struct RSAPublicKey), ((void *)(uintptr_t)5) },
    5195             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPublicKey, modulus), asn1_CertificateSerialNumber_tag__15 },
    5196             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPublicKey, publicExponent), asn1_CertificateSerialNumber_tag__15 },
    5197             : /* 3 */ { A1_OP_NAME, 0, "RSAPublicKey" },
    5198             : /* 4 */ { A1_OP_NAME, 0, "modulus" },
    5199             : /* 5 */ { A1_OP_NAME, 0, "publicExponent" }
    5200             : };
    5201             : /* generate_template_type: RSAPublicKey */
    5202             : const struct asn1_template asn1_RSAPublicKey[] = {
    5203             : /* 0 */ { 0, sizeof(RSAPublicKey), ((void *)(uintptr_t)1) },
    5204             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_RSAPublicKey_tag__135 }
    5205             : };
    5206             : 
    5207             : int ASN1CALL
    5208         320 : decode_RSAPublicKey(const unsigned char *p, size_t len, RSAPublicKey *data, size_t *size)
    5209             : {
    5210         320 :     memset(data, 0, sizeof(*data));
    5211         320 :     return _asn1_decode_top(asn1_RSAPublicKey, 0|0, p, len, data, size);
    5212             : }
    5213             : 
    5214             : 
    5215             : int ASN1CALL
    5216           0 : encode_RSAPublicKey(unsigned char *p, size_t len, const RSAPublicKey *data, size_t *size)
    5217             : {
    5218           0 :     return _asn1_encode(asn1_RSAPublicKey, p, len, data, size);
    5219             : }
    5220             : 
    5221             : 
    5222             : size_t ASN1CALL
    5223           0 : length_RSAPublicKey(const RSAPublicKey *data)
    5224             : {
    5225           0 :     return _asn1_length(asn1_RSAPublicKey, data);
    5226             : }
    5227             : 
    5228             : 
    5229             : void ASN1CALL
    5230         320 : free_RSAPublicKey(RSAPublicKey *data)
    5231             : {
    5232         320 :     _asn1_free_top(asn1_RSAPublicKey, data);
    5233         320 : }
    5234             : 
    5235             : 
    5236             : int ASN1CALL
    5237           0 : copy_RSAPublicKey(const RSAPublicKey *from, RSAPublicKey *to)
    5238             : {
    5239           0 :     return _asn1_copy_top(asn1_RSAPublicKey, from, to);
    5240             : }
    5241             : 
    5242             : 
    5243             : char * ASN1CALL
    5244           0 : print_RSAPublicKey(const RSAPublicKey *data, int flags)
    5245             : {
    5246           0 :     return _asn1_print_top(asn1_RSAPublicKey, flags, data);
    5247             : }
    5248             : 
    5249             : /* template_members: RSAPrivateKey exp exp */
    5250             : /* tsequence: members isstruct: 1 */
    5251             : /* template_members: RSAPrivateKey exp exp */
    5252             : /* generate_template_type: RSAPrivateKey_tag_version_139 */
    5253             : /* template_members: RSAPrivateKey exp exp */
    5254             : /* generate_template_type: RSAPrivateKey_tag_modulus_140 */
    5255             : /* template_members: RSAPrivateKey exp exp */
    5256             : /* generate_template_type: RSAPrivateKey_tag_publicExponent_141 */
    5257             : /* template_members: RSAPrivateKey exp exp */
    5258             : /* generate_template_type: RSAPrivateKey_tag_privateExponent_142 */
    5259             : /* template_members: RSAPrivateKey exp exp */
    5260             : /* generate_template_type: RSAPrivateKey_tag_prime1_143 */
    5261             : /* template_members: RSAPrivateKey exp exp */
    5262             : /* generate_template_type: RSAPrivateKey_tag_prime2_144 */
    5263             : /* template_members: RSAPrivateKey exp exp */
    5264             : /* generate_template_type: RSAPrivateKey_tag_exponent1_145 */
    5265             : /* template_members: RSAPrivateKey exp exp */
    5266             : /* generate_template_type: RSAPrivateKey_tag_exponent2_146 */
    5267             : /* template_members: RSAPrivateKey exp exp */
    5268             : /* generate_template_type: RSAPrivateKey_tag_coefficient_147 */
    5269             : /* generate_template_type: RSAPrivateKey_tag__138 */
    5270             : const struct asn1_template asn1_RSAPrivateKey_tag__138[] = {
    5271             : /* 0 */ { 0, sizeof(struct RSAPrivateKey), ((void *)(uintptr_t)19) },
    5272             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, version), asn1_BasicConstraints_tag_pathLenConstraint_100 },
    5273             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, modulus), asn1_CertificateSerialNumber_tag__15 },
    5274             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, publicExponent), asn1_CertificateSerialNumber_tag__15 },
    5275             : /* 4 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, privateExponent), asn1_CertificateSerialNumber_tag__15 },
    5276             : /* 5 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, prime1), asn1_CertificateSerialNumber_tag__15 },
    5277             : /* 6 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, prime2), asn1_CertificateSerialNumber_tag__15 },
    5278             : /* 7 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, exponent1), asn1_CertificateSerialNumber_tag__15 },
    5279             : /* 8 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, exponent2), asn1_CertificateSerialNumber_tag__15 },
    5280             : /* 9 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct RSAPrivateKey, coefficient), asn1_CertificateSerialNumber_tag__15 },
    5281             : /* 10 */ { A1_OP_NAME, 0, "RSAPrivateKey" },
    5282             : /* 11 */ { A1_OP_NAME, 0, "version" },
    5283             : /* 12 */ { A1_OP_NAME, 0, "modulus" },
    5284             : /* 13 */ { A1_OP_NAME, 0, "publicExponent" },
    5285             : /* 14 */ { A1_OP_NAME, 0, "privateExponent" },
    5286             : /* 15 */ { A1_OP_NAME, 0, "prime1" },
    5287             : /* 16 */ { A1_OP_NAME, 0, "prime2" },
    5288             : /* 17 */ { A1_OP_NAME, 0, "exponent1" },
    5289             : /* 18 */ { A1_OP_NAME, 0, "exponent2" },
    5290             : /* 19 */ { A1_OP_NAME, 0, "coefficient" }
    5291             : };
    5292             : /* generate_template_type: RSAPrivateKey */
    5293             : const struct asn1_template asn1_RSAPrivateKey[] = {
    5294             : /* 0 */ { 0, sizeof(RSAPrivateKey), ((void *)(uintptr_t)1) },
    5295             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_RSAPrivateKey_tag__138 }
    5296             : };
    5297             : 
    5298             : int ASN1CALL
    5299          74 : decode_RSAPrivateKey(const unsigned char *p, size_t len, RSAPrivateKey *data, size_t *size)
    5300             : {
    5301          74 :     memset(data, 0, sizeof(*data));
    5302          74 :     return _asn1_decode_top(asn1_RSAPrivateKey, 0|0, p, len, data, size);
    5303             : }
    5304             : 
    5305             : 
    5306             : int ASN1CALL
    5307           0 : encode_RSAPrivateKey(unsigned char *p, size_t len, const RSAPrivateKey *data, size_t *size)
    5308             : {
    5309           0 :     return _asn1_encode(asn1_RSAPrivateKey, p, len, data, size);
    5310             : }
    5311             : 
    5312             : 
    5313             : size_t ASN1CALL
    5314           0 : length_RSAPrivateKey(const RSAPrivateKey *data)
    5315             : {
    5316           0 :     return _asn1_length(asn1_RSAPrivateKey, data);
    5317             : }
    5318             : 
    5319             : 
    5320             : void ASN1CALL
    5321          74 : free_RSAPrivateKey(RSAPrivateKey *data)
    5322             : {
    5323          74 :     _asn1_free_top(asn1_RSAPrivateKey, data);
    5324          74 : }
    5325             : 
    5326             : 
    5327             : int ASN1CALL
    5328           0 : copy_RSAPrivateKey(const RSAPrivateKey *from, RSAPrivateKey *to)
    5329             : {
    5330           0 :     return _asn1_copy_top(asn1_RSAPrivateKey, from, to);
    5331             : }
    5332             : 
    5333             : 
    5334             : char * ASN1CALL
    5335           0 : print_RSAPrivateKey(const RSAPrivateKey *data, int flags)
    5336             : {
    5337           0 :     return _asn1_print_top(asn1_RSAPrivateKey, flags, data);
    5338             : }
    5339             : 
    5340             : /* template_members: DigestInfo exp exp */
    5341             : /* tsequence: members isstruct: 1 */
    5342             : /* template_members: DigestInfo exp exp */
    5343             : /* generate_template_type: DigestInfo_tag_digest_149 */
    5344             : /* generate_template_type: DigestInfo_tag__148 */
    5345             : const struct asn1_template asn1_DigestInfo_tag__148[] = {
    5346             : /* 0 */ { 0, sizeof(struct DigestInfo), ((void *)(uintptr_t)5) },
    5347             : /* 1 */ { A1_OP_TYPE , offsetof(struct DigestInfo, digestAlgorithm), asn1_AlgorithmIdentifier },
    5348             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), offsetof(struct DigestInfo, digest), asn1_Extension_tag_extnValue_25 },
    5349             : /* 3 */ { A1_OP_NAME, 0, "DigestInfo" },
    5350             : /* 4 */ { A1_OP_NAME, 0, "digestAlgorithm" },
    5351             : /* 5 */ { A1_OP_NAME, 0, "digest" }
    5352             : };
    5353             : /* generate_template_type: DigestInfo */
    5354             : const struct asn1_template asn1_DigestInfo[] = {
    5355             : /* 0 */ { 0, sizeof(DigestInfo), ((void *)(uintptr_t)1) },
    5356             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_DigestInfo_tag__148 }
    5357             : };
    5358             : 
    5359             : int ASN1CALL
    5360         225 : decode_DigestInfo(const unsigned char *p, size_t len, DigestInfo *data, size_t *size)
    5361             : {
    5362         225 :     memset(data, 0, sizeof(*data));
    5363         225 :     return _asn1_decode_top(asn1_DigestInfo, 0|0, p, len, data, size);
    5364             : }
    5365             : 
    5366             : 
    5367             : int ASN1CALL
    5368          65 : encode_DigestInfo(unsigned char *p, size_t len, const DigestInfo *data, size_t *size)
    5369             : {
    5370          65 :     return _asn1_encode(asn1_DigestInfo, p, len, data, size);
    5371             : }
    5372             : 
    5373             : 
    5374             : size_t ASN1CALL
    5375          65 : length_DigestInfo(const DigestInfo *data)
    5376             : {
    5377          65 :     return _asn1_length(asn1_DigestInfo, data);
    5378             : }
    5379             : 
    5380             : 
    5381             : void ASN1CALL
    5382         290 : free_DigestInfo(DigestInfo *data)
    5383             : {
    5384         290 :     _asn1_free_top(asn1_DigestInfo, data);
    5385         290 : }
    5386             : 
    5387             : 
    5388             : int ASN1CALL
    5389           0 : copy_DigestInfo(const DigestInfo *from, DigestInfo *to)
    5390             : {
    5391           0 :     return _asn1_copy_top(asn1_DigestInfo, from, to);
    5392             : }
    5393             : 
    5394             : 
    5395             : char * ASN1CALL
    5396           0 : print_DigestInfo(const DigestInfo *data, int flags)
    5397             : {
    5398           0 :     return _asn1_print_top(asn1_DigestInfo, flags, data);
    5399             : }
    5400             : 
    5401             : /* template_members: TBSCRLCertList exp exp */
    5402             : /* tsequence: members isstruct: 1 */
    5403             : /* template_members: TBSCRLCertList exp exp */
    5404             : /* template_members: TBSCRLCertList_revokedCertificates_val exp exp */
    5405             : /* tsequence: members isstruct: 1 */
    5406             : /* generate_template_type: TBSCRLCertList_revokedCertificates_val_tag__152 */
    5407             : const struct asn1_template asn1_TBSCRLCertList_revokedCertificates_val_tag__152[] = {
    5408             : /* 0 */ { 0, sizeof(struct TBSCRLCertList_revokedCertificates_val), ((void *)(uintptr_t)7) },
    5409             : /* 1 */ { A1_OP_TYPE , offsetof(struct TBSCRLCertList_revokedCertificates_val, userCertificate), asn1_CertificateSerialNumber },
    5410             : /* 2 */ { A1_OP_TYPE , offsetof(struct TBSCRLCertList_revokedCertificates_val, revocationDate), asn1_Time },
    5411             : /* 3 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct TBSCRLCertList_revokedCertificates_val, crlEntryExtensions), asn1_Extensions },
    5412             : /* 4 */ { A1_OP_NAME, 0, "TBSCRLCertList_revokedCertificates_val" },
    5413             : /* 5 */ { A1_OP_NAME, 0, "userCertificate" },
    5414             : /* 6 */ { A1_OP_NAME, 0, "revocationDate" },
    5415             : /* 7 */ { A1_OP_NAME, 0, "crlEntryExtensions" }
    5416             : };
    5417             : /* generate_template_type: TBSCRLCertList_seofTstruct_17 */
    5418             : const struct asn1_template asn1_TBSCRLCertList_seofTstruct_17[] = {
    5419             : /* 0 */ { 0, sizeof(struct TBSCRLCertList_revokedCertificates_val), ((void *)(uintptr_t)1) },
    5420             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TBSCRLCertList_revokedCertificates_val_tag__152 }
    5421             : };
    5422             : /* generate_template_type: TBSCRLCertList_tag_revokedCertificates_151 */
    5423             : const struct asn1_template asn1_TBSCRLCertList_tag_revokedCertificates_151[] = {
    5424             : /* 0 */ { 0, sizeof(struct TBSCRLCertList_revokedCertificates), ((void *)(uintptr_t)1) },
    5425             : /* 1 */ { A1_OP_SEQOF, 0, asn1_TBSCRLCertList_seofTstruct_17 }
    5426             : };
    5427             : /* template_members: TBSCRLCertList exp exp */
    5428             : /* generate_template_type: TBSCRLCertList_tag_crlExtensions_153 */
    5429             : /* generate_template_type: TBSCRLCertList_tag__150 */
    5430             : const struct asn1_template asn1_TBSCRLCertList_tag__150[] = {
    5431             : /* 0 */ { 0, sizeof(struct TBSCRLCertList), ((void *)(uintptr_t)15) },
    5432             : /* 1 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct TBSCRLCertList, version), asn1_Version },
    5433             : /* 2 */ { A1_OP_TYPE , offsetof(struct TBSCRLCertList, signature), asn1_AlgorithmIdentifier },
    5434             : /* 3 */ { A1_OP_TYPE , offsetof(struct TBSCRLCertList, issuer), asn1_Name },
    5435             : /* 4 */ { A1_OP_TYPE , offsetof(struct TBSCRLCertList, thisUpdate), asn1_Time },
    5436             : /* 5 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct TBSCRLCertList, nextUpdate), asn1_Time },
    5437             : /* 6 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence)|A1_FLAG_OPTIONAL, offsetof(struct TBSCRLCertList, revokedCertificates), asn1_TBSCRLCertList_tag_revokedCertificates_151 },
    5438             : /* 7 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_OPTIONAL, offsetof(struct TBSCRLCertList, crlExtensions), asn1_TBSCertificate_tag_extensions_33 },
    5439             : /* 8 */ { A1_OP_NAME, 0, "TBSCRLCertList" },
    5440             : /* 9 */ { A1_OP_NAME, 0, "version" },
    5441             : /* 10 */ { A1_OP_NAME, 0, "signature" },
    5442             : /* 11 */ { A1_OP_NAME, 0, "issuer" },
    5443             : /* 12 */ { A1_OP_NAME, 0, "thisUpdate" },
    5444             : /* 13 */ { A1_OP_NAME, 0, "nextUpdate" },
    5445             : /* 14 */ { A1_OP_NAME, 0, "revokedCertificates" },
    5446             : /* 15 */ { A1_OP_NAME, 0, "crlExtensions" }
    5447             : };
    5448             : /* generate_template_type: TBSCRLCertList */
    5449             : const struct asn1_template asn1_TBSCRLCertList[] = {
    5450             : /* 0 */ { 0|A1_HF_PRESERVE, sizeof(TBSCRLCertList), ((void *)(uintptr_t)1) },
    5451             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TBSCRLCertList_tag__150 }
    5452             : };
    5453             : 
    5454             : int ASN1CALL
    5455           0 : decode_TBSCRLCertList(const unsigned char *p, size_t len, TBSCRLCertList *data, size_t *size)
    5456             : {
    5457           0 :     memset(data, 0, sizeof(*data));
    5458           0 :     return _asn1_decode_top(asn1_TBSCRLCertList, 0|0, p, len, data, size);
    5459             : }
    5460             : 
    5461             : 
    5462             : int ASN1CALL
    5463           0 : encode_TBSCRLCertList(unsigned char *p, size_t len, const TBSCRLCertList *data, size_t *size)
    5464             : {
    5465           0 :     return _asn1_encode(asn1_TBSCRLCertList, p, len, data, size);
    5466             : }
    5467             : 
    5468             : 
    5469             : size_t ASN1CALL
    5470           0 : length_TBSCRLCertList(const TBSCRLCertList *data)
    5471             : {
    5472           0 :     return _asn1_length(asn1_TBSCRLCertList, data);
    5473             : }
    5474             : 
    5475             : 
    5476             : void ASN1CALL
    5477           0 : free_TBSCRLCertList(TBSCRLCertList *data)
    5478             : {
    5479           0 :     _asn1_free_top(asn1_TBSCRLCertList, data);
    5480           0 : }
    5481             : 
    5482             : 
    5483             : int ASN1CALL
    5484           0 : copy_TBSCRLCertList(const TBSCRLCertList *from, TBSCRLCertList *to)
    5485             : {
    5486           0 :     return _asn1_copy_top(asn1_TBSCRLCertList, from, to);
    5487             : }
    5488             : 
    5489             : 
    5490             : char * ASN1CALL
    5491           0 : print_TBSCRLCertList(const TBSCRLCertList *data, int flags)
    5492             : {
    5493           0 :     return _asn1_print_top(asn1_TBSCRLCertList, flags, data);
    5494             : }
    5495             : 
    5496             : /* template_members: CRLCertificateList exp exp */
    5497             : /* tsequence: members isstruct: 1 */
    5498             : /* template_members: CRLCertificateList exp exp */
    5499             : /* generate_template_type: CRLCertificateList_tag_signatureValue_155 */
    5500             : const struct asn1_template asn1_CRLCertificateList_tag_signatureValue_155[] = {
    5501             : /* 0 */ { 0, sizeof(CRLCertificateList), ((void *)(uintptr_t)1) },
    5502             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    5503             : };
    5504             : /* generate_template_type: CRLCertificateList_tag__154 */
    5505             : const struct asn1_template asn1_CRLCertificateList_tag__154[] = {
    5506             : /* 0 */ { 0, sizeof(struct CRLCertificateList), ((void *)(uintptr_t)7) },
    5507             : /* 1 */ { A1_OP_TYPE , offsetof(struct CRLCertificateList, tbsCertList), asn1_TBSCRLCertList },
    5508             : /* 2 */ { A1_OP_TYPE , offsetof(struct CRLCertificateList, signatureAlgorithm), asn1_AlgorithmIdentifier },
    5509             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString), offsetof(struct CRLCertificateList, signatureValue), asn1_CRLCertificateList_tag_signatureValue_155 },
    5510             : /* 4 */ { A1_OP_NAME, 0, "CRLCertificateList" },
    5511             : /* 5 */ { A1_OP_NAME, 0, "tbsCertList" },
    5512             : /* 6 */ { A1_OP_NAME, 0, "signatureAlgorithm" },
    5513             : /* 7 */ { A1_OP_NAME, 0, "signatureValue" }
    5514             : };
    5515             : /* generate_template_type: CRLCertificateList */
    5516             : const struct asn1_template asn1_CRLCertificateList[] = {
    5517             : /* 0 */ { 0, sizeof(CRLCertificateList), ((void *)(uintptr_t)1) },
    5518             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_CRLCertificateList_tag__154 }
    5519             : };
    5520             : 
    5521             : int ASN1CALL
    5522          57 : decode_CRLCertificateList(const unsigned char *p, size_t len, CRLCertificateList *data, size_t *size)
    5523             : {
    5524          57 :     memset(data, 0, sizeof(*data));
    5525          57 :     return _asn1_decode_top(asn1_CRLCertificateList, 0|0, p, len, data, size);
    5526             : }
    5527             : 
    5528             : 
    5529             : int ASN1CALL
    5530           0 : encode_CRLCertificateList(unsigned char *p, size_t len, const CRLCertificateList *data, size_t *size)
    5531             : {
    5532           0 :     return _asn1_encode(asn1_CRLCertificateList, p, len, data, size);
    5533             : }
    5534             : 
    5535             : 
    5536             : size_t ASN1CALL
    5537           0 : length_CRLCertificateList(const CRLCertificateList *data)
    5538             : {
    5539           0 :     return _asn1_length(asn1_CRLCertificateList, data);
    5540             : }
    5541             : 
    5542             : 
    5543             : void ASN1CALL
    5544           3 : free_CRLCertificateList(CRLCertificateList *data)
    5545             : {
    5546           3 :     _asn1_free_top(asn1_CRLCertificateList, data);
    5547           3 : }
    5548             : 
    5549             : 
    5550             : int ASN1CALL
    5551           0 : copy_CRLCertificateList(const CRLCertificateList *from, CRLCertificateList *to)
    5552             : {
    5553           0 :     return _asn1_copy_top(asn1_CRLCertificateList, from, to);
    5554             : }
    5555             : 
    5556             : 
    5557             : char * ASN1CALL
    5558           0 : print_CRLCertificateList(const CRLCertificateList *data, int flags)
    5559             : {
    5560           0 :     return _asn1_print_top(asn1_CRLCertificateList, flags, data);
    5561             : }
    5562             : 
    5563             : /* template_members: CRLReason exp exp */
    5564             : const struct asn1_template asn1_CRLReason_enum_names[] = {
    5565             : /* 0 */ { 0, 0, ((void *)(uintptr_t)10) },
    5566             : /* 1 */ { A1_OP_NAME, 0, "unspecified" },
    5567             : /* 2 */ { A1_OP_NAME, 1, "keyCompromise" },
    5568             : /* 3 */ { A1_OP_NAME, 2, "cACompromise" },
    5569             : /* 4 */ { A1_OP_NAME, 3, "affiliationChanged" },
    5570             : /* 5 */ { A1_OP_NAME, 4, "superseded" },
    5571             : /* 6 */ { A1_OP_NAME, 5, "cessationOfOperation" },
    5572             : /* 7 */ { A1_OP_NAME, 6, "certificateHold" },
    5573             : /* 8 */ { A1_OP_NAME, 8, "removeFromCRL" },
    5574             : /* 9 */ { A1_OP_NAME, 9, "privilegeWithdrawn" },
    5575             : /* 10 */ { A1_OP_NAME, 10, "aACompromise" }
    5576             : };
    5577             : /* generate_template_type: CRLReason_tag__156 */
    5578             : const struct asn1_template asn1_CRLReason_tag__156[] = {
    5579             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    5580             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_CRLReason_enum_names }
    5581             : };
    5582             : /* generate_template_type: CRLReason */
    5583             : const struct asn1_template asn1_CRLReason[] = {
    5584             : /* 0 */ { 0, sizeof(CRLReason), ((void *)(uintptr_t)1) },
    5585             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_CRLReason_tag__156 }
    5586             : };
    5587             : 
    5588             : int ASN1CALL
    5589           0 : decode_CRLReason(const unsigned char *p, size_t len, CRLReason *data, size_t *size)
    5590             : {
    5591           0 :     memset(data, 0, sizeof(*data));
    5592           0 :     return _asn1_decode_top(asn1_CRLReason, 0|0, p, len, data, size);
    5593             : }
    5594             : 
    5595             : 
    5596             : int ASN1CALL
    5597           0 : encode_CRLReason(unsigned char *p, size_t len, const CRLReason *data, size_t *size)
    5598             : {
    5599           0 :     return _asn1_encode(asn1_CRLReason, p, len, data, size);
    5600             : }
    5601             : 
    5602             : 
    5603             : size_t ASN1CALL
    5604           0 : length_CRLReason(const CRLReason *data)
    5605             : {
    5606           0 :     return _asn1_length(asn1_CRLReason, data);
    5607             : }
    5608             : 
    5609             : 
    5610             : void ASN1CALL
    5611           0 : free_CRLReason(CRLReason *data)
    5612             : {
    5613           0 :     _asn1_free_top(asn1_CRLReason, data);
    5614           0 : }
    5615             : 
    5616             : 
    5617             : int ASN1CALL
    5618           0 : copy_CRLReason(const CRLReason *from, CRLReason *to)
    5619             : {
    5620           0 :     return _asn1_copy_top(asn1_CRLReason, from, to);
    5621             : }
    5622             : 
    5623             : 
    5624             : char * ASN1CALL
    5625           0 : print_CRLReason(const CRLReason *data, int flags)
    5626             : {
    5627           0 :     return _asn1_print_top(asn1_CRLReason, flags, data);
    5628             : }
    5629             : 
    5630             : /* template_members: PKIXXmppAddr exp exp */
    5631             : /* generate_template_type: PKIXXmppAddr_tag__157 */
    5632             : /* generate_template_type: PKIXXmppAddr */
    5633             : const struct asn1_template asn1_PKIXXmppAddr[] = {
    5634             : /* 0 */ { 0, sizeof(PKIXXmppAddr), ((void *)(uintptr_t)1) },
    5635             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String), 0, asn1_heim_utf8_string_tag__8 }
    5636             : };
    5637             : 
    5638             : int ASN1CALL
    5639           0 : decode_PKIXXmppAddr(const unsigned char *p, size_t len, PKIXXmppAddr *data, size_t *size)
    5640             : {
    5641           0 :     memset(data, 0, sizeof(*data));
    5642           0 :     return _asn1_decode_top(asn1_PKIXXmppAddr, 0|0, p, len, data, size);
    5643             : }
    5644             : 
    5645             : 
    5646             : int ASN1CALL
    5647           0 : encode_PKIXXmppAddr(unsigned char *p, size_t len, const PKIXXmppAddr *data, size_t *size)
    5648             : {
    5649           0 :     return _asn1_encode(asn1_PKIXXmppAddr, p, len, data, size);
    5650             : }
    5651             : 
    5652             : 
    5653             : size_t ASN1CALL
    5654           0 : length_PKIXXmppAddr(const PKIXXmppAddr *data)
    5655             : {
    5656           0 :     return _asn1_length(asn1_PKIXXmppAddr, data);
    5657             : }
    5658             : 
    5659             : 
    5660             : void ASN1CALL
    5661           0 : free_PKIXXmppAddr(PKIXXmppAddr *data)
    5662             : {
    5663           0 :     _asn1_free_top(asn1_PKIXXmppAddr, data);
    5664           0 : }
    5665             : 
    5666             : 
    5667             : int ASN1CALL
    5668           0 : copy_PKIXXmppAddr(const PKIXXmppAddr *from, PKIXXmppAddr *to)
    5669             : {
    5670           0 :     return _asn1_copy_top(asn1_PKIXXmppAddr, from, to);
    5671             : }
    5672             : 
    5673             : 
    5674             : char * ASN1CALL
    5675           0 : print_PKIXXmppAddr(const PKIXXmppAddr *data, int flags)
    5676             : {
    5677           0 :     return _asn1_print_top(asn1_PKIXXmppAddr, flags, data);
    5678             : }
    5679             : 
    5680             : /* template_members: SRVName exp exp */
    5681             : /* generate_template_type: SRVName_tag__158 */
    5682             : /* generate_template_type: SRVName */
    5683             : const struct asn1_template asn1_SRVName[] = {
    5684             : /* 0 */ { 0, sizeof(SRVName), ((void *)(uintptr_t)1) },
    5685             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), 0, asn1_heim_ia5_string_tag__4 }
    5686             : };
    5687             : 
    5688             : int ASN1CALL
    5689           0 : decode_SRVName(const unsigned char *p, size_t len, SRVName *data, size_t *size)
    5690             : {
    5691           0 :     memset(data, 0, sizeof(*data));
    5692           0 :     return _asn1_decode_top(asn1_SRVName, 0|0, p, len, data, size);
    5693             : }
    5694             : 
    5695             : 
    5696             : int ASN1CALL
    5697           0 : encode_SRVName(unsigned char *p, size_t len, const SRVName *data, size_t *size)
    5698             : {
    5699           0 :     return _asn1_encode(asn1_SRVName, p, len, data, size);
    5700             : }
    5701             : 
    5702             : 
    5703             : size_t ASN1CALL
    5704           0 : length_SRVName(const SRVName *data)
    5705             : {
    5706           0 :     return _asn1_length(asn1_SRVName, data);
    5707             : }
    5708             : 
    5709             : 
    5710             : void ASN1CALL
    5711           0 : free_SRVName(SRVName *data)
    5712             : {
    5713           0 :     _asn1_free_top(asn1_SRVName, data);
    5714           0 : }
    5715             : 
    5716             : 
    5717             : int ASN1CALL
    5718           0 : copy_SRVName(const SRVName *from, SRVName *to)
    5719             : {
    5720           0 :     return _asn1_copy_top(asn1_SRVName, from, to);
    5721             : }
    5722             : 
    5723             : 
    5724             : char * ASN1CALL
    5725           0 : print_SRVName(const SRVName *data, int flags)
    5726             : {
    5727           0 :     return _asn1_print_top(asn1_SRVName, flags, data);
    5728             : }
    5729             : 
    5730             : /* template_members: HardwareModuleName exp exp */
    5731             : /* tsequence: members isstruct: 1 */
    5732             : /* template_members: HardwareModuleName exp exp */
    5733             : /* generate_template_type: HardwareModuleName_tag_hwType_160 */
    5734             : /* template_members: HardwareModuleName exp exp */
    5735             : /* generate_template_type: HardwareModuleName_tag_hwSerialNum_161 */
    5736             : /* generate_template_type: HardwareModuleName_tag__159 */
    5737             : const struct asn1_template asn1_HardwareModuleName_tag__159[] = {
    5738             : /* 0 */ { 0, sizeof(struct HardwareModuleName), ((void *)(uintptr_t)5) },
    5739             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct HardwareModuleName, hwType), asn1_AttributeType_tag__1 },
    5740             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString), offsetof(struct HardwareModuleName, hwSerialNum), asn1_Extension_tag_extnValue_25 },
    5741             : /* 3 */ { A1_OP_NAME, 0, "HardwareModuleName" },
    5742             : /* 4 */ { A1_OP_NAME, 0, "hwType" },
    5743             : /* 5 */ { A1_OP_NAME, 0, "hwSerialNum" }
    5744             : };
    5745             : /* generate_template_type: HardwareModuleName */
    5746             : const struct asn1_template asn1_HardwareModuleName[] = {
    5747             : /* 0 */ { 0, sizeof(HardwareModuleName), ((void *)(uintptr_t)1) },
    5748             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_HardwareModuleName_tag__159 }
    5749             : };
    5750             : 
    5751             : int ASN1CALL
    5752           0 : decode_HardwareModuleName(const unsigned char *p, size_t len, HardwareModuleName *data, size_t *size)
    5753             : {
    5754           0 :     memset(data, 0, sizeof(*data));
    5755           0 :     return _asn1_decode_top(asn1_HardwareModuleName, 0|0, p, len, data, size);
    5756             : }
    5757             : 
    5758             : 
    5759             : int ASN1CALL
    5760           0 : encode_HardwareModuleName(unsigned char *p, size_t len, const HardwareModuleName *data, size_t *size)
    5761             : {
    5762           0 :     return _asn1_encode(asn1_HardwareModuleName, p, len, data, size);
    5763             : }
    5764             : 
    5765             : 
    5766             : size_t ASN1CALL
    5767           0 : length_HardwareModuleName(const HardwareModuleName *data)
    5768             : {
    5769           0 :     return _asn1_length(asn1_HardwareModuleName, data);
    5770             : }
    5771             : 
    5772             : 
    5773             : void ASN1CALL
    5774           0 : free_HardwareModuleName(HardwareModuleName *data)
    5775             : {
    5776           0 :     _asn1_free_top(asn1_HardwareModuleName, data);
    5777           0 : }
    5778             : 
    5779             : 
    5780             : int ASN1CALL
    5781           0 : copy_HardwareModuleName(const HardwareModuleName *from, HardwareModuleName *to)
    5782             : {
    5783           0 :     return _asn1_copy_top(asn1_HardwareModuleName, from, to);
    5784             : }
    5785             : 
    5786             : 
    5787             : char * ASN1CALL
    5788           0 : print_HardwareModuleName(const HardwareModuleName *data, int flags)
    5789             : {
    5790           0 :     return _asn1_print_top(asn1_HardwareModuleName, flags, data);
    5791             : }
    5792             : 
    5793             : /* template_members: KRB5PrincipalName exp exp */
    5794             : /* tsequence: members isstruct: 1 */
    5795             : /* template_members: KRB5PrincipalName exp exp */
    5796             : /* generate_template_type: KRB5PrincipalName_tag_realm_163 */
    5797             : const struct asn1_template asn1_KRB5PrincipalName_tag_realm_163[] = {
    5798             : /* 0 */ { 0, sizeof(Realm), ((void *)(uintptr_t)1) },
    5799             : /* 1 */ { A1_OP_TYPE_EXTERN , 0, &asn1_extern_Realm}
    5800             : };
    5801             : /* template_members: KRB5PrincipalName exp exp */
    5802             : /* generate_template_type: KRB5PrincipalName_tag_principalName_164 */
    5803             : const struct asn1_template asn1_KRB5PrincipalName_tag_principalName_164[] = {
    5804             : /* 0 */ { 0, sizeof(PrincipalName), ((void *)(uintptr_t)1) },
    5805             : /* 1 */ { A1_OP_TYPE_EXTERN , 0, &asn1_extern_PrincipalName}
    5806             : };
    5807             : /* generate_template_type: KRB5PrincipalName_tag__162 */
    5808             : const struct asn1_template asn1_KRB5PrincipalName_tag__162[] = {
    5809             : /* 0 */ { 0, sizeof(struct KRB5PrincipalName), ((void *)(uintptr_t)5) },
    5810             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0), offsetof(struct KRB5PrincipalName, realm), asn1_KRB5PrincipalName_tag_realm_163 },
    5811             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,1), offsetof(struct KRB5PrincipalName, principalName), asn1_KRB5PrincipalName_tag_principalName_164 },
    5812             : /* 3 */ { A1_OP_NAME, 0, "KRB5PrincipalName" },
    5813             : /* 4 */ { A1_OP_NAME, 0, "realm" },
    5814             : /* 5 */ { A1_OP_NAME, 0, "principalName" }
    5815             : };
    5816             : /* generate_template_type: KRB5PrincipalName */
    5817             : const struct asn1_template asn1_KRB5PrincipalName[] = {
    5818             : /* 0 */ { 0, sizeof(KRB5PrincipalName), ((void *)(uintptr_t)1) },
    5819             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_KRB5PrincipalName_tag__162 }
    5820             : };
    5821             : 
    5822             : int ASN1CALL
    5823           0 : decode_KRB5PrincipalName(const unsigned char *p, size_t len, KRB5PrincipalName *data, size_t *size)
    5824             : {
    5825           0 :     memset(data, 0, sizeof(*data));
    5826           0 :     return _asn1_decode_top(asn1_KRB5PrincipalName, 0|0, p, len, data, size);
    5827             : }
    5828             : 
    5829             : 
    5830             : int ASN1CALL
    5831           0 : encode_KRB5PrincipalName(unsigned char *p, size_t len, const KRB5PrincipalName *data, size_t *size)
    5832             : {
    5833           0 :     return _asn1_encode(asn1_KRB5PrincipalName, p, len, data, size);
    5834             : }
    5835             : 
    5836             : 
    5837             : size_t ASN1CALL
    5838           0 : length_KRB5PrincipalName(const KRB5PrincipalName *data)
    5839             : {
    5840           0 :     return _asn1_length(asn1_KRB5PrincipalName, data);
    5841             : }
    5842             : 
    5843             : 
    5844             : void ASN1CALL
    5845           0 : free_KRB5PrincipalName(KRB5PrincipalName *data)
    5846             : {
    5847           0 :     _asn1_free_top(asn1_KRB5PrincipalName, data);
    5848           0 : }
    5849             : 
    5850             : 
    5851             : int ASN1CALL
    5852           0 : copy_KRB5PrincipalName(const KRB5PrincipalName *from, KRB5PrincipalName *to)
    5853             : {
    5854           0 :     return _asn1_copy_top(asn1_KRB5PrincipalName, from, to);
    5855             : }
    5856             : 
    5857             : 
    5858             : char * ASN1CALL
    5859           0 : print_KRB5PrincipalName(const KRB5PrincipalName *data, int flags)
    5860             : {
    5861           0 :     return _asn1_print_top(asn1_KRB5PrincipalName, flags, data);
    5862             : }
    5863             : 
    5864             : /* template_members: PermanentIdentifier exp exp */
    5865             : /* tsequence: members isstruct: 1 */
    5866             : /* template_members: PermanentIdentifier exp exp */
    5867             : /* generate_template_type: PermanentIdentifier_tag_identifierValue_166 */
    5868             : /* template_members: PermanentIdentifier exp exp */
    5869             : /* generate_template_type: PermanentIdentifier_tag_assigner_167 */
    5870             : /* generate_template_type: PermanentIdentifier_tag__165 */
    5871             : const struct asn1_template asn1_PermanentIdentifier_tag__165[] = {
    5872             : /* 0 */ { 0, sizeof(struct PermanentIdentifier), ((void *)(uintptr_t)5) },
    5873             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String)|A1_FLAG_OPTIONAL, offsetof(struct PermanentIdentifier, identifierValue), asn1_heim_utf8_string_tag__8 },
    5874             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID)|A1_FLAG_OPTIONAL, offsetof(struct PermanentIdentifier, assigner), asn1_AttributeType_tag__1 },
    5875             : /* 3 */ { A1_OP_NAME, 0, "PermanentIdentifier" },
    5876             : /* 4 */ { A1_OP_NAME, 0, "identifierValue" },
    5877             : /* 5 */ { A1_OP_NAME, 0, "assigner" }
    5878             : };
    5879             : /* generate_template_type: PermanentIdentifier */
    5880             : const struct asn1_template asn1_PermanentIdentifier[] = {
    5881             : /* 0 */ { 0, sizeof(PermanentIdentifier), ((void *)(uintptr_t)1) },
    5882             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PermanentIdentifier_tag__165 }
    5883             : };
    5884             : 
    5885             : int ASN1CALL
    5886           0 : decode_PermanentIdentifier(const unsigned char *p, size_t len, PermanentIdentifier *data, size_t *size)
    5887             : {
    5888           0 :     memset(data, 0, sizeof(*data));
    5889           0 :     return _asn1_decode_top(asn1_PermanentIdentifier, 0|0, p, len, data, size);
    5890             : }
    5891             : 
    5892             : 
    5893             : int ASN1CALL
    5894           0 : encode_PermanentIdentifier(unsigned char *p, size_t len, const PermanentIdentifier *data, size_t *size)
    5895             : {
    5896           0 :     return _asn1_encode(asn1_PermanentIdentifier, p, len, data, size);
    5897             : }
    5898             : 
    5899             : 
    5900             : size_t ASN1CALL
    5901           0 : length_PermanentIdentifier(const PermanentIdentifier *data)
    5902             : {
    5903           0 :     return _asn1_length(asn1_PermanentIdentifier, data);
    5904             : }
    5905             : 
    5906             : 
    5907             : void ASN1CALL
    5908           0 : free_PermanentIdentifier(PermanentIdentifier *data)
    5909             : {
    5910           0 :     _asn1_free_top(asn1_PermanentIdentifier, data);
    5911           0 : }
    5912             : 
    5913             : 
    5914             : int ASN1CALL
    5915           0 : copy_PermanentIdentifier(const PermanentIdentifier *from, PermanentIdentifier *to)
    5916             : {
    5917           0 :     return _asn1_copy_top(asn1_PermanentIdentifier, from, to);
    5918             : }
    5919             : 
    5920             : 
    5921             : char * ASN1CALL
    5922           0 : print_PermanentIdentifier(const PermanentIdentifier *data, int flags)
    5923             : {
    5924           0 :     return _asn1_print_top(asn1_PermanentIdentifier, flags, data);
    5925             : }
    5926             : 
    5927             : /* template_members: AccessDescription exp exp */
    5928             : /* tsequence: members isstruct: 1 */
    5929             : /* template_members: AccessDescription exp exp */
    5930             : /* generate_template_type: AccessDescription_tag_accessMethod_169 */
    5931             : /* generate_template_type: AccessDescription_tag__168 */
    5932             : const struct asn1_template asn1_AccessDescription_tag__168[] = {
    5933             : /* 0 */ { 0, sizeof(struct AccessDescription), ((void *)(uintptr_t)5) },
    5934             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct AccessDescription, accessMethod), asn1_AttributeType_tag__1 },
    5935             : /* 2 */ { A1_OP_TYPE , offsetof(struct AccessDescription, accessLocation), asn1_GeneralName },
    5936             : /* 3 */ { A1_OP_NAME, 0, "AccessDescription" },
    5937             : /* 4 */ { A1_OP_NAME, 0, "accessMethod" },
    5938             : /* 5 */ { A1_OP_NAME, 0, "accessLocation" }
    5939             : };
    5940             : /* generate_template_type: AccessDescription */
    5941             : const struct asn1_template asn1_AccessDescription[] = {
    5942             : /* 0 */ { 0, sizeof(AccessDescription), ((void *)(uintptr_t)1) },
    5943             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AccessDescription_tag__168 }
    5944             : };
    5945             : 
    5946             : int ASN1CALL
    5947           0 : decode_AccessDescription(const unsigned char *p, size_t len, AccessDescription *data, size_t *size)
    5948             : {
    5949           0 :     memset(data, 0, sizeof(*data));
    5950           0 :     return _asn1_decode_top(asn1_AccessDescription, 0|0, p, len, data, size);
    5951             : }
    5952             : 
    5953             : 
    5954             : int ASN1CALL
    5955           0 : encode_AccessDescription(unsigned char *p, size_t len, const AccessDescription *data, size_t *size)
    5956             : {
    5957           0 :     return _asn1_encode(asn1_AccessDescription, p, len, data, size);
    5958             : }
    5959             : 
    5960             : 
    5961             : size_t ASN1CALL
    5962           0 : length_AccessDescription(const AccessDescription *data)
    5963             : {
    5964           0 :     return _asn1_length(asn1_AccessDescription, data);
    5965             : }
    5966             : 
    5967             : 
    5968             : void ASN1CALL
    5969           0 : free_AccessDescription(AccessDescription *data)
    5970             : {
    5971           0 :     _asn1_free_top(asn1_AccessDescription, data);
    5972           0 : }
    5973             : 
    5974             : 
    5975             : int ASN1CALL
    5976           0 : copy_AccessDescription(const AccessDescription *from, AccessDescription *to)
    5977             : {
    5978           0 :     return _asn1_copy_top(asn1_AccessDescription, from, to);
    5979             : }
    5980             : 
    5981             : 
    5982             : char * ASN1CALL
    5983           0 : print_AccessDescription(const AccessDescription *data, int flags)
    5984             : {
    5985           0 :     return _asn1_print_top(asn1_AccessDescription, flags, data);
    5986             : }
    5987             : 
    5988             : /* template_members: AuthorityInfoAccessSyntax exp exp */
    5989             : /* generate_template_type: AccessDescription_seofTstruct_18 */
    5990             : const struct asn1_template asn1_AccessDescription_seofTstruct_18[] = {
    5991             : /* 0 */ { 0, sizeof(AccessDescription), ((void *)(uintptr_t)1) },
    5992             : /* 1 */ { A1_OP_TYPE , 0, asn1_AccessDescription }
    5993             : };
    5994             : /* generate_template_type: AuthorityInfoAccessSyntax_tag__170 */
    5995             : const struct asn1_template asn1_AuthorityInfoAccessSyntax_tag__170[] = {
    5996             : /* 0 */ { 0, sizeof(AccessDescription), ((void *)(uintptr_t)1) },
    5997             : /* 1 */ { A1_OP_SEQOF, 0, asn1_AccessDescription_seofTstruct_18 }
    5998             : };
    5999             : /* generate_template_type: AuthorityInfoAccessSyntax */
    6000             : const struct asn1_template asn1_AuthorityInfoAccessSyntax[] = {
    6001             : /* 0 */ { 0, sizeof(AuthorityInfoAccessSyntax), ((void *)(uintptr_t)1) },
    6002             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AuthorityInfoAccessSyntax_tag__170 }
    6003             : };
    6004             : 
    6005             : int ASN1CALL
    6006           0 : decode_AuthorityInfoAccessSyntax(const unsigned char *p, size_t len, AuthorityInfoAccessSyntax *data, size_t *size)
    6007             : {
    6008           0 :     memset(data, 0, sizeof(*data));
    6009           0 :     return _asn1_decode_top(asn1_AuthorityInfoAccessSyntax, 0|0, p, len, data, size);
    6010             : }
    6011             : 
    6012             : 
    6013             : int ASN1CALL
    6014           0 : encode_AuthorityInfoAccessSyntax(unsigned char *p, size_t len, const AuthorityInfoAccessSyntax *data, size_t *size)
    6015             : {
    6016           0 :     return _asn1_encode(asn1_AuthorityInfoAccessSyntax, p, len, data, size);
    6017             : }
    6018             : 
    6019             : 
    6020             : size_t ASN1CALL
    6021           0 : length_AuthorityInfoAccessSyntax(const AuthorityInfoAccessSyntax *data)
    6022             : {
    6023           0 :     return _asn1_length(asn1_AuthorityInfoAccessSyntax, data);
    6024             : }
    6025             : 
    6026             : 
    6027             : void ASN1CALL
    6028           0 : free_AuthorityInfoAccessSyntax(AuthorityInfoAccessSyntax *data)
    6029             : {
    6030           0 :     _asn1_free_top(asn1_AuthorityInfoAccessSyntax, data);
    6031           0 : }
    6032             : 
    6033             : 
    6034             : int ASN1CALL
    6035           0 : copy_AuthorityInfoAccessSyntax(const AuthorityInfoAccessSyntax *from, AuthorityInfoAccessSyntax *to)
    6036             : {
    6037           0 :     return _asn1_copy_top(asn1_AuthorityInfoAccessSyntax, from, to);
    6038             : }
    6039             : 
    6040             : 
    6041             : char * ASN1CALL
    6042           0 : print_AuthorityInfoAccessSyntax(const AuthorityInfoAccessSyntax *data, int flags)
    6043             : {
    6044           0 :     return _asn1_print_top(asn1_AuthorityInfoAccessSyntax, flags, data);
    6045             : }
    6046             : 
    6047             : /* template_members: SubjectInfoAccessSyntax exp exp */
    6048             : /* generate_template_type: AccessDescription_seofTstruct_19 */
    6049             : /* generate_template_type: SubjectInfoAccessSyntax_tag__171 */
    6050             : /* generate_template_type: SubjectInfoAccessSyntax */
    6051             : const struct asn1_template asn1_SubjectInfoAccessSyntax[] = {
    6052             : /* 0 */ { 0, sizeof(SubjectInfoAccessSyntax), ((void *)(uintptr_t)1) },
    6053             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AuthorityInfoAccessSyntax_tag__170 }
    6054             : };
    6055             : 
    6056             : int ASN1CALL
    6057           0 : decode_SubjectInfoAccessSyntax(const unsigned char *p, size_t len, SubjectInfoAccessSyntax *data, size_t *size)
    6058             : {
    6059           0 :     memset(data, 0, sizeof(*data));
    6060           0 :     return _asn1_decode_top(asn1_SubjectInfoAccessSyntax, 0|0, p, len, data, size);
    6061             : }
    6062             : 
    6063             : 
    6064             : int ASN1CALL
    6065           0 : encode_SubjectInfoAccessSyntax(unsigned char *p, size_t len, const SubjectInfoAccessSyntax *data, size_t *size)
    6066             : {
    6067           0 :     return _asn1_encode(asn1_SubjectInfoAccessSyntax, p, len, data, size);
    6068             : }
    6069             : 
    6070             : 
    6071             : size_t ASN1CALL
    6072           0 : length_SubjectInfoAccessSyntax(const SubjectInfoAccessSyntax *data)
    6073             : {
    6074           0 :     return _asn1_length(asn1_SubjectInfoAccessSyntax, data);
    6075             : }
    6076             : 
    6077             : 
    6078             : void ASN1CALL
    6079           0 : free_SubjectInfoAccessSyntax(SubjectInfoAccessSyntax *data)
    6080             : {
    6081           0 :     _asn1_free_top(asn1_SubjectInfoAccessSyntax, data);
    6082           0 : }
    6083             : 
    6084             : 
    6085             : int ASN1CALL
    6086           0 : copy_SubjectInfoAccessSyntax(const SubjectInfoAccessSyntax *from, SubjectInfoAccessSyntax *to)
    6087             : {
    6088           0 :     return _asn1_copy_top(asn1_SubjectInfoAccessSyntax, from, to);
    6089             : }
    6090             : 
    6091             : 
    6092             : char * ASN1CALL
    6093           0 : print_SubjectInfoAccessSyntax(const SubjectInfoAccessSyntax *data, int flags)
    6094             : {
    6095           0 :     return _asn1_print_top(asn1_SubjectInfoAccessSyntax, flags, data);
    6096             : }
    6097             : 
    6098             : /* template_members: ProxyPolicy exp exp */
    6099             : /* tsequence: members isstruct: 1 */
    6100             : /* template_members: ProxyPolicy exp exp */
    6101             : /* generate_template_type: ProxyPolicy_tag_policyLanguage_173 */
    6102             : /* template_members: ProxyPolicy exp exp */
    6103             : /* generate_template_type: ProxyPolicy_tag_policy_174 */
    6104             : /* generate_template_type: ProxyPolicy_tag__172 */
    6105             : const struct asn1_template asn1_ProxyPolicy_tag__172[] = {
    6106             : /* 0 */ { 0, sizeof(struct ProxyPolicy), ((void *)(uintptr_t)5) },
    6107             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct ProxyPolicy, policyLanguage), asn1_AttributeType_tag__1 },
    6108             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OctetString)|A1_FLAG_OPTIONAL, offsetof(struct ProxyPolicy, policy), asn1_Extension_tag_extnValue_25 },
    6109             : /* 3 */ { A1_OP_NAME, 0, "ProxyPolicy" },
    6110             : /* 4 */ { A1_OP_NAME, 0, "policyLanguage" },
    6111             : /* 5 */ { A1_OP_NAME, 0, "policy" }
    6112             : };
    6113             : /* generate_template_type: ProxyPolicy */
    6114             : const struct asn1_template asn1_ProxyPolicy[] = {
    6115             : /* 0 */ { 0, sizeof(ProxyPolicy), ((void *)(uintptr_t)1) },
    6116             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_ProxyPolicy_tag__172 }
    6117             : };
    6118             : 
    6119             : int ASN1CALL
    6120           0 : decode_ProxyPolicy(const unsigned char *p, size_t len, ProxyPolicy *data, size_t *size)
    6121             : {
    6122           0 :     memset(data, 0, sizeof(*data));
    6123           0 :     return _asn1_decode_top(asn1_ProxyPolicy, 0|0, p, len, data, size);
    6124             : }
    6125             : 
    6126             : 
    6127             : int ASN1CALL
    6128           0 : encode_ProxyPolicy(unsigned char *p, size_t len, const ProxyPolicy *data, size_t *size)
    6129             : {
    6130           0 :     return _asn1_encode(asn1_ProxyPolicy, p, len, data, size);
    6131             : }
    6132             : 
    6133             : 
    6134             : size_t ASN1CALL
    6135           0 : length_ProxyPolicy(const ProxyPolicy *data)
    6136             : {
    6137           0 :     return _asn1_length(asn1_ProxyPolicy, data);
    6138             : }
    6139             : 
    6140             : 
    6141             : void ASN1CALL
    6142           0 : free_ProxyPolicy(ProxyPolicy *data)
    6143             : {
    6144           0 :     _asn1_free_top(asn1_ProxyPolicy, data);
    6145           0 : }
    6146             : 
    6147             : 
    6148             : int ASN1CALL
    6149           0 : copy_ProxyPolicy(const ProxyPolicy *from, ProxyPolicy *to)
    6150             : {
    6151           0 :     return _asn1_copy_top(asn1_ProxyPolicy, from, to);
    6152             : }
    6153             : 
    6154             : 
    6155             : char * ASN1CALL
    6156           0 : print_ProxyPolicy(const ProxyPolicy *data, int flags)
    6157             : {
    6158           0 :     return _asn1_print_top(asn1_ProxyPolicy, flags, data);
    6159             : }
    6160             : 
    6161             : /* template_members: ProxyCertInfo exp exp */
    6162             : /* tsequence: members isstruct: 1 */
    6163             : /* template_members: ProxyCertInfo exp exp */
    6164             : /* generate_template_type: ProxyCertInfo_tag_pCPathLenConstraint_176 */
    6165             : /* generate_template_type: ProxyCertInfo_tag__175 */
    6166             : const struct asn1_template asn1_ProxyCertInfo_tag__175[] = {
    6167             : /* 0 */ { 0, sizeof(struct ProxyCertInfo), ((void *)(uintptr_t)5) },
    6168             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer)|A1_FLAG_OPTIONAL, offsetof(struct ProxyCertInfo, pCPathLenConstraint), asn1_BasicConstraints_tag_pathLenConstraint_100 },
    6169             : /* 2 */ { A1_OP_TYPE , offsetof(struct ProxyCertInfo, proxyPolicy), asn1_ProxyPolicy },
    6170             : /* 3 */ { A1_OP_NAME, 0, "ProxyCertInfo" },
    6171             : /* 4 */ { A1_OP_NAME, 0, "pCPathLenConstraint" },
    6172             : /* 5 */ { A1_OP_NAME, 0, "proxyPolicy" }
    6173             : };
    6174             : /* generate_template_type: ProxyCertInfo */
    6175             : const struct asn1_template asn1_ProxyCertInfo[] = {
    6176             : /* 0 */ { 0, sizeof(ProxyCertInfo), ((void *)(uintptr_t)1) },
    6177             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_ProxyCertInfo_tag__175 }
    6178             : };
    6179             : 
    6180             : int ASN1CALL
    6181           0 : decode_ProxyCertInfo(const unsigned char *p, size_t len, ProxyCertInfo *data, size_t *size)
    6182             : {
    6183           0 :     memset(data, 0, sizeof(*data));
    6184           0 :     return _asn1_decode_top(asn1_ProxyCertInfo, 0|0, p, len, data, size);
    6185             : }
    6186             : 
    6187             : 
    6188             : int ASN1CALL
    6189           0 : encode_ProxyCertInfo(unsigned char *p, size_t len, const ProxyCertInfo *data, size_t *size)
    6190             : {
    6191           0 :     return _asn1_encode(asn1_ProxyCertInfo, p, len, data, size);
    6192             : }
    6193             : 
    6194             : 
    6195             : size_t ASN1CALL
    6196           0 : length_ProxyCertInfo(const ProxyCertInfo *data)
    6197             : {
    6198           0 :     return _asn1_length(asn1_ProxyCertInfo, data);
    6199             : }
    6200             : 
    6201             : 
    6202             : void ASN1CALL
    6203           0 : free_ProxyCertInfo(ProxyCertInfo *data)
    6204             : {
    6205           0 :     _asn1_free_top(asn1_ProxyCertInfo, data);
    6206           0 : }
    6207             : 
    6208             : 
    6209             : int ASN1CALL
    6210           0 : copy_ProxyCertInfo(const ProxyCertInfo *from, ProxyCertInfo *to)
    6211             : {
    6212           0 :     return _asn1_copy_top(asn1_ProxyCertInfo, from, to);
    6213             : }
    6214             : 
    6215             : 
    6216             : char * ASN1CALL
    6217           0 : print_ProxyCertInfo(const ProxyCertInfo *data, int flags)
    6218             : {
    6219           0 :     return _asn1_print_top(asn1_ProxyCertInfo, flags, data);
    6220             : }
    6221             : 
    6222             : /* template_members: TPMSecurityAssertions exp exp */
    6223             : /* tsequence: members isstruct: 1 */
    6224             : /* template_members: TPMSecurityAssertions exp exp */
    6225             : /* generate_template_type: TPMSecurityAssertions_tag_fieldUpgradable_178 */
    6226             : /* template_members: TPMSecurityAssertions exp exp */
    6227             : /* generate_template_type: TPMSecurityAssertions_tag_ekGenerationType_179 */
    6228             : const struct asn1_template asn1_TPMSecurityAssertions_tag_ekGenerationType_179[] = {
    6229             : /* 0 */ { 0, sizeof(EKGenerationType), ((void *)(uintptr_t)1) },
    6230             : /* 1 */ { A1_OP_TYPE , 0, asn1_EKGenerationType }
    6231             : };
    6232             : /* template_members: TPMSecurityAssertions exp exp */
    6233             : /* generate_template_type: TPMSecurityAssertions_tag_ekGenerationLocation_180 */
    6234             : const struct asn1_template asn1_TPMSecurityAssertions_tag_ekGenerationLocation_180[] = {
    6235             : /* 0 */ { 0, sizeof(EKGenerationLocation), ((void *)(uintptr_t)1) },
    6236             : /* 1 */ { A1_OP_TYPE , 0, asn1_EKGenerationLocation }
    6237             : };
    6238             : /* template_members: TPMSecurityAssertions exp exp */
    6239             : /* generate_template_type: TPMSecurityAssertions_tag_ekCertificateGenerationLocation_181 */
    6240             : const struct asn1_template asn1_TPMSecurityAssertions_tag_ekCertificateGenerationLocation_181[] = {
    6241             : /* 0 */ { 0, sizeof(EKCertificateGenerationLocation), ((void *)(uintptr_t)1) },
    6242             : /* 1 */ { A1_OP_TYPE , 0, asn1_EKCertificateGenerationLocation }
    6243             : };
    6244             : /* template_members: TPMSecurityAssertions exp exp */
    6245             : /* generate_template_type: TPMSecurityAssertions_tag_ccInfo_182 */
    6246             : const struct asn1_template asn1_TPMSecurityAssertions_tag_ccInfo_182[] = {
    6247             : /* 0 */ { 0, sizeof(CommonCriteriaMeasures), ((void *)(uintptr_t)1) },
    6248             : /* 1 */ { A1_OP_TYPE , 0, asn1_CommonCriteriaMeasures }
    6249             : };
    6250             : /* template_members: TPMSecurityAssertions exp exp */
    6251             : /* generate_template_type: TPMSecurityAssertions_tag_fipsLevel_183 */
    6252             : const struct asn1_template asn1_TPMSecurityAssertions_tag_fipsLevel_183[] = {
    6253             : /* 0 */ { 0, sizeof(FIPSLevel), ((void *)(uintptr_t)1) },
    6254             : /* 1 */ { A1_OP_TYPE , 0, asn1_FIPSLevel }
    6255             : };
    6256             : /* template_members: TPMSecurityAssertions exp exp */
    6257             : /* template_members: int exp exp */
    6258             : /* generate_template_type: int_tag_iso9000Certified_185 */
    6259             : /* generate_template_type: TPMSecurityAssertions_tag_iso9000Certified_184 */
    6260             : const struct asn1_template asn1_TPMSecurityAssertions_tag_iso9000Certified_184[] = {
    6261             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6262             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean), 0, asn1_Extension_tag_critical_24 }
    6263             : };
    6264             : /* template_members: TPMSecurityAssertions exp exp */
    6265             : /* generate_template_type: TPMSecurityAssertions_tag_iso9000Uri_186 */
    6266             : /* generate_template_type: TPMSecurityAssertions_tag__177 */
    6267             : const struct asn1_template asn1_TPMSecurityAssertions_tag__177[] = {
    6268             : /* 0 */ { 0|A1_HF_ELLIPSIS, sizeof(struct TPMSecurityAssertions), ((void *)(uintptr_t)23) },
    6269             : /* 1 */ { A1_OP_DEFVAL|A1_DV_INTEGER32, ~0, (void *)(uintptr_t)0 },
    6270             : /* 2 */ { A1_OP_TYPE |A1_FLAG_DEFAULT, offsetof(struct TPMSecurityAssertions, version), asn1_TPMVersion },
    6271             : /* 3 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    6272             : /* 4 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean)|A1_FLAG_DEFAULT, offsetof(struct TPMSecurityAssertions, fieldUpgradable), asn1_Extension_tag_critical_24 },
    6273             : /* 5 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,0)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, ekGenerationType), asn1_TPMSecurityAssertions_tag_ekGenerationType_179 },
    6274             : /* 6 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,1)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, ekGenerationLocation), asn1_TPMSecurityAssertions_tag_ekGenerationLocation_180 },
    6275             : /* 7 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,2)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, ekCertificateGenerationLocation), asn1_TPMSecurityAssertions_tag_ekCertificateGenerationLocation_181 },
    6276             : /* 8 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,3)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, ccInfo), asn1_TPMSecurityAssertions_tag_ccInfo_182 },
    6277             : /* 9 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,4)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, fipsLevel), asn1_TPMSecurityAssertions_tag_fipsLevel_183 },
    6278             : /* 10 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    6279             : /* 11 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,5)|A1_FLAG_DEFAULT, offsetof(struct TPMSecurityAssertions, iso9000Certified), asn1_TPMSecurityAssertions_tag_iso9000Certified_184 },
    6280             : /* 12 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String)|A1_FLAG_OPTIONAL, offsetof(struct TPMSecurityAssertions, iso9000Uri), asn1_heim_ia5_string_tag__4 },
    6281             : /* 13 */ { A1_OP_NAME, 0, "TPMSecurityAssertions" },
    6282             : /* 14 */ { A1_OP_NAME, 0, "version" },
    6283             : /* 15 */ { A1_OP_NAME, 0, "fieldUpgradable" },
    6284             : /* 16 */ { A1_OP_NAME, 0, "ekGenerationType" },
    6285             : /* 17 */ { A1_OP_NAME, 0, "ekGenerationLocation" },
    6286             : /* 18 */ { A1_OP_NAME, 0, "ekCertificateGenerationLocation" },
    6287             : /* 19 */ { A1_OP_NAME, 0, "ccInfo" },
    6288             : /* 20 */ { A1_OP_NAME, 0, "fipsLevel" },
    6289             : /* 21 */ { A1_OP_NAME, 0, "iso9000Certified" },
    6290             : /* 22 */ { A1_OP_NAME, 0, "iso9000Uri" },
    6291             : /* 23 */ { A1_OP_NAME, 0, "..." }
    6292             : };
    6293             : /* generate_template_type: TPMSecurityAssertions */
    6294             : const struct asn1_template asn1_TPMSecurityAssertions[] = {
    6295             : /* 0 */ { 0, sizeof(TPMSecurityAssertions), ((void *)(uintptr_t)1) },
    6296             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TPMSecurityAssertions_tag__177 }
    6297             : };
    6298             : 
    6299             : int ASN1CALL
    6300           0 : decode_TPMSecurityAssertions(const unsigned char *p, size_t len, TPMSecurityAssertions *data, size_t *size)
    6301             : {
    6302           0 :     memset(data, 0, sizeof(*data));
    6303           0 :     return _asn1_decode_top(asn1_TPMSecurityAssertions, 0|0, p, len, data, size);
    6304             : }
    6305             : 
    6306             : 
    6307             : int ASN1CALL
    6308           0 : encode_TPMSecurityAssertions(unsigned char *p, size_t len, const TPMSecurityAssertions *data, size_t *size)
    6309             : {
    6310           0 :     return _asn1_encode(asn1_TPMSecurityAssertions, p, len, data, size);
    6311             : }
    6312             : 
    6313             : 
    6314             : size_t ASN1CALL
    6315           0 : length_TPMSecurityAssertions(const TPMSecurityAssertions *data)
    6316             : {
    6317           0 :     return _asn1_length(asn1_TPMSecurityAssertions, data);
    6318             : }
    6319             : 
    6320             : 
    6321             : void ASN1CALL
    6322           0 : free_TPMSecurityAssertions(TPMSecurityAssertions *data)
    6323             : {
    6324           0 :     _asn1_free_top(asn1_TPMSecurityAssertions, data);
    6325           0 : }
    6326             : 
    6327             : 
    6328             : int ASN1CALL
    6329           0 : copy_TPMSecurityAssertions(const TPMSecurityAssertions *from, TPMSecurityAssertions *to)
    6330             : {
    6331           0 :     return _asn1_copy_top(asn1_TPMSecurityAssertions, from, to);
    6332             : }
    6333             : 
    6334             : 
    6335             : char * ASN1CALL
    6336           0 : print_TPMSecurityAssertions(const TPMSecurityAssertions *data, int flags)
    6337             : {
    6338           0 :     return _asn1_print_top(asn1_TPMSecurityAssertions, flags, data);
    6339             : }
    6340             : 
    6341             : /* template_members: AliasUTF8String exp exp */
    6342             : /* generate_template_type: AliasUTF8String_tag__187 */
    6343             : /* generate_template_type: AliasUTF8String */
    6344             : const struct asn1_template asn1_AliasUTF8String[] = {
    6345             : /* 0 */ { 0, sizeof(AliasUTF8String), ((void *)(uintptr_t)1) },
    6346             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String), 0, asn1_heim_utf8_string_tag__8 }
    6347             : };
    6348             : 
    6349             : int ASN1CALL
    6350           0 : decode_AliasUTF8String(const unsigned char *p, size_t len, AliasUTF8String *data, size_t *size)
    6351             : {
    6352           0 :     memset(data, 0, sizeof(*data));
    6353           0 :     return _asn1_decode_top(asn1_AliasUTF8String, 0|0, p, len, data, size);
    6354             : }
    6355             : 
    6356             : 
    6357             : int ASN1CALL
    6358           0 : encode_AliasUTF8String(unsigned char *p, size_t len, const AliasUTF8String *data, size_t *size)
    6359             : {
    6360           0 :     return _asn1_encode(asn1_AliasUTF8String, p, len, data, size);
    6361             : }
    6362             : 
    6363             : 
    6364             : size_t ASN1CALL
    6365           0 : length_AliasUTF8String(const AliasUTF8String *data)
    6366             : {
    6367           0 :     return _asn1_length(asn1_AliasUTF8String, data);
    6368             : }
    6369             : 
    6370             : 
    6371             : void ASN1CALL
    6372           0 : free_AliasUTF8String(AliasUTF8String *data)
    6373             : {
    6374           0 :     _asn1_free_top(asn1_AliasUTF8String, data);
    6375           0 : }
    6376             : 
    6377             : 
    6378             : int ASN1CALL
    6379           0 : copy_AliasUTF8String(const AliasUTF8String *from, AliasUTF8String *to)
    6380             : {
    6381           0 :     return _asn1_copy_top(asn1_AliasUTF8String, from, to);
    6382             : }
    6383             : 
    6384             : 
    6385             : char * ASN1CALL
    6386           0 : print_AliasUTF8String(const AliasUTF8String *data, int flags)
    6387             : {
    6388           0 :     return _asn1_print_top(asn1_AliasUTF8String, flags, data);
    6389             : }
    6390             : 
    6391             : /* template_members: TPMSpecification exp exp */
    6392             : /* tsequence: members isstruct: 1 */
    6393             : /* template_members: TPMSpecification exp exp */
    6394             : /* generate_template_type: TPMSpecification_tag_family_189 */
    6395             : /* template_members: TPMSpecification exp exp */
    6396             : /* generate_template_type: TPMSpecification_tag_level_190 */
    6397             : /* template_members: TPMSpecification exp exp */
    6398             : /* generate_template_type: TPMSpecification_tag_revision_191 */
    6399             : /* generate_template_type: TPMSpecification_tag__188 */
    6400             : const struct asn1_template asn1_TPMSpecification_tag__188[] = {
    6401             : /* 0 */ { 0|A1_HF_ELLIPSIS, sizeof(struct TPMSpecification), ((void *)(uintptr_t)8) },
    6402             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String), offsetof(struct TPMSpecification, family), asn1_heim_utf8_string_tag__8 },
    6403             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct TPMSpecification, level), asn1_BasicConstraints_tag_pathLenConstraint_100 },
    6404             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), offsetof(struct TPMSpecification, revision), asn1_BasicConstraints_tag_pathLenConstraint_100 },
    6405             : /* 4 */ { A1_OP_NAME, 0, "TPMSpecification" },
    6406             : /* 5 */ { A1_OP_NAME, 0, "family" },
    6407             : /* 6 */ { A1_OP_NAME, 0, "level" },
    6408             : /* 7 */ { A1_OP_NAME, 0, "revision" },
    6409             : /* 8 */ { A1_OP_NAME, 0, "..." }
    6410             : };
    6411             : /* generate_template_type: TPMSpecification */
    6412             : const struct asn1_template asn1_TPMSpecification[] = {
    6413             : /* 0 */ { 0, sizeof(TPMSpecification), ((void *)(uintptr_t)1) },
    6414             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TPMSpecification_tag__188 }
    6415             : };
    6416             : 
    6417             : int ASN1CALL
    6418           0 : decode_TPMSpecification(const unsigned char *p, size_t len, TPMSpecification *data, size_t *size)
    6419             : {
    6420           0 :     memset(data, 0, sizeof(*data));
    6421           0 :     return _asn1_decode_top(asn1_TPMSpecification, 0|0, p, len, data, size);
    6422             : }
    6423             : 
    6424             : 
    6425             : int ASN1CALL
    6426           0 : encode_TPMSpecification(unsigned char *p, size_t len, const TPMSpecification *data, size_t *size)
    6427             : {
    6428           0 :     return _asn1_encode(asn1_TPMSpecification, p, len, data, size);
    6429             : }
    6430             : 
    6431             : 
    6432             : size_t ASN1CALL
    6433           0 : length_TPMSpecification(const TPMSpecification *data)
    6434             : {
    6435           0 :     return _asn1_length(asn1_TPMSpecification, data);
    6436             : }
    6437             : 
    6438             : 
    6439             : void ASN1CALL
    6440           0 : free_TPMSpecification(TPMSpecification *data)
    6441             : {
    6442           0 :     _asn1_free_top(asn1_TPMSpecification, data);
    6443           0 : }
    6444             : 
    6445             : 
    6446             : int ASN1CALL
    6447           0 : copy_TPMSpecification(const TPMSpecification *from, TPMSpecification *to)
    6448             : {
    6449           0 :     return _asn1_copy_top(asn1_TPMSpecification, from, to);
    6450             : }
    6451             : 
    6452             : 
    6453             : char * ASN1CALL
    6454           0 : print_TPMSpecification(const TPMSpecification *data, int flags)
    6455             : {
    6456           0 :     return _asn1_print_top(asn1_TPMSpecification, flags, data);
    6457             : }
    6458             : 
    6459             : /* template_members: EKGenerationType exp exp */
    6460             : const struct asn1_template asn1_EKGenerationType_enum_names[] = {
    6461             : /* 0 */ { 0, 0, ((void *)(uintptr_t)4) },
    6462             : /* 1 */ { A1_OP_NAME, 0, "ekgt-internal" },
    6463             : /* 2 */ { A1_OP_NAME, 1, "ekgt-injected" },
    6464             : /* 3 */ { A1_OP_NAME, 2, "ekgt-internalRevocable" },
    6465             : /* 4 */ { A1_OP_NAME, 3, "ekgt-injectedRevocable" }
    6466             : };
    6467             : /* generate_template_type: EKGenerationType_tag__192 */
    6468             : const struct asn1_template asn1_EKGenerationType_tag__192[] = {
    6469             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6470             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_EKGenerationType_enum_names }
    6471             : };
    6472             : /* generate_template_type: EKGenerationType */
    6473             : const struct asn1_template asn1_EKGenerationType[] = {
    6474             : /* 0 */ { 0, sizeof(EKGenerationType), ((void *)(uintptr_t)1) },
    6475             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_EKGenerationType_tag__192 }
    6476             : };
    6477             : 
    6478             : int ASN1CALL
    6479           0 : decode_EKGenerationType(const unsigned char *p, size_t len, EKGenerationType *data, size_t *size)
    6480             : {
    6481           0 :     memset(data, 0, sizeof(*data));
    6482           0 :     return _asn1_decode_top(asn1_EKGenerationType, 0|0, p, len, data, size);
    6483             : }
    6484             : 
    6485             : 
    6486             : int ASN1CALL
    6487           0 : encode_EKGenerationType(unsigned char *p, size_t len, const EKGenerationType *data, size_t *size)
    6488             : {
    6489           0 :     return _asn1_encode(asn1_EKGenerationType, p, len, data, size);
    6490             : }
    6491             : 
    6492             : 
    6493             : size_t ASN1CALL
    6494           0 : length_EKGenerationType(const EKGenerationType *data)
    6495             : {
    6496           0 :     return _asn1_length(asn1_EKGenerationType, data);
    6497             : }
    6498             : 
    6499             : 
    6500             : void ASN1CALL
    6501           0 : free_EKGenerationType(EKGenerationType *data)
    6502             : {
    6503           0 :     _asn1_free_top(asn1_EKGenerationType, data);
    6504           0 : }
    6505             : 
    6506             : 
    6507             : int ASN1CALL
    6508           0 : copy_EKGenerationType(const EKGenerationType *from, EKGenerationType *to)
    6509             : {
    6510           0 :     return _asn1_copy_top(asn1_EKGenerationType, from, to);
    6511             : }
    6512             : 
    6513             : 
    6514             : char * ASN1CALL
    6515           0 : print_EKGenerationType(const EKGenerationType *data, int flags)
    6516             : {
    6517           0 :     return _asn1_print_top(asn1_EKGenerationType, flags, data);
    6518             : }
    6519             : 
    6520             : /* template_members: EKGenerationLocation exp exp */
    6521             : const struct asn1_template asn1_EKGenerationLocation_enum_names[] = {
    6522             : /* 0 */ { 0, 0, ((void *)(uintptr_t)3) },
    6523             : /* 1 */ { A1_OP_NAME, 0, "tpmManufacturer" },
    6524             : /* 2 */ { A1_OP_NAME, 1, "platformManufacturer" },
    6525             : /* 3 */ { A1_OP_NAME, 2, "ekCertSigner" }
    6526             : };
    6527             : /* generate_template_type: EKGenerationLocation_tag__193 */
    6528             : const struct asn1_template asn1_EKGenerationLocation_tag__193[] = {
    6529             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6530             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_EKGenerationLocation_enum_names }
    6531             : };
    6532             : /* generate_template_type: EKGenerationLocation */
    6533             : const struct asn1_template asn1_EKGenerationLocation[] = {
    6534             : /* 0 */ { 0, sizeof(EKGenerationLocation), ((void *)(uintptr_t)1) },
    6535             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_EKGenerationLocation_tag__193 }
    6536             : };
    6537             : 
    6538             : int ASN1CALL
    6539           0 : decode_EKGenerationLocation(const unsigned char *p, size_t len, EKGenerationLocation *data, size_t *size)
    6540             : {
    6541           0 :     memset(data, 0, sizeof(*data));
    6542           0 :     return _asn1_decode_top(asn1_EKGenerationLocation, 0|0, p, len, data, size);
    6543             : }
    6544             : 
    6545             : 
    6546             : int ASN1CALL
    6547           0 : encode_EKGenerationLocation(unsigned char *p, size_t len, const EKGenerationLocation *data, size_t *size)
    6548             : {
    6549           0 :     return _asn1_encode(asn1_EKGenerationLocation, p, len, data, size);
    6550             : }
    6551             : 
    6552             : 
    6553             : size_t ASN1CALL
    6554           0 : length_EKGenerationLocation(const EKGenerationLocation *data)
    6555             : {
    6556           0 :     return _asn1_length(asn1_EKGenerationLocation, data);
    6557             : }
    6558             : 
    6559             : 
    6560             : void ASN1CALL
    6561           0 : free_EKGenerationLocation(EKGenerationLocation *data)
    6562             : {
    6563           0 :     _asn1_free_top(asn1_EKGenerationLocation, data);
    6564           0 : }
    6565             : 
    6566             : 
    6567             : int ASN1CALL
    6568           0 : copy_EKGenerationLocation(const EKGenerationLocation *from, EKGenerationLocation *to)
    6569             : {
    6570           0 :     return _asn1_copy_top(asn1_EKGenerationLocation, from, to);
    6571             : }
    6572             : 
    6573             : 
    6574             : char * ASN1CALL
    6575           0 : print_EKGenerationLocation(const EKGenerationLocation *data, int flags)
    6576             : {
    6577           0 :     return _asn1_print_top(asn1_EKGenerationLocation, flags, data);
    6578             : }
    6579             : 
    6580             : /* generate_template_type: EKCertificateGenerationLocation */
    6581             : const struct asn1_template asn1_EKCertificateGenerationLocation[] = {
    6582             : /* 0 */ { 0, sizeof(EKCertificateGenerationLocation), ((void *)(uintptr_t)1) },
    6583             : /* 1 */ { A1_OP_TYPE , 0, asn1_EKGenerationLocation }
    6584             : };
    6585             : 
    6586             : int ASN1CALL
    6587           0 : decode_EKCertificateGenerationLocation(const unsigned char *p, size_t len, EKCertificateGenerationLocation *data, size_t *size)
    6588             : {
    6589           0 :     memset(data, 0, sizeof(*data));
    6590           0 :     return _asn1_decode_top(asn1_EKCertificateGenerationLocation, 0|0, p, len, data, size);
    6591             : }
    6592             : 
    6593             : 
    6594             : int ASN1CALL
    6595           0 : encode_EKCertificateGenerationLocation(unsigned char *p, size_t len, const EKCertificateGenerationLocation *data, size_t *size)
    6596             : {
    6597           0 :     return _asn1_encode(asn1_EKCertificateGenerationLocation, p, len, data, size);
    6598             : }
    6599             : 
    6600             : 
    6601             : size_t ASN1CALL
    6602           0 : length_EKCertificateGenerationLocation(const EKCertificateGenerationLocation *data)
    6603             : {
    6604           0 :     return _asn1_length(asn1_EKCertificateGenerationLocation, data);
    6605             : }
    6606             : 
    6607             : 
    6608             : void ASN1CALL
    6609           0 : free_EKCertificateGenerationLocation(EKCertificateGenerationLocation *data)
    6610             : {
    6611           0 :     _asn1_free_top(asn1_EKCertificateGenerationLocation, data);
    6612           0 : }
    6613             : 
    6614             : 
    6615             : int ASN1CALL
    6616           0 : copy_EKCertificateGenerationLocation(const EKCertificateGenerationLocation *from, EKCertificateGenerationLocation *to)
    6617             : {
    6618           0 :     return _asn1_copy_top(asn1_EKCertificateGenerationLocation, from, to);
    6619             : }
    6620             : 
    6621             : 
    6622             : char * ASN1CALL
    6623           0 : print_EKCertificateGenerationLocation(const EKCertificateGenerationLocation *data, int flags)
    6624             : {
    6625           0 :     return _asn1_print_top(asn1_EKCertificateGenerationLocation, flags, data);
    6626             : }
    6627             : 
    6628             : /* template_members: EvaluationAssuranceLevel exp exp */
    6629             : const struct asn1_template asn1_EvaluationAssuranceLevel_enum_names[] = {
    6630             : /* 0 */ { 0, 0, ((void *)(uintptr_t)7) },
    6631             : /* 1 */ { A1_OP_NAME, 1, "ealevell" },
    6632             : /* 2 */ { A1_OP_NAME, 2, "ealevel2" },
    6633             : /* 3 */ { A1_OP_NAME, 3, "ealevel3" },
    6634             : /* 4 */ { A1_OP_NAME, 4, "ealevel4" },
    6635             : /* 5 */ { A1_OP_NAME, 5, "ealevel5" },
    6636             : /* 6 */ { A1_OP_NAME, 6, "ealevel6" },
    6637             : /* 7 */ { A1_OP_NAME, 7, "ealevel7" }
    6638             : };
    6639             : /* generate_template_type: EvaluationAssuranceLevel_tag__194 */
    6640             : const struct asn1_template asn1_EvaluationAssuranceLevel_tag__194[] = {
    6641             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6642             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_EvaluationAssuranceLevel_enum_names }
    6643             : };
    6644             : /* generate_template_type: EvaluationAssuranceLevel */
    6645             : const struct asn1_template asn1_EvaluationAssuranceLevel[] = {
    6646             : /* 0 */ { 0, sizeof(EvaluationAssuranceLevel), ((void *)(uintptr_t)1) },
    6647             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_EvaluationAssuranceLevel_tag__194 }
    6648             : };
    6649             : 
    6650             : int ASN1CALL
    6651           0 : decode_EvaluationAssuranceLevel(const unsigned char *p, size_t len, EvaluationAssuranceLevel *data, size_t *size)
    6652             : {
    6653           0 :     memset(data, 0, sizeof(*data));
    6654           0 :     return _asn1_decode_top(asn1_EvaluationAssuranceLevel, 0|0, p, len, data, size);
    6655             : }
    6656             : 
    6657             : 
    6658             : int ASN1CALL
    6659           0 : encode_EvaluationAssuranceLevel(unsigned char *p, size_t len, const EvaluationAssuranceLevel *data, size_t *size)
    6660             : {
    6661           0 :     return _asn1_encode(asn1_EvaluationAssuranceLevel, p, len, data, size);
    6662             : }
    6663             : 
    6664             : 
    6665             : size_t ASN1CALL
    6666           0 : length_EvaluationAssuranceLevel(const EvaluationAssuranceLevel *data)
    6667             : {
    6668           0 :     return _asn1_length(asn1_EvaluationAssuranceLevel, data);
    6669             : }
    6670             : 
    6671             : 
    6672             : void ASN1CALL
    6673           0 : free_EvaluationAssuranceLevel(EvaluationAssuranceLevel *data)
    6674             : {
    6675           0 :     _asn1_free_top(asn1_EvaluationAssuranceLevel, data);
    6676           0 : }
    6677             : 
    6678             : 
    6679             : int ASN1CALL
    6680           0 : copy_EvaluationAssuranceLevel(const EvaluationAssuranceLevel *from, EvaluationAssuranceLevel *to)
    6681             : {
    6682           0 :     return _asn1_copy_top(asn1_EvaluationAssuranceLevel, from, to);
    6683             : }
    6684             : 
    6685             : 
    6686             : char * ASN1CALL
    6687           0 : print_EvaluationAssuranceLevel(const EvaluationAssuranceLevel *data, int flags)
    6688             : {
    6689           0 :     return _asn1_print_top(asn1_EvaluationAssuranceLevel, flags, data);
    6690             : }
    6691             : 
    6692             : /* template_members: SecurityLevel exp exp */
    6693             : const struct asn1_template asn1_SecurityLevel_enum_names[] = {
    6694             : /* 0 */ { 0, 0, ((void *)(uintptr_t)4) },
    6695             : /* 1 */ { A1_OP_NAME, 1, "sllevel1" },
    6696             : /* 2 */ { A1_OP_NAME, 2, "sllevel2" },
    6697             : /* 3 */ { A1_OP_NAME, 3, "sllevel3" },
    6698             : /* 4 */ { A1_OP_NAME, 4, "sllevel4" }
    6699             : };
    6700             : /* generate_template_type: SecurityLevel_tag__195 */
    6701             : const struct asn1_template asn1_SecurityLevel_tag__195[] = {
    6702             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6703             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_SecurityLevel_enum_names }
    6704             : };
    6705             : /* generate_template_type: SecurityLevel */
    6706             : const struct asn1_template asn1_SecurityLevel[] = {
    6707             : /* 0 */ { 0, sizeof(SecurityLevel), ((void *)(uintptr_t)1) },
    6708             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_SecurityLevel_tag__195 }
    6709             : };
    6710             : 
    6711             : int ASN1CALL
    6712           0 : decode_SecurityLevel(const unsigned char *p, size_t len, SecurityLevel *data, size_t *size)
    6713             : {
    6714           0 :     memset(data, 0, sizeof(*data));
    6715           0 :     return _asn1_decode_top(asn1_SecurityLevel, 0|0, p, len, data, size);
    6716             : }
    6717             : 
    6718             : 
    6719             : int ASN1CALL
    6720           0 : encode_SecurityLevel(unsigned char *p, size_t len, const SecurityLevel *data, size_t *size)
    6721             : {
    6722           0 :     return _asn1_encode(asn1_SecurityLevel, p, len, data, size);
    6723             : }
    6724             : 
    6725             : 
    6726             : size_t ASN1CALL
    6727           0 : length_SecurityLevel(const SecurityLevel *data)
    6728             : {
    6729           0 :     return _asn1_length(asn1_SecurityLevel, data);
    6730             : }
    6731             : 
    6732             : 
    6733             : void ASN1CALL
    6734           0 : free_SecurityLevel(SecurityLevel *data)
    6735             : {
    6736           0 :     _asn1_free_top(asn1_SecurityLevel, data);
    6737           0 : }
    6738             : 
    6739             : 
    6740             : int ASN1CALL
    6741           0 : copy_SecurityLevel(const SecurityLevel *from, SecurityLevel *to)
    6742             : {
    6743           0 :     return _asn1_copy_top(asn1_SecurityLevel, from, to);
    6744             : }
    6745             : 
    6746             : 
    6747             : char * ASN1CALL
    6748           0 : print_SecurityLevel(const SecurityLevel *data, int flags)
    6749             : {
    6750           0 :     return _asn1_print_top(asn1_SecurityLevel, flags, data);
    6751             : }
    6752             : 
    6753             : /* template_members: StrengthOfFunction exp exp */
    6754             : const struct asn1_template asn1_StrengthOfFunction_enum_names[] = {
    6755             : /* 0 */ { 0, 0, ((void *)(uintptr_t)3) },
    6756             : /* 1 */ { A1_OP_NAME, 0, "sof-basic" },
    6757             : /* 2 */ { A1_OP_NAME, 1, "sof-medium" },
    6758             : /* 3 */ { A1_OP_NAME, 2, "sof-high" }
    6759             : };
    6760             : /* generate_template_type: StrengthOfFunction_tag__196 */
    6761             : const struct asn1_template asn1_StrengthOfFunction_tag__196[] = {
    6762             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6763             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_StrengthOfFunction_enum_names }
    6764             : };
    6765             : /* generate_template_type: StrengthOfFunction */
    6766             : const struct asn1_template asn1_StrengthOfFunction[] = {
    6767             : /* 0 */ { 0, sizeof(StrengthOfFunction), ((void *)(uintptr_t)1) },
    6768             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_StrengthOfFunction_tag__196 }
    6769             : };
    6770             : 
    6771             : int ASN1CALL
    6772           0 : decode_StrengthOfFunction(const unsigned char *p, size_t len, StrengthOfFunction *data, size_t *size)
    6773             : {
    6774           0 :     memset(data, 0, sizeof(*data));
    6775           0 :     return _asn1_decode_top(asn1_StrengthOfFunction, 0|0, p, len, data, size);
    6776             : }
    6777             : 
    6778             : 
    6779             : int ASN1CALL
    6780           0 : encode_StrengthOfFunction(unsigned char *p, size_t len, const StrengthOfFunction *data, size_t *size)
    6781             : {
    6782           0 :     return _asn1_encode(asn1_StrengthOfFunction, p, len, data, size);
    6783             : }
    6784             : 
    6785             : 
    6786             : size_t ASN1CALL
    6787           0 : length_StrengthOfFunction(const StrengthOfFunction *data)
    6788             : {
    6789           0 :     return _asn1_length(asn1_StrengthOfFunction, data);
    6790             : }
    6791             : 
    6792             : 
    6793             : void ASN1CALL
    6794           0 : free_StrengthOfFunction(StrengthOfFunction *data)
    6795             : {
    6796           0 :     _asn1_free_top(asn1_StrengthOfFunction, data);
    6797           0 : }
    6798             : 
    6799             : 
    6800             : int ASN1CALL
    6801           0 : copy_StrengthOfFunction(const StrengthOfFunction *from, StrengthOfFunction *to)
    6802             : {
    6803           0 :     return _asn1_copy_top(asn1_StrengthOfFunction, from, to);
    6804             : }
    6805             : 
    6806             : 
    6807             : char * ASN1CALL
    6808           0 : print_StrengthOfFunction(const StrengthOfFunction *data, int flags)
    6809             : {
    6810           0 :     return _asn1_print_top(asn1_StrengthOfFunction, flags, data);
    6811             : }
    6812             : 
    6813             : /* template_members: URIReference exp exp */
    6814             : /* tsequence: members isstruct: 1 */
    6815             : /* template_members: URIReference exp exp */
    6816             : /* generate_template_type: URIReference_tag_uniformResourceIdentifier_198 */
    6817             : /* template_members: URIReference exp exp */
    6818             : /* generate_template_type: URIReference_tag_hashValue_199 */
    6819             : const struct asn1_template asn1_URIReference_tag_hashValue_199[] = {
    6820             : /* 0 */ { 0, sizeof(URIReference), ((void *)(uintptr_t)1) },
    6821             : /* 1 */ { A1_PARSE_T(A1T_HEIM_BIT_STRING), 0, NULL }
    6822             : };
    6823             : /* generate_template_type: URIReference_tag__197 */
    6824             : const struct asn1_template asn1_URIReference_tag__197[] = {
    6825             : /* 0 */ { 0, sizeof(struct URIReference), ((void *)(uintptr_t)7) },
    6826             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), offsetof(struct URIReference, uniformResourceIdentifier), asn1_heim_ia5_string_tag__4 },
    6827             : /* 2 */ { A1_OP_TYPE |A1_FLAG_OPTIONAL, offsetof(struct URIReference, hashAlgorithm), asn1_AlgorithmIdentifier },
    6828             : /* 3 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_BitString)|A1_FLAG_OPTIONAL, offsetof(struct URIReference, hashValue), asn1_URIReference_tag_hashValue_199 },
    6829             : /* 4 */ { A1_OP_NAME, 0, "URIReference" },
    6830             : /* 5 */ { A1_OP_NAME, 0, "uniformResourceIdentifier" },
    6831             : /* 6 */ { A1_OP_NAME, 0, "hashAlgorithm" },
    6832             : /* 7 */ { A1_OP_NAME, 0, "hashValue" }
    6833             : };
    6834             : /* generate_template_type: URIReference */
    6835             : const struct asn1_template asn1_URIReference[] = {
    6836             : /* 0 */ { 0, sizeof(URIReference), ((void *)(uintptr_t)1) },
    6837             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_URIReference_tag__197 }
    6838             : };
    6839             : 
    6840             : int ASN1CALL
    6841           0 : decode_URIReference(const unsigned char *p, size_t len, URIReference *data, size_t *size)
    6842             : {
    6843           0 :     memset(data, 0, sizeof(*data));
    6844           0 :     return _asn1_decode_top(asn1_URIReference, 0|0, p, len, data, size);
    6845             : }
    6846             : 
    6847             : 
    6848             : int ASN1CALL
    6849           0 : encode_URIReference(unsigned char *p, size_t len, const URIReference *data, size_t *size)
    6850             : {
    6851           0 :     return _asn1_encode(asn1_URIReference, p, len, data, size);
    6852             : }
    6853             : 
    6854             : 
    6855             : size_t ASN1CALL
    6856           0 : length_URIReference(const URIReference *data)
    6857             : {
    6858           0 :     return _asn1_length(asn1_URIReference, data);
    6859             : }
    6860             : 
    6861             : 
    6862             : void ASN1CALL
    6863           0 : free_URIReference(URIReference *data)
    6864             : {
    6865           0 :     _asn1_free_top(asn1_URIReference, data);
    6866           0 : }
    6867             : 
    6868             : 
    6869             : int ASN1CALL
    6870           0 : copy_URIReference(const URIReference *from, URIReference *to)
    6871             : {
    6872           0 :     return _asn1_copy_top(asn1_URIReference, from, to);
    6873             : }
    6874             : 
    6875             : 
    6876             : char * ASN1CALL
    6877           0 : print_URIReference(const URIReference *data, int flags)
    6878             : {
    6879           0 :     return _asn1_print_top(asn1_URIReference, flags, data);
    6880             : }
    6881             : 
    6882             : /* template_members: EvaluationStatus exp exp */
    6883             : const struct asn1_template asn1_EvaluationStatus_enum_names[] = {
    6884             : /* 0 */ { 0, 0, ((void *)(uintptr_t)3) },
    6885             : /* 1 */ { A1_OP_NAME, 0, "designedToMeet" },
    6886             : /* 2 */ { A1_OP_NAME, 1, "evaluationInProgress" },
    6887             : /* 3 */ { A1_OP_NAME, 2, "evaluationCompleted" }
    6888             : };
    6889             : /* generate_template_type: EvaluationStatus_tag__200 */
    6890             : const struct asn1_template asn1_EvaluationStatus_tag__200[] = {
    6891             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    6892             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_EvaluationStatus_enum_names }
    6893             : };
    6894             : /* generate_template_type: EvaluationStatus */
    6895             : const struct asn1_template asn1_EvaluationStatus[] = {
    6896             : /* 0 */ { 0, sizeof(EvaluationStatus), ((void *)(uintptr_t)1) },
    6897             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Enumerated), 0, asn1_EvaluationStatus_tag__200 }
    6898             : };
    6899             : 
    6900             : int ASN1CALL
    6901           0 : decode_EvaluationStatus(const unsigned char *p, size_t len, EvaluationStatus *data, size_t *size)
    6902             : {
    6903           0 :     memset(data, 0, sizeof(*data));
    6904           0 :     return _asn1_decode_top(asn1_EvaluationStatus, 0|0, p, len, data, size);
    6905             : }
    6906             : 
    6907             : 
    6908             : int ASN1CALL
    6909           0 : encode_EvaluationStatus(unsigned char *p, size_t len, const EvaluationStatus *data, size_t *size)
    6910             : {
    6911           0 :     return _asn1_encode(asn1_EvaluationStatus, p, len, data, size);
    6912             : }
    6913             : 
    6914             : 
    6915             : size_t ASN1CALL
    6916           0 : length_EvaluationStatus(const EvaluationStatus *data)
    6917             : {
    6918           0 :     return _asn1_length(asn1_EvaluationStatus, data);
    6919             : }
    6920             : 
    6921             : 
    6922             : void ASN1CALL
    6923           0 : free_EvaluationStatus(EvaluationStatus *data)
    6924             : {
    6925           0 :     _asn1_free_top(asn1_EvaluationStatus, data);
    6926           0 : }
    6927             : 
    6928             : 
    6929             : int ASN1CALL
    6930           0 : copy_EvaluationStatus(const EvaluationStatus *from, EvaluationStatus *to)
    6931             : {
    6932           0 :     return _asn1_copy_top(asn1_EvaluationStatus, from, to);
    6933             : }
    6934             : 
    6935             : 
    6936             : char * ASN1CALL
    6937           0 : print_EvaluationStatus(const EvaluationStatus *data, int flags)
    6938             : {
    6939           0 :     return _asn1_print_top(asn1_EvaluationStatus, flags, data);
    6940             : }
    6941             : 
    6942             : /* template_members: CommonCriteriaMeasures exp exp */
    6943             : /* tsequence: members isstruct: 1 */
    6944             : /* template_members: CommonCriteriaMeasures exp exp */
    6945             : /* generate_template_type: CommonCriteriaMeasures_tag_version_202 */
    6946             : /* template_members: CommonCriteriaMeasures exp exp */
    6947             : /* generate_template_type: CommonCriteriaMeasures_tag_plus_203 */
    6948             : /* template_members: CommonCriteriaMeasures exp imp */
    6949             : /* generate_template_type: CommonCriteriaMeasures_tag_strengthOfFunction_204 */
    6950             : const struct asn1_template asn1_CommonCriteriaMeasures_tag_strengthOfFunction_204[] = {
    6951             : /* 0 */ { 0, sizeof(StrengthOfFunction), ((void *)(uintptr_t)1) },
    6952             : /* 1 */ { A1_OP_TYPE , 0, asn1_StrengthOfFunction }
    6953             : };
    6954             : /* template_members: CommonCriteriaMeasures exp imp */
    6955             : /* template_members: heim_oid exp exp */
    6956             : /* generate_template_type: heim_oid_tag_profileOid_206 */
    6957             : /* generate_template_type: CommonCriteriaMeasures_tag_profileOid_205 */
    6958             : /* template_members: CommonCriteriaMeasures exp imp */
    6959             : /* generate_template_type: CommonCriteriaMeasures_tag_profileUri_207 */
    6960             : const struct asn1_template asn1_CommonCriteriaMeasures_tag_profileUri_207[] = {
    6961             : /* 0 */ { 0, sizeof(URIReference), ((void *)(uintptr_t)1) },
    6962             : /* 1 */ { A1_OP_TYPE , 0, asn1_URIReference }
    6963             : };
    6964             : /* template_members: CommonCriteriaMeasures exp imp */
    6965             : /* template_members: heim_oid exp exp */
    6966             : /* generate_template_type: heim_oid_tag_targetOid_209 */
    6967             : /* generate_template_type: CommonCriteriaMeasures_tag_targetOid_208 */
    6968             : /* template_members: CommonCriteriaMeasures exp imp */
    6969             : /* generate_template_type: CommonCriteriaMeasures_tag_targetUri_210 */
    6970             : /* generate_template_type: CommonCriteriaMeasures_tag__201 */
    6971             : const struct asn1_template asn1_CommonCriteriaMeasures_tag__201[] = {
    6972             : /* 0 */ { 0|A1_HF_ELLIPSIS, sizeof(struct CommonCriteriaMeasures), ((void *)(uintptr_t)21) },
    6973             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), offsetof(struct CommonCriteriaMeasures, version), asn1_heim_ia5_string_tag__4 },
    6974             : /* 2 */ { A1_OP_TYPE , offsetof(struct CommonCriteriaMeasures, assurancelevel), asn1_EvaluationAssuranceLevel },
    6975             : /* 3 */ { A1_OP_TYPE , offsetof(struct CommonCriteriaMeasures, evaluationStatus), asn1_EvaluationStatus },
    6976             : /* 4 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    6977             : /* 5 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean)|A1_FLAG_DEFAULT, offsetof(struct CommonCriteriaMeasures, plus), asn1_Extension_tag_critical_24 },
    6978             : /* 6 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,0)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct CommonCriteriaMeasures, strengthOfFunction), asn1_CommonCriteriaMeasures_tag_strengthOfFunction_204 },
    6979             : /* 7 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct CommonCriteriaMeasures, profileOid), asn1_heim_oid_tag__63 },
    6980             : /* 8 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,2)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct CommonCriteriaMeasures, profileUri), asn1_CommonCriteriaMeasures_tag_profileUri_207 },
    6981             : /* 9 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,3)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct CommonCriteriaMeasures, targetOid), asn1_heim_oid_tag__63 },
    6982             : /* 10 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,4)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct CommonCriteriaMeasures, targetUri), asn1_CommonCriteriaMeasures_tag_profileUri_207 },
    6983             : /* 11 */ { A1_OP_NAME, 0, "CommonCriteriaMeasures" },
    6984             : /* 12 */ { A1_OP_NAME, 0, "version" },
    6985             : /* 13 */ { A1_OP_NAME, 0, "assurancelevel" },
    6986             : /* 14 */ { A1_OP_NAME, 0, "evaluationStatus" },
    6987             : /* 15 */ { A1_OP_NAME, 0, "plus" },
    6988             : /* 16 */ { A1_OP_NAME, 0, "strengthOfFunction" },
    6989             : /* 17 */ { A1_OP_NAME, 0, "profileOid" },
    6990             : /* 18 */ { A1_OP_NAME, 0, "profileUri" },
    6991             : /* 19 */ { A1_OP_NAME, 0, "targetOid" },
    6992             : /* 20 */ { A1_OP_NAME, 0, "targetUri" },
    6993             : /* 21 */ { A1_OP_NAME, 0, "..." }
    6994             : };
    6995             : /* generate_template_type: CommonCriteriaMeasures */
    6996             : const struct asn1_template asn1_CommonCriteriaMeasures[] = {
    6997             : /* 0 */ { 0, sizeof(CommonCriteriaMeasures), ((void *)(uintptr_t)1) },
    6998             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_CommonCriteriaMeasures_tag__201 }
    6999             : };
    7000             : 
    7001             : int ASN1CALL
    7002           0 : decode_CommonCriteriaMeasures(const unsigned char *p, size_t len, CommonCriteriaMeasures *data, size_t *size)
    7003             : {
    7004           0 :     memset(data, 0, sizeof(*data));
    7005           0 :     return _asn1_decode_top(asn1_CommonCriteriaMeasures, 0|0, p, len, data, size);
    7006             : }
    7007             : 
    7008             : 
    7009             : int ASN1CALL
    7010           0 : encode_CommonCriteriaMeasures(unsigned char *p, size_t len, const CommonCriteriaMeasures *data, size_t *size)
    7011             : {
    7012           0 :     return _asn1_encode(asn1_CommonCriteriaMeasures, p, len, data, size);
    7013             : }
    7014             : 
    7015             : 
    7016             : size_t ASN1CALL
    7017           0 : length_CommonCriteriaMeasures(const CommonCriteriaMeasures *data)
    7018             : {
    7019           0 :     return _asn1_length(asn1_CommonCriteriaMeasures, data);
    7020             : }
    7021             : 
    7022             : 
    7023             : void ASN1CALL
    7024           0 : free_CommonCriteriaMeasures(CommonCriteriaMeasures *data)
    7025             : {
    7026           0 :     _asn1_free_top(asn1_CommonCriteriaMeasures, data);
    7027           0 : }
    7028             : 
    7029             : 
    7030             : int ASN1CALL
    7031           0 : copy_CommonCriteriaMeasures(const CommonCriteriaMeasures *from, CommonCriteriaMeasures *to)
    7032             : {
    7033           0 :     return _asn1_copy_top(asn1_CommonCriteriaMeasures, from, to);
    7034             : }
    7035             : 
    7036             : 
    7037             : char * ASN1CALL
    7038           0 : print_CommonCriteriaMeasures(const CommonCriteriaMeasures *data, int flags)
    7039             : {
    7040           0 :     return _asn1_print_top(asn1_CommonCriteriaMeasures, flags, data);
    7041             : }
    7042             : 
    7043             : /* template_members: FIPSLevel exp exp */
    7044             : /* tsequence: members isstruct: 1 */
    7045             : /* template_members: FIPSLevel exp exp */
    7046             : /* generate_template_type: FIPSLevel_tag_version_212 */
    7047             : /* template_members: FIPSLevel exp exp */
    7048             : /* generate_template_type: FIPSLevel_tag_plus_213 */
    7049             : /* generate_template_type: FIPSLevel_tag__211 */
    7050             : const struct asn1_template asn1_FIPSLevel_tag__211[] = {
    7051             : /* 0 */ { 0|A1_HF_ELLIPSIS, sizeof(struct FIPSLevel), ((void *)(uintptr_t)9) },
    7052             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_IA5String), offsetof(struct FIPSLevel, version), asn1_heim_ia5_string_tag__4 },
    7053             : /* 2 */ { A1_OP_TYPE , offsetof(struct FIPSLevel, level), asn1_SecurityLevel },
    7054             : /* 3 */ { A1_OP_DEFVAL|A1_DV_BOOLEAN, ~0, (void *)(uintptr_t)0 },
    7055             : /* 4 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Boolean)|A1_FLAG_DEFAULT, offsetof(struct FIPSLevel, plus), asn1_Extension_tag_critical_24 },
    7056             : /* 5 */ { A1_OP_NAME, 0, "FIPSLevel" },
    7057             : /* 6 */ { A1_OP_NAME, 0, "version" },
    7058             : /* 7 */ { A1_OP_NAME, 0, "level" },
    7059             : /* 8 */ { A1_OP_NAME, 0, "plus" },
    7060             : /* 9 */ { A1_OP_NAME, 0, "..." }
    7061             : };
    7062             : /* generate_template_type: FIPSLevel */
    7063             : const struct asn1_template asn1_FIPSLevel[] = {
    7064             : /* 0 */ { 0, sizeof(FIPSLevel), ((void *)(uintptr_t)1) },
    7065             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_FIPSLevel_tag__211 }
    7066             : };
    7067             : 
    7068             : int ASN1CALL
    7069           0 : decode_FIPSLevel(const unsigned char *p, size_t len, FIPSLevel *data, size_t *size)
    7070             : {
    7071           0 :     memset(data, 0, sizeof(*data));
    7072           0 :     return _asn1_decode_top(asn1_FIPSLevel, 0|0, p, len, data, size);
    7073             : }
    7074             : 
    7075             : 
    7076             : int ASN1CALL
    7077           0 : encode_FIPSLevel(unsigned char *p, size_t len, const FIPSLevel *data, size_t *size)
    7078             : {
    7079           0 :     return _asn1_encode(asn1_FIPSLevel, p, len, data, size);
    7080             : }
    7081             : 
    7082             : 
    7083             : size_t ASN1CALL
    7084           0 : length_FIPSLevel(const FIPSLevel *data)
    7085             : {
    7086           0 :     return _asn1_length(asn1_FIPSLevel, data);
    7087             : }
    7088             : 
    7089             : 
    7090             : void ASN1CALL
    7091           0 : free_FIPSLevel(FIPSLevel *data)
    7092             : {
    7093           0 :     _asn1_free_top(asn1_FIPSLevel, data);
    7094           0 : }
    7095             : 
    7096             : 
    7097             : int ASN1CALL
    7098           0 : copy_FIPSLevel(const FIPSLevel *from, FIPSLevel *to)
    7099             : {
    7100           0 :     return _asn1_copy_top(asn1_FIPSLevel, from, to);
    7101             : }
    7102             : 
    7103             : 
    7104             : char * ASN1CALL
    7105           0 : print_FIPSLevel(const FIPSLevel *data, int flags)
    7106             : {
    7107           0 :     return _asn1_print_top(asn1_FIPSLevel, flags, data);
    7108             : }
    7109             : 
    7110             : /* template_members: TPMVersion exp exp */
    7111             : const struct asn1_template asn1_TPMVersion_enum_names[] = {
    7112             : /* 0 */ { 0, 0, ((void *)(uintptr_t)1) },
    7113             : /* 1 */ { A1_OP_NAME, 0, "tpm-v1" }
    7114             : };
    7115             : /* generate_template_type: TPMVersion_tag__214 */
    7116             : const struct asn1_template asn1_TPMVersion_tag__214[] = {
    7117             : /* 0 */ { 0, sizeof(int), ((void *)(uintptr_t)1) },
    7118             : /* 1 */ { A1_PARSE_T(A1T_IMEMBER), 0, asn1_TPMVersion_enum_names }
    7119             : };
    7120             : /* generate_template_type: TPMVersion */
    7121             : const struct asn1_template asn1_TPMVersion[] = {
    7122             : /* 0 */ { 0, sizeof(TPMVersion), ((void *)(uintptr_t)1) },
    7123             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_TPMVersion_tag__214 }
    7124             : };
    7125             : 
    7126             : int ASN1CALL
    7127           0 : decode_TPMVersion(const unsigned char *p, size_t len, TPMVersion *data, size_t *size)
    7128             : {
    7129           0 :     memset(data, 0, sizeof(*data));
    7130           0 :     return _asn1_decode_top(asn1_TPMVersion, 0|0, p, len, data, size);
    7131             : }
    7132             : 
    7133             : 
    7134             : int ASN1CALL
    7135           0 : encode_TPMVersion(unsigned char *p, size_t len, const TPMVersion *data, size_t *size)
    7136             : {
    7137           0 :     return _asn1_encode(asn1_TPMVersion, p, len, data, size);
    7138             : }
    7139             : 
    7140             : 
    7141             : size_t ASN1CALL
    7142           0 : length_TPMVersion(const TPMVersion *data)
    7143             : {
    7144           0 :     return _asn1_length(asn1_TPMVersion, data);
    7145             : }
    7146             : 
    7147             : 
    7148             : void ASN1CALL
    7149           0 : free_TPMVersion(TPMVersion *data)
    7150             : {
    7151           0 :     _asn1_free_top(asn1_TPMVersion, data);
    7152           0 : }
    7153             : 
    7154             : 
    7155             : int ASN1CALL
    7156           0 : copy_TPMVersion(const TPMVersion *from, TPMVersion *to)
    7157             : {
    7158           0 :     return _asn1_copy_top(asn1_TPMVersion, from, to);
    7159             : }
    7160             : 
    7161             : 
    7162             : char * ASN1CALL
    7163           0 : print_TPMVersion(const TPMVersion *data, int flags)
    7164             : {
    7165           0 :     return _asn1_print_top(asn1_TPMVersion, flags, data);
    7166             : }
    7167             : 
    7168             : /* template_members: AliasIA5String exp exp */
    7169             : /* generate_template_type: AliasIA5String_tag__215 */
    7170             : /* generate_template_type: AliasIA5String */
    7171             : const struct asn1_template asn1_AliasIA5String[] = {
    7172             : /* 0 */ { 0, sizeof(AliasIA5String), ((void *)(uintptr_t)1) },
    7173             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_UTF8String), 0, asn1_heim_utf8_string_tag__8 }
    7174             : };
    7175             : 
    7176             : int ASN1CALL
    7177           0 : decode_AliasIA5String(const unsigned char *p, size_t len, AliasIA5String *data, size_t *size)
    7178             : {
    7179           0 :     memset(data, 0, sizeof(*data));
    7180           0 :     return _asn1_decode_top(asn1_AliasIA5String, 0|0, p, len, data, size);
    7181             : }
    7182             : 
    7183             : 
    7184             : int ASN1CALL
    7185           0 : encode_AliasIA5String(unsigned char *p, size_t len, const AliasIA5String *data, size_t *size)
    7186             : {
    7187           0 :     return _asn1_encode(asn1_AliasIA5String, p, len, data, size);
    7188             : }
    7189             : 
    7190             : 
    7191             : size_t ASN1CALL
    7192           0 : length_AliasIA5String(const AliasIA5String *data)
    7193             : {
    7194           0 :     return _asn1_length(asn1_AliasIA5String, data);
    7195             : }
    7196             : 
    7197             : 
    7198             : void ASN1CALL
    7199           0 : free_AliasIA5String(AliasIA5String *data)
    7200             : {
    7201           0 :     _asn1_free_top(asn1_AliasIA5String, data);
    7202           0 : }
    7203             : 
    7204             : 
    7205             : int ASN1CALL
    7206           0 : copy_AliasIA5String(const AliasIA5String *from, AliasIA5String *to)
    7207             : {
    7208           0 :     return _asn1_copy_top(asn1_AliasIA5String, from, to);
    7209             : }
    7210             : 
    7211             : 
    7212             : char * ASN1CALL
    7213           0 : print_AliasIA5String(const AliasIA5String *data, int flags)
    7214             : {
    7215           0 :     return _asn1_print_top(asn1_AliasIA5String, flags, data);
    7216             : }
    7217             : 
    7218             : /* template_members: AliasPrintableString exp exp */
    7219             : /* generate_template_type: AliasPrintableString_tag__216 */
    7220             : /* generate_template_type: AliasPrintableString */
    7221             : const struct asn1_template asn1_AliasPrintableString[] = {
    7222             : /* 0 */ { 0, sizeof(AliasPrintableString), ((void *)(uintptr_t)1) },
    7223             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_PrintableString), 0, asn1_heim_printable_string_tag__6 }
    7224             : };
    7225             : 
    7226             : int ASN1CALL
    7227           0 : decode_AliasPrintableString(const unsigned char *p, size_t len, AliasPrintableString *data, size_t *size)
    7228             : {
    7229           0 :     memset(data, 0, sizeof(*data));
    7230           0 :     return _asn1_decode_top(asn1_AliasPrintableString, 0|0, p, len, data, size);
    7231             : }
    7232             : 
    7233             : 
    7234             : int ASN1CALL
    7235           0 : encode_AliasPrintableString(unsigned char *p, size_t len, const AliasPrintableString *data, size_t *size)
    7236             : {
    7237           0 :     return _asn1_encode(asn1_AliasPrintableString, p, len, data, size);
    7238             : }
    7239             : 
    7240             : 
    7241             : size_t ASN1CALL
    7242           0 : length_AliasPrintableString(const AliasPrintableString *data)
    7243             : {
    7244           0 :     return _asn1_length(asn1_AliasPrintableString, data);
    7245             : }
    7246             : 
    7247             : 
    7248             : void ASN1CALL
    7249           0 : free_AliasPrintableString(AliasPrintableString *data)
    7250             : {
    7251           0 :     _asn1_free_top(asn1_AliasPrintableString, data);
    7252           0 : }
    7253             : 
    7254             : 
    7255             : int ASN1CALL
    7256           0 : copy_AliasPrintableString(const AliasPrintableString *from, AliasPrintableString *to)
    7257             : {
    7258           0 :     return _asn1_copy_top(asn1_AliasPrintableString, from, to);
    7259             : }
    7260             : 
    7261             : 
    7262             : char * ASN1CALL
    7263           0 : print_AliasPrintableString(const AliasPrintableString *data, int flags)
    7264             : {
    7265           0 :     return _asn1_print_top(asn1_AliasPrintableString, flags, data);
    7266             : }
    7267             : 
    7268             : /* generate_template_type: X520name */
    7269             : const struct asn1_template asn1_X520name[] = {
    7270             : /* 0 */ { 0, sizeof(X520name), ((void *)(uintptr_t)1) },
    7271             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7272             : };
    7273             : 
    7274             : int ASN1CALL
    7275           0 : decode_X520name(const unsigned char *p, size_t len, X520name *data, size_t *size)
    7276             : {
    7277           0 :     memset(data, 0, sizeof(*data));
    7278           0 :     return _asn1_decode_top(asn1_X520name, 0|0, p, len, data, size);
    7279             : }
    7280             : 
    7281             : 
    7282             : int ASN1CALL
    7283           0 : encode_X520name(unsigned char *p, size_t len, const X520name *data, size_t *size)
    7284             : {
    7285           0 :     return _asn1_encode(asn1_X520name, p, len, data, size);
    7286             : }
    7287             : 
    7288             : 
    7289             : size_t ASN1CALL
    7290           0 : length_X520name(const X520name *data)
    7291             : {
    7292           0 :     return _asn1_length(asn1_X520name, data);
    7293             : }
    7294             : 
    7295             : 
    7296             : void ASN1CALL
    7297           0 : free_X520name(X520name *data)
    7298             : {
    7299           0 :     _asn1_free_top(asn1_X520name, data);
    7300           0 : }
    7301             : 
    7302             : 
    7303             : int ASN1CALL
    7304           0 : copy_X520name(const X520name *from, X520name *to)
    7305             : {
    7306           0 :     return _asn1_copy_top(asn1_X520name, from, to);
    7307             : }
    7308             : 
    7309             : 
    7310             : char * ASN1CALL
    7311           0 : print_X520name(const X520name *data, int flags)
    7312             : {
    7313           0 :     return _asn1_print_top(asn1_X520name, flags, data);
    7314             : }
    7315             : 
    7316             : /* generate_template_type: X520CommonName */
    7317             : const struct asn1_template asn1_X520CommonName[] = {
    7318             : /* 0 */ { 0, sizeof(X520CommonName), ((void *)(uintptr_t)1) },
    7319             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7320             : };
    7321             : 
    7322             : int ASN1CALL
    7323           0 : decode_X520CommonName(const unsigned char *p, size_t len, X520CommonName *data, size_t *size)
    7324             : {
    7325           0 :     memset(data, 0, sizeof(*data));
    7326           0 :     return _asn1_decode_top(asn1_X520CommonName, 0|0, p, len, data, size);
    7327             : }
    7328             : 
    7329             : 
    7330             : int ASN1CALL
    7331           0 : encode_X520CommonName(unsigned char *p, size_t len, const X520CommonName *data, size_t *size)
    7332             : {
    7333           0 :     return _asn1_encode(asn1_X520CommonName, p, len, data, size);
    7334             : }
    7335             : 
    7336             : 
    7337             : size_t ASN1CALL
    7338           0 : length_X520CommonName(const X520CommonName *data)
    7339             : {
    7340           0 :     return _asn1_length(asn1_X520CommonName, data);
    7341             : }
    7342             : 
    7343             : 
    7344             : void ASN1CALL
    7345           0 : free_X520CommonName(X520CommonName *data)
    7346             : {
    7347           0 :     _asn1_free_top(asn1_X520CommonName, data);
    7348           0 : }
    7349             : 
    7350             : 
    7351             : int ASN1CALL
    7352           0 : copy_X520CommonName(const X520CommonName *from, X520CommonName *to)
    7353             : {
    7354           0 :     return _asn1_copy_top(asn1_X520CommonName, from, to);
    7355             : }
    7356             : 
    7357             : 
    7358             : char * ASN1CALL
    7359           0 : print_X520CommonName(const X520CommonName *data, int flags)
    7360             : {
    7361           0 :     return _asn1_print_top(asn1_X520CommonName, flags, data);
    7362             : }
    7363             : 
    7364             : /* generate_template_type: X520LocalityName */
    7365             : const struct asn1_template asn1_X520LocalityName[] = {
    7366             : /* 0 */ { 0, sizeof(X520LocalityName), ((void *)(uintptr_t)1) },
    7367             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7368             : };
    7369             : 
    7370             : int ASN1CALL
    7371           0 : decode_X520LocalityName(const unsigned char *p, size_t len, X520LocalityName *data, size_t *size)
    7372             : {
    7373           0 :     memset(data, 0, sizeof(*data));
    7374           0 :     return _asn1_decode_top(asn1_X520LocalityName, 0|0, p, len, data, size);
    7375             : }
    7376             : 
    7377             : 
    7378             : int ASN1CALL
    7379           0 : encode_X520LocalityName(unsigned char *p, size_t len, const X520LocalityName *data, size_t *size)
    7380             : {
    7381           0 :     return _asn1_encode(asn1_X520LocalityName, p, len, data, size);
    7382             : }
    7383             : 
    7384             : 
    7385             : size_t ASN1CALL
    7386           0 : length_X520LocalityName(const X520LocalityName *data)
    7387             : {
    7388           0 :     return _asn1_length(asn1_X520LocalityName, data);
    7389             : }
    7390             : 
    7391             : 
    7392             : void ASN1CALL
    7393           0 : free_X520LocalityName(X520LocalityName *data)
    7394             : {
    7395           0 :     _asn1_free_top(asn1_X520LocalityName, data);
    7396           0 : }
    7397             : 
    7398             : 
    7399             : int ASN1CALL
    7400           0 : copy_X520LocalityName(const X520LocalityName *from, X520LocalityName *to)
    7401             : {
    7402           0 :     return _asn1_copy_top(asn1_X520LocalityName, from, to);
    7403             : }
    7404             : 
    7405             : 
    7406             : char * ASN1CALL
    7407           0 : print_X520LocalityName(const X520LocalityName *data, int flags)
    7408             : {
    7409           0 :     return _asn1_print_top(asn1_X520LocalityName, flags, data);
    7410             : }
    7411             : 
    7412             : /* generate_template_type: X520OrganizationName */
    7413             : const struct asn1_template asn1_X520OrganizationName[] = {
    7414             : /* 0 */ { 0, sizeof(X520OrganizationName), ((void *)(uintptr_t)1) },
    7415             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7416             : };
    7417             : 
    7418             : int ASN1CALL
    7419           0 : decode_X520OrganizationName(const unsigned char *p, size_t len, X520OrganizationName *data, size_t *size)
    7420             : {
    7421           0 :     memset(data, 0, sizeof(*data));
    7422           0 :     return _asn1_decode_top(asn1_X520OrganizationName, 0|0, p, len, data, size);
    7423             : }
    7424             : 
    7425             : 
    7426             : int ASN1CALL
    7427           0 : encode_X520OrganizationName(unsigned char *p, size_t len, const X520OrganizationName *data, size_t *size)
    7428             : {
    7429           0 :     return _asn1_encode(asn1_X520OrganizationName, p, len, data, size);
    7430             : }
    7431             : 
    7432             : 
    7433             : size_t ASN1CALL
    7434           0 : length_X520OrganizationName(const X520OrganizationName *data)
    7435             : {
    7436           0 :     return _asn1_length(asn1_X520OrganizationName, data);
    7437             : }
    7438             : 
    7439             : 
    7440             : void ASN1CALL
    7441           0 : free_X520OrganizationName(X520OrganizationName *data)
    7442             : {
    7443           0 :     _asn1_free_top(asn1_X520OrganizationName, data);
    7444           0 : }
    7445             : 
    7446             : 
    7447             : int ASN1CALL
    7448           0 : copy_X520OrganizationName(const X520OrganizationName *from, X520OrganizationName *to)
    7449             : {
    7450           0 :     return _asn1_copy_top(asn1_X520OrganizationName, from, to);
    7451             : }
    7452             : 
    7453             : 
    7454             : char * ASN1CALL
    7455           0 : print_X520OrganizationName(const X520OrganizationName *data, int flags)
    7456             : {
    7457           0 :     return _asn1_print_top(asn1_X520OrganizationName, flags, data);
    7458             : }
    7459             : 
    7460             : /* generate_template_type: X520StateOrProvinceName */
    7461             : const struct asn1_template asn1_X520StateOrProvinceName[] = {
    7462             : /* 0 */ { 0, sizeof(X520StateOrProvinceName), ((void *)(uintptr_t)1) },
    7463             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7464             : };
    7465             : 
    7466             : int ASN1CALL
    7467           0 : decode_X520StateOrProvinceName(const unsigned char *p, size_t len, X520StateOrProvinceName *data, size_t *size)
    7468             : {
    7469           0 :     memset(data, 0, sizeof(*data));
    7470           0 :     return _asn1_decode_top(asn1_X520StateOrProvinceName, 0|0, p, len, data, size);
    7471             : }
    7472             : 
    7473             : 
    7474             : int ASN1CALL
    7475           0 : encode_X520StateOrProvinceName(unsigned char *p, size_t len, const X520StateOrProvinceName *data, size_t *size)
    7476             : {
    7477           0 :     return _asn1_encode(asn1_X520StateOrProvinceName, p, len, data, size);
    7478             : }
    7479             : 
    7480             : 
    7481             : size_t ASN1CALL
    7482           0 : length_X520StateOrProvinceName(const X520StateOrProvinceName *data)
    7483             : {
    7484           0 :     return _asn1_length(asn1_X520StateOrProvinceName, data);
    7485             : }
    7486             : 
    7487             : 
    7488             : void ASN1CALL
    7489           0 : free_X520StateOrProvinceName(X520StateOrProvinceName *data)
    7490             : {
    7491           0 :     _asn1_free_top(asn1_X520StateOrProvinceName, data);
    7492           0 : }
    7493             : 
    7494             : 
    7495             : int ASN1CALL
    7496           0 : copy_X520StateOrProvinceName(const X520StateOrProvinceName *from, X520StateOrProvinceName *to)
    7497             : {
    7498           0 :     return _asn1_copy_top(asn1_X520StateOrProvinceName, from, to);
    7499             : }
    7500             : 
    7501             : 
    7502             : char * ASN1CALL
    7503           0 : print_X520StateOrProvinceName(const X520StateOrProvinceName *data, int flags)
    7504             : {
    7505           0 :     return _asn1_print_top(asn1_X520StateOrProvinceName, flags, data);
    7506             : }
    7507             : 
    7508             : /* generate_template_type: X520OrganizationalUnitName */
    7509             : const struct asn1_template asn1_X520OrganizationalUnitName[] = {
    7510             : /* 0 */ { 0, sizeof(X520OrganizationalUnitName), ((void *)(uintptr_t)1) },
    7511             : /* 1 */ { A1_OP_TYPE , 0, asn1_DirectoryString }
    7512             : };
    7513             : 
    7514             : int ASN1CALL
    7515           0 : decode_X520OrganizationalUnitName(const unsigned char *p, size_t len, X520OrganizationalUnitName *data, size_t *size)
    7516             : {
    7517           0 :     memset(data, 0, sizeof(*data));
    7518           0 :     return _asn1_decode_top(asn1_X520OrganizationalUnitName, 0|0, p, len, data, size);
    7519             : }
    7520             : 
    7521             : 
    7522             : int ASN1CALL
    7523           0 : encode_X520OrganizationalUnitName(unsigned char *p, size_t len, const X520OrganizationalUnitName *data, size_t *size)
    7524             : {
    7525           0 :     return _asn1_encode(asn1_X520OrganizationalUnitName, p, len, data, size);
    7526             : }
    7527             : 
    7528             : 
    7529             : size_t ASN1CALL
    7530           0 : length_X520OrganizationalUnitName(const X520OrganizationalUnitName *data)
    7531             : {
    7532           0 :     return _asn1_length(asn1_X520OrganizationalUnitName, data);
    7533             : }
    7534             : 
    7535             : 
    7536             : void ASN1CALL
    7537           0 : free_X520OrganizationalUnitName(X520OrganizationalUnitName *data)
    7538             : {
    7539           0 :     _asn1_free_top(asn1_X520OrganizationalUnitName, data);
    7540           0 : }
    7541             : 
    7542             : 
    7543             : int ASN1CALL
    7544           0 : copy_X520OrganizationalUnitName(const X520OrganizationalUnitName *from, X520OrganizationalUnitName *to)
    7545             : {
    7546           0 :     return _asn1_copy_top(asn1_X520OrganizationalUnitName, from, to);
    7547             : }
    7548             : 
    7549             : 
    7550             : char * ASN1CALL
    7551           0 : print_X520OrganizationalUnitName(const X520OrganizationalUnitName *data, int flags)
    7552             : {
    7553           0 :     return _asn1_print_top(asn1_X520OrganizationalUnitName, flags, data);
    7554             : }
    7555             : 
    7556             : /* template_members: SingleAttribute exp exp */
    7557             : /* tsequence: members isstruct: 1 */
    7558             : /* template_members: SingleAttribute exp exp */
    7559             : /* generate_template_type: SingleAttribute_tag_type_218 */
    7560             : const struct asn1_template asn1_SupportedAttributes[] = {
    7561             : /* 0 */ { 0, 0, ((void *)(uintptr_t)22) },
    7562             : /* 1 */ { A1_OP_NAME, 0, "SupportedAttributes" },
    7563             : /* 2 */ { A1_OP_NAME, 0, "at-domainComponent" },
    7564             : /* 3 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_domainComponent },
    7565             : /* 4 */ { A1_OP_OPENTYPE, sizeof(AliasIA5String), (const void *)&asn1_AliasIA5String },
    7566             : /* 5 */ { A1_OP_NAME, 0, "at-emailAddress" },
    7567             : /* 6 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_emailAddress },
    7568             : /* 7 */ { A1_OP_OPENTYPE, sizeof(AliasIA5String), (const void *)&asn1_AliasIA5String },
    7569             : /* 8 */ { A1_OP_NAME, 0, "at-x520CommonName" },
    7570             : /* 9 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_commonName },
    7571             : /* 10 */ { A1_OP_OPENTYPE, sizeof(X520CommonName), (const void *)&asn1_X520CommonName },
    7572             : /* 11 */ { A1_OP_NAME, 0, "at-surname" },
    7573             : /* 12 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_surname },
    7574             : /* 13 */ { A1_OP_OPENTYPE, sizeof(X520name), (const void *)&asn1_X520name },
    7575             : /* 14 */ { A1_OP_NAME, 0, "at-x520SerialNumber" },
    7576             : /* 15 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_serialNumber },
    7577             : /* 16 */ { A1_OP_OPENTYPE, sizeof(AliasPrintableString), (const void *)&asn1_AliasPrintableString },
    7578             : /* 17 */ { A1_OP_NAME, 0, "at-x520countryName" },
    7579             : /* 18 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_countryName },
    7580             : /* 19 */ { A1_OP_OPENTYPE, sizeof(AliasPrintableString), (const void *)&asn1_AliasPrintableString },
    7581             : /* 20 */ { A1_OP_NAME, 0, "at-x520LocalityName" },
    7582             : /* 21 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_localityName },
    7583             : /* 22 */ { A1_OP_OPENTYPE, sizeof(X520LocalityName), (const void *)&asn1_X520LocalityName },
    7584             : /* 23 */ { A1_OP_NAME, 0, "at-x520StateOrProvinceName" },
    7585             : /* 24 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_stateOrProvinceName },
    7586             : /* 25 */ { A1_OP_OPENTYPE, sizeof(DirectoryString), (const void *)&asn1_DirectoryString },
    7587             : /* 26 */ { A1_OP_NAME, 0, "at-x520OrganizationName" },
    7588             : /* 27 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_organizationName },
    7589             : /* 28 */ { A1_OP_OPENTYPE, sizeof(DirectoryString), (const void *)&asn1_DirectoryString },
    7590             : /* 29 */ { A1_OP_NAME, 0, "at-x520OrganizationalUnitName" },
    7591             : /* 30 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_organizationalUnitName },
    7592             : /* 31 */ { A1_OP_OPENTYPE, sizeof(DirectoryString), (const void *)&asn1_DirectoryString },
    7593             : /* 32 */ { A1_OP_NAME, 0, "at-x520Title" },
    7594             : /* 33 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_title },
    7595             : /* 34 */ { A1_OP_OPENTYPE, sizeof(DirectoryString), (const void *)&asn1_DirectoryString },
    7596             : /* 35 */ { A1_OP_NAME, 0, "at-name" },
    7597             : /* 36 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_name },
    7598             : /* 37 */ { A1_OP_OPENTYPE, sizeof(X520name), (const void *)&asn1_X520name },
    7599             : /* 38 */ { A1_OP_NAME, 0, "at-givenName" },
    7600             : /* 39 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_givenName },
    7601             : /* 40 */ { A1_OP_OPENTYPE, sizeof(X520name), (const void *)&asn1_X520name },
    7602             : /* 41 */ { A1_OP_NAME, 0, "at-initials" },
    7603             : /* 42 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_initials },
    7604             : /* 43 */ { A1_OP_OPENTYPE, sizeof(X520name), (const void *)&asn1_X520name },
    7605             : /* 44 */ { A1_OP_NAME, 0, "at-generationQualifier" },
    7606             : /* 45 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_generationQualifier },
    7607             : /* 46 */ { A1_OP_OPENTYPE, sizeof(X520name), (const void *)&asn1_X520name },
    7608             : /* 47 */ { A1_OP_NAME, 0, "at-x520dnQualifier" },
    7609             : /* 48 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_dnQualifier },
    7610             : /* 49 */ { A1_OP_OPENTYPE, sizeof(AliasPrintableString), (const void *)&asn1_AliasPrintableString },
    7611             : /* 50 */ { A1_OP_NAME, 0, "at-x520Pseudonym" },
    7612             : /* 51 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_id_at_pseudonym },
    7613             : /* 52 */ { A1_OP_OPENTYPE, sizeof(DirectoryString), (const void *)&asn1_DirectoryString },
    7614             : /* 53 */ { A1_OP_NAME, 0, "at-TPMManufacturer" },
    7615             : /* 54 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_tcg_at_tpmManufacturer },
    7616             : /* 55 */ { A1_OP_OPENTYPE, sizeof(AliasUTF8String), (const void *)&asn1_AliasUTF8String },
    7617             : /* 56 */ { A1_OP_NAME, 0, "at-TPMModel" },
    7618             : /* 57 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_tcg_at_tpmModel },
    7619             : /* 58 */ { A1_OP_OPENTYPE, sizeof(AliasUTF8String), (const void *)&asn1_AliasUTF8String },
    7620             : /* 59 */ { A1_OP_NAME, 0, "at-TPMVersion" },
    7621             : /* 60 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_tcg_at_tpmVersion },
    7622             : /* 61 */ { A1_OP_OPENTYPE, sizeof(AliasUTF8String), (const void *)&asn1_AliasUTF8String },
    7623             : /* 62 */ { A1_OP_NAME, 0, "at-TPMSpecification" },
    7624             : /* 63 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_tcg_at_tpmSpecification },
    7625             : /* 64 */ { A1_OP_OPENTYPE, sizeof(TPMSpecification), (const void *)&asn1_TPMSpecification },
    7626             : /* 65 */ { A1_OP_NAME, 0, "at-TPMSecurityAssertions" },
    7627             : /* 66 */ { A1_OP_OPENTYPE_ID, 0, (const void *)&asn1_oid_tcg_at_tpmSecurityAssertions },
    7628             : /* 67 */ { A1_OP_OPENTYPE, sizeof(TPMSecurityAssertions), (const void *)&asn1_TPMSecurityAssertions }
    7629             : };
    7630             : /* generate_template_type: SingleAttribute_tag__217 */
    7631             : const struct asn1_template asn1_SingleAttribute_tag__217[] = {
    7632             : /* 0 */ { 0, sizeof(struct SingleAttribute), ((void *)(uintptr_t)6) },
    7633             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct SingleAttribute, type), asn1_AttributeType_tag__1 },
    7634             : /* 2 */ { A1_OP_TYPE_EXTERN , offsetof(struct SingleAttribute, value), &asn1_extern_HEIM_ANY},
    7635             : /* 3 */ { A1_OP_OPENTYPE_OBJSET | A1_OS_IS_SORTED |0 | (1 << 10) | 0, offsetof(SingleAttribute, _ioschoice_value), asn1_SupportedAttributes },
    7636             : /* 4 */ { A1_OP_NAME, 0, "SingleAttribute" },
    7637             : /* 5 */ { A1_OP_NAME, 0, "type" },
    7638             : /* 6 */ { A1_OP_NAME, 0, "value" }
    7639             : };
    7640             : /* generate_template_type: SingleAttribute */
    7641             : const struct asn1_template asn1_SingleAttribute[] = {
    7642             : /* 0 */ { 0, sizeof(SingleAttribute), ((void *)(uintptr_t)1) },
    7643             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_SingleAttribute_tag__217 }
    7644             : };
    7645             : 
    7646             : int ASN1CALL
    7647           0 : decode_SingleAttribute(const unsigned char *p, size_t len, SingleAttribute *data, size_t *size)
    7648             : {
    7649           0 :     memset(data, 0, sizeof(*data));
    7650           0 :     return _asn1_decode_top(asn1_SingleAttribute, 0|0, p, len, data, size);
    7651             : }
    7652             : 
    7653             : 
    7654             : int ASN1CALL
    7655           0 : encode_SingleAttribute(unsigned char *p, size_t len, const SingleAttribute *data, size_t *size)
    7656             : {
    7657           0 :     return _asn1_encode(asn1_SingleAttribute, p, len, data, size);
    7658             : }
    7659             : 
    7660             : 
    7661             : size_t ASN1CALL
    7662           0 : length_SingleAttribute(const SingleAttribute *data)
    7663             : {
    7664           0 :     return _asn1_length(asn1_SingleAttribute, data);
    7665             : }
    7666             : 
    7667             : 
    7668             : void ASN1CALL
    7669           0 : free_SingleAttribute(SingleAttribute *data)
    7670             : {
    7671           0 :     _asn1_free_top(asn1_SingleAttribute, data);
    7672           0 : }
    7673             : 
    7674             : 
    7675             : int ASN1CALL
    7676           0 : copy_SingleAttribute(const SingleAttribute *from, SingleAttribute *to)
    7677             : {
    7678           0 :     return _asn1_copy_top(asn1_SingleAttribute, from, to);
    7679             : }
    7680             : 
    7681             : 
    7682             : char * ASN1CALL
    7683           0 : print_SingleAttribute(const SingleAttribute *data, int flags)
    7684             : {
    7685           0 :     return _asn1_print_top(asn1_SingleAttribute, flags, data);
    7686             : }
    7687             : 
    7688             : /* template_members: AttributeSet exp exp */
    7689             : /* tsequence: members isstruct: 1 */
    7690             : /* template_members: AttributeSet exp exp */
    7691             : /* generate_template_type: AttributeSet_tag_type_220 */
    7692             : /* template_members: AttributeSet exp exp */
    7693             : /* generate_template_type: AttributeSet_values_20 */
    7694             : /* generate_template_type: AttributeSet_tag_values_221 */
    7695             : const struct asn1_template asn1_AttributeSet_tag_values_221[] = {
    7696             : /* 0 */ { 0, sizeof(struct AttributeSet_values), ((void *)(uintptr_t)1) },
    7697             : /* 1 */ { A1_OP_SETOF, 0, asn1_OtherName_tag_value_52 }
    7698             : };
    7699             : /* generate_template_type: AttributeSet_tag__219 */
    7700             : const struct asn1_template asn1_AttributeSet_tag__219[] = {
    7701             : /* 0 */ { 0, sizeof(struct AttributeSet), ((void *)(uintptr_t)6) },
    7702             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_OID), offsetof(struct AttributeSet, type), asn1_AttributeType_tag__1 },
    7703             : /* 2 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Set), offsetof(struct AttributeSet, values), asn1_AttributeSet_tag_values_221 },
    7704             : /* 3 */ { A1_OP_OPENTYPE_OBJSET | A1_OS_IS_SORTED |A1_OS_OT_IS_ARRAY | (1 << 10) | 0, offsetof(AttributeSet, _ioschoice_values), asn1_SupportedAttributes },
    7705             : /* 4 */ { A1_OP_NAME, 0, "AttributeSet" },
    7706             : /* 5 */ { A1_OP_NAME, 0, "type" },
    7707             : /* 6 */ { A1_OP_NAME, 0, "values" }
    7708             : };
    7709             : /* generate_template_type: AttributeSet */
    7710             : const struct asn1_template asn1_AttributeSet[] = {
    7711             : /* 0 */ { 0, sizeof(AttributeSet), ((void *)(uintptr_t)1) },
    7712             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_AttributeSet_tag__219 }
    7713             : };
    7714             : 
    7715             : int ASN1CALL
    7716           0 : decode_AttributeSet(const unsigned char *p, size_t len, AttributeSet *data, size_t *size)
    7717             : {
    7718           0 :     memset(data, 0, sizeof(*data));
    7719           0 :     return _asn1_decode_top(asn1_AttributeSet, 0|0, p, len, data, size);
    7720             : }
    7721             : 
    7722             : 
    7723             : int ASN1CALL
    7724           0 : encode_AttributeSet(unsigned char *p, size_t len, const AttributeSet *data, size_t *size)
    7725             : {
    7726           0 :     return _asn1_encode(asn1_AttributeSet, p, len, data, size);
    7727             : }
    7728             : 
    7729             : 
    7730             : size_t ASN1CALL
    7731           0 : length_AttributeSet(const AttributeSet *data)
    7732             : {
    7733           0 :     return _asn1_length(asn1_AttributeSet, data);
    7734             : }
    7735             : 
    7736             : 
    7737             : void ASN1CALL
    7738           0 : free_AttributeSet(AttributeSet *data)
    7739             : {
    7740           0 :     _asn1_free_top(asn1_AttributeSet, data);
    7741           0 : }
    7742             : 
    7743             : 
    7744             : int ASN1CALL
    7745           0 : copy_AttributeSet(const AttributeSet *from, AttributeSet *to)
    7746             : {
    7747           0 :     return _asn1_copy_top(asn1_AttributeSet, from, to);
    7748             : }
    7749             : 
    7750             : 
    7751             : char * ASN1CALL
    7752           0 : print_AttributeSet(const AttributeSet *data, int flags)
    7753             : {
    7754           0 :     return _asn1_print_top(asn1_AttributeSet, flags, data);
    7755             : }
    7756             : 
    7757             : /* template_members: SubjectDirectoryAttributes exp exp */
    7758             : /* generate_template_type: AttributeSet_seofTstruct_21 */
    7759             : const struct asn1_template asn1_AttributeSet_seofTstruct_21[] = {
    7760             : /* 0 */ { 0, sizeof(AttributeSet), ((void *)(uintptr_t)1) },
    7761             : /* 1 */ { A1_OP_TYPE , 0, asn1_AttributeSet }
    7762             : };
    7763             : /* generate_template_type: SubjectDirectoryAttributes_tag__222 */
    7764             : const struct asn1_template asn1_SubjectDirectoryAttributes_tag__222[] = {
    7765             : /* 0 */ { 0, sizeof(AttributeSet), ((void *)(uintptr_t)1) },
    7766             : /* 1 */ { A1_OP_SEQOF, 0, asn1_AttributeSet_seofTstruct_21 }
    7767             : };
    7768             : /* generate_template_type: SubjectDirectoryAttributes */
    7769             : const struct asn1_template asn1_SubjectDirectoryAttributes[] = {
    7770             : /* 0 */ { 0, sizeof(SubjectDirectoryAttributes), ((void *)(uintptr_t)1) },
    7771             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_SubjectDirectoryAttributes_tag__222 }
    7772             : };
    7773             : 
    7774             : int ASN1CALL
    7775           0 : decode_SubjectDirectoryAttributes(const unsigned char *p, size_t len, SubjectDirectoryAttributes *data, size_t *size)
    7776             : {
    7777           0 :     memset(data, 0, sizeof(*data));
    7778           0 :     return _asn1_decode_top(asn1_SubjectDirectoryAttributes, 0|0, p, len, data, size);
    7779             : }
    7780             : 
    7781             : 
    7782             : int ASN1CALL
    7783           0 : encode_SubjectDirectoryAttributes(unsigned char *p, size_t len, const SubjectDirectoryAttributes *data, size_t *size)
    7784             : {
    7785           0 :     return _asn1_encode(asn1_SubjectDirectoryAttributes, p, len, data, size);
    7786             : }
    7787             : 
    7788             : 
    7789             : size_t ASN1CALL
    7790           0 : length_SubjectDirectoryAttributes(const SubjectDirectoryAttributes *data)
    7791             : {
    7792           0 :     return _asn1_length(asn1_SubjectDirectoryAttributes, data);
    7793             : }
    7794             : 
    7795             : 
    7796             : void ASN1CALL
    7797           0 : free_SubjectDirectoryAttributes(SubjectDirectoryAttributes *data)
    7798             : {
    7799           0 :     _asn1_free_top(asn1_SubjectDirectoryAttributes, data);
    7800           0 : }
    7801             : 
    7802             : 
    7803             : int ASN1CALL
    7804           0 : copy_SubjectDirectoryAttributes(const SubjectDirectoryAttributes *from, SubjectDirectoryAttributes *to)
    7805             : {
    7806           0 :     return _asn1_copy_top(asn1_SubjectDirectoryAttributes, from, to);
    7807             : }
    7808             : 
    7809             : 
    7810             : char * ASN1CALL
    7811           0 : print_SubjectDirectoryAttributes(const SubjectDirectoryAttributes *data, int flags)
    7812             : {
    7813           0 :     return _asn1_print_top(asn1_SubjectDirectoryAttributes, flags, data);
    7814             : }
    7815             : 
    7816             : /* template_members: SkipCerts exp exp */
    7817             : /* generate_template_type: SkipCerts_tag__223 */
    7818             : /* generate_template_type: SkipCerts */
    7819             : const struct asn1_template asn1_SkipCerts[] = {
    7820             : /* 0 */ { 0, sizeof(SkipCerts), ((void *)(uintptr_t)1) },
    7821             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_BasicConstraints_tag_pathLenConstraint_100 }
    7822             : };
    7823             : 
    7824             : int ASN1CALL
    7825           0 : decode_SkipCerts(const unsigned char *p, size_t len, SkipCerts *data, size_t *size)
    7826             : {
    7827           0 :     memset(data, 0, sizeof(*data));
    7828           0 :     return _asn1_decode_top(asn1_SkipCerts, 0|0, p, len, data, size);
    7829             : }
    7830             : 
    7831             : 
    7832             : int ASN1CALL
    7833           0 : encode_SkipCerts(unsigned char *p, size_t len, const SkipCerts *data, size_t *size)
    7834             : {
    7835           0 :     return _asn1_encode(asn1_SkipCerts, p, len, data, size);
    7836             : }
    7837             : 
    7838             : 
    7839             : size_t ASN1CALL
    7840           0 : length_SkipCerts(const SkipCerts *data)
    7841             : {
    7842           0 :     return _asn1_length(asn1_SkipCerts, data);
    7843             : }
    7844             : 
    7845             : 
    7846             : void ASN1CALL
    7847           0 : free_SkipCerts(SkipCerts *data)
    7848             : {
    7849           0 :     _asn1_free_top(asn1_SkipCerts, data);
    7850           0 : }
    7851             : 
    7852             : 
    7853             : int ASN1CALL
    7854           0 : copy_SkipCerts(const SkipCerts *from, SkipCerts *to)
    7855             : {
    7856           0 :     return _asn1_copy_top(asn1_SkipCerts, from, to);
    7857             : }
    7858             : 
    7859             : 
    7860             : char * ASN1CALL
    7861           0 : print_SkipCerts(const SkipCerts *data, int flags)
    7862             : {
    7863           0 :     return _asn1_print_top(asn1_SkipCerts, flags, data);
    7864             : }
    7865             : 
    7866             : /* template_members: PolicyConstraints exp exp */
    7867             : /* tsequence: members isstruct: 1 */
    7868             : /* template_members: PolicyConstraints exp imp */
    7869             : /* generate_template_type: PolicyConstraints_tag_requireExplicitPolicy_225 */
    7870             : const struct asn1_template asn1_PolicyConstraints_tag_requireExplicitPolicy_225[] = {
    7871             : /* 0 */ { 0, sizeof(SkipCerts), ((void *)(uintptr_t)1) },
    7872             : /* 1 */ { A1_OP_TYPE , 0, asn1_SkipCerts }
    7873             : };
    7874             : /* template_members: PolicyConstraints exp imp */
    7875             : /* generate_template_type: PolicyConstraints_tag_inhibitPolicyMapping_226 */
    7876             : /* generate_template_type: PolicyConstraints_tag__224 */
    7877             : const struct asn1_template asn1_PolicyConstraints_tag__224[] = {
    7878             : /* 0 */ { 0, sizeof(struct PolicyConstraints), ((void *)(uintptr_t)5) },
    7879             : /* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,0)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct PolicyConstraints, requireExplicitPolicy), asn1_PolicyConstraints_tag_requireExplicitPolicy_225 },
    7880             : /* 2 */ { A1_TAG_T(ASN1_C_CONTEXT,PRIM,1)|A1_FLAG_OPTIONAL|A1_FLAG_IMPLICIT, offsetof(struct PolicyConstraints, inhibitPolicyMapping), asn1_PolicyConstraints_tag_requireExplicitPolicy_225 },
    7881             : /* 3 */ { A1_OP_NAME, 0, "PolicyConstraints" },
    7882             : /* 4 */ { A1_OP_NAME, 0, "requireExplicitPolicy" },
    7883             : /* 5 */ { A1_OP_NAME, 0, "inhibitPolicyMapping" }
    7884             : };
    7885             : /* generate_template_type: PolicyConstraints */
    7886             : const struct asn1_template asn1_PolicyConstraints[] = {
    7887             : /* 0 */ { 0, sizeof(PolicyConstraints), ((void *)(uintptr_t)1) },
    7888             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_PolicyConstraints_tag__224 }
    7889             : };
    7890             : 
    7891             : int ASN1CALL
    7892           0 : decode_PolicyConstraints(const unsigned char *p, size_t len, PolicyConstraints *data, size_t *size)
    7893             : {
    7894           0 :     memset(data, 0, sizeof(*data));
    7895           0 :     return _asn1_decode_top(asn1_PolicyConstraints, 0|0, p, len, data, size);
    7896             : }
    7897             : 
    7898             : 
    7899             : int ASN1CALL
    7900           0 : encode_PolicyConstraints(unsigned char *p, size_t len, const PolicyConstraints *data, size_t *size)
    7901             : {
    7902           0 :     return _asn1_encode(asn1_PolicyConstraints, p, len, data, size);
    7903             : }
    7904             : 
    7905             : 
    7906             : size_t ASN1CALL
    7907           0 : length_PolicyConstraints(const PolicyConstraints *data)
    7908             : {
    7909           0 :     return _asn1_length(asn1_PolicyConstraints, data);
    7910             : }
    7911             : 
    7912             : 
    7913             : void ASN1CALL
    7914           0 : free_PolicyConstraints(PolicyConstraints *data)
    7915             : {
    7916           0 :     _asn1_free_top(asn1_PolicyConstraints, data);
    7917           0 : }
    7918             : 
    7919             : 
    7920             : int ASN1CALL
    7921           0 : copy_PolicyConstraints(const PolicyConstraints *from, PolicyConstraints *to)
    7922             : {
    7923           0 :     return _asn1_copy_top(asn1_PolicyConstraints, from, to);
    7924             : }
    7925             : 
    7926             : 
    7927             : char * ASN1CALL
    7928           0 : print_PolicyConstraints(const PolicyConstraints *data, int flags)
    7929             : {
    7930           0 :     return _asn1_print_top(asn1_PolicyConstraints, flags, data);
    7931             : }
    7932             : 
    7933             : /* template_members: HeimPkinitPrincMaxLifeSecs exp exp */
    7934             : /* generate_template_type: HeimPkinitPrincMaxLifeSecs_tag__227 */
    7935             : /* generate_template_type: HeimPkinitPrincMaxLifeSecs */
    7936             : const struct asn1_template asn1_HeimPkinitPrincMaxLifeSecs[] = {
    7937             : /* 0 */ { 0, sizeof(HeimPkinitPrincMaxLifeSecs), ((void *)(uintptr_t)1) },
    7938             : /* 1 */ { A1_TAG_T(ASN1_C_UNIV,PRIM,UT_Integer), 0, asn1_BasicConstraints_tag_pathLenConstraint_100 }
    7939             : };
    7940             : 
    7941             : int ASN1CALL
    7942           0 : decode_HeimPkinitPrincMaxLifeSecs(const unsigned char *p, size_t len, HeimPkinitPrincMaxLifeSecs *data, size_t *size)
    7943             : {
    7944           0 :     memset(data, 0, sizeof(*data));
    7945           0 :     return _asn1_decode_top(asn1_HeimPkinitPrincMaxLifeSecs, 0|0, p, len, data, size);
    7946             : }
    7947             : 
    7948             : 
    7949             : int ASN1CALL
    7950           0 : encode_HeimPkinitPrincMaxLifeSecs(unsigned char *p, size_t len, const HeimPkinitPrincMaxLifeSecs *data, size_t *size)
    7951             : {
    7952           0 :     return _asn1_encode(asn1_HeimPkinitPrincMaxLifeSecs, p, len, data, size);
    7953             : }
    7954             : 
    7955             : 
    7956             : size_t ASN1CALL
    7957           0 : length_HeimPkinitPrincMaxLifeSecs(const HeimPkinitPrincMaxLifeSecs *data)
    7958             : {
    7959           0 :     return _asn1_length(asn1_HeimPkinitPrincMaxLifeSecs, data);
    7960             : }
    7961             : 
    7962             : 
    7963             : void ASN1CALL
    7964           0 : free_HeimPkinitPrincMaxLifeSecs(HeimPkinitPrincMaxLifeSecs *data)
    7965             : {
    7966           0 :     _asn1_free_top(asn1_HeimPkinitPrincMaxLifeSecs, data);
    7967           0 : }
    7968             : 
    7969             : 
    7970             : int ASN1CALL
    7971           0 : copy_HeimPkinitPrincMaxLifeSecs(const HeimPkinitPrincMaxLifeSecs *from, HeimPkinitPrincMaxLifeSecs *to)
    7972             : {
    7973           0 :     return _asn1_copy_top(asn1_HeimPkinitPrincMaxLifeSecs, from, to);
    7974             : }
    7975             : 
    7976             : 
    7977             : char * ASN1CALL
    7978           0 : print_HeimPkinitPrincMaxLifeSecs(const HeimPkinitPrincMaxLifeSecs *data, int flags)
    7979             : {
    7980           0 :     return _asn1_print_top(asn1_HeimPkinitPrincMaxLifeSecs, flags, data);
    7981             : }
    7982             : 

Generated by: LCOV version 1.14