diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/sm3/sm3.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/src/lib/libcrypto/sm3/sm3.c b/src/lib/libcrypto/sm3/sm3.c index 6406454568..d19156a6a1 100644 --- a/src/lib/libcrypto/sm3/sm3.c +++ b/src/lib/libcrypto/sm3/sm3.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sm3.c,v 1.10 2024/03/28 08:26:42 jsing Exp $ */ | 1 | /* $OpenBSD: sm3.c,v 1.11 2024/03/28 08:30:25 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018, Ribose Inc | 3 | * Copyright (c) 2018, Ribose Inc |
4 | * | 4 | * |
@@ -31,17 +31,6 @@ | |||
31 | #define HASH_UPDATE SM3_Update | 31 | #define HASH_UPDATE SM3_Update |
32 | #define HASH_TRANSFORM SM3_Transform | 32 | #define HASH_TRANSFORM SM3_Transform |
33 | #define HASH_FINAL SM3_Final | 33 | #define HASH_FINAL SM3_Final |
34 | #define HASH_MAKE_STRING(c, s) do { \ | ||
35 | unsigned long ll; \ | ||
36 | ll = (c)->A; HOST_l2c(ll, (s)); \ | ||
37 | ll = (c)->B; HOST_l2c(ll, (s)); \ | ||
38 | ll = (c)->C; HOST_l2c(ll, (s)); \ | ||
39 | ll = (c)->D; HOST_l2c(ll, (s)); \ | ||
40 | ll = (c)->E; HOST_l2c(ll, (s)); \ | ||
41 | ll = (c)->F; HOST_l2c(ll, (s)); \ | ||
42 | ll = (c)->G; HOST_l2c(ll, (s)); \ | ||
43 | ll = (c)->H; HOST_l2c(ll, (s)); \ | ||
44 | } while (0) | ||
45 | #define HASH_BLOCK_DATA_ORDER SM3_block_data_order | 34 | #define HASH_BLOCK_DATA_ORDER SM3_block_data_order |
46 | 35 | ||
47 | void SM3_block_data_order(SM3_CTX *c, const void *p, size_t num); | 36 | void SM3_block_data_order(SM3_CTX *c, const void *p, size_t num); |
@@ -341,6 +330,7 @@ SM3_Final(unsigned char *md, SM3_CTX *c) | |||
341 | { | 330 | { |
342 | unsigned char *p = (unsigned char *)c->data; | 331 | unsigned char *p = (unsigned char *)c->data; |
343 | size_t n = c->num; | 332 | size_t n = c->num; |
333 | unsigned long ll; | ||
344 | 334 | ||
345 | p[n] = 0x80; /* there is always room for one */ | 335 | p[n] = 0x80; /* there is always room for one */ |
346 | n++; | 336 | n++; |
@@ -365,11 +355,24 @@ SM3_Final(unsigned char *md, SM3_CTX *c) | |||
365 | c->num = 0; | 355 | c->num = 0; |
366 | memset(p, 0, SM3_CBLOCK); | 356 | memset(p, 0, SM3_CBLOCK); |
367 | 357 | ||
368 | #ifndef HASH_MAKE_STRING | 358 | do { |
369 | #error "HASH_MAKE_STRING must be defined!" | 359 | ll = (c)->A; |
370 | #else | 360 | HOST_l2c(ll, md); |
371 | HASH_MAKE_STRING(c, md); | 361 | ll = (c)->B; |
372 | #endif | 362 | HOST_l2c(ll, md); |
363 | ll = (c)->C; | ||
364 | HOST_l2c(ll, md); | ||
365 | ll = (c)->D; | ||
366 | HOST_l2c(ll, md); | ||
367 | ll = (c)->E; | ||
368 | HOST_l2c(ll, md); | ||
369 | ll = (c)->F; | ||
370 | HOST_l2c(ll, md); | ||
371 | ll = (c)->G; | ||
372 | HOST_l2c(ll, md); | ||
373 | ll = (c)->H; | ||
374 | HOST_l2c(ll, md); | ||
375 | } while (0); | ||
373 | 376 | ||
374 | return 1; | 377 | return 1; |
375 | } | 378 | } |