diff --git a/did/doc/assertion_method.go b/did/doc/assertion_method.go index 1939de3..8c595e4 100644 --- a/did/doc/assertion_method.go +++ b/did/doc/assertion_method.go @@ -5,8 +5,8 @@ import ( "crypto/ed25519" - "github.com/bahner/go-ma/internal" "github.com/bahner/go-ma/key" + "github.com/bahner/go-ma/multi" ) func (d *Document) AssertionMethodPublicKey() (ed25519.PublicKey, error) { @@ -15,7 +15,7 @@ func (d *Document) AssertionMethodPublicKey() (ed25519.PublicKey, error) { if err != nil { return nil, ErrVerificationMethoddUnkownID } - codec, pubKeyBytes, err := internal.DecodePublicKeyMultibase(vm.PublicKeyMultibase) + codec, pubKeyBytes, err := multi.PublicKeyMultibaseDecode(vm.PublicKeyMultibase) if err != nil { return nil, ErrPublicKeyMultibaseInvalid } diff --git a/did/doc/key_agreement.go b/did/doc/key_agreement.go index e2fb502..1b2eef5 100644 --- a/did/doc/key_agreement.go +++ b/did/doc/key_agreement.go @@ -3,8 +3,8 @@ package doc import ( "fmt" - "github.com/bahner/go-ma/internal" "github.com/bahner/go-ma/key" + "github.com/bahner/go-ma/multi" "golang.org/x/crypto/curve25519" ) @@ -15,7 +15,7 @@ func (d *Document) KeyAgreementPublicKeyBytes() ([]byte, error) { return nil, fmt.Errorf("doc/key_agreement_public_key: Error getting verification method by ID: %w", err) } // Decode the multibase-encoded public key - codec, pubKeyBytes, err := internal.DecodePublicKeyMultibase(vm.PublicKeyMultibase) + codec, pubKeyBytes, err := multi.PublicKeyMultibaseDecode(vm.PublicKeyMultibase) if err != nil { return nil, fmt.Errorf("doc/key_agreement_public_key: Error decoding publicKeyMultibase: %w", err) } diff --git a/did/doc/payload.go b/did/doc/payload.go index eaf62a5..329ebc3 100644 --- a/did/doc/payload.go +++ b/did/doc/payload.go @@ -1,8 +1,7 @@ package doc import ( - "github.com/bahner/go-ma" - "github.com/bahner/go-ma/internal" + "github.com/bahner/go-ma/multi" cbor "github.com/fxamacker/cbor/v2" "lukechampine.com/blake3" ) @@ -36,7 +35,8 @@ func (d *Document) PayloadHash() ([]byte, error) { // Hash the payload hashed := blake3.Sum256(p) - multicodecHashed, err := internal.MulticodecEncode(ma.HASH_ALGORITHM_MULTICODEC_STRING, hashed[:]) + multicodecHashed, err := multi.MulticodecEncode(hashed[:]) + // multicodecHashed, err := multi.MulticodecEncode(ma.HASH_ALGORITHM_MULTICODEC_STRING, hashed[:]) if err != nil { return nil, ErrPayloadMultiencode } diff --git a/key/encryption.go b/key/encryption.go index 7fb222d..2d3ad6b 100644 --- a/key/encryption.go +++ b/key/encryption.go @@ -7,6 +7,7 @@ import ( "github.com/bahner/go-ma" "github.com/bahner/go-ma/did" "github.com/bahner/go-ma/internal" + "github.com/bahner/go-ma/multi" nanoid "github.com/matoous/go-nanoid/v2" mc "github.com/multiformats/go-multicodec" "golang.org/x/crypto/curve25519" @@ -53,7 +54,7 @@ func NewEncryptionKey(identifier string) (EncryptionKey, error) { curve25519.ScalarBaseMult(&pubKey, &privKey) // Encode the public key to multibase - publicKeyMultibase, err := internal.EncodePublicKeyMultibase(pubKey[:], KEY_AGREEMENT_MULTICODEC_STRING) + publicKeyMultibase, err := multi.PublicKeyMultibaseEncode(pubKey[:], KEY_AGREEMENT_MULTICODEC_STRING) if err != nil { return EncryptionKey{}, fmt.Errorf("NewEncryptionKey: %w", err) } @@ -94,7 +95,7 @@ func (k EncryptionKey) Verify() error { return ErrNoPublicKeyMultibase } - if !internal.IsValidMultibase(k.PublicKeyMultibase) { + if !multi.IsValidMultibase(k.PublicKeyMultibase) { return ErrInvalidPublicKeyMultibase } @@ -102,7 +103,7 @@ func (k EncryptionKey) Verify() error { return ErrNoPublicKeyMultibase } - key, err := internal.MultibaseDecode(k.PublicKeyMultibase) + key, err := multi.MultibaseDecode(k.PublicKeyMultibase) if err != nil { return ErrInvalidPublicKeyMultibase } diff --git a/key/set/packer.go b/key/set/packer.go index a36a682..ed9e17c 100644 --- a/key/set/packer.go +++ b/key/set/packer.go @@ -3,7 +3,7 @@ package set import ( "fmt" - "github.com/bahner/go-ma/internal" + "github.com/bahner/go-ma/multi" cbor "github.com/fxamacker/cbor/v2" ) @@ -27,12 +27,12 @@ func (k Keyset) Pack() (string, error) { return "", fmt.Errorf("KeysetPack: %w", err) } - return internal.MultibaseEncode(data) + return multi.MultibaseEncode(data) } func Unpack(data string) (Keyset, error) { - decoded, err := internal.MultibaseDecode(data) + decoded, err := multi.MultibaseDecode(data) if err != nil { return Keyset{}, fmt.Errorf("KeysetUnpack: %w", err) } diff --git a/key/signing.go b/key/signing.go index 06c3c06..a5b0a78 100644 --- a/key/signing.go +++ b/key/signing.go @@ -9,6 +9,7 @@ import ( "github.com/bahner/go-ma" "github.com/bahner/go-ma/did" "github.com/bahner/go-ma/internal" + "github.com/bahner/go-ma/multi" nanoid "github.com/matoous/go-nanoid/v2" mc "github.com/multiformats/go-multicodec" ) @@ -52,7 +53,7 @@ func NewSigningKey(identifier string) (SigningKey, error) { return SigningKey{}, fmt.Errorf("NewSigningKey: %w", err) } - publicKeyMultibase, err := internal.EncodePublicKeyMultibase(publicKey, ASSERTION_METHOD_KEY_MULTICODEC_STRING) + publicKeyMultibase, err := multi.PublicKeyMultibaseEncode(publicKey, ASSERTION_METHOD_KEY_MULTICODEC_STRING) if err != nil { return SigningKey{}, fmt.Errorf("NewSigningKey: %w", err) } @@ -93,7 +94,7 @@ func (s SigningKey) Verify() error { return ErrNoPublicKeyMultibase } - key, err := internal.MultibaseDecode(s.PublicKeyMultibase) + key, err := multi.MultibaseDecode(s.PublicKeyMultibase) if err != nil { return fmt.Errorf("SigningKeyVerify: %w", err) } diff --git a/ma.go b/ma.go index ed68081..cb7dbb7 100644 --- a/ma.go +++ b/ma.go @@ -16,9 +16,8 @@ const ( RENDEZVOUS = "/" + NAME + "/" + VERSION // BLAKE3 label for symmetric key generation. - HASH_ALGORITHM_MULTICODEC_STRING = "blake3" - BLAKE3_LABEL = NAME - BLAKE3_SUM_SIZE = 32 // 256 bits + BLAKE3_LABEL = NAME + BLAKE3_SUM_SIZE = 32 // 256 bits // Message constants MESSAGE_TYPE = "/ma/message/" + VERSION diff --git a/internal/multibase.go b/multi/multibase.go similarity index 97% rename from internal/multibase.go rename to multi/multibase.go index b7cccf6..4ab3c70 100644 --- a/internal/multibase.go +++ b/multi/multibase.go @@ -1,4 +1,4 @@ -package internal +package multi import ( "github.com/multiformats/go-multibase" diff --git a/internal/multicodec.go b/multi/multicodec.go similarity index 75% rename from internal/multicodec.go rename to multi/multicodec.go index f343dc2..b36427e 100644 --- a/internal/multicodec.go +++ b/multi/multicodec.go @@ -1,4 +1,4 @@ -package internal +package multi import ( "fmt" @@ -7,13 +7,9 @@ import ( "github.com/multiformats/go-varint" ) -func MulticodecEncode(codecName string, payload []byte) ([]byte, error) { +func MulticodecEncode(payload []byte) ([]byte, error) { - var officialCodec multicodec.Code - if err := officialCodec.Set(codecName); err != nil { - return nil, fmt.Errorf("invalid codec name: %w", err) - } - codec := uint64(officialCodec) + codec := uint64(multicodec.Blake3) codecBytes := varint.ToUvarint(codec) encoded := append(codecBytes, payload...) @@ -35,7 +31,6 @@ func MulticodecDecode(encoded []byte) (string, []byte, error) { if n < 1 || n >= len(encoded) { return "", nil, fmt.Errorf("error decoding: invalid varint size") } - // log.Debugf("mutlticodecdecode: code %d", code) codecName := multicodec.Code(code).String() if codecName == "" { diff --git a/internal/public_key_multibase.go b/multi/public_key_multibase.go similarity index 78% rename from internal/public_key_multibase.go rename to multi/public_key_multibase.go index 3094cb3..4e72e0c 100644 --- a/internal/public_key_multibase.go +++ b/multi/public_key_multibase.go @@ -1,10 +1,10 @@ -package internal +package multi import "fmt" -func EncodePublicKeyMultibase(publicKey []byte, codecName string) (string, error) { +func PublicKeyMultibaseEncode(publicKey []byte, codecName string) (string, error) { - multicodecedKey, err := MulticodecEncode(codecName, publicKey) + multicodecedKey, err := MulticodecEncode(publicKey) if err != nil { return "", fmt.Errorf("key/codec: error multicodec encoding public key: %s", err) } @@ -18,7 +18,7 @@ func EncodePublicKeyMultibase(publicKey []byte, codecName string) (string, error } -func DecodePublicKeyMultibase(publicKey string) (string, []byte, error) { +func PublicKeyMultibaseDecode(publicKey string) (string, []byte, error) { decodedPublicKeyMultibase, err := MultibaseDecode(publicKey) if err != nil {