// NewDetachedSignature creates a new openpgp armored detached signature for the given ACI // signed with armoredPrivateKey. func NewDetachedSignature(armoredPrivateKey string, aci io.Reader) (io.Reader, error) { entityList, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(armoredPrivateKey)) if err != nil { return nil, err } if len(entityList) < 1 { return nil, errors.New("empty entity list") } signature := &bytes.Buffer{} if err := openpgp.ArmoredDetachSign(signature, entityList[0], aci, nil); err != nil { return nil, err } return signature, nil }
// NewMessageAndSignature generates a new random message signed by the given entity. // NewMessageAndSignature returns message, signature and an error if any. func NewMessageAndSignature(armoredPrivateKey string) (io.ReadSeeker, io.ReadSeeker, error) { entityList, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(armoredPrivateKey)) if err != nil { return nil, nil, err } if len(entityList) < 1 { return nil, nil, errors.New("empty entity list") } signature := &bytes.Buffer{} message := []byte("data") if err := openpgp.ArmoredDetachSign(signature, entityList[0], bytes.NewReader(message), nil); err != nil { return nil, nil, err } return bytes.NewReader(message), bytes.NewReader(signature.Bytes()), nil }