Skip to content

Commit

Permalink
Match 769 Plantard to m4f code
Browse files Browse the repository at this point in the history
  • Loading branch information
dop-amin committed Apr 9, 2024
1 parent a3e34fd commit 87adbfe
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 173 deletions.
1 change: 0 additions & 1 deletion crypto_sign/dilithium2/m4fstack/smallntt.S

This file was deleted.

1 change: 1 addition & 0 deletions crypto_sign/dilithium2/m4fstack/smallntt_769.S
158 changes: 0 additions & 158 deletions crypto_sign/dilithium3/m4fstack/macros_fnt.i

This file was deleted.

24 changes: 19 additions & 5 deletions crypto_sign/dilithium3/m4fstack/macros_smallntt.i
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
/*
* NTT and inverse NTT code from:
* Huang, J. et al. 2024. Revisiting Keccak and Dilithium Implementations on ARMv7-M.
* IACR Transactions on Cryptographic Hardware and Embedded Systems. 2024, 2 (Mar. 2024), 1–24.
* DOI:https://doi.org/10.46586/tches.v2024.i2.1-24.
* https://github.com/UIC-ESLAS/Dilithium-Multi-Moduli/blob/332a32cc02d407020e48a4f9b3a0dc78d4c8b0bc/M4/crypto_sign/dilithium3/m4plant/smallntt_769.S
* Copyright (c) 2023 Junhao Huang ([email protected])
*
* Licensed under the Apache License, Version 2.0(the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* NTT and inverse NTT code from:
* Huang, J. et al. 2024. Revisiting Keccak and Dilithium Implementations on ARMv7-M.
* IACR Transactions on Cryptographic Hardware and Embedded Systems. 2024, 2 (Mar. 2024), 1–24.
* DOI:https://doi.org/10.46586/tches.v2024.i2.1-24.
* https://github.com/UIC-ESLAS/Dilithium-Multi-Moduli/blob/332a32cc02d407020e48a4f9b3a0dc78d4c8b0bc/M4/crypto_sign/dilithium3/m4plant/smallntt_769.S
*/

#ifndef MACROS_SMALLNTT_I
Expand Down
23 changes: 20 additions & 3 deletions crypto_sign/dilithium3/m4fstack/smallntt.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
/**
* Copyright (c) 2023 Junhao Huang ([email protected])
*
* Licensed under the Apache License, Version 2.0(the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef SMALLNTT_H
#define SMALLNTT_H

#include <stdint.h>
#include "params.h"

#define SMALL_Q 769

static const int32_t zetas_769[64] = {
3138844760, 1334846793, 999738812, 1854264165, 1681125041, 1150537404, 2820492178, 3071823164, 726067294, 2066499220, 3272887953, 1055590142, 4255871365, 1871019564, 2731130050, 1826338500, 513832239, 1792827701, 3373420347, 2993631302, 1161707670, 3306398751, 3518633806, 3406931146, 1586177780, 3853741788, 3317569017, 3825816122, 971813147, 122872927, 217820188, 619949766, 3753209393, 770748358, 4099487641, 765163225, 3630336467, 1742561504, 3479537875, 982983413, 2809321912, 2379266669, 703726762, 681386230, 4110657907, 1457719720, 1217559000, 2474213930, 1195218468, 1089100940, 564098436, 614364633, 3635921600, 2088839752, 3702943196, 1949211426, 2569161192, 374203913, 3982199847, 2083254619, 1513571050, 3647091866, 413299844, 4149753838};

Expand All @@ -16,13 +34,12 @@ static const int32_t zetas_inv_asm_769[256] = {
// removed first "2285" + LAYER 3+2+1 - 1 - butterfly
5585134, -346278248, 5585134, -966228013, -346278248, -223405321, 636705165, 446810642, 1519156183, 11170266, -821014555, -1932456027, 301597183, -692556495, -240160720, 1061175275, -1368357591, -519417371, -335107981, 2139105948, -698141628, -625534899, -1267825197, 843355087, 290426917, 128458060, 1295750862, -748407825, -826599688, 1736976371, -240160720, 2005062756, 1061175275, 1100271206, -1368357591, 502661972, 915961816, 1396283256, 452395775, -1038834743, -955057747, -670215963, 2016233022, -16755399, -1675539907, 1614103444, -1290165729, 94947261, 753992958, -1591762912, 497076839, -1954796559, 1943626293, -1122611738, -1239899531, 938302348, -245745853, 882451018, -435640376, -966228013, 1736976371, -318352582, -240160720, -1401868389, 2005062756, 1016494210, 714897027, -1005323944, 876865885, 2122350549, -1373942724, -2094424884, 1468889985, 1558252114, -1401868389, -686971362, -357448514, 860110486, 1524741316, -1787242568, -44681064, 1407453522, -368618780, 1323676527, -653460564, -1362772458, 1379527857, -463566041, 1859849297, 150798592, -1675539907, 804259156, 1614103444, -67021596, -1290165729, -139628326, -2060914086, -994153678, 55851330, 189894523, -1072345541, 1507985917, 832184821, 1111441472, 2105595150, -525002504, -1809583100, 212235055, 1938041160, -273671518, 100532394, -2044158687, -78191862, 1452134586, 642290298, -2111180283, 552928169, 161968858, -1167292802, -346278248, -966228013, -223405321, 1736976371, 150798592, -318352582, -759578091, -1608518311, -2032988421, -899206417, -480321440, 943887481, 1491230518, -83776995, -284841784, 2005062756, 1100271206, 502661972, 1669954774, -1139367137, -457980908, 1921285760, 1128196871, -1318091394, -1904530361, 396544445, -1228729265, 117287794, 2116765416, 1184048201, -318352582, -1401868389, 1016494210, -686971362, -1413038655, -357448514, 1709050706, -731652426, 89362128, 2021818155, 1720220972, -1882189829, -1245484665, -798674023, 720482160, 804259156, -67021596, -139628326, -536172770, -1731391238, -1117026605, -27925665, -1843093898, -1971551958, 1027664477, 1776072302, -1692295306, 1977137091, 709311894, 1552666981, -223405321, 150798592, -759578091, -1675539907, 2105595150, 804259156, -1697880440, -675801096, 279256651, 949472614, -1066760408, -1050005009, -134043193, 1262240064, 1714635839, 1016494210, -1413038655, 1709050706, 1206388733, 1748146637, -1781657435, -1010909077, -390959312, -1329261660, -1083515807, -1965966825, -1530326449, 809844289, -1541496715, 1630858843, -759578091, 2105595150, -1697880440, -525002504, 631120032, -1809583100, -474736307, -1575007513, -201064789, 1893360095, 424470110, -1133782004, -418884977, -1424208921, -547343036, -1697880440, 631120032, -474736307, 1580592646, 1435379187, 787503756, 1200803600, 1999477623, -932717215, 1982722224, -1848679031, 586438968, 1993892490, 1625273710, -1346017059, 0};


#define SMALL_Q 769

// Q1=769
void small_ntt_asm_769(int16_t a[N], const int32_t * zetas);
void small_invntt_asm_769(int16_t a[N], const int32_t * zetas);
void small_basemul_asm_769(int16_t *c, const int16_t *a, const int16_t *b, const int32_t *zetas);

// small NTT for computing cs0 and cs1
#define small_ntt(a) small_ntt_asm_769(a, zetas_asm_769)
#define small_invntt_tomont(a) small_invntt_asm_769(a, zetas_inv_asm_769)
#define small_basemul(r,a,b) small_basemul_asm_769(r, a, b, zetas_769)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
/*
* NTT and inverse NTT code from:
* Huang, J. et al. 2024. Revisiting Keccak and Dilithium Implementations on ARMv7-M.
* IACR Transactions on Cryptographic Hardware and Embedded Systems. 2024, 2 (Mar. 2024), 1–24.
* DOI:https://doi.org/10.46586/tches.v2024.i2.1-24.
* https://github.com/UIC-ESLAS/Dilithium-Multi-Moduli/blob/332a32cc02d407020e48a4f9b3a0dc78d4c8b0bc/M4/crypto_sign/dilithium3/m4plant/smallntt_769.S
* Copyright (c) 2023 Junhao Huang ([email protected])
*
* Licensed under the Apache License, Version 2.0(the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* NTT and inverse NTT code from:
* Huang, J. et al. 2024. Revisiting Keccak and Dilithium Implementations on ARMv7-M.
* IACR Transactions on Cryptographic Hardware and Embedded Systems. 2024, 2 (Mar. 2024), 1–24.
* DOI:https://doi.org/10.46586/tches.v2024.i2.1-24.
* https://github.com/UIC-ESLAS/Dilithium-Multi-Moduli/blob/332a32cc02d407020e48a4f9b3a0dc78d4c8b0bc/M4/crypto_sign/dilithium3/m4plant/smallntt_769.S
*/

#include "macros.i"
Expand Down
1 change: 0 additions & 1 deletion crypto_sign/dilithium5/m4fstack/smallntt.S

This file was deleted.

1 change: 1 addition & 0 deletions crypto_sign/dilithium5/m4fstack/smallntt_769.S

0 comments on commit 87adbfe

Please sign in to comment.