summaryrefslogtreecommitdiff
path: root/src/lib/libssl/d1_enc.c
diff options
context:
space:
mode:
authorjsing <>2014-04-14 14:16:33 +0000
committerjsing <>2014-04-14 14:16:33 +0000
commit95692a60ee0169e369d59f82504e36ff376e13ba (patch)
treed3a4c41549109f6de6427907f10589c02eec0d25 /src/lib/libssl/d1_enc.c
parent72c1bd17672378115dcd5254ed88828e45357e7f (diff)
downloadopenbsd-95692a60ee0169e369d59f82504e36ff376e13ba.tar.gz
openbsd-95692a60ee0169e369d59f82504e36ff376e13ba.tar.bz2
openbsd-95692a60ee0169e369d59f82504e36ff376e13ba.zip
First pass at applying KNF to the OpenSSL code, which almost makes it
readable. This pass is whitespace only and can readily be verified using tr and md5.
Diffstat (limited to 'src/lib/libssl/d1_enc.c')
-rw-r--r--src/lib/libssl/d1_enc.c143
1 files changed, 65 insertions, 78 deletions
diff --git a/src/lib/libssl/d1_enc.c b/src/lib/libssl/d1_enc.c
index 712c4647f2..1967e7a95e 100644
--- a/src/lib/libssl/d1_enc.c
+++ b/src/lib/libssl/d1_enc.c
@@ -134,127 +134,114 @@
134 * 1: if the record's padding is valid / the encryption was successful. 134 * 1: if the record's padding is valid / the encryption was successful.
135 * -1: if the record's padding/AEAD-authenticator is invalid or, if sending, 135 * -1: if the record's padding/AEAD-authenticator is invalid or, if sending,
136 * an internal error occured. */ 136 * an internal error occured. */
137int dtls1_enc(SSL *s, int send) 137int
138 { 138dtls1_enc(SSL *s, int send)
139{
139 SSL3_RECORD *rec; 140 SSL3_RECORD *rec;
140 EVP_CIPHER_CTX *ds; 141 EVP_CIPHER_CTX *ds;
141 unsigned long l; 142 unsigned long l;
142 int bs,i,j,k,mac_size=0; 143 int bs, i, j, k, mac_size = 0;
143 const EVP_CIPHER *enc; 144 const EVP_CIPHER *enc;
144 145
145 if (send) 146 if (send) {
146 { 147 if (EVP_MD_CTX_md(s->write_hash)) {
147 if (EVP_MD_CTX_md(s->write_hash)) 148 mac_size = EVP_MD_CTX_size(s->write_hash);
148 {
149 mac_size=EVP_MD_CTX_size(s->write_hash);
150 if (mac_size < 0) 149 if (mac_size < 0)
151 return -1; 150 return -1;
152 } 151 }
153 ds=s->enc_write_ctx; 152 ds = s->enc_write_ctx;
154 rec= &(s->s3->wrec); 153 rec = &(s->s3->wrec);
155 if (s->enc_write_ctx == NULL) 154 if (s->enc_write_ctx == NULL)
156 enc=NULL; 155 enc = NULL;
157 else 156 else {
158 { 157 enc = EVP_CIPHER_CTX_cipher(s->enc_write_ctx);
159 enc=EVP_CIPHER_CTX_cipher(s->enc_write_ctx); 158 if (rec->data != rec->input)
160 if ( rec->data != rec->input)
161 /* we can't write into the input stream */ 159 /* we can't write into the input stream */
162 fprintf(stderr, "%s:%d: rec->data != rec->input\n", 160 fprintf(stderr, "%s:%d: rec->data != rec->input\n",
163 __FILE__, __LINE__); 161 __FILE__, __LINE__);
164 else if ( EVP_CIPHER_block_size(ds->cipher) > 1) 162 else if (EVP_CIPHER_block_size(ds->cipher) > 1) {
165 {
166 if (RAND_bytes(rec->input, EVP_CIPHER_block_size(ds->cipher)) <= 0) 163 if (RAND_bytes(rec->input, EVP_CIPHER_block_size(ds->cipher)) <= 0)
167 return -1; 164 return -1;
168 }
169 } 165 }
170 } 166 }
171 else 167 } else {
172 { 168 if (EVP_MD_CTX_md(s->read_hash)) {
173 if (EVP_MD_CTX_md(s->read_hash)) 169 mac_size = EVP_MD_CTX_size(s->read_hash);
174 {
175 mac_size=EVP_MD_CTX_size(s->read_hash);
176 OPENSSL_assert(mac_size >= 0); 170 OPENSSL_assert(mac_size >= 0);
177 } 171 }
178 ds=s->enc_read_ctx; 172 ds = s->enc_read_ctx;
179 rec= &(s->s3->rrec); 173 rec = &(s->s3->rrec);
180 if (s->enc_read_ctx == NULL) 174 if (s->enc_read_ctx == NULL)
181 enc=NULL; 175 enc = NULL;
182 else 176 else
183 enc=EVP_CIPHER_CTX_cipher(s->enc_read_ctx); 177 enc = EVP_CIPHER_CTX_cipher(s->enc_read_ctx);
184 } 178 }
185 179
186#ifdef KSSL_DEBUG 180#ifdef KSSL_DEBUG
187 printf("dtls1_enc(%d)\n", send); 181 printf("dtls1_enc(%d)\n", send);
188#endif /* KSSL_DEBUG */ 182#endif /* KSSL_DEBUG */
189 183
190 if ((s->session == NULL) || (ds == NULL) || 184 if ((s->session == NULL) || (ds == NULL) || (enc == NULL)) {
191 (enc == NULL)) 185 memmove(rec->data, rec->input, rec->length);
192 { 186 rec->input = rec->data;
193 memmove(rec->data,rec->input,rec->length); 187 } else {
194 rec->input=rec->data; 188 l = rec->length;
195 } 189 bs = EVP_CIPHER_block_size(ds->cipher);
196 else
197 {
198 l=rec->length;
199 bs=EVP_CIPHER_block_size(ds->cipher);
200 190
201 if ((bs != 1) && send) 191 if ((bs != 1) && send) {
202 { 192 i = bs - ((int)l % bs);
203 i=bs-((int)l%bs);
204 193
205 /* Add weird padding of upto 256 bytes */ 194 /* Add weird padding of upto 256 bytes */
206 195
207 /* we need to add 'i' padding bytes of value j */ 196 /* we need to add 'i' padding bytes of value j */
208 j=i-1; 197 j = i - 1;
209 if (s->options & SSL_OP_TLS_BLOCK_PADDING_BUG) 198 if (s->options & SSL_OP_TLS_BLOCK_PADDING_BUG) {
210 {
211 if (s->s3->flags & TLS1_FLAGS_TLS_PADDING_BUG) 199 if (s->s3->flags & TLS1_FLAGS_TLS_PADDING_BUG)
212 j++; 200 j++;
213 }
214 for (k=(int)l; k<(int)(l+i); k++)
215 rec->input[k]=j;
216 l+=i;
217 rec->length+=i;
218 } 201 }
202 for (k = (int)l; k < (int)(l + i); k++)
203 rec->input[k] = j;
204 l += i;
205 rec->length += i;
206 }
219 207
220#ifdef KSSL_DEBUG 208#ifdef KSSL_DEBUG
221 { 209 {
222 unsigned long ui; 210 unsigned long ui;
223 printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n", 211 printf("EVP_Cipher(ds=%p, rec->data=%p, rec->input=%p, l=%ld) ==>\n",
224 ds,rec->data,rec->input,l); 212 ds, rec->data, rec->input, l);
225 printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%d %d], %d iv_len\n", 213 printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%d %d], %d iv_len\n",
226 ds->buf_len, ds->cipher->key_len, 214 ds->buf_len, ds->cipher->key_len,
227 DES_KEY_SZ, DES_SCHEDULE_SZ, 215 DES_KEY_SZ, DES_SCHEDULE_SZ,
228 ds->cipher->iv_len); 216 ds->cipher->iv_len);
229 printf("\t\tIV: "); 217 printf("\t\tIV: ");
230 for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]); 218 for (i = 0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]);
231 printf("\n"); 219 printf("\n");
232 printf("\trec->input="); 220 printf("\trec->input=");
233 for (ui=0; ui<l; ui++) printf(" %02x", rec->input[ui]); 221 for (ui = 0; ui<l; ui++) printf(" %02x", rec->input[ui]);
234 printf("\n"); 222 printf("\n");
235 } 223 }
236#endif /* KSSL_DEBUG */ 224#endif /* KSSL_DEBUG */
237 225
238 if (!send) 226 if (!send) {
239 { 227 if (l == 0 || l % bs != 0)
240 if (l == 0 || l%bs != 0)
241 return 0; 228 return 0;
242 } 229 }
243 230
244 EVP_Cipher(ds,rec->data,rec->input,l); 231 EVP_Cipher(ds, rec->data, rec->input, l);
245 232
246#ifdef KSSL_DEBUG 233#ifdef KSSL_DEBUG
247 { 234 {
248 unsigned long i; 235 unsigned long i;
249 printf("\trec->data="); 236 printf("\trec->data=");
250 for (i=0; i<l; i++) 237 for (i = 0; i < l; i++)
251 printf(" %02x", rec->data[i]); printf("\n"); 238 printf(" %02x", rec->data[i]); printf("\n");
252 } 239 }
253#endif /* KSSL_DEBUG */ 240#endif /* KSSL_DEBUG */
254 241
255 if ((bs != 1) && !send) 242 if ((bs != 1) && !send)
256 return tls1_cbc_remove_padding(s, rec, bs, mac_size); 243 return tls1_cbc_remove_padding(s, rec, bs, mac_size);
257 }
258 return(1);
259 } 244 }
245 return (1);
246}
260 247