From bae54f7e83bc9a97ac2a9c9161d1909f74f5fb60 Mon Sep 17 00:00:00 2001 From: "M. Thiercelin" Date: Thu, 17 Nov 2022 15:22:03 +0100 Subject: [PATCH] Check signature types in unit tests --- crypto/signature_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/crypto/signature_test.go b/crypto/signature_test.go index 2395fc2..b1f301f 100644 --- a/crypto/signature_test.go +++ b/crypto/signature_test.go @@ -19,6 +19,26 @@ var textSignature, binSignature *PGPSignature var message *PlainMessage var signatureTest = regexp.MustCompile("(?s)^-----BEGIN PGP SIGNATURE-----.*-----END PGP SIGNATURE-----$") +func getSignatureType(sig *PGPSignature) (packet.SignatureType, error) { + sigPacket, err := getSignaturePacket(sig) + if err != nil { + return 0, err + } + return sigPacket.SigType, nil +} + +func getSignaturePacket(sig *PGPSignature) (*packet.Signature, error) { + p, err := packet.Read(bytes.NewReader(sig.Data)) + if err != nil { + return nil, err + } + sigPacket, ok := p.(*packet.Signature) + if !ok { + return nil, errors.New("") + } + return sigPacket, nil +} + func TestSignTextDetached(t *testing.T) { var err error @@ -33,6 +53,16 @@ func TestSignTextDetached(t *testing.T) { t.Fatal("Cannot armor signature:", err) } + sigType, err := getSignatureType(textSignature) + + if err != nil { + t.Fatal("Cannot get signature type:", err) + } + + if sigType != packet.SigTypeText { + t.Fatal("Signature type was not text") + } + assert.Regexp(t, signatureTest, armoredSignature) } @@ -68,6 +98,16 @@ func TestSignBinDetached(t *testing.T) { t.Fatal("Cannot armor signature:", err) } + sigType, err := getSignatureType(binSignature) + + if err != nil { + t.Fatal("Cannot get signature type:", err) + } + + if sigType != packet.SigTypeBinary { + t.Fatal("Signature type was not binary") + } + assert.Regexp(t, signatureTest, armoredSignature) }