contracts/src/crypto/ holds EcdhMask, ElGamal and Ecdsa flat at the root, while crypto/hash/ and crypto/curves/bls12_381/ (#913) are grouped, and the Ecdh split in #866 adds a fourth root module. Nothing in the tree says which module is an encryption scheme, a signature scheme or a key agreement, and the ECIES-shaped EcdhMask sits next to a signature.
Group the modules by scheme, as SEC 1 does: crypto/encryption/ (§5, EcdhMask, ElGamal), crypto/signature/ (§4, Ecdsa), crypto/key_agreement/ (§6, Ecdh), each with its test/ beside it like crypto/hash/. Import paths change; circuits and artifacts do not.
contracts/src/crypto/holdsEcdhMask,ElGamalandEcdsaflat at the root, whilecrypto/hash/andcrypto/curves/bls12_381/(#913) are grouped, and theEcdhsplit in #866 adds a fourth root module. Nothing in the tree says which module is an encryption scheme, a signature scheme or a key agreement, and the ECIES-shapedEcdhMasksits next to a signature.Group the modules by scheme, as SEC 1 does:
crypto/encryption/(§5,EcdhMask,ElGamal),crypto/signature/(§4,Ecdsa),crypto/key_agreement/(§6,Ecdh), each with itstest/beside it likecrypto/hash/. Import paths change; circuits and artifacts do not.