diff options
author | beck <> | 2000-03-19 11:13:58 +0000 |
---|---|---|
committer | beck <> | 2000-03-19 11:13:58 +0000 |
commit | 796d609550df3a33fc11468741c5d2f6d3df4c11 (patch) | |
tree | 6c6d539061caa20372dad0ac4ddb1dfae2fbe7fe /src/lib/libssl/ssl_asn1.c | |
parent | 5be3114c1fd7e0dfea1e38d3abb4cbba75244419 (diff) | |
download | openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.gz openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.bz2 openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.zip |
OpenSSL 0.9.5 merge
*warning* this bumps shared lib minors for libssl and libcrypto from 2.1 to 2.2
if you are using the ssl26 packages for ssh and other things to work you will
need to get new ones (see ~beck/libsslsnap/<arch>) on cvs or ~beck/src-patent.tar.gz on cvs
Diffstat (limited to 'src/lib/libssl/ssl_asn1.c')
-rw-r--r-- | src/lib/libssl/ssl_asn1.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index 0f6a0884e4..e77cdddfd3 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c | |||
@@ -60,6 +60,7 @@ | |||
60 | #include <stdlib.h> | 60 | #include <stdlib.h> |
61 | #include <openssl/asn1_mac.h> | 61 | #include <openssl/asn1_mac.h> |
62 | #include <openssl/objects.h> | 62 | #include <openssl/objects.h> |
63 | #include <openssl/x509.h> | ||
63 | #include "ssl_locl.h" | 64 | #include "ssl_locl.h" |
64 | 65 | ||
65 | typedef struct ssl_session_asn1_st | 66 | typedef struct ssl_session_asn1_st |
@@ -73,14 +74,15 @@ typedef struct ssl_session_asn1_st | |||
73 | ASN1_OCTET_STRING key_arg; | 74 | ASN1_OCTET_STRING key_arg; |
74 | ASN1_INTEGER time; | 75 | ASN1_INTEGER time; |
75 | ASN1_INTEGER timeout; | 76 | ASN1_INTEGER timeout; |
77 | ASN1_INTEGER verify_result; | ||
76 | } SSL_SESSION_ASN1; | 78 | } SSL_SESSION_ASN1; |
77 | 79 | ||
78 | int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | 80 | int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) |
79 | { | 81 | { |
80 | #define LSIZE2 (sizeof(long)*2) | 82 | #define LSIZE2 (sizeof(long)*2) |
81 | int v1=0,v2=0,v3=0,v4=0; | 83 | int v1=0,v2=0,v3=0,v4=0,v5=0; |
82 | unsigned char buf[4],ibuf1[LSIZE2],ibuf2[LSIZE2]; | 84 | unsigned char buf[4],ibuf1[LSIZE2],ibuf2[LSIZE2]; |
83 | unsigned char ibuf3[LSIZE2],ibuf4[LSIZE2]; | 85 | unsigned char ibuf3[LSIZE2],ibuf4[LSIZE2],ibuf5[LSIZE2]; |
84 | long l; | 86 | long l; |
85 | SSL_SESSION_ASN1 a; | 87 | SSL_SESSION_ASN1 a; |
86 | M_ASN1_I2D_vars(in); | 88 | M_ASN1_I2D_vars(in); |
@@ -89,7 +91,7 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
89 | return(0); | 91 | return(0); |
90 | 92 | ||
91 | /* Note that I cheat in the following 2 assignments. I know | 93 | /* Note that I cheat in the following 2 assignments. I know |
92 | * that if the ASN1_INTERGER passed to ASN1_INTEGER_set | 94 | * that if the ASN1_INTEGER passed to ASN1_INTEGER_set |
93 | * is > sizeof(long)+1, the buffer will not be re-Malloc()ed. | 95 | * is > sizeof(long)+1, the buffer will not be re-Malloc()ed. |
94 | * This is a bit evil but makes things simple, no dynamic allocation | 96 | * This is a bit evil but makes things simple, no dynamic allocation |
95 | * to clean up :-) */ | 97 | * to clean up :-) */ |
@@ -156,6 +158,14 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
156 | ASN1_INTEGER_set(&(a.timeout),in->timeout); | 158 | ASN1_INTEGER_set(&(a.timeout),in->timeout); |
157 | } | 159 | } |
158 | 160 | ||
161 | if (in->verify_result != X509_V_OK) | ||
162 | { | ||
163 | a.verify_result.length=LSIZE2; | ||
164 | a.verify_result.type=V_ASN1_INTEGER; | ||
165 | a.verify_result.data=ibuf5; | ||
166 | ASN1_INTEGER_set(&a.verify_result,in->verify_result); | ||
167 | } | ||
168 | |||
159 | M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); | 169 | M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); |
160 | M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); | 170 | M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); |
161 | M_ASN1_I2D_len(&(a.cipher), i2d_ASN1_OCTET_STRING); | 171 | M_ASN1_I2D_len(&(a.cipher), i2d_ASN1_OCTET_STRING); |
@@ -170,6 +180,8 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
170 | if (in->peer != NULL) | 180 | if (in->peer != NULL) |
171 | M_ASN1_I2D_len_EXP_opt(in->peer,i2d_X509,3,v3); | 181 | M_ASN1_I2D_len_EXP_opt(in->peer,i2d_X509,3,v3); |
172 | M_ASN1_I2D_len_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4,v4); | 182 | M_ASN1_I2D_len_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4,v4); |
183 | if (in->verify_result != X509_V_OK) | ||
184 | M_ASN1_I2D_len_EXP_opt(&(a.verify_result),i2d_ASN1_INTEGER,5,v5); | ||
173 | 185 | ||
174 | M_ASN1_I2D_seq_total(); | 186 | M_ASN1_I2D_seq_total(); |
175 | 187 | ||
@@ -188,7 +200,8 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
188 | M_ASN1_I2D_put_EXP_opt(in->peer,i2d_X509,3,v3); | 200 | M_ASN1_I2D_put_EXP_opt(in->peer,i2d_X509,3,v3); |
189 | M_ASN1_I2D_put_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4, | 201 | M_ASN1_I2D_put_EXP_opt(&a.session_id_context,i2d_ASN1_OCTET_STRING,4, |
190 | v4); | 202 | v4); |
191 | 203 | if (in->verify_result != X509_V_OK) | |
204 | M_ASN1_I2D_put_EXP_opt(&a.verify_result,i2d_ASN1_INTEGER,5,v5); | ||
192 | M_ASN1_I2D_finish(); | 205 | M_ASN1_I2D_finish(); |
193 | } | 206 | } |
194 | 207 | ||
@@ -322,6 +335,15 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, unsigned char **pp, | |||
322 | else | 335 | else |
323 | ret->sid_ctx_length=0; | 336 | ret->sid_ctx_length=0; |
324 | 337 | ||
338 | ai.length=0; | ||
339 | M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,5); | ||
340 | if (ai.data != NULL) | ||
341 | { | ||
342 | ret->verify_result=ASN1_INTEGER_get(aip); | ||
343 | Free(ai.data); ai.data=NULL; ai.length=0; | ||
344 | } | ||
345 | else | ||
346 | ret->verify_result=X509_V_OK; | ||
347 | |||
325 | M_ASN1_D2I_Finish(a,SSL_SESSION_free,SSL_F_D2I_SSL_SESSION); | 348 | M_ASN1_D2I_Finish(a,SSL_SESSION_free,SSL_F_D2I_SSL_SESSION); |
326 | } | 349 | } |
327 | |||