Source File
curve25519_generic.go
Belonging Package
golang.org/x/crypto/curve25519
package curve25519
import
type fieldElement [10]int32
func ( *fieldElement) {
for := range {
[] = 0
}
}
func ( *fieldElement) {
feZero()
[0] = 1
}
func (, , *fieldElement) {
for := range {
[] = [] + []
}
}
func (, , *fieldElement) {
for := range {
[] = [] - []
}
}
func (, *fieldElement) {
for := range {
[] = []
}
}
func (, *fieldElement, int32) {
= -
for := range {
:= & ([] ^ [])
[] ^=
[] ^=
}
}
func ( []byte) int64 {
return int64(binary.LittleEndian.Uint32())
}
func ( *fieldElement, *[32]byte) {
:= load4([:])
:= load3([4:]) << 6
:= load3([7:]) << 5
:= load3([10:]) << 3
:= load3([13:]) << 2
:= load4([16:])
:= load3([20:]) << 7
:= load3([23:]) << 5
:= load3([26:]) << 4
:= (load3([29:]) & 0x7fffff) << 2
var [10]int64
[9] = ( + 1<<24) >> 25
+= [9] * 19
-= [9] << 25
[1] = ( + 1<<24) >> 25
+= [1]
-= [1] << 25
[3] = ( + 1<<24) >> 25
+= [3]
-= [3] << 25
[5] = ( + 1<<24) >> 25
+= [5]
-= [5] << 25
[7] = ( + 1<<24) >> 25
+= [7]
-= [7] << 25
[0] = ( + 1<<25) >> 26
+= [0]
-= [0] << 26
[2] = ( + 1<<25) >> 26
+= [2]
-= [2] << 26
[4] = ( + 1<<25) >> 26
+= [4]
-= [4] << 26
[6] = ( + 1<<25) >> 26
+= [6]
-= [6] << 26
[8] = ( + 1<<25) >> 26
+= [8]
-= [8] << 26
[0] = int32()
[1] = int32()
[2] = int32()
[3] = int32()
[4] = int32()
[5] = int32()
[6] = int32()
[7] = int32()
[8] = int32()
[9] = int32()
}
func ( *[32]byte, *fieldElement) {
var [10]int32
:= (19*[9] + (1 << 24)) >> 25
= ([0] + ) >> 26
= ([1] + ) >> 25
= ([2] + ) >> 26
= ([3] + ) >> 25
= ([4] + ) >> 26
= ([5] + ) >> 25
= ([6] + ) >> 26
= ([7] + ) >> 25
= ([8] + ) >> 26
= ([9] + ) >> 25
[0] = [0] >> 26
[1] += [0]
[0] -= [0] << 26
[1] = [1] >> 25
[2] += [1]
[1] -= [1] << 25
[2] = [2] >> 26
[3] += [2]
[2] -= [2] << 26
[3] = [3] >> 25
[4] += [3]
[3] -= [3] << 25
[4] = [4] >> 26
[5] += [4]
[4] -= [4] << 26
[5] = [5] >> 25
[6] += [5]
[5] -= [5] << 25
[6] = [6] >> 26
[7] += [6]
[6] -= [6] << 26
[7] = [7] >> 25
[8] += [7]
[7] -= [7] << 25
[8] = [8] >> 26
[9] += [8]
[8] -= [8] << 26
[9] = [9] >> 25
[0] = byte([0] >> 0)
[1] = byte([0] >> 8)
[2] = byte([0] >> 16)
[3] = byte(([0] >> 24) | ([1] << 2))
[4] = byte([1] >> 6)
[5] = byte([1] >> 14)
[6] = byte(([1] >> 22) | ([2] << 3))
[7] = byte([2] >> 5)
[8] = byte([2] >> 13)
[9] = byte(([2] >> 21) | ([3] << 5))
[10] = byte([3] >> 3)
[11] = byte([3] >> 11)
[12] = byte(([3] >> 19) | ([4] << 6))
[13] = byte([4] >> 2)
[14] = byte([4] >> 10)
[15] = byte([4] >> 18)
[16] = byte([5] >> 0)
[17] = byte([5] >> 8)
[18] = byte([5] >> 16)
[19] = byte(([5] >> 24) | ([6] << 1))
[20] = byte([6] >> 7)
[21] = byte([6] >> 15)
[22] = byte(([6] >> 23) | ([7] << 3))
[23] = byte([7] >> 5)
[24] = byte([7] >> 13)
[25] = byte(([7] >> 21) | ([8] << 4))
[26] = byte([8] >> 4)
[27] = byte([8] >> 12)
[28] = byte(([8] >> 20) | ([9] << 6))
[29] = byte([9] >> 2)
[30] = byte([9] >> 10)
[31] = byte([9] >> 18)
}
func (, , *fieldElement) {
:= [0]
:= [1]
:= [2]
:= [3]
:= [4]
:= [5]
:= [6]
:= [7]
:= [8]
:= [9]
:= [0]
:= [1]
:= [2]
:= [3]
:= [4]
:= [5]
:= [6]
:= [7]
:= [8]
:= [9]
:= 19 * // 1.4*2^29
:= 19 * // 1.4*2^30; still ok
:= 19 *
:= 19 *
:= 19 *
:= 19 *
:= 19 *
:= 19 *
:= 19 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
:= + + + + + + + + +
var [10]int64
[0] = ( + (1 << 25)) >> 26
+= [0]
-= [0] << 26
[4] = ( + (1 << 25)) >> 26
+= [4]
[1] = ( + (1 << 24)) >> 25
+= [1]
-= [1] << 25
[5] = ( + (1 << 24)) >> 25
+= [5]
[2] = ( + (1 << 25)) >> 26
+= [2]
-= [2] << 26
[6] = ( + (1 << 25)) >> 26
+= [6]
[3] = ( + (1 << 24)) >> 25
+= [3]
-= [3] << 25
[7] = ( + (1 << 24)) >> 25
+= [7]
[4] = ( + (1 << 25)) >> 26
+= [4]
-= [4] << 26
[8] = ( + (1 << 25)) >> 26
+= [8]
[9] = ( + (1 << 24)) >> 25
+= [9] * 19
[0] = ( + (1 << 25)) >> 26
+= [0]
func (, *fieldElement) {
:= [0]
:= [1]
:= [2]
:= [3]
:= [4]
:= [5]
:= [6]
:= [7]
:= [8]
:= [9]
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 2 *
:= 38 * // 1.31*2^30
:= 19 * // 1.31*2^30
:= 38 * // 1.31*2^30
:= 19 * // 1.31*2^30
:= 38 * // 1.31*2^30
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= int64() * int64()
:= + + + + +
:= + + + +
:= + + + + +
:= + + + +
:= + + + + +
:= + + + +
:= + + + + +
:= + + + +
:= + + + + +
:= + + + +
var [10]int64
[0] = ( + (1 << 25)) >> 26
+= [0]
-= [0] << 26
[4] = ( + (1 << 25)) >> 26
+= [4]
-= [4] << 26
[1] = ( + (1 << 24)) >> 25
+= [1]
-= [1] << 25
[5] = ( + (1 << 24)) >> 25
+= [5]
-= [5] << 25
[2] = ( + (1 << 25)) >> 26
+= [2]
-= [2] << 26
[6] = ( + (1 << 25)) >> 26
+= [6]
-= [6] << 26
[3] = ( + (1 << 24)) >> 25
+= [3]
-= [3] << 25
[7] = ( + (1 << 24)) >> 25
+= [7]
-= [7] << 25
[4] = ( + (1 << 25)) >> 26
+= [4]
-= [4] << 26
[8] = ( + (1 << 25)) >> 26
+= [8]
-= [8] << 26
[9] = ( + (1 << 24)) >> 25
+= [9] * 19
-= [9] << 25
[0] = ( + (1 << 25)) >> 26
+= [0]
-= [0] << 26
[0] = int32()
[1] = int32()
[2] = int32()
[3] = int32()
[4] = int32()
[5] = int32()
[6] = int32()
[7] = int32()
[8] = int32()
[9] = int32()
}
func (, *fieldElement) {
:= int64([0]) * 121666
:= int64([1]) * 121666
:= int64([2]) * 121666
:= int64([3]) * 121666
:= int64([4]) * 121666
:= int64([5]) * 121666
:= int64([6]) * 121666
:= int64([7]) * 121666
:= int64([8]) * 121666
:= int64([9]) * 121666
var [10]int64
[9] = ( + (1 << 24)) >> 25
+= [9] * 19
-= [9] << 25
[1] = ( + (1 << 24)) >> 25
+= [1]
-= [1] << 25
[3] = ( + (1 << 24)) >> 25
+= [3]
-= [3] << 25
[5] = ( + (1 << 24)) >> 25
+= [5]
-= [5] << 25
[7] = ( + (1 << 24)) >> 25
+= [7]
-= [7] << 25
[0] = ( + (1 << 25)) >> 26
+= [0]
-= [0] << 26
[2] = ( + (1 << 25)) >> 26
+= [2]
-= [2] << 26
[4] = ( + (1 << 25)) >> 26
+= [4]
-= [4] << 26
[6] = ( + (1 << 25)) >> 26
+= [6]
-= [6] << 26
[8] = ( + (1 << 25)) >> 26
+= [8]
-= [8] << 26
[0] = int32()
[1] = int32()
[2] = int32()
[3] = int32()
[4] = int32()
[5] = int32()
[6] = int32()
[7] = int32()
[8] = int32()
[9] = int32()
}
func (, *fieldElement) {
var , , , fieldElement
var int
feSquare(&, )
for = 1; < 1; ++ {
feSquare(&, &)
}
feSquare(&, &)
for = 1; < 2; ++ {
feSquare(&, &)
}
feMul(&, , &)
feMul(&, &, &)
feSquare(&, &)
for = 1; < 1; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 5; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 10; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 20; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 10; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 50; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 100; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 50; ++ {
feSquare(&, &)
}
feMul(&, &, &)
feSquare(&, &)
for = 1; < 5; ++ {
feSquare(&, &)
}
feMul(, &, &)
}
func (, , *[32]byte) {
var [32]byte
copy([:], [:])
[0] &= 248
[31] &= 127
[31] |= 64
var , , , , , , fieldElement
feFromBytes(&, )
feOne(&)
feCopy(&, &)
feOne(&)
:= int32(0)
for := 254; >= 0; -- {
:= [/8] >> uint(&7)
&= 1
^= int32()
feCSwap(&, &, )
feCSwap(&, &, )
= int32()
feSub(&, &, &)
feSub(&, &, &)
feAdd(&, &, &)
feAdd(&, &, &)
feMul(&, &, &)
feMul(&, &, &)
feSquare(&, &)
feSquare(&, &)
feAdd(&, &, &)
feSub(&, &, &)
feMul(&, &, &)
feSub(&, &, &)
feSquare(&, &)
feMul121666(&, &)
feSquare(&, &)
feAdd(&, &, &)
feMul(&, &, &)
feMul(&, &, &)
}
feCSwap(&, &, )
feCSwap(&, &, )
feInvert(&, &)
feMul(&, &, &)
feToBytes(, &)
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |