diff options
Diffstat (limited to 'src/lib/libcrypto/dsa')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_asn1.c | 58 |
1 files changed, 53 insertions, 5 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_asn1.c b/src/lib/libcrypto/dsa/dsa_asn1.c index 16cb1fa379..c6b00923fc 100644 --- a/src/lib/libcrypto/dsa/dsa_asn1.c +++ b/src/lib/libcrypto/dsa/dsa_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dsa_asn1.c,v 1.14 2015/01/28 04:14:31 beck Exp $ */ | 1 | /* $OpenBSD: dsa_asn1.c,v 1.15 2015/02/10 05:12:23 jsing Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project 2000. | 3 | * project 2000. |
4 | */ | 4 | */ |
@@ -89,7 +89,19 @@ ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = { | |||
89 | ASN1_SIMPLE(DSA_SIG, s, CBIGNUM) | 89 | ASN1_SIMPLE(DSA_SIG, s, CBIGNUM) |
90 | } ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG) | 90 | } ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG) |
91 | 91 | ||
92 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA_SIG, DSA_SIG, DSA_SIG) | 92 | |
93 | DSA_SIG * | ||
94 | d2i_DSA_SIG(DSA_SIG **a, const unsigned char **in, long len) | ||
95 | { | ||
96 | return (DSA_SIG *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
97 | &DSA_SIG_it); | ||
98 | } | ||
99 | |||
100 | int | ||
101 | i2d_DSA_SIG(const DSA_SIG *a, unsigned char **out) | ||
102 | { | ||
103 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSA_SIG_it); | ||
104 | } | ||
93 | 105 | ||
94 | /* Override the default free and new methods */ | 106 | /* Override the default free and new methods */ |
95 | static int | 107 | static int |
@@ -117,7 +129,19 @@ ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = { | |||
117 | ASN1_SIMPLE(DSA, priv_key, BIGNUM) | 129 | ASN1_SIMPLE(DSA, priv_key, BIGNUM) |
118 | } ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) | 130 | } ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) |
119 | 131 | ||
120 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAPrivateKey, DSAPrivateKey) | 132 | |
133 | DSA * | ||
134 | d2i_DSAPrivateKey(DSA **a, const unsigned char **in, long len) | ||
135 | { | ||
136 | return (DSA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
137 | &DSAPrivateKey_it); | ||
138 | } | ||
139 | |||
140 | int | ||
141 | i2d_DSAPrivateKey(const DSA *a, unsigned char **out) | ||
142 | { | ||
143 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it); | ||
144 | } | ||
121 | 145 | ||
122 | ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { | 146 | ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { |
123 | ASN1_SIMPLE(DSA, p, BIGNUM), | 147 | ASN1_SIMPLE(DSA, p, BIGNUM), |
@@ -125,7 +149,19 @@ ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { | |||
125 | ASN1_SIMPLE(DSA, g, BIGNUM), | 149 | ASN1_SIMPLE(DSA, g, BIGNUM), |
126 | } ASN1_SEQUENCE_END_cb(DSA, DSAparams) | 150 | } ASN1_SEQUENCE_END_cb(DSA, DSAparams) |
127 | 151 | ||
128 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAparams, DSAparams) | 152 | |
153 | DSA * | ||
154 | d2i_DSAparams(DSA **a, const unsigned char **in, long len) | ||
155 | { | ||
156 | return (DSA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
157 | &DSAparams_it); | ||
158 | } | ||
159 | |||
160 | int | ||
161 | i2d_DSAparams(const DSA *a, unsigned char **out) | ||
162 | { | ||
163 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAparams_it); | ||
164 | } | ||
129 | 165 | ||
130 | /* | 166 | /* |
131 | * DSA public key is a bit trickier... its effectively a CHOICE type | 167 | * DSA public key is a bit trickier... its effectively a CHOICE type |
@@ -146,7 +182,19 @@ ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = { | |||
146 | ASN1_EX_COMBINE(0, 0, dsa_pub_internal) | 182 | ASN1_EX_COMBINE(0, 0, dsa_pub_internal) |
147 | } ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params) | 183 | } ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params) |
148 | 184 | ||
149 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAPublicKey, DSAPublicKey) | 185 | |
186 | DSA * | ||
187 | d2i_DSAPublicKey(DSA **a, const unsigned char **in, long len) | ||
188 | { | ||
189 | return (DSA *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
190 | &DSAPublicKey_it); | ||
191 | } | ||
192 | |||
193 | int | ||
194 | i2d_DSAPublicKey(const DSA *a, unsigned char **out) | ||
195 | { | ||
196 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPublicKey_it); | ||
197 | } | ||
150 | 198 | ||
151 | DSA * | 199 | DSA * |
152 | DSAparams_dup(DSA *dsa) | 200 | DSAparams_dup(DSA *dsa) |