|
541 | 541 | #endif /* LITTLE_ENDIAN_ORDER && WOLFSSL_DILITHIUM_ALIGNMENT == 0 */ |
542 | 542 | #endif |
543 | 543 |
|
| 544 | +#ifndef WOLFSSL_NO_ML_DSA_87 |
| 545 | + |
| 546 | +#define DILITHIUM_MAX_KEY_SIZE DILITHIUM_LEVEL5_KEY_SIZE |
| 547 | +#define DILITHIUM_MAX_SIG_SIZE DILITHIUM_LEVEL5_SIG_SIZE |
| 548 | +#define DILITHIUM_MAX_PUB_KEY_SIZE DILITHIUM_LEVEL5_PUB_KEY_SIZE |
| 549 | +#define DILITHIUM_MAX_PRV_KEY_SIZE DILITHIUM_LEVEL5_PRV_KEY_SIZE |
| 550 | +/* Buffer sizes large enough to store exported DER encoded keys */ |
| 551 | +#define DILITHIUM_MAX_PUB_KEY_DER_SIZE DILITHIUM_LEVEL5_PUB_KEY_DER_SIZE |
| 552 | +#define DILITHIUM_MAX_PRV_KEY_DER_SIZE DILITHIUM_LEVEL5_PRV_KEY_DER_SIZE |
| 553 | +#define DILITHIUM_MAX_BOTH_KEY_DER_SIZE DILITHIUM_LEVEL5_BOTH_KEY_DER_SIZE |
| 554 | +/* PEM size with the header "-----BEGIN ML_DSA_LEVEL5 PRIVATE KEY-----" and |
| 555 | + * the footer "-----END ML_DSA_LEVEL5 PRIVATE KEY-----" */ |
| 556 | +#define DILITHIUM_MAX_BOTH_KEY_PEM_SIZE DILITHIUM_LEVEL5_BOTH_KEY_PEM_SIZE |
| 557 | + |
| 558 | +#elif !defined(WOLFSSL_NO_ML_DSA_65) |
| 559 | + |
| 560 | +#define DILITHIUM_MAX_KEY_SIZE DILITHIUM_LEVEL3_KEY_SIZE |
| 561 | +#define DILITHIUM_MAX_SIG_SIZE DILITHIUM_LEVEL3_SIG_SIZE |
| 562 | +#define DILITHIUM_MAX_PUB_KEY_SIZE DILITHIUM_LEVEL3_PUB_KEY_SIZE |
| 563 | +#define DILITHIUM_MAX_PRV_KEY_SIZE DILITHIUM_LEVEL3_PRV_KEY_SIZE |
| 564 | +/* Buffer sizes large enough to store exported DER encoded keys */ |
| 565 | +#define DILITHIUM_MAX_PUB_KEY_DER_SIZE DILITHIUM_LEVEL3_PUB_KEY_DER_SIZE |
| 566 | +#define DILITHIUM_MAX_PRV_KEY_DER_SIZE DILITHIUM_LEVEL3_PRV_KEY_DER_SIZE |
| 567 | +#define DILITHIUM_MAX_BOTH_KEY_DER_SIZE DILITHIUM_LEVEL3_BOTH_KEY_DER_SIZE |
| 568 | +/* PEM size with the header "-----BEGIN ML_DSA_LEVEL5 PRIVATE KEY-----" and |
| 569 | + * the footer "-----END ML_DSA_LEVEL5 PRIVATE KEY-----" */ |
| 570 | +#define DILITHIUM_MAX_BOTH_KEY_PEM_SIZE DILITHIUM_LEVEL3_BOTH_KEY_PEM_SIZE |
| 571 | + |
| 572 | +#else |
| 573 | + |
| 574 | +#define DILITHIUM_MAX_KEY_SIZE DILITHIUM_LEVEL2_KEY_SIZE |
| 575 | +#define DILITHIUM_MAX_SIG_SIZE DILITHIUM_LEVEL2_SIG_SIZE |
| 576 | +#define DILITHIUM_MAX_PUB_KEY_SIZE DILITHIUM_LEVEL2_PUB_KEY_SIZE |
| 577 | +#define DILITHIUM_MAX_PRV_KEY_SIZE DILITHIUM_LEVEL2_PRV_KEY_SIZE |
| 578 | +/* Buffer sizes large enough to store exported DER encoded keys */ |
| 579 | +#define DILITHIUM_MAX_PUB_KEY_DER_SIZE DILITHIUM_LEVEL2_PUB_KEY_DER_SIZE |
| 580 | +#define DILITHIUM_MAX_PRV_KEY_DER_SIZE DILITHIUM_LEVEL2_PRV_KEY_DER_SIZE |
| 581 | +#define DILITHIUM_MAX_BOTH_KEY_DER_SIZE DILITHIUM_LEVEL2_BOTH_KEY_DER_SIZE |
| 582 | +/* PEM size with the header "-----BEGIN ML_DSA_LEVEL5 PRIVATE KEY-----" and |
| 583 | + * the footer "-----END ML_DSA_LEVEL5 PRIVATE KEY-----" */ |
| 584 | +#define DILITHIUM_MAX_BOTH_KEY_PEM_SIZE DILITHIUM_LEVEL2_BOTH_KEY_PEM_SIZE |
| 585 | + |
| 586 | +#endif |
| 587 | + |
544 | 588 | #elif defined(HAVE_LIBOQS) |
545 | 589 |
|
546 | 590 | #define DILITHIUM_LEVEL2_KEY_SIZE OQS_SIG_ml_dsa_44_ipd_length_secret_key |
|
621 | 665 | * the footer "-----END ML_DSA_LEVEL5 PRIVATE KEY-----" */ |
622 | 666 | #define ML_DSA_LEVEL5_BOTH_KEY_PEM_SIZE DILITHIUM_LEVEL5_BOTH_KEY_PEM_SIZE |
623 | 667 |
|
624 | | -#endif |
625 | | - |
626 | 668 | #define DILITHIUM_MAX_KEY_SIZE DILITHIUM_LEVEL5_KEY_SIZE |
627 | 669 | #define DILITHIUM_MAX_SIG_SIZE DILITHIUM_LEVEL5_SIG_SIZE |
628 | 670 | #define DILITHIUM_MAX_PUB_KEY_SIZE DILITHIUM_LEVEL5_PUB_KEY_SIZE |
|
634 | 676 | /* PEM size with the header "-----BEGIN ML_DSA_LEVEL5 PRIVATE KEY-----" and |
635 | 677 | * the footer "-----END ML_DSA_LEVEL5 PRIVATE KEY-----" */ |
636 | 678 | #define DILITHIUM_MAX_BOTH_KEY_PEM_SIZE DILITHIUM_LEVEL5_BOTH_KEY_PEM_SIZE |
| 679 | +#endif |
| 680 | + |
637 | 681 |
|
638 | 682 |
|
639 | 683 | #ifdef WOLF_PRIVATE_KEY_ID |
@@ -1012,33 +1056,37 @@ WOLFSSL_LOCAL void wc_mldsa_poly_make_pos_avx2(sword32* a); |
1012 | 1056 | #define MlDsaKey dilithium_key |
1013 | 1057 |
|
1014 | 1058 |
|
1015 | | -#define wc_MlDsaKey_Init(key, heap, devId) \ |
| 1059 | +#define wc_MlDsaKey_Init(key, heap, devId) \ |
1016 | 1060 | wc_dilithium_init_ex(key, heap, devId) |
1017 | | -#define wc_MlDsaKey_SetParams(key, id) \ |
| 1061 | +#define wc_MlDsaKey_SetParams(key, id) \ |
1018 | 1062 | wc_dilithium_set_level(key, id) |
1019 | | -#define wc_MlDsaKey_GetParams(key, id) \ |
| 1063 | +#define wc_MlDsaKey_GetParams(key, id) \ |
1020 | 1064 | wc_dilithium_get_level(key, id) |
1021 | | -#define wc_MlDsaKey_MakeKey(key, rng) \ |
| 1065 | +#define wc_MlDsaKey_MakeKey(key, rng) \ |
1022 | 1066 | wc_dilithium_make_key(key, rng) |
1023 | | -#define wc_MlDsaKey_ExportPrivRaw(key, out, outLen) \ |
| 1067 | +#define wc_MlDsaKey_ExportPrivRaw(key, out, outLen) \ |
1024 | 1068 | wc_dilithium_export_private_only(key, out, outLen) |
1025 | | -#define wc_MlDsaKey_ImportPrivRaw(key, in, inLen) \ |
| 1069 | +#define wc_MlDsaKey_ImportPrivRaw(key, in, inLen) \ |
1026 | 1070 | wc_dilithium_import_private_only(in, inLen, key) |
1027 | | -#define wc_MlDsaKey_Sign(key, sig, sigSz, msg, msgSz, rng) \ |
| 1071 | +#define wc_MlDsaKey_Sign(key, sig, sigSz, msg, msgSz, rng) \ |
1028 | 1072 | wc_dilithium_sign_msg(msg, msgSz, sig, sigSz, key, rng) |
1029 | | -#define wc_MlDsaKey_Free(key) \ |
| 1073 | +#define wc_MlDsaKey_SignCtx(key, ctx, ctxSz, sig, sigSz, msg, msgSz, rng) \ |
| 1074 | + wc_dilithium_sign_ctx_msg(ctx, ctxSz, msg, msgSz, sig, sigSz, key, rng) |
| 1075 | +#define wc_MlDsaKey_Free(key) \ |
1030 | 1076 | wc_dilithium_free(key) |
1031 | | -#define wc_MlDsaKey_ExportPubRaw(key, out, outLen) \ |
| 1077 | +#define wc_MlDsaKey_ExportPubRaw(key, out, outLen) \ |
1032 | 1078 | wc_dilithium_export_public(key, out, outLen) |
1033 | | -#define wc_MlDsaKey_ImportPubRaw(key, in, inLen) \ |
| 1079 | +#define wc_MlDsaKey_ImportPubRaw(key, in, inLen) \ |
1034 | 1080 | wc_dilithium_import_public(in, inLen, key) |
1035 | | -#define wc_MlDsaKey_Verify(key, sig, sigSz, msg, msgSz, res) \ |
| 1081 | +#define wc_MlDsaKey_Verify(key, sig, sigSz, msg, msgSz, res) \ |
1036 | 1082 | wc_dilithium_verify_msg(sig, sigSz, msg, msgSz, res, key) |
| 1083 | +#define wc_MlDsaKey_VerifyCtx(key, sig, sigSz, ctx, ctxSz, msg, msgSz, res) \ |
| 1084 | + wc_dilithium_verify_msg_ctx(sig, sigSz, ctx, ctxSz, msg, msgSz, res, key) |
1037 | 1085 |
|
1038 | | -#define wc_MlDsaKey_PublicKeyToDer(key, output, len, withAlg) \ |
| 1086 | +#define wc_MlDsaKey_PublicKeyToDer(key, output, len, withAlg) \ |
1039 | 1087 | wc_Dilithium_PublicKeyToDer(key, output, len, withAlg) |
1040 | 1088 |
|
1041 | | -#define wc_MlDsaKey_PrivateKeyToDer(key, output, len) \ |
| 1089 | +#define wc_MlDsaKey_PrivateKeyToDer(key, output, len) \ |
1042 | 1090 | wc_Dilithium_PrivateKeyToDer(key, output, len) |
1043 | 1091 |
|
1044 | 1092 |
|
|
0 commit comments