/src/openssl/crypto/evp/legacy_sha.c
Line | Count | Source |
1 | | /* |
2 | | * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | | * this file except in compliance with the License. You can obtain a copy |
6 | | * in the file LICENSE in the source distribution or at |
7 | | * https://www.openssl.org/source/license.html |
8 | | */ |
9 | | |
10 | | /* |
11 | | * All SHA low level APIs are deprecated for public use, but still ok for |
12 | | * internal use. |
13 | | */ |
14 | | #include "internal/deprecated.h" |
15 | | |
16 | | #include <openssl/sha.h> /* diverse SHA macros */ |
17 | | #include "internal/sha3.h" /* KECCAK1600_WIDTH */ |
18 | | #include "crypto/evp.h" |
19 | | |
20 | | static const EVP_MD sha1_md = { |
21 | | NID_sha1, |
22 | | NID_sha1WithRSAEncryption, |
23 | | SHA_DIGEST_LENGTH, |
24 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
25 | | EVP_ORIG_GLOBAL, |
26 | | SHA_CBLOCK |
27 | | }; |
28 | | |
29 | | const EVP_MD *EVP_sha1(void) |
30 | 3 | { |
31 | 3 | return &sha1_md; |
32 | 3 | } |
33 | | |
34 | | static const EVP_MD sha224_md = { |
35 | | NID_sha224, |
36 | | NID_sha224WithRSAEncryption, |
37 | | SHA224_DIGEST_LENGTH, |
38 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
39 | | EVP_ORIG_GLOBAL, |
40 | | SHA256_CBLOCK |
41 | | }; |
42 | | |
43 | | const EVP_MD *EVP_sha224(void) |
44 | 3 | { |
45 | 3 | return &sha224_md; |
46 | 3 | } |
47 | | |
48 | | static const EVP_MD sha256_md = { |
49 | | NID_sha256, |
50 | | NID_sha256WithRSAEncryption, |
51 | | SHA256_DIGEST_LENGTH, |
52 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
53 | | EVP_ORIG_GLOBAL, |
54 | | SHA256_CBLOCK |
55 | | }; |
56 | | |
57 | | const EVP_MD *EVP_sha256(void) |
58 | 3 | { |
59 | 3 | return &sha256_md; |
60 | 3 | } |
61 | | |
62 | | static const EVP_MD sha512_224_md = { |
63 | | NID_sha512_224, |
64 | | NID_sha512_224WithRSAEncryption, |
65 | | SHA224_DIGEST_LENGTH, |
66 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
67 | | EVP_ORIG_GLOBAL, |
68 | | SHA512_CBLOCK |
69 | | }; |
70 | | |
71 | | const EVP_MD *EVP_sha512_224(void) |
72 | 3 | { |
73 | 3 | return &sha512_224_md; |
74 | 3 | } |
75 | | |
76 | | static const EVP_MD sha512_256_md = { |
77 | | NID_sha512_256, |
78 | | NID_sha512_256WithRSAEncryption, |
79 | | SHA256_DIGEST_LENGTH, |
80 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
81 | | EVP_ORIG_GLOBAL, |
82 | | SHA512_CBLOCK |
83 | | }; |
84 | | |
85 | | const EVP_MD *EVP_sha512_256(void) |
86 | 3 | { |
87 | 3 | return &sha512_256_md; |
88 | 3 | } |
89 | | |
90 | | static const EVP_MD sha384_md = { |
91 | | NID_sha384, |
92 | | NID_sha384WithRSAEncryption, |
93 | | SHA384_DIGEST_LENGTH, |
94 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
95 | | EVP_ORIG_GLOBAL, |
96 | | SHA512_CBLOCK |
97 | | }; |
98 | | |
99 | | const EVP_MD *EVP_sha384(void) |
100 | 3 | { |
101 | 3 | return &sha384_md; |
102 | 3 | } |
103 | | |
104 | | static const EVP_MD sha512_md = { |
105 | | NID_sha512, |
106 | | NID_sha512WithRSAEncryption, |
107 | | SHA512_DIGEST_LENGTH, |
108 | | EVP_MD_FLAG_DIGALGID_ABSENT, |
109 | | EVP_ORIG_GLOBAL, |
110 | | SHA512_CBLOCK |
111 | | }; |
112 | | |
113 | | const EVP_MD *EVP_sha512(void) |
114 | 3 | { |
115 | 3 | return &sha512_md; |
116 | 3 | } |
117 | | |
118 | | #define EVP_MD_SHA3(bitlen) \ |
119 | | const EVP_MD *EVP_sha3_##bitlen(void) \ |
120 | 12 | { \ |
121 | 12 | static const EVP_MD sha3_##bitlen##_md = { \ |
122 | 12 | NID_sha3_##bitlen, \ |
123 | 12 | NID_RSA_SHA3_##bitlen, \ |
124 | 12 | bitlen / 8, \ |
125 | 12 | EVP_MD_FLAG_DIGALGID_ABSENT, \ |
126 | 12 | EVP_ORIG_GLOBAL, \ |
127 | 12 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ |
128 | 12 | }; \ |
129 | 12 | return &sha3_##bitlen##_md; \ |
130 | 12 | } Line | Count | Source | 120 | 3 | { \ | 121 | 3 | static const EVP_MD sha3_##bitlen##_md = { \ | 122 | 3 | NID_sha3_##bitlen, \ | 123 | 3 | NID_RSA_SHA3_##bitlen, \ | 124 | 3 | bitlen / 8, \ | 125 | 3 | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 126 | 3 | EVP_ORIG_GLOBAL, \ | 127 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 128 | 3 | }; \ | 129 | 3 | return &sha3_##bitlen##_md; \ | 130 | 3 | } |
Line | Count | Source | 120 | 3 | { \ | 121 | 3 | static const EVP_MD sha3_##bitlen##_md = { \ | 122 | 3 | NID_sha3_##bitlen, \ | 123 | 3 | NID_RSA_SHA3_##bitlen, \ | 124 | 3 | bitlen / 8, \ | 125 | 3 | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 126 | 3 | EVP_ORIG_GLOBAL, \ | 127 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 128 | 3 | }; \ | 129 | 3 | return &sha3_##bitlen##_md; \ | 130 | 3 | } |
Line | Count | Source | 120 | 3 | { \ | 121 | 3 | static const EVP_MD sha3_##bitlen##_md = { \ | 122 | 3 | NID_sha3_##bitlen, \ | 123 | 3 | NID_RSA_SHA3_##bitlen, \ | 124 | 3 | bitlen / 8, \ | 125 | 3 | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 126 | 3 | EVP_ORIG_GLOBAL, \ | 127 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 128 | 3 | }; \ | 129 | 3 | return &sha3_##bitlen##_md; \ | 130 | 3 | } |
Line | Count | Source | 120 | 3 | { \ | 121 | 3 | static const EVP_MD sha3_##bitlen##_md = { \ | 122 | 3 | NID_sha3_##bitlen, \ | 123 | 3 | NID_RSA_SHA3_##bitlen, \ | 124 | 3 | bitlen / 8, \ | 125 | 3 | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 126 | 3 | EVP_ORIG_GLOBAL, \ | 127 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 128 | 3 | }; \ | 129 | 3 | return &sha3_##bitlen##_md; \ | 130 | 3 | } |
|
131 | | #define EVP_MD_SHAKE(bitlen) \ |
132 | | const EVP_MD *EVP_shake##bitlen(void) \ |
133 | 6 | { \ |
134 | 6 | static const EVP_MD shake##bitlen##_md = { \ |
135 | 6 | NID_shake##bitlen, \ |
136 | 6 | 0, \ |
137 | 6 | bitlen / 8, \ |
138 | 6 | EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \ |
139 | 6 | EVP_ORIG_GLOBAL, \ |
140 | 6 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ |
141 | 6 | }; \ |
142 | 6 | return &shake##bitlen##_md; \ |
143 | 6 | } Line | Count | Source | 133 | 3 | { \ | 134 | 3 | static const EVP_MD shake##bitlen##_md = { \ | 135 | 3 | NID_shake##bitlen, \ | 136 | 3 | 0, \ | 137 | 3 | bitlen / 8, \ | 138 | 3 | EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 139 | 3 | EVP_ORIG_GLOBAL, \ | 140 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 141 | 3 | }; \ | 142 | 3 | return &shake##bitlen##_md; \ | 143 | 3 | } |
Line | Count | Source | 133 | 3 | { \ | 134 | 3 | static const EVP_MD shake##bitlen##_md = { \ | 135 | 3 | NID_shake##bitlen, \ | 136 | 3 | 0, \ | 137 | 3 | bitlen / 8, \ | 138 | 3 | EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \ | 139 | 3 | EVP_ORIG_GLOBAL, \ | 140 | 3 | (KECCAK1600_WIDTH - bitlen * 2) / 8 \ | 141 | 3 | }; \ | 142 | 3 | return &shake##bitlen##_md; \ | 143 | 3 | } |
|
144 | | |
145 | | EVP_MD_SHA3(224) |
146 | | EVP_MD_SHA3(256) |
147 | | EVP_MD_SHA3(384) |
148 | | EVP_MD_SHA3(512) |
149 | | |
150 | | EVP_MD_SHAKE(128) |
151 | | EVP_MD_SHAKE(256) |