package rfc4757

import (
	
	
	
	
)

// Checksum returns a hash of the data in accordance with RFC 4757
func ( []byte,  uint32,  []byte) ([]byte, error) {
	// Create hashing key
	 := append([]byte(`signaturekey`), byte(0x00)) //includes zero octet at end
	 := hmac.New(md5.New, )
	.Write()
	 := .Sum(nil)

	// Format data
	 := UsageToMSMsgType()
	 := append(, ...)
	 := md5.New()
	 := bytes.NewReader()
	,  := io.Copy(, )
	if  != nil {
		return []byte{}, 
	}
	 := .Sum(nil)

	// Generate HMAC
	 = hmac.New(md5.New, )
	.Write()
	return .Sum(nil), nil
}

// HMAC returns a keyed MD5 checksum of the data
func ( []byte,  []byte) []byte {
	 := hmac.New(md5.New, )
	.Write()
	return .Sum(nil)
}