Fix duplicate error codes.
[openssl.git] / ssl / s3_lib.c
index 476d27a7b29b2b3f62dc2206d8c090c3aa53b294..00bc1b3ea924f2da3df2ef0f52c1f54c0ca77954 100644 (file)
@@ -1287,6 +1287,62 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
        128,
        },
 #endif
+       {
+       1,
+       "GOST94-GOST89-GOST89",
+       0x3000080,
+       SSL_kGOST,
+       SSL_aGOST94,
+       SSL_eGOST2814789CNT,
+       SSL_GOST89MAC,
+       SSL_TLSV1,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
+       256,
+       256
+       },
+       {
+       1,
+       "GOST2001-GOST89-GOST89",
+       0x3000081,
+       SSL_kGOST,
+       SSL_aGOST01,
+       SSL_eGOST2814789CNT,
+       SSL_GOST89MAC,
+       SSL_TLSV1,
+       SSL_NOT_EXP|SSL_HIGH,
+       SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
+       256,
+       256
+       },
+       {
+       1,
+       "GOST94-NULL-GOST94",
+       0x3000082,
+       SSL_kGOST,
+       SSL_aGOST94,
+       SSL_eNULL,
+       SSL_GOST94,
+       SSL_TLSV1,
+       SSL_NOT_EXP|SSL_STRONG_NONE,
+       SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
+       0,
+       0
+       },
+       {
+       1,
+       "GOST2001-NULL-GOST94",
+       0x3000083,
+       SSL_kGOST,
+       SSL_aGOST01,
+       SSL_eNULL,
+       SSL_GOST94,
+       SSL_TLSV1,
+       SSL_NOT_EXP|SSL_STRONG_NONE,
+       SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
+       0,
+       0
+       },
 
 #ifndef OPENSSL_NO_CAMELLIA
        /* Camellia ciphersuites from RFC4132 (256-bit portion) */
@@ -2369,7 +2425,10 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
                        }
                if (s->tlsext_opaque_prf_input != NULL)
                        OPENSSL_free(s->tlsext_opaque_prf_input);
-               s->tlsext_opaque_prf_input = BUF_memdup(parg, (size_t)larg);
+               if ((size_t)larg == 0)
+                       s->tlsext_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
+               else
+                       s->tlsext_opaque_prf_input = BUF_memdup(parg, (size_t)larg);
                if (s->tlsext_opaque_prf_input != NULL)
                        {
                        s->tlsext_opaque_prf_input_len = (size_t)larg;
@@ -2380,6 +2439,43 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
                break;
 #endif
 
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
+               s->tlsext_status_type=larg;
+               ret = 1;
+               break;
+
+       case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
+               *(STACK_OF(X509_EXTENSION) **)parg = s->tlsext_ocsp_exts;
+               ret = 1;
+               break;
+
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
+               s->tlsext_ocsp_exts = parg;
+               ret = 1;
+               break;
+
+       case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
+               *(STACK_OF(OCSP_RESPID) **)parg = s->tlsext_ocsp_ids;
+               ret = 1;
+               break;
+
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
+               s->tlsext_ocsp_ids = parg;
+               ret = 1;
+               break;
+
+       case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
+               *(unsigned char **)parg = s->tlsext_ocsp_resp;
+               return s->tlsext_ocsp_resplen;
+               
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
+               if (s->tlsext_ocsp_resp)
+                       OPENSSL_free(s->tlsext_ocsp_resp);
+               s->tlsext_ocsp_resp = parg;
+               s->tlsext_ocsp_resplen = larg;
+               ret = 1;
+               break;
+
 #endif /* !OPENSSL_NO_TLSEXT */
        default:
                break;
@@ -2607,6 +2703,11 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
                return 1;
 #endif
 
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
+               ctx->tlsext_status_arg=parg;
+               return 1;
+               break;
+
 #endif /* !OPENSSL_NO_TLSEXT */
 
        /* A Thawte special :-) */
@@ -2665,6 +2766,10 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
                break;
 #endif
 
+       case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
+               ctx->tlsext_status_cb=(int (*)(SSL *,void *))fp;
+               break;
+
 #endif
        default:
                return(0);
@@ -2771,7 +2876,7 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
                emask_a = cert->export_mask_a;
                        
 #ifdef KSSL_DEBUG
-               printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);
+/*             printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);*/
 #endif    /* KSSL_DEBUG */
 
                alg_k=c->algorithm_mkey;