Skip to content

Commit 454239d

Browse files
committed
Format files and add further optimization
1 parent cb7d06a commit 454239d

File tree

24 files changed

+355
-450
lines changed

24 files changed

+355
-450
lines changed

kem/ntruprime/doc.go

+2
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@
55
// competition and described in
66
//
77
// https://ntruprime.cr.yp.to/nist/ntruprime-20201007.pdf
8+
//
9+
// The code is translated from the C reference implementation.
810
package ntruprime

kem/ntruprime/gen.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func generateKAT() {
131131
if offset == -1 {
132132
panic("Missing template warning in pkg.templ.go")
133133
}
134-
err = ioutil.WriteFile(mode.Pkg()+"/kat_test.go", []byte(res[offset:]), 0o644)
134+
err = ioutil.WriteFile(mode.Pkg()+"/kat_test.go", []byte(res[offset:]), 0o600)
135135
if err != nil {
136136
panic(err)
137137
}

kem/ntruprime/internal/Decode.go

+6-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package internal
22

3+
// TO DO: Optimize the Decode function
34
/* Decode(R,s,M,len) */
45
/* assumes 0 < M[i] < 16384 */
56
/* produces 0 <= R[i] < M[i] */
@@ -9,9 +10,9 @@ func Decode(out []uint16, S []uint8, M []uint16, len int) {
910
if M[0] == 1 {
1011
out[index] = 0
1112
} else if M[0] <= 256 {
12-
out[index] = Uint32_mod_uint14(uint32(S[0]), M[0])
13+
out[index] = Uint32ModUint14(uint32(S[0]), M[0])
1314
} else {
14-
out[index] = Uint32_mod_uint14(uint32(uint16(S[0])+((uint16(S[1]))<<8)), M[0])
15+
out[index] = Uint32ModUint14(uint32(uint16(S[0])+((uint16(S[1]))<<8)), M[0])
1516
}
1617
}
1718
if len > 1 {
@@ -33,7 +34,6 @@ func Decode(out []uint16, S []uint8, M []uint16, len int) {
3334
bottomr[i/2] = uint16(S[0])
3435
S = S[1:]
3536
M2[i/2] = uint16((m + 255) >> 8)
36-
3737
} else {
3838
bottomt[i/2] = 1
3939
bottomr[i/2] = 0
@@ -47,24 +47,21 @@ func Decode(out []uint16, S []uint8, M []uint16, len int) {
4747
Decode(R2, S, M2, (len+1)/2)
4848

4949
for i = 0; i < len-1; i += 2 {
50-
var r uint32 = uint32(bottomr[i/2])
50+
r := uint32(bottomr[i/2])
5151
var r1 uint32
5252
var r0 uint16
5353

5454
r += bottomt[i/2] * uint32(R2[i/2])
55-
Uint32_divmod_uint14(&r1, &r0, r, M[i])
56-
r1 = uint32(Uint32_mod_uint14(r1, M[i+1])) /* only needed for invalid inputs */
55+
Uint32DivmodUint14(&r1, &r0, r, M[i])
56+
r1 = uint32(Uint32ModUint14(r1, M[i+1])) /* only needed for invalid inputs */
5757

5858
out[index] = r0
5959
index++
6060
out[index] = uint16(r1)
6161
index++
62-
6362
}
6463
if i < len {
6564
out[index] = R2[i/2]
66-
index++
6765
}
68-
6966
}
7067
}

kem/ntruprime/internal/Divmod.go

+22-24
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ There could also be compiler issues.
1010
*/
1111
// q, r = x/m
1212
// Returns quotient and remainder
13-
func Uint32_divmod_uint14(q *uint32, r *uint16, x uint32, m uint16) {
13+
func Uint32DivmodUint14(q *uint32, r *uint16, x uint32, m uint16) {
1414
var v uint32 = 0x80000000
1515

1616
v /= uint32(m)
1717

1818
*q = 0
1919

20-
var qpart uint32 = uint32(uint64(x) * uint64(v) >> 31)
20+
qpart := uint32(uint64(x) * uint64(v) >> 31)
2121

2222
x -= qpart * uint32(m)
2323
*q += qpart
@@ -28,38 +28,37 @@ func Uint32_divmod_uint14(q *uint32, r *uint16, x uint32, m uint16) {
2828

2929
x -= uint32(m)
3030
*q += 1
31-
var mask uint32 = -(x >> 31)
31+
mask := -(x >> 31)
3232
x += mask & uint32(m)
3333
*q += mask
3434

3535
*r = uint16(x)
36-
3736
}
3837

3938
// Returns the quotient of x/m
40-
func Uint32_div_uint14(x uint32, m uint16) uint32 {
39+
func Uint32DivUint14(x uint32, m uint16) uint32 {
4140
var q uint32
4241
var r uint16
43-
Uint32_divmod_uint14(&q, &r, x, m)
42+
Uint32DivmodUint14(&q, &r, x, m)
4443
return q
4544
}
4645

4746
// Returns the remainder of x/m
48-
func Uint32_mod_uint14(x uint32, m uint16) uint16 {
47+
func Uint32ModUint14(x uint32, m uint16) uint16 {
4948
var q uint32
5049
var r uint16
51-
Uint32_divmod_uint14(&q, &r, x, m)
50+
Uint32DivmodUint14(&q, &r, x, m)
5251
return r
5352
}
5453

5554
// Calculates quotient and remainder
56-
func Int32_divmod_uint14(q *int32, r *uint16, x int32, m uint16) {
55+
func Int32DivmodUint14(q *int32, r *uint16, x int32, m uint16) {
5756
var uq, uq2 uint32
5857
var ur, ur2 uint16
5958
var mask uint32
6059

61-
Uint32_divmod_uint14(&uq, &ur, 0x80000000+uint32(x), m)
62-
Uint32_divmod_uint14(&uq2, &ur2, 0x80000000, m)
60+
Uint32DivmodUint14(&uq, &ur, 0x80000000+uint32(x), m)
61+
Uint32DivmodUint14(&uq2, &ur2, 0x80000000, m)
6362

6463
ur -= ur2
6564
uq -= uq2
@@ -71,34 +70,33 @@ func Int32_divmod_uint14(q *int32, r *uint16, x int32, m uint16) {
7170
}
7271

7372
// Returns quotient of x/m
74-
func Int32_div_uint14(x int32, m uint16) int32 {
73+
func Int32DivUint14(x int32, m uint16) int32 {
7574
var q int32
7675
var r uint16
77-
Int32_divmod_uint14(&q, &r, x, m)
76+
Int32DivmodUint14(&q, &r, x, m)
7877
return q
7978
}
8079

8180
// Returns remainder of x/m
82-
func Int32_mod_uint14(x int32, m uint16) uint16 {
81+
func Int32ModUint14(x int32, m uint16) uint16 {
8382
var q int32
8483
var r uint16
85-
Int32_divmod_uint14(&q, &r, x, m)
84+
Int32DivmodUint14(&q, &r, x, m)
8685
return r
87-
8886
}
8987

9088
// Returns -1 if x!=0; else return 0
91-
func Int16_nonzero_mask(x int16) int {
92-
var u uint16 = uint16(x) /* 0, else 1...65535 */
93-
var v uint32 = uint32(u) /* 0, else 1...65535 */
94-
v = -v /* 0, else 2^32-65535...2^32-1 */
95-
v >>= 31 /* 0, else 1 */
96-
return -int(v) /* 0, else -1 */
89+
func Int16NonzeroMask(x int16) int {
90+
u := uint16(x) /* 0, else 1...65535 */
91+
v := uint32(u) /* 0, else 1...65535 */
92+
v = -v /* 0, else 2^32-65535...2^32-1 */
93+
v >>= 31 /* 0, else 1 */
94+
return -int(v) /* 0, else -1 */
9795
}
9896

9997
// Returns -1 if x<0; otherwise return 0
100-
func Int16_negative_mask(x int16) int {
101-
var u uint16 = uint16(x)
98+
func Int16NegativeMask(x int16) int {
99+
u := uint16(x)
102100
u >>= 15
103101
return -(int)(u)
104102
}

kem/ntruprime/internal/Encode.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package internal
22

3+
// TO DO: Optimize the Encode function
34
/* 0 <= R[i] < M[i] < 16384 */
45
func Encode(out []uint8, R []uint16, M []uint16, len int) {
56
if len == 1 {
@@ -15,7 +16,7 @@ func Encode(out []uint8, R []uint16, M []uint16, len int) {
1516
if len > 1 {
1617
R2 := make([]uint16, (len+1)/2)
1718
M2 := make([]uint16, (len+1)/2)
18-
var i int = 0
19+
var i int
1920

2021
for i = 0; i < len-1; i += 2 {
2122
m0 := uint32(M[i])

kem/ntruprime/kat_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ func testPQCgenStreamlinedKATKem(t *testing.T, name, expected string, p int) {
158158
fmt.Fprintf(f, "sk = %X\n", psk)
159159
fmt.Fprintf(f, "ct = %X\n", ct)
160160
fmt.Fprintf(f, "ss = %X\n\n", ss1)
161-
162161
}
163162
if fmt.Sprintf("%x", f.Sum(nil)) != expected {
164163
t.Fatal()

kem/ntruprime/ntrulpr1013/ntruprime.go

+12-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)