diff options
| -rw-r--r-- | types/ascii.go | 21 | ||||
| -rw-r--r-- | types/ascii_test.go | 6 | ||||
| -rw-r--r-- | types/util.go | 13 | 
3 files changed, 30 insertions, 10 deletions
| diff --git a/types/ascii.go b/types/ascii.go index 88b372e..565e52d 100644 --- a/types/ascii.go +++ b/types/ascii.go @@ -200,7 +200,7 @@ func (l *Leaf) MarshalASCII(w io.Writer) error {  	if err := writeASCII(w, Checksum, hex.EncodeToString(l.Checksum[:])); err != nil {  		return fmt.Errorf("writeASCII: %v", err)  	} -	if err := writeASCII(w, Signature, hex.EncodeToString(l.Signature[:])); err != nil { +	if err := writeASCII(w, SignatureOverMessage, hex.EncodeToString(l.Signature[:])); err != nil {  		return fmt.Errorf("writeASCII: %v", err)  	}  	if err := writeASCII(w, KeyHash, hex.EncodeToString(l.KeyHash[:])); err != nil { @@ -220,16 +220,23 @@ func (sth *SignedTreeHead) MarshalASCII(w io.Writer) error {  		return fmt.Errorf("writeASCII: %v", err)  	}  	for _, sigident := range sth.SigIdent { -		if err := writeASCII(w, Signature, hex.EncodeToString(sigident.Signature[:])); err != nil { -			return fmt.Errorf("writeASCII: %v", err) -		} -		if err := writeASCII(w, KeyHash, hex.EncodeToString(sigident.KeyHash[:])); err != nil { -			return fmt.Errorf("writeASCII: %v", err) +		if err := sigident.MarshalASCII(w); err != nil { +			return fmt.Errorf("MarshalASCII: %v", err)  		}  	}  	return nil  } +func (si *SigIdent) MarshalASCII(w io.Writer) error { +	if err := writeASCII(w, Signature, hex.EncodeToString(si.Signature[:])); err != nil { +		return fmt.Errorf("writeASCII: %v", err) +	} +	if err := writeASCII(w, KeyHash, hex.EncodeToString(si.KeyHash[:])); err != nil { +		return fmt.Errorf("writeASCII: %v", err) +	} +	return nil +} +  func (p *ConsistencyProof) MarshalASCII(w io.Writer) error {  	if err := writeASCII(w, NewSize, strconv.FormatUint(p.NewSize, 10)); err != nil {  		return fmt.Errorf("writeASCII: %v", err) @@ -385,7 +392,7 @@ func (req *LeafRequest) UnmarshalASCII(r io.Reader) error {  	if req.Checksum, err = msg.GetHash(Checksum); err != nil {  		return fmt.Errorf("GetHash(Checksum): %v", err)  	} -	if req.Signature, err = msg.GetSignature(Signature); err != nil { +	if req.Signature, err = msg.GetSignature(SignatureOverMessage); err != nil {  		return fmt.Errorf("GetSignature: %v", err)  	}  	if req.VerificationKey, err = msg.GetVerificationKey(VerificationKey); err != nil { diff --git a/types/ascii_test.go b/types/ascii_test.go index 74a1e37..92732f9 100644 --- a/types/ascii_test.go +++ b/types/ascii_test.go @@ -106,12 +106,12 @@ func TestLeafMarshalASCII(t *testing.T) {  		// Leaf 1  		ShardHint, Delim, 123, EOL,  		Checksum, Delim, testBuffer32[:], EOL, -		Signature, Delim, testBuffer64[:], EOL, +		SignatureOverMessage, Delim, testBuffer64[:], EOL,  		KeyHash, Delim, testBuffer32[:], EOL,  		// Leaf 2  		ShardHint, Delim, 456, EOL,  		Checksum, Delim, testBuffer32[:], EOL, -		Signature, Delim, testBuffer64[:], EOL, +		SignatureOverMessage, Delim, testBuffer64[:], EOL,  		KeyHash, Delim, testBuffer32[:], EOL,  	))  	buf := bytes.NewBuffer(nil) @@ -399,7 +399,7 @@ func TestLeafRequestUnmarshalASCII(t *testing.T) {  				"%s%s%d%s"+"%s%s%x%s"+"%s%s%x%s"+"%s%s%x%s"+"%s%s%s%s",  				ShardHint, Delim, 123, EOL,  				Checksum, Delim, testBuffer32[:], EOL, -				Signature, Delim, testBuffer64[:], EOL, +				SignatureOverMessage, Delim, testBuffer64[:], EOL,  				VerificationKey, Delim, testBuffer32[:], EOL,  				DomainHint, Delim, "example.com", EOL,  			)), diff --git a/types/util.go b/types/util.go new file mode 100644 index 0000000..dc8ccba --- /dev/null +++ b/types/util.go @@ -0,0 +1,13 @@ +package types + +import ( +	"crypto/sha256" +) + +func Hash(buf []byte) *[HashSize]byte { +	var ret [HashSize]byte +	hash := sha256.New() +	hash.Write(buf) +	copy(ret[:], hash.Sum(nil)) +	return &ret +} | 
