curve25519-voi icon indicating copy to clipboard operation
curve25519-voi copied to clipboard

Platform support

Open Yawning opened this issue 2 years ago • 0 comments

This serves as a tracking issue to document which targets1 are supported, along with ancillary information.

GOARCH Supported Backend Notes
amd64 :heavy_check_mark: 64-bit + asm Main development platform
arm64 :heavy_check_mark: 64-bit
ppc64 :heavy_check_mark: 64-bit
ppc64le :heavy_check_mark: 64-bit
s390x :heavy_check_mark: 64-bit
386 :heavy_check_mark: 32-bit
arm :heavy_check_mark: 32-bit
mips :heavy_check_mark: 32-bit
mipsle :heavy_check_mark: 32-bit
mips64 :heavy_check_mark: 32-bit bits.Add64/bits.Mul64 are slow
mips64le :heavy_check_mark: 32-bit bits.Add64/bits.Mul64 are slow
riscv64 :heavy_check_mark: 32-bit bits.Add64 is slow in released versions2
loong64 :heavy_check_mark: 32-bit bits.Add64/bits.Mul64 are slow
wasm :heavy_check_mark: 32-bit WebAssembly does not guarantee constant time integer operations

It may be the case that certain 64-bit platforms that currently use the 32-bit code path will perform better with the 64-bit code path, despite the lack of compiler optimization for the relevant math/bits intrinsics. As I do not have access to the various targets, benchmark results showing this will be welcome.

WASM is supported now due to the growing popularity of the target, however WebAssembly3 does not mandate nor guarantee instruction timings. The standard techniques used to mitigate timing side-channels work under the assumption that certain things are constant-time with regards to the inputs, which may not be true.

Yawning avatar Mar 27 '22 09:03 Yawning