# Supersingular Isogeny Key Encapsulation ``go-sike`` is a Golang implementation of [SIKE](http://sike.org) - isogeny-based key encryption mechanism. SIKE is a candidate for [standarization](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography) by NIST as quantum-safe key exchange algorithm. ## Implementation This code guarantees correctness of implementation and portability. It is fully compatible with version 3.2 of an algorithm. Implementation currently contains 2 finite fields implementations, namely ``p434`` and ``p503``. ## Speed - for reference ### P503 ``` > go test -run=. -bench=. -benchmem goos: linux goarch: amd64 pkg: github.com/henrydcase/go-sike-p503/p503 BenchmarkKeygen-4 100 10448291 ns/op 0 B/op 0 allocs/op BenchmarkEncaps-4 100 17250470 ns/op 1344 B/op 3 allocs/op BenchmarkDecaps-4 100 18755075 ns/op 1358 B/op 3 allocs/op PASS ok github.com/henrydcase/go-sike-p503/p503 12.676s ``` ### P434 ``` > go test -run=. -bench=. -benchmem goos: linux goarch: amd64 pkg: github.com/henrydcase/go-sike-p503/p434 BenchmarkKeygen-4 200 7298860 ns/op 0 B/op 0 allocs/op BenchmarkEncaps-4 100 12008715 ns/op 1344 B/op 3 allocs/op BenchmarkDecaps-4 100 12950648 ns/op 1358 B/op 3 allocs/op PASS ok github.com/henrydcase/go-sike-p503/p434 9.880s ``` ### p434 vs p503 ``` benchmark old ns/op new ns/op delta BenchmarkKeygen-4 10552847 7471517 -29.20% BenchmarkEncaps-4 17375489 11897130 -31.53% BenchmarkDecaps-4 18927683 12991795 -31.36% benchmark old allocs new allocs delta BenchmarkKeygen-4 0 0 +0.00% BenchmarkEncaps-4 3 3 +0.00% BenchmarkDecaps-4 3 3 +0.00% benchmark old bytes new bytes delta BenchmarkKeygen-4 0 0 +0.00% BenchmarkEncaps-4 1344 1344 +0.00% BenchmarkDecaps-4 1358 1358 +0.00% ```