mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 14:48:47 +00:00
core/crypto/_fiat: odinfmt (NFC)
This commit is contained in:
@@ -3,11 +3,15 @@ package field_curve25519
|
|||||||
import "core:crypto"
|
import "core:crypto"
|
||||||
import "core:mem"
|
import "core:mem"
|
||||||
|
|
||||||
fe_relax_cast :: #force_inline proc "contextless" (arg1: ^Tight_Field_Element) -> ^Loose_Field_Element {
|
fe_relax_cast :: #force_inline proc "contextless" (
|
||||||
|
arg1: ^Tight_Field_Element,
|
||||||
|
) -> ^Loose_Field_Element {
|
||||||
return transmute(^Loose_Field_Element)(arg1)
|
return transmute(^Loose_Field_Element)(arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
fe_tighten_cast :: #force_inline proc "contextless" (arg1: ^Loose_Field_Element) -> ^Tight_Field_Element {
|
fe_tighten_cast :: #force_inline proc "contextless" (
|
||||||
|
arg1: ^Loose_Field_Element,
|
||||||
|
) -> ^Tight_Field_Element {
|
||||||
return transmute(^Tight_Field_Element)(arg1)
|
return transmute(^Tight_Field_Element)(arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,13 @@ SQRT_M1 := Tight_Field_Element{
|
|||||||
765476049583133,
|
765476049583133,
|
||||||
}
|
}
|
||||||
|
|
||||||
_addcarryx_u51 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_addcarryx_u51 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((u64(arg1) + arg2) + arg3)
|
x1 := ((u64(arg1) + arg2) + arg3)
|
||||||
x2 := (x1 & 0x7ffffffffffff)
|
x2 := (x1 & 0x7ffffffffffff)
|
||||||
x3 := fiat.u1((x1 >> 51))
|
x3 := fiat.u1((x1 >> 51))
|
||||||
@@ -59,7 +65,13 @@ _addcarryx_u51 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_subborrowx_u51 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_subborrowx_u51 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
||||||
x2 := fiat.i1((x1 >> 51))
|
x2 := fiat.i1((x1 >> 51))
|
||||||
x3 := (u64(x1) & 0x7ffffffffffff)
|
x3 := (u64(x1) & 0x7ffffffffffff)
|
||||||
@@ -304,7 +316,10 @@ fe_opp :: proc "contextless" (out1: ^Loose_Field_Element, arg1: ^Tight_Field_Ele
|
|||||||
}
|
}
|
||||||
|
|
||||||
@(optimization_mode = "none")
|
@(optimization_mode = "none")
|
||||||
fe_cond_assign :: #force_no_inline proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: int) {
|
fe_cond_assign :: #force_no_inline proc "contextless" (
|
||||||
|
out1, arg1: ^Tight_Field_Element,
|
||||||
|
arg2: int,
|
||||||
|
) {
|
||||||
x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0])
|
x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0])
|
||||||
x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1])
|
x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1])
|
||||||
x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2])
|
x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2])
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ package field_poly1305
|
|||||||
import "core:encoding/endian"
|
import "core:encoding/endian"
|
||||||
import "core:mem"
|
import "core:mem"
|
||||||
|
|
||||||
fe_relax_cast :: #force_inline proc "contextless" (arg1: ^Tight_Field_Element) -> ^Loose_Field_Element {
|
fe_relax_cast :: #force_inline proc "contextless" (
|
||||||
|
arg1: ^Tight_Field_Element,
|
||||||
|
) -> ^Loose_Field_Element {
|
||||||
return transmute(^Loose_Field_Element)(arg1)
|
return transmute(^Loose_Field_Element)(arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
fe_tighten_cast :: #force_inline proc "contextless" (arg1: ^Loose_Field_Element) -> ^Tight_Field_Element {
|
fe_tighten_cast :: #force_inline proc "contextless" (
|
||||||
|
arg1: ^Loose_Field_Element,
|
||||||
|
) -> ^Tight_Field_Element {
|
||||||
return transmute(^Tight_Field_Element)(arg1)
|
return transmute(^Tight_Field_Element)(arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,7 +72,10 @@ fe_set :: #force_inline proc "contextless" (out1, arg1: ^Tight_Field_Element) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@(optimization_mode = "none")
|
@(optimization_mode = "none")
|
||||||
fe_cond_swap :: #force_no_inline proc "contextless" (out1, out2: ^Tight_Field_Element, arg1: bool) {
|
fe_cond_swap :: #force_no_inline proc "contextless" (
|
||||||
|
out1, out2: ^Tight_Field_Element,
|
||||||
|
arg1: bool,
|
||||||
|
) {
|
||||||
mask := -u64(arg1)
|
mask := -u64(arg1)
|
||||||
x := (out1[0] ~ out2[0]) & mask
|
x := (out1[0] ~ out2[0]) & mask
|
||||||
x1, y1 := out1[0] ~ x, out2[0] ~ x
|
x1, y1 := out1[0] ~ x, out2[0] ~ x
|
||||||
|
|||||||
@@ -39,7 +39,13 @@ import "core:math/bits"
|
|||||||
Loose_Field_Element :: distinct [3]u64
|
Loose_Field_Element :: distinct [3]u64
|
||||||
Tight_Field_Element :: distinct [3]u64
|
Tight_Field_Element :: distinct [3]u64
|
||||||
|
|
||||||
_addcarryx_u44 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_addcarryx_u44 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((u64(arg1) + arg2) + arg3)
|
x1 := ((u64(arg1) + arg2) + arg3)
|
||||||
x2 := (x1 & 0xfffffffffff)
|
x2 := (x1 & 0xfffffffffff)
|
||||||
x3 := fiat.u1((x1 >> 44))
|
x3 := fiat.u1((x1 >> 44))
|
||||||
@@ -48,7 +54,13 @@ _addcarryx_u44 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_subborrowx_u44 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_subborrowx_u44 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
||||||
x2 := fiat.i1((x1 >> 44))
|
x2 := fiat.i1((x1 >> 44))
|
||||||
x3 := (u64(x1) & 0xfffffffffff)
|
x3 := (u64(x1) & 0xfffffffffff)
|
||||||
@@ -57,7 +69,13 @@ _subborrowx_u44 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3:
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_addcarryx_u43 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_addcarryx_u43 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((u64(arg1) + arg2) + arg3)
|
x1 := ((u64(arg1) + arg2) + arg3)
|
||||||
x2 := (x1 & 0x7ffffffffff)
|
x2 := (x1 & 0x7ffffffffff)
|
||||||
x3 := fiat.u1((x1 >> 43))
|
x3 := fiat.u1((x1 >> 43))
|
||||||
@@ -66,7 +84,13 @@ _addcarryx_u43 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_subborrowx_u43 :: #force_inline proc "contextless" (arg1: fiat.u1, arg2, arg3: u64) -> (out1: u64, out2: fiat.u1) {
|
_subborrowx_u43 :: #force_inline proc "contextless" (
|
||||||
|
arg1: fiat.u1,
|
||||||
|
arg2, arg3: u64,
|
||||||
|
) -> (
|
||||||
|
out1: u64,
|
||||||
|
out2: fiat.u1,
|
||||||
|
) {
|
||||||
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
x1 := ((i64(arg2) - i64(arg1)) - i64(arg3))
|
||||||
x2 := fiat.i1((x1 >> 43))
|
x2 := fiat.i1((x1 >> 43))
|
||||||
x3 := (u64(x1) & 0x7ffffffffff)
|
x3 := (u64(x1) & 0x7ffffffffff)
|
||||||
@@ -202,7 +226,10 @@ fe_opp :: proc "contextless" (out1: ^Loose_Field_Element, arg1: ^Tight_Field_Ele
|
|||||||
}
|
}
|
||||||
|
|
||||||
@(optimization_mode = "none")
|
@(optimization_mode = "none")
|
||||||
fe_cond_assign :: #force_no_inline proc "contextless" (out1, arg1: ^Tight_Field_Element, arg2: bool) {
|
fe_cond_assign :: #force_no_inline proc "contextless" (
|
||||||
|
out1, arg1: ^Tight_Field_Element,
|
||||||
|
arg2: bool,
|
||||||
|
) {
|
||||||
x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0])
|
x1 := fiat.cmovznz_u64(fiat.u1(arg2), out1[0], arg1[0])
|
||||||
x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1])
|
x2 := fiat.cmovznz_u64(fiat.u1(arg2), out1[1], arg1[1])
|
||||||
x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2])
|
x3 := fiat.cmovznz_u64(fiat.u1(arg2), out1[2], arg1[2])
|
||||||
|
|||||||
Reference in New Issue
Block a user