summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2023-07-08 07:43:44 +0000
committerjsing <>2023-07-08 07:43:44 +0000
commit24c6aa400c6d50a62ba731d79e11e0f9116a83d3 (patch)
tree20f2d812ffb5590203202b81e1f803729c6cd51c /src
parentf21447ceff21c91ccffb7bda7502d04bdc536012 (diff)
downloadopenbsd-24c6aa400c6d50a62ba731d79e11e0f9116a83d3.tar.gz
openbsd-24c6aa400c6d50a62ba731d79e11e0f9116a83d3.tar.bz2
openbsd-24c6aa400c6d50a62ba731d79e11e0f9116a83d3.zip
Reorder functions.
No functional change.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/sha/sha1.c226
1 files changed, 113 insertions, 113 deletions
diff --git a/src/lib/libcrypto/sha/sha1.c b/src/lib/libcrypto/sha/sha1.c
index 67eb2a8b57..a8c250dc6e 100644
--- a/src/lib/libcrypto/sha/sha1.c
+++ b/src/lib/libcrypto/sha/sha1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha1.c,v 1.6 2023/07/07 15:09:45 jsing Exp $ */ 1/* $OpenBSD: sha1.c,v 1.7 2023/07/08 07:43:44 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -97,118 +97,6 @@ void sha1_block_data_order(SHA_CTX *c, const void *p, size_t num);
97 97
98#include "md32_common.h" 98#include "md32_common.h"
99 99
100int
101SHA1_Update(SHA_CTX *c, const void *data_, size_t len)
102{
103 const unsigned char *data = data_;
104 unsigned char *p;
105 SHA_LONG l;
106 size_t n;
107
108 if (len == 0)
109 return 1;
110
111 l = (c->Nl + (((SHA_LONG)len) << 3))&0xffffffffUL;
112 /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
113 * Wei Dai <weidai@eskimo.com> for pointing it out. */
114 if (l < c->Nl) /* overflow */
115 c->Nh++;
116 c->Nh+=(SHA_LONG)(len>>29); /* might cause compiler warning on 16-bit */
117 c->Nl = l;
118
119 n = c->num;
120 if (n != 0) {
121 p = (unsigned char *)c->data;
122
123 if (len >= SHA_CBLOCK || len + n >= SHA_CBLOCK) {
124 memcpy(p + n, data, SHA_CBLOCK - n);
125 sha1_block_data_order(c, p, 1);
126 n = SHA_CBLOCK - n;
127 data += n;
128 len -= n;
129 c->num = 0;
130 memset(p,0,SHA_CBLOCK); /* keep it zeroed */
131 } else {
132 memcpy(p + n, data, len);
133 c->num += (unsigned int)len;
134 return 1;
135 }
136 }
137
138 n = len/SHA_CBLOCK;
139 if (n > 0) {
140 sha1_block_data_order(c, data, n);
141 n *= SHA_CBLOCK;
142 data += n;
143 len -= n;
144 }
145
146 if (len != 0) {
147 p = (unsigned char *)c->data;
148 c->num = (unsigned int)len;
149 memcpy(p, data, len);
150 }
151 return 1;
152}
153
154void
155SHA1_Transform(SHA_CTX *c, const unsigned char *data)
156{
157 sha1_block_data_order(c, data, 1);
158}
159
160int
161SHA1_Final(unsigned char *md, SHA_CTX *c)
162{
163 unsigned char *p = (unsigned char *)c->data;
164 size_t n = c->num;
165
166 p[n] = 0x80; /* there is always room for one */
167 n++;
168
169 if (n > (SHA_CBLOCK - 8)) {
170 memset(p + n, 0, SHA_CBLOCK - n);
171 n = 0;
172 sha1_block_data_order(c, p, 1);
173 }
174 memset(p + n, 0, SHA_CBLOCK - 8 - n);
175
176 p += SHA_CBLOCK - 8;
177#if defined(DATA_ORDER_IS_BIG_ENDIAN)
178 HOST_l2c(c->Nh, p);
179 HOST_l2c(c->Nl, p);
180#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
181 HOST_l2c(c->Nl, p);
182 HOST_l2c(c->Nh, p);
183#endif
184 p -= SHA_CBLOCK;
185 sha1_block_data_order(c, p, 1);
186 c->num = 0;
187 memset(p, 0, SHA_CBLOCK);
188
189#ifndef HASH_MAKE_STRING
190#error "HASH_MAKE_STRING must be defined!"
191#else
192 HASH_MAKE_STRING(c, md);
193#endif
194
195 return 1;
196}
197
198int
199SHA1_Init(SHA_CTX *c)
200{
201 memset(c, 0, sizeof(*c));
202
203 c->h0 = 0x67452301UL;
204 c->h1 = 0xefcdab89UL;
205 c->h2 = 0x98badcfeUL;
206 c->h3 = 0x10325476UL;
207 c->h4 = 0xc3d2e1f0UL;
208
209 return 1;
210}
211
212#define K_00_19 0x5a827999UL 100#define K_00_19 0x5a827999UL
213#define K_20_39 0x6ed9eba1UL 101#define K_20_39 0x6ed9eba1UL
214#define K_40_59 0x8f1bbcdcUL 102#define K_40_59 0x8f1bbcdcUL
@@ -537,6 +425,118 @@ sha1_block_data_order(SHA_CTX *c, const void *p, size_t num)
537#endif 425#endif
538#endif 426#endif
539 427
428int
429SHA1_Init(SHA_CTX *c)
430{
431 memset(c, 0, sizeof(*c));
432
433 c->h0 = 0x67452301UL;
434 c->h1 = 0xefcdab89UL;
435 c->h2 = 0x98badcfeUL;
436 c->h3 = 0x10325476UL;
437 c->h4 = 0xc3d2e1f0UL;
438
439 return 1;
440}
441
442int
443SHA1_Update(SHA_CTX *c, const void *data_, size_t len)
444{
445 const unsigned char *data = data_;
446 unsigned char *p;
447 SHA_LONG l;
448 size_t n;
449
450 if (len == 0)
451 return 1;
452
453 l = (c->Nl + (((SHA_LONG)len) << 3))&0xffffffffUL;
454 /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to
455 * Wei Dai <weidai@eskimo.com> for pointing it out. */
456 if (l < c->Nl) /* overflow */
457 c->Nh++;
458 c->Nh+=(SHA_LONG)(len>>29); /* might cause compiler warning on 16-bit */
459 c->Nl = l;
460
461 n = c->num;
462 if (n != 0) {
463 p = (unsigned char *)c->data;
464
465 if (len >= SHA_CBLOCK || len + n >= SHA_CBLOCK) {
466 memcpy(p + n, data, SHA_CBLOCK - n);
467 sha1_block_data_order(c, p, 1);
468 n = SHA_CBLOCK - n;
469 data += n;
470 len -= n;
471 c->num = 0;
472 memset(p,0,SHA_CBLOCK); /* keep it zeroed */
473 } else {
474 memcpy(p + n, data, len);
475 c->num += (unsigned int)len;
476 return 1;
477 }
478 }
479
480 n = len/SHA_CBLOCK;
481 if (n > 0) {
482 sha1_block_data_order(c, data, n);
483 n *= SHA_CBLOCK;
484 data += n;
485 len -= n;
486 }
487
488 if (len != 0) {
489 p = (unsigned char *)c->data;
490 c->num = (unsigned int)len;
491 memcpy(p, data, len);
492 }
493 return 1;
494}
495
496void
497SHA1_Transform(SHA_CTX *c, const unsigned char *data)
498{
499 sha1_block_data_order(c, data, 1);
500}
501
502int
503SHA1_Final(unsigned char *md, SHA_CTX *c)
504{
505 unsigned char *p = (unsigned char *)c->data;
506 size_t n = c->num;
507
508 p[n] = 0x80; /* there is always room for one */
509 n++;
510
511 if (n > (SHA_CBLOCK - 8)) {
512 memset(p + n, 0, SHA_CBLOCK - n);
513 n = 0;
514 sha1_block_data_order(c, p, 1);
515 }
516 memset(p + n, 0, SHA_CBLOCK - 8 - n);
517
518 p += SHA_CBLOCK - 8;
519#if defined(DATA_ORDER_IS_BIG_ENDIAN)
520 HOST_l2c(c->Nh, p);
521 HOST_l2c(c->Nl, p);
522#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
523 HOST_l2c(c->Nl, p);
524 HOST_l2c(c->Nh, p);
525#endif
526 p -= SHA_CBLOCK;
527 sha1_block_data_order(c, p, 1);
528 c->num = 0;
529 memset(p, 0, SHA_CBLOCK);
530
531#ifndef HASH_MAKE_STRING
532#error "HASH_MAKE_STRING must be defined!"
533#else
534 HASH_MAKE_STRING(c, md);
535#endif
536
537 return 1;
538}
539
540unsigned char * 540unsigned char *
541SHA1(const unsigned char *d, size_t n, unsigned char *md) 541SHA1(const unsigned char *d, size_t n, unsigned char *md)
542{ 542{