コード例 #1
0
ファイル: map.go プロジェクト: jmptrader/stew
// SignedBase64 converts the map to a base64 string and signs it using the
// provided key. The returned data is the base64 string plus an appended signature.
//
// Will return an error if Base64ing the map fails.
func (d Map) SignedBase64(key string) (string, error) {

	base64, err := d.Base64()
	if err != nil {
		return "", err
	}

	sig := signature.HashWithKey([]byte(base64), []byte(key))

	return base64 + SignatureSeparator + sig, nil

}
コード例 #2
0
ファイル: map.go プロジェクト: jmptrader/stew
// HashWithKey gets the a hash of the map, signed by the
// specified security key.
//
// Will return an error if Base64ing the map fails.
func (d Map) HashWithKey(key string) (string, error) {

	base64, err := d.Base64()
	if err != nil {
		return "", err
	}

	sig := signature.HashWithKey([]byte(base64), []byte(key))

	return sig, nil

}
コード例 #3
0
ファイル: map.go プロジェクト: jmptrader/stew
// NewMapFromSignedBase64String creates a new map from a signed Base64 string representation
func NewMapFromSignedBase64String(data, key string) (Map, error) {

	parts := strings.Split(data, SignatureSeparator)
	if len(parts) != 2 {
		return nil, errors.New("Map: Signed base64 string is malformed.")
	}

	sig := signature.HashWithKey([]byte(parts[0]), []byte(key))
	if parts[1] != sig {
		return nil, errors.New("Map: Signature for Base64 data does not match.")
	}

	return NewMapFromBase64String(parts[0])

}