diff options
Diffstat (limited to 'src/lib/libssl/ssl_asn1.c')
| -rw-r--r-- | src/lib/libssl/ssl_asn1.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index c551ec4877..1d2590268c 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c | |||
| @@ -97,7 +97,6 @@ typedef struct ssl_session_asn1_st { | |||
| 97 | ASN1_OCTET_STRING master_key; | 97 | ASN1_OCTET_STRING master_key; |
| 98 | ASN1_OCTET_STRING session_id; | 98 | ASN1_OCTET_STRING session_id; |
| 99 | ASN1_OCTET_STRING session_id_context; | 99 | ASN1_OCTET_STRING session_id_context; |
| 100 | ASN1_OCTET_STRING key_arg; | ||
| 101 | #ifndef OPENSSL_NO_KRB5 | 100 | #ifndef OPENSSL_NO_KRB5 |
| 102 | ASN1_OCTET_STRING krb5_princ; | 101 | ASN1_OCTET_STRING krb5_princ; |
| 103 | #endif /* OPENSSL_NO_KRB5 */ | 102 | #endif /* OPENSSL_NO_KRB5 */ |
| @@ -190,10 +189,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 190 | a.session_id_context.type = V_ASN1_OCTET_STRING; | 189 | a.session_id_context.type = V_ASN1_OCTET_STRING; |
| 191 | a.session_id_context.data = in->sid_ctx; | 190 | a.session_id_context.data = in->sid_ctx; |
| 192 | 191 | ||
| 193 | a.key_arg.length = in->key_arg_length; | ||
| 194 | a.key_arg.type = V_ASN1_OCTET_STRING; | ||
| 195 | a.key_arg.data = in->key_arg; | ||
| 196 | |||
| 197 | #ifndef OPENSSL_NO_KRB5 | 192 | #ifndef OPENSSL_NO_KRB5 |
| 198 | if (in->krb5_client_princ_len) { | 193 | if (in->krb5_client_princ_len) { |
| 199 | a.krb5_princ.length = in->krb5_client_princ_len; | 194 | a.krb5_princ.length = in->krb5_client_princ_len; |
| @@ -206,7 +201,7 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 206 | a.time.length = LSIZE2; | 201 | a.time.length = LSIZE2; |
| 207 | a.time.type = V_ASN1_INTEGER; | 202 | a.time.type = V_ASN1_INTEGER; |
| 208 | a.time.data = ibuf3; | 203 | a.time.data = ibuf3; |
| 209 | ASN1_INTEGER_set(&(a.time), in->time); | 204 | ASN1_INTEGER_set(&(a.time), in->time); /* XXX 2038 */ |
| 210 | } | 205 | } |
| 211 | 206 | ||
| 212 | if (in->timeout != 0L) { | 207 | if (in->timeout != 0L) { |
| @@ -270,8 +265,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 270 | if (in->krb5_client_princ_len) | 265 | if (in->krb5_client_princ_len) |
| 271 | M_ASN1_I2D_len(&(a.krb5_princ), i2d_ASN1_OCTET_STRING); | 266 | M_ASN1_I2D_len(&(a.krb5_princ), i2d_ASN1_OCTET_STRING); |
| 272 | #endif /* OPENSSL_NO_KRB5 */ | 267 | #endif /* OPENSSL_NO_KRB5 */ |
| 273 | if (in->key_arg_length > 0) | ||
| 274 | M_ASN1_I2D_len_IMP_opt(&(a.key_arg), i2d_ASN1_OCTET_STRING); | ||
| 275 | if (in->time != 0L) | 268 | if (in->time != 0L) |
| 276 | M_ASN1_I2D_len_EXP_opt(&(a.time), i2d_ASN1_INTEGER, 1, v1); | 269 | M_ASN1_I2D_len_EXP_opt(&(a.time), i2d_ASN1_INTEGER, 1, v1); |
| 277 | if (in->timeout != 0L) | 270 | if (in->timeout != 0L) |
| @@ -316,8 +309,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 316 | if (in->krb5_client_princ_len) | 309 | if (in->krb5_client_princ_len) |
| 317 | M_ASN1_I2D_put(&(a.krb5_princ), i2d_ASN1_OCTET_STRING); | 310 | M_ASN1_I2D_put(&(a.krb5_princ), i2d_ASN1_OCTET_STRING); |
| 318 | #endif /* OPENSSL_NO_KRB5 */ | 311 | #endif /* OPENSSL_NO_KRB5 */ |
| 319 | if (in->key_arg_length > 0) | ||
| 320 | M_ASN1_I2D_put_IMP_opt(&(a.key_arg), i2d_ASN1_OCTET_STRING, 0); | ||
| 321 | if (in->time != 0L) | 312 | if (in->time != 0L) |
| 322 | M_ASN1_I2D_put_EXP_opt(&(a.time), i2d_ASN1_INTEGER, 1, v1); | 313 | M_ASN1_I2D_put_EXP_opt(&(a.time), i2d_ASN1_INTEGER, 1, v1); |
| 323 | if (in->timeout != 0L) | 314 | if (in->timeout != 0L) |
| @@ -445,24 +436,15 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | |||
| 445 | ret->krb5_client_princ_len = 0; | 436 | ret->krb5_client_princ_len = 0; |
| 446 | #endif /* OPENSSL_NO_KRB5 */ | 437 | #endif /* OPENSSL_NO_KRB5 */ |
| 447 | 438 | ||
| 448 | M_ASN1_D2I_get_IMP_opt(osp, d2i_ASN1_OCTET_STRING, 0, V_ASN1_OCTET_STRING); | ||
| 449 | if (os.length > SSL_MAX_KEY_ARG_LENGTH) | ||
| 450 | ret->key_arg_length = SSL_MAX_KEY_ARG_LENGTH; | ||
| 451 | else | ||
| 452 | ret->key_arg_length = os.length; | ||
| 453 | memcpy(ret->key_arg, os.data, ret->key_arg_length); | ||
| 454 | if (os.data != NULL) | ||
| 455 | free(os.data); | ||
| 456 | |||
| 457 | ai.length = 0; | 439 | ai.length = 0; |
| 458 | M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 1); | 440 | M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 1); /* XXX 2038 */ |
| 459 | if (ai.data != NULL) { | 441 | if (ai.data != NULL) { |
| 460 | ret->time = ASN1_INTEGER_get(aip); | 442 | ret->time = ASN1_INTEGER_get(aip); |
| 461 | free(ai.data); | 443 | free(ai.data); |
| 462 | ai.data = NULL; | 444 | ai.data = NULL; |
| 463 | ai.length = 0; | 445 | ai.length = 0; |
| 464 | } else | 446 | } else |
| 465 | ret->time = (unsigned long)time(NULL); | 447 | ret->time = time(NULL); |
| 466 | 448 | ||
| 467 | ai.length = 0; | 449 | ai.length = 0; |
| 468 | M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 2); | 450 | M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 2); |
