Skip to content

Commit

Permalink
Update schemes (#58)
Browse files Browse the repository at this point in the history
* Update schemes

* Only render info about insecure impls if we have them

* Fix build~

* Update changelog

[skip ci]

* Small clippy fix

* Fix examples

* update rust edition
  • Loading branch information
thomwiggers committed Oct 16, 2023
1 parent 2c2469d commit 8bbf10d
Show file tree
Hide file tree
Showing 92 changed files with 1,751 additions and 22,818 deletions.
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 2023-10-16

* Update Kyber to draft FIPS standard
* Remove 90s variants
* Update Dilithium to draft FIPS standard
* Remove 90s variants
* Update McEliece implementation
* Remove Vec variants
* Bring SPHINCS+ to closer to FIPS variants by removing -robust and Haraka variants
* Small fix in Falcon
* Add Falcon NEON implementation
* Update Rust edition to 2021

## 2023-04-26

* Update Rust dependencies
* Update SPHINCS+ implementation
* Update Falcon implementation
Expand Down
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ members=[
"pqcrypto-dilithium",
"pqcrypto-falcon",
"pqcrypto-sphincsplus",
]
]
resolver="2"
3 changes: 3 additions & 0 deletions generate-implementations.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ def generate_pqcrypto_crate(implementations):
target_dir = 'pqcrypto'
shutil.rmtree(target_dir)
os.makedirs(os.path.join(target_dir, 'src'))
any_insecure = any(kem.get('insecure') for (_name, kem) in implementations['kems'].items())
any_insecure |= any(sig.get('insecure') for (_name, sig) in implementations['signs'].items())

render_template(
target_dir, 'Cargo.toml', "pqcrypto/Cargo.toml.j2",
Expand All @@ -152,6 +154,7 @@ def generate_pqcrypto_crate(implementations):
target_dir, 'README.md', 'pqcrypto/README.md.j2',
kems=implementations['kems'],
signs=implementations['signs'],
any_insecure=any_insecure,
)
shutil.copytree(
"pqcrypto-template/pqcrypto/examples",
Expand Down
108 changes: 24 additions & 84 deletions implementations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,61 +15,55 @@ kems:
implementations: [clean, avx2, aarch64]
- name: kyber1024
implementations: [clean, avx2, aarch64]
- name: kyber512-90s
implementations: [clean, avx2]
- name: kyber768-90s
implementations: [clean, avx2]
- name: kyber1024-90s
implementations: [clean, avx2]
classicmceliece:
version: 0.1.8
version: 0.2.0
notes: |
This implementation requires a lot of stack space.
You need to specify ``RUST_MIN_STACK=800000000``, probably.
x86_avx2_guard: 'target_arch == "x86_64" && avx2_enabled && !is_windows'
implementations: [vec, clean, avx]
implementations: [clean, avx2]
schemes:
- name: mceliece348864
implementations: [vec, clean, avx]
implementations: [clean, avx2]
- name: mceliece348864f
implementations: [vec, clean, avx]
implementations: [clean, avx2]
- name: mceliece460896
implementations: [vec, clean, avx]
implementations: [clean, avx2]
- name: mceliece460896f
implementations: [vec, clean, avx]
implementations: [clean, avx2]
- name: mceliece6688128
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
- name: mceliece6688128f
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
- name: mceliece6960119
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
- name: mceliece6960119f
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
- name: mceliece8192128
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
- name: mceliece8192128f
implementations: [vec, clean, avx]
implementations: [clean, avx2]
doctest: no
hqc:
version: 0.1.7
version: 0.2.0
implementations: [clean]
schemes:
- name: hqc-rmrs-128
implementations: [clean] # avx2 is excluded
- name: hqc-rmrs-192
implementations: [clean] # avx2 is excluded
- name: hqc-rmrs-256
implementations: [clean] # avx2 is excluded
- name: hqc-128
implementations: [clean]
- name: hqc-192
implementations: [clean]
- name: hqc-256
implementations: [clean]


signs:
dilithium:
version: 0.4.7
version: 0.5.0
x86_avx2_guard: 'target_arch == "x86_64" && avx2_enabled && !is_windows'
implementations: [clean, avx2, aarch64]
schemes:
Expand All @@ -79,94 +73,40 @@ signs:
implementations: [clean, avx2, aarch64]
- name: dilithium5
implementations: [clean, avx2, aarch64]
- name: dilithium2aes
implementations: [clean, avx2]
- name: dilithium3aes
implementations: [clean, avx2]
- name: dilithium5aes
implementations: [clean, avx2]
falcon:
version: 0.3.0
implementations: [clean, avx2]
implementations: [clean, avx2, aarch64]
schemes:
- name: falcon-512
implementations: [clean, avx2]
implementations: [clean, avx2, aarch64]
- name: falcon-1024
implementations: [clean, avx2]
implementations: [clean, avx2, aarch64]
sphincsplus:
version: 0.7.0
implementations: [clean, aesni, avx2]
implementations: [clean, avx2]
schemes:
- name: sphincs-haraka-128f-robust
implementations: [clean, aesni]
- name: sphincs-haraka-128f-simple
implementations: [clean, aesni]
- name: sphincs-haraka-128s-robust
implementations: [clean, aesni]
- name: sphincs-haraka-128s-simple
implementations: [clean, aesni]
- name: sphincs-haraka-192f-robust
implementations: [clean, aesni]
- name: sphincs-haraka-192f-simple
implementations: [clean, aesni]
- name: sphincs-haraka-192s-robust
implementations: [clean, aesni]
- name: sphincs-haraka-192s-simple
implementations: [clean, aesni]
- name: sphincs-haraka-256f-robust
implementations: [clean, aesni]
- name: sphincs-haraka-256f-simple
implementations: [clean, aesni]
- name: sphincs-haraka-256s-robust
implementations: [clean, aesni]
- name: sphincs-haraka-256s-simple
implementations: [clean, aesni]
- name: sphincs-shake-128f-robust
implementations: [clean, avx2]
- name: sphincs-shake-128f-simple
implementations: [clean, avx2]
- name: sphincs-shake-128s-robust
implementations: [clean, avx2]
- name: sphincs-shake-128s-simple
implementations: [clean, avx2]
- name: sphincs-shake-192f-robust
implementations: [clean, avx2]
- name: sphincs-shake-192f-simple
implementations: [clean, avx2]
- name: sphincs-shake-192s-robust
implementations: [clean, avx2]
- name: sphincs-shake-192s-simple
implementations: [clean, avx2]
- name: sphincs-shake-256f-robust
implementations: [clean, avx2]
- name: sphincs-shake-256f-simple
implementations: [clean, avx2]
- name: sphincs-shake-256s-robust
implementations: [clean, avx2]
- name: sphincs-shake-256s-simple
implementations: [clean, avx2]
- name: sphincs-sha2-128f-robust
implementations: [clean, avx2]
- name: sphincs-sha2-128f-simple
implementations: [clean, avx2]
- name: sphincs-sha2-128s-robust
implementations: [clean, avx2]
- name: sphincs-sha2-128s-simple
implementations: [clean, avx2]
- name: sphincs-sha2-192f-robust
implementations: [clean, avx2]
- name: sphincs-sha2-192f-simple
implementations: [clean, avx2]
- name: sphincs-sha2-192s-robust
implementations: [clean, avx2]
- name: sphincs-sha2-192s-simple
implementations: [clean, avx2]
- name: sphincs-sha2-256f-robust
implementations: [clean, avx2]
- name: sphincs-sha2-256f-simple
implementations: [clean, avx2]
- name: sphincs-sha2-256s-robust
implementations: [clean, avx2]
- name: sphincs-sha2-256s-simple
implementations: [clean, avx2]

Expand Down
2 changes: 1 addition & 1 deletion pqclean
Submodule pqclean updated 5761 files
4 changes: 2 additions & 2 deletions pqcrypto-classicmceliece/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
name = "pqcrypto-classicmceliece"
description = "Post-Quantum Key-Encapsulation Mechanism classicmceliece"
readme = "README.md"
version = "0.1.8"
version = "0.2.0"
authors = ["Thom Wiggers <thom@thomwiggers.nl>"]
edition = "2018"
edition = "2021"
license = "MIT OR Apache-2.0"
homepage = "https://github.com/rustpq/"
repository = "https://github.com/rustpq/pqcrypto/"
Expand Down
30 changes: 10 additions & 20 deletions pqcrypto-classicmceliece/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,45 +20,35 @@ Rust-friendly interface, alternative implementations are exposed as ``ffi``
methods only.

* ``mceliece348864``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece348864f``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece460896``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece460896f``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece6688128``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece6688128f``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece6960119``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece6960119f``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece8192128``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)
* ``mceliece8192128f``
* ``vec``
* ``clean``
* ``avx`` (if supported)
* ``avx2`` (if supported)

## Notes

Expand Down
Loading

0 comments on commit 8bbf10d

Please sign in to comment.