diff options
Diffstat (limited to 'src/lib/libcrypto/gost')
| -rw-r--r-- | src/lib/libcrypto/gost/gost_asn1.c | 130 |
1 files changed, 125 insertions, 5 deletions
diff --git a/src/lib/libcrypto/gost/gost_asn1.c b/src/lib/libcrypto/gost/gost_asn1.c index b8ed244e49..5d7fb51177 100644 --- a/src/lib/libcrypto/gost/gost_asn1.c +++ b/src/lib/libcrypto/gost/gost_asn1.c | |||
| @@ -21,20 +21,92 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = { | |||
| 21 | ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), | 21 | ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO), |
| 22 | ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) | 22 | ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0) |
| 23 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) | 23 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT) |
| 24 | IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT) | 24 | |
| 25 | GOST_KEY_TRANSPORT * | ||
| 26 | d2i_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT **a, const unsigned char **in, long len) | ||
| 27 | { | ||
| 28 | return (GOST_KEY_TRANSPORT *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 29 | &GOST_KEY_TRANSPORT_it); | ||
| 30 | } | ||
| 31 | |||
| 32 | int | ||
| 33 | i2d_GOST_KEY_TRANSPORT(GOST_KEY_TRANSPORT *a, unsigned char **out) | ||
| 34 | { | ||
| 35 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_TRANSPORT_it); | ||
| 36 | } | ||
| 37 | |||
| 38 | GOST_KEY_TRANSPORT * | ||
| 39 | GOST_KEY_TRANSPORT_new(void) | ||
| 40 | { | ||
| 41 | return (GOST_KEY_TRANSPORT *)ASN1_item_new(&GOST_KEY_TRANSPORT_it); | ||
| 42 | } | ||
| 43 | |||
| 44 | void | ||
| 45 | GOST_KEY_TRANSPORT_free(GOST_KEY_TRANSPORT *a) | ||
| 46 | { | ||
| 47 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_TRANSPORT_it); | ||
| 48 | } | ||
| 25 | 49 | ||
| 26 | ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { | 50 | ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = { |
| 27 | ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), | 51 | ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING), |
| 28 | ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) | 52 | ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING) |
| 29 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) | 53 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO) |
| 30 | IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO) | 54 | |
| 55 | GOST_KEY_INFO * | ||
| 56 | d2i_GOST_KEY_INFO(GOST_KEY_INFO **a, const unsigned char **in, long len) | ||
| 57 | { | ||
| 58 | return (GOST_KEY_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 59 | &GOST_KEY_INFO_it); | ||
| 60 | } | ||
| 61 | |||
| 62 | int | ||
| 63 | i2d_GOST_KEY_INFO(GOST_KEY_INFO *a, unsigned char **out) | ||
| 64 | { | ||
| 65 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_INFO_it); | ||
| 66 | } | ||
| 67 | |||
| 68 | GOST_KEY_INFO * | ||
| 69 | GOST_KEY_INFO_new(void) | ||
| 70 | { | ||
| 71 | return (GOST_KEY_INFO *)ASN1_item_new(&GOST_KEY_INFO_it); | ||
| 72 | } | ||
| 73 | |||
| 74 | void | ||
| 75 | GOST_KEY_INFO_free(GOST_KEY_INFO *a) | ||
| 76 | { | ||
| 77 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_INFO_it); | ||
| 78 | } | ||
| 31 | 79 | ||
| 32 | ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { | 80 | ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = { |
| 33 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), | 81 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT), |
| 34 | ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), | 82 | ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0), |
| 35 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) | 83 | ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING) |
| 36 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) | 84 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO) |
| 37 | IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO) | 85 | |
| 86 | GOST_KEY_AGREEMENT_INFO * | ||
| 87 | d2i_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO **a, const unsigned char **in, long len) | ||
| 88 | { | ||
| 89 | return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 90 | &GOST_KEY_AGREEMENT_INFO_it); | ||
| 91 | } | ||
| 92 | |||
| 93 | int | ||
| 94 | i2d_GOST_KEY_AGREEMENT_INFO(GOST_KEY_AGREEMENT_INFO *a, unsigned char **out) | ||
| 95 | { | ||
| 96 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_AGREEMENT_INFO_it); | ||
| 97 | } | ||
| 98 | |||
| 99 | GOST_KEY_AGREEMENT_INFO * | ||
| 100 | GOST_KEY_AGREEMENT_INFO_new(void) | ||
| 101 | { | ||
| 102 | return (GOST_KEY_AGREEMENT_INFO *)ASN1_item_new(&GOST_KEY_AGREEMENT_INFO_it); | ||
| 103 | } | ||
| 104 | |||
| 105 | void | ||
| 106 | GOST_KEY_AGREEMENT_INFO_free(GOST_KEY_AGREEMENT_INFO *a) | ||
| 107 | { | ||
| 108 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_AGREEMENT_INFO_it); | ||
| 109 | } | ||
| 38 | 110 | ||
| 39 | 111 | ||
| 40 | ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { | 112 | ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { |
| @@ -42,12 +114,60 @@ ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = { | |||
| 42 | ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), | 114 | ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT), |
| 43 | ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), | 115 | ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT), |
| 44 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) | 116 | } ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS) |
| 45 | IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS) | 117 | |
| 118 | GOST_KEY_PARAMS * | ||
| 119 | d2i_GOST_KEY_PARAMS(GOST_KEY_PARAMS **a, const unsigned char **in, long len) | ||
| 120 | { | ||
| 121 | return (GOST_KEY_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 122 | &GOST_KEY_PARAMS_it); | ||
| 123 | } | ||
| 124 | |||
| 125 | int | ||
| 126 | i2d_GOST_KEY_PARAMS(GOST_KEY_PARAMS *a, unsigned char **out) | ||
| 127 | { | ||
| 128 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_KEY_PARAMS_it); | ||
| 129 | } | ||
| 130 | |||
| 131 | GOST_KEY_PARAMS * | ||
| 132 | GOST_KEY_PARAMS_new(void) | ||
| 133 | { | ||
| 134 | return (GOST_KEY_PARAMS *)ASN1_item_new(&GOST_KEY_PARAMS_it); | ||
| 135 | } | ||
| 136 | |||
| 137 | void | ||
| 138 | GOST_KEY_PARAMS_free(GOST_KEY_PARAMS *a) | ||
| 139 | { | ||
| 140 | ASN1_item_free((ASN1_VALUE *)a, &GOST_KEY_PARAMS_it); | ||
| 141 | } | ||
| 46 | 142 | ||
| 47 | ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { | 143 | ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = { |
| 48 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), | 144 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING), |
| 49 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), | 145 | ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT), |
| 50 | } ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) | 146 | } ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS) |
| 51 | IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS) | 147 | |
| 148 | GOST_CIPHER_PARAMS * | ||
| 149 | d2i_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS **a, const unsigned char **in, long len) | ||
| 150 | { | ||
| 151 | return (GOST_CIPHER_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 152 | &GOST_CIPHER_PARAMS_it); | ||
| 153 | } | ||
| 154 | |||
| 155 | int | ||
| 156 | i2d_GOST_CIPHER_PARAMS(GOST_CIPHER_PARAMS *a, unsigned char **out) | ||
| 157 | { | ||
| 158 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &GOST_CIPHER_PARAMS_it); | ||
| 159 | } | ||
| 160 | |||
| 161 | GOST_CIPHER_PARAMS * | ||
| 162 | GOST_CIPHER_PARAMS_new(void) | ||
| 163 | { | ||
| 164 | return (GOST_CIPHER_PARAMS *)ASN1_item_new(&GOST_CIPHER_PARAMS_it); | ||
| 165 | } | ||
| 166 | |||
| 167 | void | ||
| 168 | GOST_CIPHER_PARAMS_free(GOST_CIPHER_PARAMS *a) | ||
| 169 | { | ||
| 170 | ASN1_item_free((ASN1_VALUE *)a, &GOST_CIPHER_PARAMS_it); | ||
| 171 | } | ||
| 52 | 172 | ||
| 53 | #endif | 173 | #endif |
