summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2023-04-15 18:14:21 +0000
committerjsing <>2023-04-15 18:14:21 +0000
commitf1875ee5c1712f5aad290f32e56c4bf9c75f32ef (patch)
treed8d1b713facfc84a42a084a1774e1ee8049e3dd1 /src
parent9377477c71e2363397c5325cf9ca15ad03e9297e (diff)
downloadopenbsd-f1875ee5c1712f5aad290f32e56c4bf9c75f32ef.tar.gz
openbsd-f1875ee5c1712f5aad290f32e56c4bf9c75f32ef.tar.bz2
openbsd-f1875ee5c1712f5aad290f32e56c4bf9c75f32ef.zip
Strip and reformat comments.
Remove various comments that are unhelpful or obvious. Reformat remaining comments per style(9).
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/sha/sha3.c34
-rw-r--r--src/lib/libcrypto/sha/sha3_internal.h24
2 files changed, 14 insertions, 44 deletions
diff --git a/src/lib/libcrypto/sha/sha3.c b/src/lib/libcrypto/sha/sha3.c
index 13faed3e9e..ef53ecbc0a 100644
--- a/src/lib/libcrypto/sha/sha3.c
+++ b/src/lib/libcrypto/sha/sha3.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha3.c,v 1.4 2023/04/15 18:07:44 jsing Exp $ */ 1/* $OpenBSD: sha3.c,v 1.5 2023/04/15 18:14:21 jsing Exp $ */
2/* 2/*
3 * The MIT License (MIT) 3 * The MIT License (MIT)
4 * 4 *
@@ -23,20 +23,11 @@
23 * SOFTWARE. 23 * SOFTWARE.
24 */ 24 */
25 25
26// sha3.c
27// 19-Nov-11 Markku-Juhani O. Saarinen <mjos@iki.fi>
28
29// Revised 07-Aug-15 to match with official release of FIPS PUB 202 "SHA3"
30// Revised 03-Sep-15 for portability + OpenSSL - style API
31
32#include "sha3_internal.h" 26#include "sha3_internal.h"
33 27
34// update the state with given number of rounds
35
36void 28void
37sha3_keccakf(uint64_t st[25]) 29sha3_keccakf(uint64_t st[25])
38{ 30{
39 // constants
40 const uint64_t keccakf_rndc[24] = { 31 const uint64_t keccakf_rndc[24] = {
41 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, 32 0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
42 0x8000000080008000, 0x000000000000808b, 0x0000000080000001, 33 0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
@@ -56,14 +47,12 @@ sha3_keccakf(uint64_t st[25])
56 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1 47 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1
57 }; 48 };
58 49
59 // variables
60 int i, j, r; 50 int i, j, r;
61 uint64_t t, bc[5]; 51 uint64_t t, bc[5];
62 52
63#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ 53#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
64 uint8_t *v; 54 uint8_t *v;
65 55
66 // endianess conversion. this is redundant on little-endian targets
67 for (i = 0; i < 25; i++) { 56 for (i = 0; i < 25; i++) {
68 v = (uint8_t *) &st[i]; 57 v = (uint8_t *) &st[i];
69 st[i] = ((uint64_t) v[0]) | (((uint64_t) v[1]) << 8) | 58 st[i] = ((uint64_t) v[0]) | (((uint64_t) v[1]) << 8) |
@@ -73,10 +62,9 @@ sha3_keccakf(uint64_t st[25])
73 } 62 }
74#endif 63#endif
75 64
76 // actual iteration
77 for (r = 0; r < KECCAKF_ROUNDS; r++) { 65 for (r = 0; r < KECCAKF_ROUNDS; r++) {
78 66
79 // Theta 67 /* Theta */
80 for (i = 0; i < 5; i++) 68 for (i = 0; i < 5; i++)
81 bc[i] = st[i] ^ st[i + 5] ^ st[i + 10] ^ st[i + 15] ^ st[i + 20]; 69 bc[i] = st[i] ^ st[i + 5] ^ st[i + 10] ^ st[i + 15] ^ st[i + 20];
82 70
@@ -86,7 +74,7 @@ sha3_keccakf(uint64_t st[25])
86 st[j + i] ^= t; 74 st[j + i] ^= t;
87 } 75 }
88 76
89 // Rho Pi 77 /* Rho Pi */
90 t = st[1]; 78 t = st[1];
91 for (i = 0; i < 24; i++) { 79 for (i = 0; i < 24; i++) {
92 j = keccakf_piln[i]; 80 j = keccakf_piln[i];
@@ -95,7 +83,7 @@ sha3_keccakf(uint64_t st[25])
95 t = bc[0]; 83 t = bc[0];
96 } 84 }
97 85
98 // Chi 86 /* Chi */
99 for (j = 0; j < 25; j += 5) { 87 for (j = 0; j < 25; j += 5) {
100 for (i = 0; i < 5; i++) 88 for (i = 0; i < 5; i++)
101 bc[i] = st[j + i]; 89 bc[i] = st[j + i];
@@ -103,12 +91,11 @@ sha3_keccakf(uint64_t st[25])
103 st[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5]; 91 st[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5];
104 } 92 }
105 93
106 // Iota 94 /* Iota */
107 st[0] ^= keccakf_rndc[r]; 95 st[0] ^= keccakf_rndc[r];
108 } 96 }
109 97
110#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ 98#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
111 // endianess conversion. this is redundant on little-endian targets
112 for (i = 0; i < 25; i++) { 99 for (i = 0; i < 25; i++) {
113 v = (uint8_t *) &st[i]; 100 v = (uint8_t *) &st[i];
114 t = st[i]; 101 t = st[i];
@@ -124,8 +111,6 @@ sha3_keccakf(uint64_t st[25])
124#endif 111#endif
125} 112}
126 113
127// Initialize the context for SHA3
128
129int 114int
130sha3_init(sha3_ctx_t *c, int mdlen) 115sha3_init(sha3_ctx_t *c, int mdlen)
131{ 116{
@@ -140,8 +125,6 @@ sha3_init(sha3_ctx_t *c, int mdlen)
140 return 1; 125 return 1;
141} 126}
142 127
143// update state with more data
144
145int 128int
146sha3_update(sha3_ctx_t *c, const void *data, size_t len) 129sha3_update(sha3_ctx_t *c, const void *data, size_t len)
147{ 130{
@@ -161,8 +144,6 @@ sha3_update(sha3_ctx_t *c, const void *data, size_t len)
161 return 1; 144 return 1;
162} 145}
163 146
164// finalize and output a hash
165
166int 147int
167sha3_final(void *md, sha3_ctx_t *c) 148sha3_final(void *md, sha3_ctx_t *c)
168{ 149{
@@ -179,8 +160,6 @@ sha3_final(void *md, sha3_ctx_t *c)
179 return 1; 160 return 1;
180} 161}
181 162
182// compute a SHA-3 hash (md) of given byte length from "in"
183
184void * 163void *
185sha3(const void *in, size_t inlen, void *md, int mdlen) 164sha3(const void *in, size_t inlen, void *md, int mdlen)
186{ 165{
@@ -193,8 +172,7 @@ sha3(const void *in, size_t inlen, void *md, int mdlen)
193 return md; 172 return md;
194} 173}
195 174
196// SHAKE128 and SHAKE256 extensible-output functionality 175/* SHAKE128 and SHAKE256 extensible-output functionality. */
197
198void 176void
199shake_xof(sha3_ctx_t *c) 177shake_xof(sha3_ctx_t *c)
200{ 178{
diff --git a/src/lib/libcrypto/sha/sha3_internal.h b/src/lib/libcrypto/sha/sha3_internal.h
index 1b4c6675ad..3227e6120f 100644
--- a/src/lib/libcrypto/sha/sha3_internal.h
+++ b/src/lib/libcrypto/sha/sha3_internal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha3_internal.h,v 1.3 2023/04/15 18:07:44 jsing Exp $ */ 1/* $OpenBSD: sha3_internal.h,v 1.4 2023/04/15 18:14:21 jsing Exp $ */
2/* 2/*
3 * The MIT License (MIT) 3 * The MIT License (MIT)
4 * 4 *
@@ -23,9 +23,6 @@
23 * SOFTWARE. 23 * SOFTWARE.
24 */ 24 */
25 25
26// sha3.h
27// 19-Nov-11 Markku-Juhani O. Saarinen <mjos@iki.fi>
28
29#ifndef SHA3_H 26#ifndef SHA3_H
30#define SHA3_H 27#define SHA3_H
31 28
@@ -40,27 +37,23 @@
40#define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y)))) 37#define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y))))
41#endif 38#endif
42 39
43// state context
44typedef struct { 40typedef struct {
45 union { // state: 41 union {
46 uint8_t b[200]; // 8-bit bytes 42 uint8_t b[200]; /* State as 8 bit bytes. */
47 uint64_t q[25]; // 64-bit words 43 uint64_t q[25]; /* State as 64 bit words. */
48 } st; 44 } st;
49 int pt, rsiz, mdlen; // these don't overflow 45 int pt, rsiz, mdlen;
50} sha3_ctx_t; 46} sha3_ctx_t;
51 47
52// Compression function.
53void sha3_keccakf(uint64_t st[25]); 48void sha3_keccakf(uint64_t st[25]);
54 49
55// OpenSSL - like interfece 50int sha3_init(sha3_ctx_t *c, int mdlen);
56int sha3_init(sha3_ctx_t *c, int mdlen); // mdlen = hash output in bytes
57int sha3_update(sha3_ctx_t *c, const void *data, size_t len); 51int sha3_update(sha3_ctx_t *c, const void *data, size_t len);
58int sha3_final(void *md, sha3_ctx_t *c); // digest goes to md 52int sha3_final(void *md, sha3_ctx_t *c);
59 53
60// compute a sha3 hash (md) of given byte length from "in"
61void *sha3(const void *in, size_t inlen, void *md, int mdlen); 54void *sha3(const void *in, size_t inlen, void *md, int mdlen);
62 55
63// SHAKE128 and SHAKE256 extensible-output functions 56/* SHAKE128 and SHAKE256 extensible-output functions. */
64#define shake128_init(c) sha3_init(c, 16) 57#define shake128_init(c) sha3_init(c, 16)
65#define shake256_init(c) sha3_init(c, 32) 58#define shake256_init(c) sha3_init(c, 32)
66#define shake_update sha3_update 59#define shake_update sha3_update
@@ -69,4 +62,3 @@ void shake_xof(sha3_ctx_t *c);
69void shake_out(sha3_ctx_t *c, void *out, size_t len); 62void shake_out(sha3_ctx_t *c, void *out, size_t len);
70 63
71#endif 64#endif
72