OpenCoverage

d1_srvr.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/ssl/d1_srvr.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: d1_srvr.c,v 1.94 2018/08/30 16:56:16 jsing Exp $ */-
2/*-
3 * DTLS implementation written by Nagendra Modadugu-
4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.-
5 */-
6/* ====================================================================-
7 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.-
8 *-
9 * Redistribution and use in source and binary forms, with or without-
10 * modification, are permitted provided that the following conditions-
11 * are met:-
12 *-
13 * 1. Redistributions of source code must retain the above copyright-
14 * notice, this list of conditions and the following disclaimer.-
15 *-
16 * 2. Redistributions in binary form must reproduce the above copyright-
17 * notice, this list of conditions and the following disclaimer in-
18 * the documentation and/or other materials provided with the-
19 * distribution.-
20 *-
21 * 3. All advertising materials mentioning features or use of this-
22 * software must display the following acknowledgment:-
23 * "This product includes software developed by the OpenSSL Project-
24 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
25 *-
26 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
27 * endorse or promote products derived from this software without-
28 * prior written permission. For written permission, please contact-
29 * openssl-core@OpenSSL.org.-
30 *-
31 * 5. Products derived from this software may not be called "OpenSSL"-
32 * nor may "OpenSSL" appear in their names without prior written-
33 * permission of the OpenSSL Project.-
34 *-
35 * 6. Redistributions of any form whatsoever must retain the following-
36 * acknowledgment:-
37 * "This product includes software developed by the OpenSSL Project-
38 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
39 *-
40 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
41 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
42 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
43 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
44 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
45 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
46 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
47 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
49 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
50 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
51 * OF THE POSSIBILITY OF SUCH DAMAGE.-
52 * ====================================================================-
53 *-
54 * This product includes cryptographic software written by Eric Young-
55 * (eay@cryptsoft.com). This product includes software written by Tim-
56 * Hudson (tjh@cryptsoft.com).-
57 *-
58 */-
59/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
60 * All rights reserved.-
61 *-
62 * This package is an SSL implementation written-
63 * by Eric Young (eay@cryptsoft.com).-
64 * The implementation was written so as to conform with Netscapes SSL.-
65 *-
66 * This library is free for commercial and non-commercial use as long as-
67 * the following conditions are aheared to. The following conditions-
68 * apply to all code found in this distribution, be it the RC4, RSA,-
69 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
70 * included with this distribution is covered by the same copyright terms-
71 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
72 *-
73 * Copyright remains Eric Young's, and as such any Copyright notices in-
74 * the code are not to be removed.-
75 * If this package is used in a product, Eric Young should be given attribution-
76 * as the author of the parts of the library used.-
77 * This can be in the form of a textual message at program startup or-
78 * in documentation (online or textual) provided with the package.-
79 *-
80 * Redistribution and use in source and binary forms, with or without-
81 * modification, are permitted provided that the following conditions-
82 * are met:-
83 * 1. Redistributions of source code must retain the copyright-
84 * notice, this list of conditions and the following disclaimer.-
85 * 2. Redistributions in binary form must reproduce the above copyright-
86 * notice, this list of conditions and the following disclaimer in the-
87 * documentation and/or other materials provided with the distribution.-
88 * 3. All advertising materials mentioning features or use of this software-
89 * must display the following acknowledgement:-
90 * "This product includes cryptographic software written by-
91 * Eric Young (eay@cryptsoft.com)"-
92 * The word 'cryptographic' can be left out if the rouines from the library-
93 * being used are not cryptographic related :-).-
94 * 4. If you include any Windows specific code (or a derivative thereof) from-
95 * the apps directory (application code) you must include an acknowledgement:-
96 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
97 *-
98 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
99 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
100 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
101 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
102 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
103 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
104 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
105 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
106 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
107 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
108 * SUCH DAMAGE.-
109 *-
110 * The licence and distribution terms for any publically available version or-
111 * derivative of this code cannot be changed. i.e. this code cannot simply be-
112 * copied and put under another distribution licence-
113 * [including the GNU Public Licence.]-
114 */-
115-
116#include <stdio.h>-
117-
118#include "ssl_locl.h"-
119-
120#include <openssl/bn.h>-
121#include <openssl/buffer.h>-
122#include <openssl/dh.h>-
123#include <openssl/evp.h>-
124#include <openssl/md5.h>-
125#include <openssl/objects.h>-
126#include <openssl/x509.h>-
127-
128static const SSL_METHOD_INTERNAL DTLSv1_server_method_internal_data = {-
129 .version = DTLS1_VERSION,-
130 .min_version = DTLS1_VERSION,-
131 .max_version = DTLS1_VERSION,-
132 .ssl_new = dtls1_new,-
133 .ssl_clear = dtls1_clear,-
134 .ssl_free = dtls1_free,-
135 .ssl_accept = ssl3_accept,-
136 .ssl_connect = ssl_undefined_function,-
137 .get_ssl_method = dtls1_get_server_method,-
138 .get_timeout = dtls1_default_timeout,-
139 .ssl_version = ssl_undefined_void_function,-
140 .ssl_renegotiate = ssl3_renegotiate,-
141 .ssl_renegotiate_check = ssl3_renegotiate_check,-
142 .ssl_get_message = dtls1_get_message,-
143 .ssl_read_bytes = dtls1_read_bytes,-
144 .ssl_write_bytes = dtls1_write_app_data_bytes,-
145 .ssl3_enc = &DTLSv1_enc_data,-
146};-
147-
148static const SSL_METHOD DTLSv1_server_method_data = {-
149 .ssl_dispatch_alert = dtls1_dispatch_alert,-
150 .num_ciphers = ssl3_num_ciphers,-
151 .get_cipher = dtls1_get_cipher,-
152 .get_cipher_by_char = ssl3_get_cipher_by_char,-
153 .put_cipher_by_char = ssl3_put_cipher_by_char,-
154 .internal = &DTLSv1_server_method_internal_data,-
155};-
156-
157const SSL_METHOD *-
158DTLSv1_server_method(void)-
159{-
160 return &DTLSv1_server_method_data;
executed 12 times by 2 tests: return &DTLSv1_server_method_data;
Executed by:
  • cipherstest
  • ssltest
12
161}-
162-
163const SSL_METHOD *-
164dtls1_get_server_method(int ver)-
165{-
166 if (ver == DTLS1_VERSION)
ver == 0xFEFFDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • ssltest
FALSEnever evaluated
0-11
167 return (DTLSv1_server_method());
executed 11 times by 1 test: return (DTLSv1_server_method());
Executed by:
  • ssltest
11
168 return (NULL);
never executed: return ( ((void *)0) );
0
169}-
170-
171int-
172dtls1_send_hello_verify_request(SSL *s)-
173{-
174 CBB cbb, verify, cookie;-
175-
176 memset(&cbb, 0, sizeof(cbb));-
177-
178 if (S3I(s)->hs.state == DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A) {
(s->s3->intern...(0x113|0x2000)Description
TRUEnever evaluated
FALSEnever evaluated
0
179 if (s->ctx->internal->app_gen_cookie_cb == NULL ||
s->ctx->intern...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 s->ctx->internal->app_gen_cookie_cb(s, D1I(s)->cookie,
s->ctx->intern...kie_len)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
181 &(D1I(s)->cookie_len)) == 0) {
s->ctx->intern...kie_len)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
182 SSLerror(s, ERR_R_INTERNAL_ERROR);-
183 return 0;
never executed: return 0;
0
184 }-
185-
186 if (!ssl3_handshake_msg_start(s, &cbb, &verify,
!ssl3_handshak...b, &verify, 3)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 DTLS1_MT_HELLO_VERIFY_REQUEST))
!ssl3_handshak...b, &verify, 3)Description
TRUEnever evaluated
FALSEnever evaluated
0
188 goto err;
never executed: goto err;
0
189 if (!CBB_add_u16(&verify, s->version))
!CBB_add_u16(&...y, s->version)Description
TRUEnever evaluated
FALSEnever evaluated
0
190 goto err;
never executed: goto err;
0
191 if (!CBB_add_u8_length_prefixed(&verify, &cookie))
!CBB_add_u8_le...rify, &cookie)Description
TRUEnever evaluated
FALSEnever evaluated
0
192 goto err;
never executed: goto err;
0
193 if (!CBB_add_bytes(&cookie, D1I(s)->cookie, D1I(s)->cookie_len))
!CBB_add_bytes...)->cookie_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
194 goto err;
never executed: goto err;
0
195 if (!ssl3_handshake_msg_finish(s, &cbb))
!ssl3_handshak...inish(s, &cbb)Description
TRUEnever evaluated
FALSEnever evaluated
0
196 goto err;
never executed: goto err;
0
197-
198 S3I(s)->hs.state = DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B;-
199 }
never executed: end of block
0
200-
201 /* S3I(s)->hs.state = DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B */-
202 return (ssl3_handshake_write(s));
never executed: return (ssl3_handshake_write(s));
0
203-
204 err:-
205 CBB_cleanup(&cbb);-
206-
207 return (-1);
never executed: return (-1);
0
208}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2