docs: refine Go docs and improve naming

This commit is contained in:
Steve Moyer
2025-07-08 07:34:57 -04:00
parent af00c4ff6c
commit 83227f36a7
13 changed files with 171 additions and 102 deletions

View File

@@ -8,14 +8,19 @@ import (
"github.com/multiformats/go-multicodec"
)
// Constants containing multicodec.Code values that specify EdDSA signatures.
const (
SignAlgorithmEdDSA = SignAlgorithm(multicodec.Ed25519Pub)
SignAlgorithmEd25519 = SignAlgorithm(multicodec.Ed25519Pub)
SignAlgorithmEd448 = SignAlgorithm(multicodec.Ed448Pub)
DiscriminatorEdDSA = Discriminator(multicodec.Ed25519Pub)
DiscriminatorEd25519 = Discriminator(multicodec.Ed25519Pub)
DiscriminatorEd448 = Discriminator(multicodec.Ed448Pub)
)
// EdDSACurve are multicodec.Code values that specify which Edwards curve
// is used when generating the signature.
type EdDSACurve uint64
// Constants describing the multicodec.Code for each specific Edwards
// curve that can be encoded into a Varsig.
const (
CurveEd25519 = EdDSACurve(multicodec.Ed25519Pub)
CurveEd448 = EdDSACurve(multicodec.Ed448Pub)
@@ -23,6 +28,8 @@ const (
var _ Varsig = (*EdDSAVarsig)(nil)
// EdDSAVarsig is a varsig that encodes the parameters required to describe
// an EdDSA signature.
type EdDSAVarsig struct {
varsig[EdDSAVarsig]
@@ -30,27 +37,29 @@ type EdDSAVarsig struct {
hashAlg HashAlgorithm
}
// NewEdDSAVarsig creates and validates an EdDSA varsig with the provided
// curve, hash algorithm and payload encoding.
func NewEdDSAVarsig(curve EdDSACurve, hashAlgorithm HashAlgorithm, payloadEncoding PayloadEncoding, opts ...Option) (*EdDSAVarsig, error) {
options := newOptions(opts...)
var (
vers = Version1
signAlg = SignAlgorithmEdDSA
sig = []byte{}
vers = Version1
disc = DiscriminatorEdDSA
sig = []byte{}
)
if options.ForceVersion0() {
vers = Version0
signAlg = SignAlgorithm(curve)
disc = Discriminator(curve)
sig = options.Signature()
}
v := &EdDSAVarsig{
varsig: varsig[EdDSAVarsig]{
vers: vers,
signAlg: signAlg,
payEnc: payloadEncoding,
sig: sig,
vers: vers,
disc: disc,
payEnc: payloadEncoding,
sig: sig,
},
curve: curve,
hashAlg: hashAlgorithm,
@@ -59,14 +68,18 @@ func NewEdDSAVarsig(curve EdDSACurve, hashAlgorithm HashAlgorithm, payloadEncodi
return v.validateSig(v, ed25519.PrivateKeySize)
}
// Curve returns the Edwards curve used to generate the EdDSA signature.
func (v *EdDSAVarsig) Curve() EdDSACurve {
return v.curve
}
// HashAlgorithm returns the multicodec.Code describing the hash algorithm
// used to hash the payload content before the signature is generated.
func (v *EdDSAVarsig) HashAlgorithm() HashAlgorithm {
return v.hashAlg
}
// Encode returns the encoded byte format of the EdDSAVarsig.
func (v EdDSAVarsig) Encode() []byte {
buf := v.encode()
@@ -81,8 +94,8 @@ func (v EdDSAVarsig) Encode() []byte {
return buf
}
func decodeEd25519(r *bytes.Reader, vers Version, signAlg SignAlgorithm) (Varsig, error) {
curve := uint64(signAlg)
func decodeEd25519(r *bytes.Reader, vers Version, disc Discriminator) (Varsig, error) {
curve := uint64(disc)
if vers != Version0 {
u, err := binary.ReadUvarint(r)
@@ -100,8 +113,8 @@ func decodeEd25519(r *bytes.Reader, vers Version, signAlg SignAlgorithm) (Varsig
v := &EdDSAVarsig{
varsig: varsig[EdDSAVarsig]{
vers: vers,
signAlg: signAlg,
vers: vers,
disc: disc,
},
curve: EdDSACurve(curve),
hashAlg: HashAlgorithm(hashAlg),
@@ -109,8 +122,3 @@ func decodeEd25519(r *bytes.Reader, vers Version, signAlg SignAlgorithm) (Varsig
return v.decodePayEncAndSig(r, v, ed25519.PrivateKeySize)
}
// TODO: remove this when parseEd25519 is added to the DefaultRegistry.
func Junk() {
_, _ = decodeEd25519(nil, 0, 0)
}