package ed25119 import ( "errors" "fmt" "github.com/oasislabs/ed25519" "github.com/iotaledger/goshimmer/packages/binary/marshalutil" ) type PublicKey [PublicKeySize]byte func PublicKeyFromBytes(bytes []byte) (result PublicKey, err error, consumedBytes int) { if len(bytes) < PublicKeySize { err = fmt.Errorf("bytes too short") return } copy(result[:], bytes) consumedBytes = PublicKeySize return } func ParsePublicKey(marshalUtil *marshalutil.MarshalUtil) (PublicKey, error) { if id, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return PublicKeyFromBytes(data) }); err != nil { return PublicKey{}, err } else { return id.(PublicKey), nil } } func (publicKey PublicKey) VerifySignature(data []byte, signature Signature) bool { return ed25519.Verify(publicKey[:], data, signature[:]) } func (publicKey PublicKey) Bytes() []byte { return publicKey[:] } func (publicKey *PublicKey) UnmarshalBinary(bytes []byte) (err error) { if len(bytes) < PublicKeySize { return errors.New("not enough bytes") } copy(publicKey[:], bytes[:]) return } const PublicKeySize = 32