|
2 | 2 | // SPDX-License-Identifier: Apache-2.0 OR ISC
|
3 | 3 | #include <openssl/evp.h>
|
4 | 4 | #include <openssl/mem.h>
|
5 |
| - |
6 | 5 | #include <openssl/base.h>
|
7 |
| -#include "../evp_extra/internal.h" |
| 6 | + |
| 7 | +#include "../delocate.h" |
| 8 | +#include "../../evp_extra/internal.h" |
8 | 9 | #include "../crypto/ml_dsa/ml_dsa.h"
|
9 | 10 | #include "internal.h"
|
10 | 11 |
|
@@ -146,83 +147,83 @@ int PQDSA_KEY_set_raw_private_key(PQDSA_KEY *key, CBS *in) {
|
146 | 147 | return 1;
|
147 | 148 | }
|
148 | 149 |
|
149 |
| -static const PQDSA_METHOD sig_ml_dsa_44_method = { |
150 |
| - ml_dsa_44_keypair, |
151 |
| - ml_dsa_44_keypair_internal, |
152 |
| - ml_dsa_44_sign, |
153 |
| - ml_dsa_extmu_44_sign, |
154 |
| - ml_dsa_44_verify, |
155 |
| - ml_dsa_extmu_44_verify, |
156 |
| - ml_dsa_44_pack_pk_from_sk |
157 |
| -}; |
158 |
| - |
159 |
| -static const PQDSA_METHOD sig_ml_dsa_65_method = { |
160 |
| - ml_dsa_65_keypair, |
161 |
| - ml_dsa_65_keypair_internal, |
162 |
| - ml_dsa_65_sign, |
163 |
| - ml_dsa_extmu_65_sign, |
164 |
| - ml_dsa_65_verify, |
165 |
| - ml_dsa_extmu_65_verify, |
166 |
| - ml_dsa_65_pack_pk_from_sk |
167 |
| -}; |
168 |
| - |
169 |
| -static const PQDSA_METHOD sig_ml_dsa_87_method = { |
170 |
| - ml_dsa_87_keypair, |
171 |
| - ml_dsa_87_keypair_internal, |
172 |
| - ml_dsa_87_sign, |
173 |
| - ml_dsa_extmu_87_sign, |
174 |
| - ml_dsa_87_verify, |
175 |
| - ml_dsa_extmu_87_verify, |
176 |
| - ml_dsa_87_pack_pk_from_sk |
177 |
| -}; |
178 |
| - |
179 |
| -static const PQDSA sig_ml_dsa_44 = { |
180 |
| - NID_MLDSA44, |
181 |
| - kOIDMLDSA44, |
182 |
| - sizeof(kOIDMLDSA44), |
183 |
| - "MLDSA44", |
184 |
| - MLDSA44_PUBLIC_KEY_BYTES, |
185 |
| - MLDSA44_PRIVATE_KEY_BYTES, |
186 |
| - MLDSA44_SIGNATURE_BYTES, |
187 |
| - MLDSA44_KEYGEN_SEED_BYTES, |
188 |
| - MLDSA44_SIGNATURE_SEED_BYTES, |
189 |
| - &sig_ml_dsa_44_method, |
190 |
| -}; |
191 |
| - |
192 |
| -static const PQDSA sig_ml_dsa_65 = { |
193 |
| - NID_MLDSA65, |
194 |
| - kOIDMLDSA65, |
195 |
| - sizeof(kOIDMLDSA65), |
196 |
| - "MLDSA65", |
197 |
| - MLDSA65_PUBLIC_KEY_BYTES, |
198 |
| - MLDSA65_PRIVATE_KEY_BYTES, |
199 |
| - MLDSA65_SIGNATURE_BYTES, |
200 |
| - MLDSA65_KEYGEN_SEED_BYTES, |
201 |
| - MLDSA65_SIGNATURE_SEED_BYTES, |
202 |
| - &sig_ml_dsa_65_method, |
203 |
| -}; |
204 |
| - |
205 |
| -static const PQDSA sig_ml_dsa_87 = { |
206 |
| - NID_MLDSA87, |
207 |
| - kOIDMLDSA87, |
208 |
| - sizeof(kOIDMLDSA87), |
209 |
| - "MLDSA87", |
210 |
| - MLDSA87_PUBLIC_KEY_BYTES, |
211 |
| - MLDSA87_PRIVATE_KEY_BYTES, |
212 |
| - MLDSA87_SIGNATURE_BYTES, |
213 |
| - MLDSA87_KEYGEN_SEED_BYTES, |
214 |
| - MLDSA87_SIGNATURE_SEED_BYTES, |
215 |
| - &sig_ml_dsa_87_method, |
216 |
| -}; |
| 150 | +DEFINE_LOCAL_DATA(PQDSA_METHOD, sig_ml_dsa_44_method) { |
| 151 | + out->pqdsa_keygen = ml_dsa_44_keypair; |
| 152 | + out->pqdsa_keygen_internal = ml_dsa_44_keypair_internal; |
| 153 | + out->pqdsa_sign_message = ml_dsa_44_sign; |
| 154 | + out->pqdsa_sign = ml_dsa_extmu_44_sign; |
| 155 | + out->pqdsa_verify_message = ml_dsa_44_verify; |
| 156 | + out->pqdsa_verify = ml_dsa_extmu_44_verify; |
| 157 | + out->pqdsa_pack_pk_from_sk = ml_dsa_44_pack_pk_from_sk; |
| 158 | +} |
| 159 | + |
| 160 | +DEFINE_LOCAL_DATA(PQDSA_METHOD, sig_ml_dsa_65_method) { |
| 161 | + out->pqdsa_keygen = ml_dsa_65_keypair; |
| 162 | + out->pqdsa_keygen_internal = ml_dsa_65_keypair_internal; |
| 163 | + out->pqdsa_sign_message = ml_dsa_65_sign; |
| 164 | + out->pqdsa_sign = ml_dsa_extmu_65_sign; |
| 165 | + out->pqdsa_verify_message = ml_dsa_65_verify; |
| 166 | + out->pqdsa_verify = ml_dsa_extmu_65_verify; |
| 167 | + out->pqdsa_pack_pk_from_sk = ml_dsa_65_pack_pk_from_sk; |
| 168 | +} |
| 169 | + |
| 170 | +DEFINE_LOCAL_DATA(PQDSA_METHOD, sig_ml_dsa_87_method) { |
| 171 | + out->pqdsa_keygen = ml_dsa_87_keypair; |
| 172 | + out->pqdsa_keygen_internal = ml_dsa_87_keypair_internal; |
| 173 | + out->pqdsa_sign_message = ml_dsa_87_sign; |
| 174 | + out->pqdsa_sign = ml_dsa_extmu_87_sign; |
| 175 | + out->pqdsa_verify_message = ml_dsa_87_verify; |
| 176 | + out->pqdsa_verify = ml_dsa_extmu_87_verify; |
| 177 | + out->pqdsa_pack_pk_from_sk = ml_dsa_87_pack_pk_from_sk; |
| 178 | +} |
| 179 | + |
| 180 | +DEFINE_LOCAL_DATA(PQDSA, sig_ml_dsa_44) { |
| 181 | + out->nid = NID_MLDSA44; |
| 182 | + out->oid = kOIDMLDSA44; |
| 183 | + out->oid_len = sizeof(kOIDMLDSA44); |
| 184 | + out->comment = "MLDSA44"; |
| 185 | + out->public_key_len = MLDSA44_PUBLIC_KEY_BYTES; |
| 186 | + out->private_key_len = MLDSA44_PRIVATE_KEY_BYTES; |
| 187 | + out->signature_len = MLDSA44_SIGNATURE_BYTES; |
| 188 | + out->keygen_seed_len = MLDSA44_KEYGEN_SEED_BYTES; |
| 189 | + out->sign_seed_len = MLDSA44_SIGNATURE_SEED_BYTES; |
| 190 | + out->method = sig_ml_dsa_44_method(); |
| 191 | +} |
| 192 | + |
| 193 | +DEFINE_LOCAL_DATA(PQDSA, sig_ml_dsa_65) { |
| 194 | + out->nid = NID_MLDSA65; |
| 195 | + out->oid = kOIDMLDSA65; |
| 196 | + out->oid_len = sizeof(kOIDMLDSA65); |
| 197 | + out->comment = "MLDSA65"; |
| 198 | + out->public_key_len = MLDSA65_PUBLIC_KEY_BYTES; |
| 199 | + out->private_key_len = MLDSA65_PRIVATE_KEY_BYTES; |
| 200 | + out->signature_len = MLDSA65_SIGNATURE_BYTES; |
| 201 | + out->keygen_seed_len = MLDSA65_KEYGEN_SEED_BYTES; |
| 202 | + out->sign_seed_len = MLDSA65_SIGNATURE_SEED_BYTES; |
| 203 | + out->method = sig_ml_dsa_65_method(); |
| 204 | +} |
| 205 | + |
| 206 | +DEFINE_LOCAL_DATA(PQDSA, sig_ml_dsa_87) { |
| 207 | + out->nid = NID_MLDSA87; |
| 208 | + out->oid = kOIDMLDSA87; |
| 209 | + out->oid_len = sizeof(kOIDMLDSA87); |
| 210 | + out->comment = "MLDSA87"; |
| 211 | + out->public_key_len = MLDSA87_PUBLIC_KEY_BYTES; |
| 212 | + out->private_key_len = MLDSA87_PRIVATE_KEY_BYTES; |
| 213 | + out->signature_len = MLDSA87_SIGNATURE_BYTES; |
| 214 | + out->keygen_seed_len = MLDSA87_KEYGEN_SEED_BYTES; |
| 215 | + out->sign_seed_len = MLDSA87_SIGNATURE_SEED_BYTES; |
| 216 | + out->method = sig_ml_dsa_87_method(); |
| 217 | +} |
217 | 218 |
|
218 | 219 | const PQDSA *PQDSA_find_dsa_by_nid(int nid) {
|
219 | 220 | switch (nid) {
|
220 | 221 | case NID_MLDSA44:
|
221 |
| - return &sig_ml_dsa_44; |
| 222 | + return sig_ml_dsa_44(); |
222 | 223 | case NID_MLDSA65:
|
223 |
| - return &sig_ml_dsa_65; |
| 224 | + return sig_ml_dsa_65(); |
224 | 225 | case NID_MLDSA87:
|
225 |
| - return &sig_ml_dsa_87; |
| 226 | + return sig_ml_dsa_87(); |
226 | 227 | default:
|
227 | 228 | return NULL;
|
228 | 229 | }
|
|
0 commit comments