return h
case SHAKE128:
return NewSHAKE128()
- case SHAKE256, SPHINCSPlusSHAKE256sNonRandom, SPHINCSPlusSHAKE256sNonRandomPh:
+ case SHAKE256, SPHINCSPlusSHAKE256s, SPHINCSPlusSHAKE256sPh:
return NewSHAKE256()
case SHAKE128Merkle:
return NewSHAKE128MerkleHasher(
merkle.DefaultChunkLen, DefaultNumCPU)
- case SHAKE256Merkle, SPHINCSPlusSHAKE256sNonRandomMerkle:
+ case SHAKE256Merkle, SPHINCSPlusSHAKE256sMerkle:
return NewSHAKE256MerkleHasher(
merkle.DefaultChunkLen, DefaultNumCPU)
}
SHAKE128Merkle = "shake128-merkle"
SHAKE256Merkle = "shake256-merkle"
- SPHINCSPlusSHAKE256sNonRandom = "sphincs+-shake-256s-nonrandom"
- SPHINCSPlusSHAKE256sNonRandomPh = "sphincs+-shake-256s-nonrandom-ph"
- SPHINCSPlusSHAKE256sNonRandomMerkle = "sphincs+-shake-256s-nonrandom-merkle"
+ SPHINCSPlusSHAKE256s = "sphincs+-shake-256s"
+ SPHINCSPlusSHAKE256sPh = "sphincs+-shake-256s-ph"
+ SPHINCSPlusSHAKE256sMerkle = "sphincs+-shake-256s-merkle"
)
type SHAKE struct {
err = ErrSigInvalid
}
case spx.SPHINCSPlusSHAKE256s:
- if algo != spx.SPHINCSPlusSHAKE256sNonRandom {
+ if algo != spx.SPHINCSPlusSHAKE256s {
return ErrBadSigAlgo
}
valid, err = spx.Verify(key.A, key.V, signed, signature)
}
case spx.SPHINCSPlusSHAKE256s:
switch algo {
- case spx.SPHINCSPlusSHAKE256sNonRandomPh:
- case spx.SPHINCSPlusSHAKE256sNonRandomMerkle:
+ case spx.SPHINCSPlusSHAKE256sPh:
+ case spx.SPHINCSPlusSHAKE256sMerkle:
default:
return ErrBadSigAlgo
}
)
const (
- SPHINCSPlusSHAKE256s = "sphincs+-shake-256s"
- SPHINCSPlusSHAKE256sNonRandom = "sphincs+-shake-256s-nonrandom"
- SPHINCSPlusSHAKE256sNonRandomPh = "sphincs+-shake-256s-nonrandom-ph"
- SPHINCSPlusSHAKE256sNonRandomMerkle = "sphincs+-shake-256s-nonrandom-merkle"
+ SPHINCSPlusSHAKE256s = "sphincs+-shake-256s"
+ SPHINCSPlusSHAKE256sPh = "sphincs+-shake-256s-ph"
+ SPHINCSPlusSHAKE256sMerkle = "sphincs+-shake-256s-merkle"
)
-var Params = spxParams.MakeSphincsPlusSHAKE256256sRobust(false)
+var Params = spxParams.MakeSphincsPlusSHAKE256256sRobust(true)
func NewKeypair(algo string) (prv, pub []byte, err error) {
sk, pk := spx.Spx_keygen(Params)
func (s *Signer) Algo() string {
switch s.mode {
case mode.Pure:
- return SPHINCSPlusSHAKE256sNonRandom
+ return SPHINCSPlusSHAKE256s
case mode.Prehash:
- return SPHINCSPlusSHAKE256sNonRandomPh
+ return SPHINCSPlusSHAKE256sPh
case mode.Merkle:
- return SPHINCSPlusSHAKE256sNonRandomMerkle
+ return SPHINCSPlusSHAKE256sMerkle
}
return ""
}
HashEdDSA mode is used with @code{ed25519ph-blake2b-merkle}
algorithm identifier for signature.
-@node cm-signed-sphincs+-shake-256s-nonrandom
-@cindex cm-signed-sphincs+-shake-256s-nonrandom
-@nodedescription cm/signed with SPHINCS+-SHAKE256-256s-robust non-random
-@subsection cm/signed with SPHINCS+-SHAKE256-256s-robust non-random
+@node cm-signed-sphincs+-shake-256s
+@cindex cm-signed-sphincs+-shake-256s
+@cindex cm-signed-sphincs+-shake-256s-ph
+@nodedescription cm/signed with SPHINCS+-SHAKE256-256s-robust
+@subsection cm/signed with SPHINCS+-SHAKE256-256s-robust
@url{https://sphincs.org/, SPHINCS+} with
@url{https://keccak.team/, SHAKE256} hash,
255-bit security level, small signatures,
robust parameters and deterministic signatures.
- @code{sphincs+-shake-256s-nonrandom} algorithm identifier
+ @code{sphincs+-shake-256s} algorithm identifier
must be used for the signature in pure signing mode.
- @code{sphincs+-shake-256s-nonrandom-ph} is used in prehash mode.
+ @code{sphincs+-shake-256s-ph} is used in prehash mode.
-@node cm-signed-sphincs+-shake-256s-nonrandom-merkle
-@cindex cm-signed-sphincs+-shake-256s-nonrandom-merkle
-@nodedescription cm-signed-sphincs+-shake-256s-nonrandom with Merkle-tree hashing
-@subsection cm-signed-sphincs+-shake-256s-nonrandom with Merkle-tree hashing
+@node cm-signed-sphincs+-shake-256s-merkle
+@cindex cm-signed-sphincs+-shake-256s-merkle
+@nodedescription cm-signed-sphincs+-shake-256s with Merkle-tree hashing
+@subsection cm-signed-sphincs+-shake-256s with Merkle-tree hashing
@ref{cm-hashed-shake-merkle, shake256-merkle} Merkle-tree hashing is used.
- @code{sphincs+-shake-256s-nonrandom-merkle} algorithm
+ @code{sphincs+-shake-256s-merkle} algorithm
identifier must be used for the signature.