/src/nss-nspr/nss/lib/freebl/verified/libcrux_sha3.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * SPDX-FileCopyrightText: 2024 Cryspen Sarl <info@cryspen.com> |
3 | | * |
4 | | * SPDX-License-Identifier: MIT or Apache-2.0 |
5 | | * |
6 | | * This code was generated with the following revisions: |
7 | | * Charon: b351338f6a84c7a1afc27433eb0ffdc668b3581d |
8 | | * Eurydice: 7efec1624422fd5e94388ef06b9c76dfe7a48d46 |
9 | | * Karamel: c96fb69d15693284644d6aecaa90afa37e4de8f0 |
10 | | * F*: 58c915a86a2c07c8eca8d9deafd76cb7a91f0eb7 |
11 | | * Libcrux: 6ff01fb3c57ff29ecb59bc62d9dc7fd231060cfb |
12 | | */ |
13 | | |
14 | | #ifndef __libcrux_sha3_H |
15 | | #define __libcrux_sha3_H |
16 | | |
17 | | #if defined(__cplusplus) |
18 | | extern "C" { |
19 | | #endif |
20 | | |
21 | | #include "eurydice_glue.h" |
22 | | #include "libcrux_core.h" |
23 | | #include "libcrux_sha3_internal.h" |
24 | | |
25 | | /** |
26 | | A portable SHA3 512 implementation. |
27 | | */ |
28 | | static KRML_MUSTINLINE void |
29 | | libcrux_sha3_portable_sha512(Eurydice_slice digest, |
30 | | Eurydice_slice data) |
31 | 0 | { |
32 | 0 | Eurydice_slice buf0[1U] = { data }; |
33 | 0 | Eurydice_slice buf[1U] = { digest }; |
34 | 0 | libcrux_sha3_portable_keccakx1_e4(buf0, buf); |
35 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_sha512 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_sha512 |
36 | | |
37 | | /** |
38 | | A portable SHA3 256 implementation. |
39 | | */ |
40 | | static KRML_MUSTINLINE void |
41 | | libcrux_sha3_portable_sha256(Eurydice_slice digest, |
42 | | Eurydice_slice data) |
43 | 0 | { |
44 | 0 | Eurydice_slice buf0[1U] = { data }; |
45 | 0 | Eurydice_slice buf[1U] = { digest }; |
46 | 0 | libcrux_sha3_portable_keccakx1_e40(buf0, buf); |
47 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_sha256 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_sha256 |
48 | | |
49 | | /** |
50 | | A portable SHAKE256 implementation. |
51 | | */ |
52 | | static KRML_MUSTINLINE void |
53 | | libcrux_sha3_portable_shake256( |
54 | | Eurydice_slice digest, Eurydice_slice data) |
55 | 0 | { |
56 | 0 | Eurydice_slice buf0[1U] = { data }; |
57 | 0 | Eurydice_slice buf[1U] = { digest }; |
58 | 0 | libcrux_sha3_portable_keccakx1_e41(buf0, buf); |
59 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_shake256 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_shake256 |
60 | | |
61 | | /** |
62 | | A portable SHA3 224 implementation. |
63 | | */ |
64 | | static KRML_MUSTINLINE void |
65 | | libcrux_sha3_portable_sha224(Eurydice_slice digest, |
66 | | Eurydice_slice data) |
67 | 0 | { |
68 | 0 | Eurydice_slice buf0[1U] = { data }; |
69 | 0 | Eurydice_slice buf[1U] = { digest }; |
70 | 0 | libcrux_sha3_portable_keccakx1_e42(buf0, buf); |
71 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_sha224 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_sha224 |
72 | | |
73 | | /** |
74 | | A portable SHA3 384 implementation. |
75 | | */ |
76 | | static KRML_MUSTINLINE void |
77 | | libcrux_sha3_portable_sha384(Eurydice_slice digest, |
78 | | Eurydice_slice data) |
79 | 0 | { |
80 | 0 | Eurydice_slice buf0[1U] = { data }; |
81 | 0 | Eurydice_slice buf[1U] = { digest }; |
82 | 0 | libcrux_sha3_portable_keccakx1_e43(buf0, buf); |
83 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_sha384 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_sha384 |
84 | | |
85 | | /** |
86 | | SHA3 224 |
87 | | |
88 | | Preconditions: |
89 | | - `digest.len() == 28` |
90 | | */ |
91 | | static KRML_MUSTINLINE void |
92 | | libcrux_sha3_sha224_ema(Eurydice_slice digest, |
93 | | Eurydice_slice payload) |
94 | 0 | { |
95 | 0 | libcrux_sha3_portable_sha224(digest, payload); |
96 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha224_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha224_ema |
97 | | |
98 | | /** |
99 | | SHA3 224 |
100 | | */ |
101 | | static KRML_MUSTINLINE void |
102 | | libcrux_sha3_sha224(Eurydice_slice data, |
103 | | uint8_t ret[28U]) |
104 | 0 | { |
105 | 0 | uint8_t out[28U] = { 0U }; |
106 | 0 | libcrux_sha3_sha224_ema(Eurydice_array_to_slice((size_t)28U, out, uint8_t), |
107 | 0 | data); |
108 | 0 | memcpy(ret, out, (size_t)28U * sizeof(uint8_t)); |
109 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha224 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha224 |
110 | | |
111 | | /** |
112 | | SHA3 256 |
113 | | */ |
114 | | static KRML_MUSTINLINE void |
115 | | libcrux_sha3_sha256_ema(Eurydice_slice digest, |
116 | | Eurydice_slice payload) |
117 | 0 | { |
118 | 0 | libcrux_sha3_portable_sha256(digest, payload); |
119 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha256_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha256_ema |
120 | | |
121 | | /** |
122 | | SHA3 256 |
123 | | */ |
124 | | static KRML_MUSTINLINE void |
125 | | libcrux_sha3_sha256(Eurydice_slice data, |
126 | | uint8_t ret[32U]) |
127 | 0 | { |
128 | 0 | uint8_t out[32U] = { 0U }; |
129 | 0 | libcrux_sha3_sha256_ema(Eurydice_array_to_slice((size_t)32U, out, uint8_t), |
130 | 0 | data); |
131 | 0 | memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); |
132 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha256 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha256 |
133 | | |
134 | | /** |
135 | | SHA3 384 |
136 | | */ |
137 | | static KRML_MUSTINLINE void |
138 | | libcrux_sha3_sha384_ema(Eurydice_slice digest, |
139 | | Eurydice_slice payload) |
140 | 0 | { |
141 | 0 | libcrux_sha3_portable_sha384(digest, payload); |
142 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha384_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha384_ema |
143 | | |
144 | | /** |
145 | | SHA3 384 |
146 | | */ |
147 | | static KRML_MUSTINLINE void |
148 | | libcrux_sha3_sha384(Eurydice_slice data, |
149 | | uint8_t ret[48U]) |
150 | 0 | { |
151 | 0 | uint8_t out[48U] = { 0U }; |
152 | 0 | libcrux_sha3_sha384_ema(Eurydice_array_to_slice((size_t)48U, out, uint8_t), |
153 | 0 | data); |
154 | 0 | memcpy(ret, out, (size_t)48U * sizeof(uint8_t)); |
155 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha384 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha384 |
156 | | |
157 | | /** |
158 | | SHA3 512 |
159 | | */ |
160 | | static KRML_MUSTINLINE void |
161 | | libcrux_sha3_sha512_ema(Eurydice_slice digest, |
162 | | Eurydice_slice payload) |
163 | 0 | { |
164 | 0 | libcrux_sha3_portable_sha512(digest, payload); |
165 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha512_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha512_ema |
166 | | |
167 | | /** |
168 | | SHA3 512 |
169 | | */ |
170 | | static KRML_MUSTINLINE void |
171 | | libcrux_sha3_sha512(Eurydice_slice data, |
172 | | uint8_t ret[64U]) |
173 | 0 | { |
174 | 0 | uint8_t out[64U] = { 0U }; |
175 | 0 | libcrux_sha3_sha512_ema(Eurydice_array_to_slice((size_t)64U, out, uint8_t), |
176 | 0 | data); |
177 | 0 | memcpy(ret, out, (size_t)64U * sizeof(uint8_t)); |
178 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_sha512 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_sha512 |
179 | | |
180 | | /** |
181 | | A portable SHAKE128 implementation. |
182 | | */ |
183 | | static KRML_MUSTINLINE void |
184 | | libcrux_sha3_portable_shake128( |
185 | | Eurydice_slice digest, Eurydice_slice data) |
186 | 0 | { |
187 | 0 | Eurydice_slice buf0[1U] = { data }; |
188 | 0 | Eurydice_slice buf[1U] = { digest }; |
189 | 0 | libcrux_sha3_portable_keccakx1_e44(buf0, buf); |
190 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_portable_shake128 Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_portable_shake128 |
191 | | |
192 | | /** |
193 | | SHAKE 128 |
194 | | |
195 | | Writes `out.len()` bytes. |
196 | | */ |
197 | | static KRML_MUSTINLINE void |
198 | | libcrux_sha3_shake128_ema(Eurydice_slice out, |
199 | | Eurydice_slice data) |
200 | 0 | { |
201 | 0 | libcrux_sha3_portable_shake128(out, data); |
202 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_shake128_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_shake128_ema |
203 | | |
204 | | /** |
205 | | SHAKE 256 |
206 | | |
207 | | Writes `out.len()` bytes. |
208 | | */ |
209 | | static KRML_MUSTINLINE void |
210 | | libcrux_sha3_shake256_ema(Eurydice_slice out, |
211 | | Eurydice_slice data) |
212 | 0 | { |
213 | 0 | libcrux_sha3_portable_shake256(out, data); |
214 | 0 | } Unexecuted instantiation: libcrux_mlkem768_portable.c:libcrux_sha3_shake256_ema Unexecuted instantiation: libcrux_mlkem_portable.c:libcrux_sha3_shake256_ema |
215 | | |
216 | | #if defined(__cplusplus) |
217 | | } |
218 | | #endif |
219 | | |
220 | | #define __libcrux_sha3_H_DEFINED |
221 | | #endif |