diff options
| author | tedu <> | 2014-04-16 20:39:09 +0000 |
|---|---|---|
| committer | tedu <> | 2014-04-16 20:39:09 +0000 |
| commit | 1d9e5d416109e403a58516c271238dbc839993a2 (patch) | |
| tree | 761d3461cd8f278c74120d2836c29dd21dc95be6 /src/lib/libssl/ssl_asn1.c | |
| parent | 73c9e533da75d578dfa576ec1e77e6ad916c409f (diff) | |
| download | openbsd-1d9e5d416109e403a58516c271238dbc839993a2.tar.gz openbsd-1d9e5d416109e403a58516c271238dbc839993a2.tar.bz2 openbsd-1d9e5d416109e403a58516c271238dbc839993a2.zip | |
add back SRP. i was being too greedy.
Diffstat (limited to 'src/lib/libssl/ssl_asn1.c')
| -rw-r--r-- | src/lib/libssl/ssl_asn1.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index b1a3876c91..28e295f6a4 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c | |||
| @@ -113,6 +113,9 @@ typedef struct ssl_session_asn1_st { | |||
| 113 | ASN1_OCTET_STRING psk_identity_hint; | 113 | ASN1_OCTET_STRING psk_identity_hint; |
| 114 | ASN1_OCTET_STRING psk_identity; | 114 | ASN1_OCTET_STRING psk_identity; |
| 115 | #endif /* OPENSSL_NO_PSK */ | 115 | #endif /* OPENSSL_NO_PSK */ |
| 116 | #ifndef OPENSSL_NO_SRP | ||
| 117 | ASN1_OCTET_STRING srp_username; | ||
| 118 | #endif /* OPENSSL_NO_SRP */ | ||
| 116 | } SSL_SESSION_ASN1; | 119 | } SSL_SESSION_ASN1; |
| 117 | 120 | ||
| 118 | int | 121 | int |
| @@ -130,6 +133,9 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 130 | unsigned char cbuf; | 133 | unsigned char cbuf; |
| 131 | int v11 = 0; | 134 | int v11 = 0; |
| 132 | #endif | 135 | #endif |
| 136 | #ifndef OPENSSL_NO_SRP | ||
| 137 | int v12 = 0; | ||
| 138 | #endif | ||
| 133 | long l; | 139 | long l; |
| 134 | SSL_SESSION_ASN1 a; | 140 | SSL_SESSION_ASN1 a; |
| 135 | M_ASN1_I2D_vars(in); | 141 | M_ASN1_I2D_vars(in); |
| @@ -247,6 +253,13 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 247 | a.psk_identity.data = (unsigned char *)(in->psk_identity); | 253 | a.psk_identity.data = (unsigned char *)(in->psk_identity); |
| 248 | } | 254 | } |
| 249 | #endif /* OPENSSL_NO_PSK */ | 255 | #endif /* OPENSSL_NO_PSK */ |
| 256 | #ifndef OPENSSL_NO_SRP | ||
| 257 | if (in->srp_username) { | ||
| 258 | a.srp_username.length = strlen(in->srp_username); | ||
| 259 | a.srp_username.type = V_ASN1_OCTET_STRING; | ||
| 260 | a.srp_username.data = (unsigned char *)(in->srp_username); | ||
| 261 | } | ||
| 262 | #endif /* OPENSSL_NO_SRP */ | ||
| 250 | 263 | ||
| 251 | M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); | 264 | M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); |
| 252 | M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); | 265 | M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); |
| @@ -287,6 +300,10 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 287 | if (in->psk_identity) | 300 | if (in->psk_identity) |
| 288 | M_ASN1_I2D_len_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING, 8, v8); | 301 | M_ASN1_I2D_len_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING, 8, v8); |
| 289 | #endif /* OPENSSL_NO_PSK */ | 302 | #endif /* OPENSSL_NO_PSK */ |
| 303 | #ifndef OPENSSL_NO_SRP | ||
| 304 | if (in->srp_username) | ||
| 305 | M_ASN1_I2D_len_EXP_opt(&(a.srp_username), i2d_ASN1_OCTET_STRING, 12, v12); | ||
| 306 | #endif /* OPENSSL_NO_SRP */ | ||
| 290 | 307 | ||
| 291 | M_ASN1_I2D_seq_total(); | 308 | M_ASN1_I2D_seq_total(); |
| 292 | 309 | ||
| @@ -331,6 +348,10 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) | |||
| 331 | if (in->compress_meth) | 348 | if (in->compress_meth) |
| 332 | M_ASN1_I2D_put_EXP_opt(&(a.comp_id), i2d_ASN1_OCTET_STRING, 11, v11); | 349 | M_ASN1_I2D_put_EXP_opt(&(a.comp_id), i2d_ASN1_OCTET_STRING, 11, v11); |
| 333 | #endif | 350 | #endif |
| 351 | #ifndef OPENSSL_NO_SRP | ||
| 352 | if (in->srp_username) | ||
| 353 | M_ASN1_I2D_put_EXP_opt(&(a.srp_username), i2d_ASN1_OCTET_STRING, 12, v12); | ||
| 354 | #endif /* OPENSSL_NO_SRP */ | ||
| 334 | M_ASN1_I2D_finish(); | 355 | M_ASN1_I2D_finish(); |
| 335 | } | 356 | } |
| 336 | 357 | ||
| @@ -559,6 +580,18 @@ long length) | |||
| 559 | } | 580 | } |
| 560 | #endif | 581 | #endif |
| 561 | 582 | ||
| 583 | #ifndef OPENSSL_NO_SRP | ||
| 584 | os.length = 0; | ||
| 585 | os.data = NULL; | ||
| 586 | M_ASN1_D2I_get_EXP_opt(osp, d2i_ASN1_OCTET_STRING, 12); | ||
| 587 | if (os.data) { | ||
| 588 | ret->srp_username = BUF_strndup((char *)os.data, os.length); | ||
| 589 | OPENSSL_free(os.data); | ||
| 590 | os.data = NULL; | ||
| 591 | os.length = 0; | ||
| 592 | } else | ||
| 593 | ret->srp_username = NULL; | ||
| 594 | #endif /* OPENSSL_NO_SRP */ | ||
| 562 | 595 | ||
| 563 | M_ASN1_D2I_Finish(a, SSL_SESSION_free, SSL_F_D2I_SSL_SESSION); | 596 | M_ASN1_D2I_Finish(a, SSL_SESSION_free, SSL_F_D2I_SSL_SESSION); |
| 564 | } | 597 | } |
