Add API to sign stream with context

This commit is contained in:
M. Thiercelin 2023-03-20 11:52:52 +01:00
parent 45070ef1ae
commit c55b9d203c
No known key found for this signature in database
GPG key ID: 29581E7E24EBEC0A
4 changed files with 54 additions and 38 deletions

View file

@ -2,7 +2,6 @@ package crypto
import (
"bytes"
"crypto"
"io"
"time"
@ -302,19 +301,19 @@ func (keyRing *KeyRing) DecryptSplitStream(
// SignDetachedStream generates and returns a PGPSignature for a given message Reader.
func (keyRing *KeyRing) SignDetachedStream(message Reader) (*PGPSignature, error) {
signEntity, err := keyRing.getSigningEntity()
if err != nil {
return nil, err
}
return keyRing.SignDetachedStreamWithContext(message, nil)
}
config := &packet.Config{DefaultHash: crypto.SHA512, Time: getTimeGenerator()}
var outBuf bytes.Buffer
// sign bin
if err := openpgp.DetachSign(&outBuf, signEntity, message, config); err != nil {
return nil, errors.Wrap(err, "gopenpgp: error in signing")
}
return NewPGPSignature(outBuf.Bytes()), nil
// SignDetachedStreamWithContext generates and returns a PGPSignature for a given message Reader.
// If a context is provided, it is added to the signature as notation data
// with the name set in `constants.SignatureContextName`.
func (keyRing *KeyRing) SignDetachedStreamWithContext(message Reader, context *SigningContext) (*PGPSignature, error) {
return signMessageDetached(
keyRing,
message,
true,
context,
)
}
// VerifyDetachedStream verifies a message reader with a detached PGPSignature