mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
tests: Add test for gpgv.
* tests/openpgp/Makefile.am (XTESTS): Add the new test. * tests/openpgp/gpgv.scm: New file. * tests/openpgp/signed-messages.scm: Likewise. * tests/openpgp/verify.scm: Move the signed messages to the new file and load it. Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
parent
890a3a70f2
commit
62274d3c30
@ -74,6 +74,7 @@ XTESTS = \
|
||||
multisig.scm \
|
||||
verify.scm \
|
||||
verify-multifile.scm \
|
||||
gpgv.scm \
|
||||
gpgv-forged-keyring.scm \
|
||||
armor.scm \
|
||||
import.scm \
|
||||
@ -250,7 +251,7 @@ sample_msgs = samplemsgs/clearsig-1-key-1.asc \
|
||||
EXTRA_DIST = defs.scm $(XTESTS) $(TEST_FILES) \
|
||||
mkdemodirs signdemokey $(priv_keys) $(sample_keys) \
|
||||
$(sample_msgs) ChangeLog-2011 run-tests.scm \
|
||||
setup.scm shell.scm all-tests.scm
|
||||
setup.scm shell.scm all-tests.scm signed-messages.scm
|
||||
|
||||
CLEANFILES = prepared.stamp x y yy z out err $(data_files) \
|
||||
plain-1 plain-2 plain-3 trustdb.gpg *.lock .\#lk* \
|
||||
|
75
tests/openpgp/gpgv.scm
Executable file
75
tests/openpgp/gpgv.scm
Executable file
@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env gpgscm
|
||||
|
||||
;; Copyright (C) 2016-2017 g10 Code GmbH
|
||||
;;
|
||||
;; This file is part of GnuPG.
|
||||
;;
|
||||
;; GnuPG is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GnuPG is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(load (in-srcdir "tests" "openpgp" "defs.scm"))
|
||||
(load (in-srcdir "tests" "openpgp" "signed-messages.scm"))
|
||||
(setup-legacy-environment)
|
||||
|
||||
(define keyring (if (file-exists? "pubring.kbx") "pubring.kbx" "pubring.gpg"))
|
||||
|
||||
;;
|
||||
;; Two simple tests to check that verify fails for bad input data
|
||||
;;
|
||||
(for-each-p
|
||||
"Checking bogus signature"
|
||||
(lambda (char)
|
||||
(lettmp (x)
|
||||
(call-with-binary-output-file
|
||||
x
|
||||
(lambda (port)
|
||||
(display (make-string 64 (integer->char (string->number char)))
|
||||
port)))
|
||||
(if (= 0 (call `(,@gpgv --keyring ,keyring ,x data-500)))
|
||||
(fail "no error code from verify"))))
|
||||
'("#x2d" "#xca"))
|
||||
|
||||
;; Fixme: We need more tests with manipulated cleartext signatures.
|
||||
|
||||
;;
|
||||
;; Now run the tests.
|
||||
;;
|
||||
(for-each-p
|
||||
"Checking that a valid signature is verified as such"
|
||||
(lambda (armored-file)
|
||||
(pipe:do
|
||||
(pipe:echo (eval armored-file (current-environment)))
|
||||
(pipe:spawn `(,@gpgv --keyring ,keyring))))
|
||||
'(msg_ols_asc msg_cols_asc msg_sl_asc msg_oolss_asc msg_cls_asc msg_clss_asc))
|
||||
|
||||
(for-each-p
|
||||
"Checking that an invalid signature is verified as such"
|
||||
(lambda (armored-file)
|
||||
(catch '()
|
||||
(pipe:do
|
||||
(pipe:echo (eval armored-file (current-environment)))
|
||||
(pipe:spawn `(,@gpgv --keyring ,keyring)))
|
||||
(fail "verification succeeded but should not")))
|
||||
'(bad_ls_asc bad_fols_asc bad_olsf_asc bad_ools_asc))
|
||||
|
||||
|
||||
;; Need to import the ed25519 sample key used for the next two tests.
|
||||
(call-check `(,@gpg --quiet --yes
|
||||
--import ,(in-srcdir "tests" "openpgp" key-file2)))
|
||||
(for-each-p
|
||||
"Checking that a valid Ed25519 signature is verified as such"
|
||||
(lambda (armored-file)
|
||||
(pipe:do
|
||||
(pipe:echo (eval armored-file (current-environment)))
|
||||
(pipe:spawn `(,@gpgv --keyring ,keyring))))
|
||||
'(msg_ed25519_rshort msg_ed25519_sshort))
|
281
tests/openpgp/signed-messages.scm
Normal file
281
tests/openpgp/signed-messages.scm
Normal file
@ -0,0 +1,281 @@
|
||||
;; Copyright (C) 2016 g10 Code GmbH
|
||||
;;
|
||||
;; This file is part of GnuPG.
|
||||
;;
|
||||
;; GnuPG is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GnuPG is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;; A plain signed message created using
|
||||
;; echo abc | gpg --homedir . --passphrase-fd 0 -u Alpha -z0 -sa msg
|
||||
(define msg_ols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45Q==
|
||||
=a29i
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A plain signed message created using
|
||||
;; echo abc | gpg --homedir . --passphrase-fd 0 -u Alpha -sa msg
|
||||
(define msg_cols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
owGbwMvMwCSoW1RzPCOz3IRxLSN7EnNucboLT6Cgp0JJRmZeNpBMLFFIzMlRKMpM
|
||||
zyjRBQtm5qUrFKTmF+SkKmTmgdQVKyTnl+aVFFUqJBalKhRnJmcrJOalcJVkFqWm
|
||||
KOSnKSSlgrSU5OekQMzLL0rJzEsEKk9JTU7NK4EZBtKcBtRRWgAzlwtmbnlmSQbU
|
||||
GJjxCmDj9RQUPNVzFZJTi0oSM/NyKhXy8kuAYk6lJSBxLlTF2NziqZCYq8elq+Cb
|
||||
n1dSqRBQWZKRn8fVYc/MygAKBljYCDIFiTDMT+9seu836Q+bevyHTJ0dzPNuvCjn
|
||||
ZpgrwX38z58rJsfYDhwOSS4SkN/d6vUAAA==
|
||||
=s6sY
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A PGP 2 style message.
|
||||
(define msg_sl_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
iD8DBQBEDFJaLXJ8x2hpdzQRAkeCAKCZRBk2Pmx4w9h2LgosS0AppNNaWwCgiI5M
|
||||
yzgJpGTZtA/Jbk+/HP9ceOWtAQdiA21zZ0QMUlpJIHRoaW5rIHRoYXQgYWxsIHJp
|
||||
Z2h0LXRoaW5raW5nIHBlb3BsZSBpbiB0aGlzIGNvdW50cnkgYXJlIHNpY2sgYW5k
|
||||
CnRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBvcmRpbmFyeSBkZWNlbnQgcGVvcGxl
|
||||
IGFyZSBmZWQgdXAgaW4gdGhpcwpjb3VudHJ5IHdpdGggYmVpbmcgc2ljayBhbmQg
|
||||
dGlyZWQuICBJJ20gY2VydGFpbmx5IG5vdC4gIEJ1dCBJJ20Kc2ljayBhbmQgdGly
|
||||
ZWQgb2YgYmVpbmcgdG9sZCB0aGF0IEkgYW0uCi0gTW9udHkgUHl0aG9uCg==
|
||||
=0ukK
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; An OpenPGP message lacking the onepass packet. We used to accept
|
||||
;; such messages but now consider them invalid.
|
||||
(define bad_ls_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
rQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9w
|
||||
bGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0
|
||||
b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRo
|
||||
aXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRh
|
||||
aW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQg
|
||||
dGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IA
|
||||
oJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Q==
|
||||
=Mpiu
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
|
||||
;; A signed message prefixed with an unsigned literal packet.
|
||||
;; (fols = faked-literal-data, one-pass, literal-data, signature)
|
||||
;; This should throw an error because running gpg to extract the
|
||||
;; signed data will return both literal data packets
|
||||
(define bad_fols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
rF1iDG1zZy51bnNpZ25lZEQMY0x0aW1lc2hhcmluZywgbjoKCUFuIGFjY2VzcyBt
|
||||
ZXRob2Qgd2hlcmVieSBvbmUgY29tcHV0ZXIgYWJ1c2VzIG1hbnkgcGVvcGxlLgqQ
|
||||
DQMAAhEtcnzHaGl3NAGtAQdiA21zZ0QMUlpJIHRoaW5rIHRoYXQgYWxsIHJpZ2h0
|
||||
LXRoaW5raW5nIHBlb3BsZSBpbiB0aGlzIGNvdW50cnkgYXJlIHNpY2sgYW5kCnRp
|
||||
cmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBvcmRpbmFyeSBkZWNlbnQgcGVvcGxlIGFy
|
||||
ZSBmZWQgdXAgaW4gdGhpcwpjb3VudHJ5IHdpdGggYmVpbmcgc2ljayBhbmQgdGly
|
||||
ZWQuICBJJ20gY2VydGFpbmx5IG5vdC4gIEJ1dCBJJ20Kc2ljayBhbmQgdGlyZWQg
|
||||
b2YgYmVpbmcgdG9sZCB0aGF0IEkgYW0uCi0gTW9udHkgUHl0aG9uCog/AwUARAxS
|
||||
Wi1yfMdoaXc0EQJHggCgmUQZNj5seMPYdi4KLEtAKaTTWlsAoIiOTMs4CaRk2bQP
|
||||
yW5Pvxz/XHjl
|
||||
=UNM4
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A signed message suffixed with an unsigned literal packet.
|
||||
;; (fols = faked-literal-data, one-pass, literal-data, signature)
|
||||
;; This should throw an error because running gpg to extract the
|
||||
;; signed data will return both literal data packets
|
||||
(define bad_olsf_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45axdYgxtc2cudW5zaWduZWREDGNMdGltZXNoYXJpbmcsIG46CglB
|
||||
biBhY2Nlc3MgbWV0aG9kIHdoZXJlYnkgb25lIGNvbXB1dGVyIGFidXNlcyBtYW55
|
||||
IHBlb3BsZS4K
|
||||
=3gnG
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
|
||||
;; Two standard signed messages in a row
|
||||
(define msg_olsols_asc_multiple "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45ZANAwACES1yfMdoaXc0Aa0BB2IDbXNnRAxSWkkgdGhpbmsgdGhh
|
||||
dCBhbGwgcmlnaHQtdGhpbmtpbmcgcGVvcGxlIGluIHRoaXMgY291bnRyeSBhcmUg
|
||||
c2ljayBhbmQKdGlyZWQgb2YgYmVpbmcgdG9sZCB0aGF0IG9yZGluYXJ5IGRlY2Vu
|
||||
dCBwZW9wbGUgYXJlIGZlZCB1cCBpbiB0aGlzCmNvdW50cnkgd2l0aCBiZWluZyBz
|
||||
aWNrIGFuZCB0aXJlZC4gIEknbSBjZXJ0YWlubHkgbm90LiAgQnV0IEknbQpzaWNr
|
||||
IGFuZCB0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgSSBhbS4KLSBNb250eSBQeXRo
|
||||
b24KiD8DBQBEDFJaLXJ8x2hpdzQRAkeCAKCZRBk2Pmx4w9h2LgosS0AppNNaWwCg
|
||||
iI5MyzgJpGTZtA/Jbk+/HP9ceOU=
|
||||
=8nLN
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A standard message with two signatures (actually the same signature
|
||||
;; duplicated).
|
||||
(define msg_oolss_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBkA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGlu
|
||||
ayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5
|
||||
IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkg
|
||||
ZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJl
|
||||
aW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdt
|
||||
CnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5
|
||||
IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk
|
||||
01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Yg/AwUARAxSWi1yfMdoaXc0EQJHggCg
|
||||
mUQZNj5seMPYdi4KLEtAKaTTWlsAoIiOTMs4CaRk2bQPyW5Pvxz/XHjl
|
||||
=KVw5
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A standard message with two one-pass packet but only one signature
|
||||
;; packet
|
||||
(define bad_ools_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBkA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGlu
|
||||
ayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5
|
||||
IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkg
|
||||
ZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJl
|
||||
aW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdt
|
||||
CnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5
|
||||
IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk
|
||||
01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Q==
|
||||
=1/ix
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; Standard cleartext signature
|
||||
(define msg_cls_asc "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
I think that all right-thinking people in this country are sick and
|
||||
tired of being told that ordinary decent people are fed up in this
|
||||
country with being sick and tired. I'm certainly not. But I'm
|
||||
sick and tired of being told that I am.
|
||||
- - Monty Python
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iD8DBQFEDVp1LXJ8x2hpdzQRAplUAKCMfpG3GPw/TLN52tosgXP5lNECkwCfQhAa
|
||||
emmev7IuQjWYrGF9Lxj+zj8=
|
||||
=qJsY
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; Cleartext signature with two signatures
|
||||
(define msg_clss_asc "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
What is the difference between a Turing machine and the modern computer?
|
||||
It's the same as that between Hillary's ascent of Everest and the
|
||||
establishment of a Hilton on its peak.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iD8DBQFEDVz6LXJ8x2hpdzQRAtkGAKCeMhNbHnh339fpjNj9owsYcC4zBwCfYO5l
|
||||
2u+KEfXX0FKyk8SMzLjZ536IPwMFAUQNXPr+GAsdqeOwshEC2QYAoPOWAiQm0EF/
|
||||
FWIAQUplk7JWbyRKAJ92ZJyJpWfzb0yc1s7MY65r2qEHrg==
|
||||
=1Xvv
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; Two clear text signatures in a row
|
||||
(define msg_clsclss_asc_multiple (string-append msg_cls_asc msg_clss_asc))
|
||||
|
||||
|
||||
;; An Ed25519 cleartext message with an R parameter of only 247 bits
|
||||
;; so that the code to re-insert the stripped zero byte kicks in. The
|
||||
;; S parameter has 253 bits but that does not strip a full byte.
|
||||
;;
|
||||
;; Note that the message has a typo ("the the"), but this should not
|
||||
;; be fixed because it breaks this test.
|
||||
(define msg_ed25519_rshort "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
Dear Emily:
|
||||
I'm still confused as to what groups articles should be posted
|
||||
to. How about an example?
|
||||
-- Still Confused
|
||||
|
||||
Dear Still:
|
||||
Ok. Let's say you want to report that Gretzky has been traded from
|
||||
the Oilers to the Kings. Now right away you might think rec.sport.hockey
|
||||
would be enough. WRONG. Many more people might be interested. This is a
|
||||
big trade! Since it's a NEWS article, it belongs in the news.* hierarchy
|
||||
as well. If you are a news admin, or there is one on your machine, try
|
||||
news.admin. If not, use news.misc.
|
||||
The Oilers are probably interested in geology, so try sci.physics.
|
||||
He is a big star, so post to sci.astro, and sci.space because they are also
|
||||
interested in stars. Next, his name is Polish sounding. So post to
|
||||
soc.culture.polish. But that group doesn't exist, so cross-post to
|
||||
news.groups suggesting it should be created. With this many groups of
|
||||
interest, your article will be quite bizarre, so post to talk.bizarre as
|
||||
well. (And post to comp.std.mumps, since they hardly get any articles
|
||||
there, and a \"comp\" group will propagate your article further.)
|
||||
You may also find it is more fun to post the article once in each
|
||||
group. If you list all the newsgroups in the same article, some newsreaders
|
||||
will only show the the article to the reader once! Don't tolerate this.
|
||||
-- Emily Postnews Answers Your Questions on Netiquette
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iJEEARYIADoWIQSyHeq0+HX7PaQvHR0TlWNoKgINCgUCV772DhwccGF0cmljZS5s
|
||||
dW11bWJhQGV4YW1wbGUubmV0AAoJEBOVY2gqAg0KMAIA90EtUwAja0iJGpO91wyz
|
||||
GLh9pS5v495V0r94yU6uUyUA/RT/StyPWe1wbnEZuacZnLbUV6Yy/aTXCVAlxf0r
|
||||
TusO
|
||||
=vQ3f
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; An Ed25519 cleartext message with an S parameter of only 248 bits
|
||||
;; so that the code to re-insert the stripped zero byte kicks in.
|
||||
(define msg_ed25519_sshort "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
All articles that coruscate with resplendence are not truly auriferous.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iJEEARYIADoWIQSyHeq0+HX7PaQvHR0TlWNoKgINCgUCV771QhwccGF0cmljZS5s
|
||||
dW11bWJhQGV4YW1wbGUubmV0AAoJEBOVY2gqAg0KHVEBAI66OPDYXKWO3r6SaFT+
|
||||
uxmh8x4ZerW41vMA9gkJ4AEKAPjoe/Z7fDqo1lCptIFutFAGbfNxcm/53prfx2fT
|
||||
GisM
|
||||
=L7sk
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
@ -18,6 +18,7 @@
|
||||
;; along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(load (in-srcdir "tests" "openpgp" "defs.scm"))
|
||||
(load (in-srcdir "tests" "openpgp" "signed-messages.scm"))
|
||||
(setup-legacy-environment)
|
||||
|
||||
;;
|
||||
@ -36,273 +37,6 @@
|
||||
(fail "no error code from verify"))))
|
||||
'("#x2d" "#xca"))
|
||||
|
||||
;; A plain signed message created using
|
||||
;; echo abc | gpg --homedir . --passphrase-fd 0 -u Alpha -z0 -sa msg
|
||||
(define msg_ols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45Q==
|
||||
=a29i
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A plain signed message created using
|
||||
;; echo abc | gpg --homedir . --passphrase-fd 0 -u Alpha -sa msg
|
||||
(define msg_cols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
owGbwMvMwCSoW1RzPCOz3IRxLSN7EnNucboLT6Cgp0JJRmZeNpBMLFFIzMlRKMpM
|
||||
zyjRBQtm5qUrFKTmF+SkKmTmgdQVKyTnl+aVFFUqJBalKhRnJmcrJOalcJVkFqWm
|
||||
KOSnKSSlgrSU5OekQMzLL0rJzEsEKk9JTU7NK4EZBtKcBtRRWgAzlwtmbnlmSQbU
|
||||
GJjxCmDj9RQUPNVzFZJTi0oSM/NyKhXy8kuAYk6lJSBxLlTF2NziqZCYq8elq+Cb
|
||||
n1dSqRBQWZKRn8fVYc/MygAKBljYCDIFiTDMT+9seu836Q+bevyHTJ0dzPNuvCjn
|
||||
ZpgrwX38z58rJsfYDhwOSS4SkN/d6vUAAA==
|
||||
=s6sY
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A PGP 2 style message.
|
||||
(define msg_sl_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
iD8DBQBEDFJaLXJ8x2hpdzQRAkeCAKCZRBk2Pmx4w9h2LgosS0AppNNaWwCgiI5M
|
||||
yzgJpGTZtA/Jbk+/HP9ceOWtAQdiA21zZ0QMUlpJIHRoaW5rIHRoYXQgYWxsIHJp
|
||||
Z2h0LXRoaW5raW5nIHBlb3BsZSBpbiB0aGlzIGNvdW50cnkgYXJlIHNpY2sgYW5k
|
||||
CnRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBvcmRpbmFyeSBkZWNlbnQgcGVvcGxl
|
||||
IGFyZSBmZWQgdXAgaW4gdGhpcwpjb3VudHJ5IHdpdGggYmVpbmcgc2ljayBhbmQg
|
||||
dGlyZWQuICBJJ20gY2VydGFpbmx5IG5vdC4gIEJ1dCBJJ20Kc2ljayBhbmQgdGly
|
||||
ZWQgb2YgYmVpbmcgdG9sZCB0aGF0IEkgYW0uCi0gTW9udHkgUHl0aG9uCg==
|
||||
=0ukK
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; An OpenPGP message lacking the onepass packet. We used to accept
|
||||
;; such messages but now consider them invalid.
|
||||
(define bad_ls_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
rQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9w
|
||||
bGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0
|
||||
b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRo
|
||||
aXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRh
|
||||
aW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQg
|
||||
dGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IA
|
||||
oJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Q==
|
||||
=Mpiu
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
|
||||
;; A signed message prefixed with an unsigned literal packet.
|
||||
;; (fols = faked-literal-data, one-pass, literal-data, signature)
|
||||
;; This should throw an error because running gpg to extract the
|
||||
;; signed data will return both literal data packets
|
||||
(define bad_fols_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
rF1iDG1zZy51bnNpZ25lZEQMY0x0aW1lc2hhcmluZywgbjoKCUFuIGFjY2VzcyBt
|
||||
ZXRob2Qgd2hlcmVieSBvbmUgY29tcHV0ZXIgYWJ1c2VzIG1hbnkgcGVvcGxlLgqQ
|
||||
DQMAAhEtcnzHaGl3NAGtAQdiA21zZ0QMUlpJIHRoaW5rIHRoYXQgYWxsIHJpZ2h0
|
||||
LXRoaW5raW5nIHBlb3BsZSBpbiB0aGlzIGNvdW50cnkgYXJlIHNpY2sgYW5kCnRp
|
||||
cmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBvcmRpbmFyeSBkZWNlbnQgcGVvcGxlIGFy
|
||||
ZSBmZWQgdXAgaW4gdGhpcwpjb3VudHJ5IHdpdGggYmVpbmcgc2ljayBhbmQgdGly
|
||||
ZWQuICBJJ20gY2VydGFpbmx5IG5vdC4gIEJ1dCBJJ20Kc2ljayBhbmQgdGlyZWQg
|
||||
b2YgYmVpbmcgdG9sZCB0aGF0IEkgYW0uCi0gTW9udHkgUHl0aG9uCog/AwUARAxS
|
||||
Wi1yfMdoaXc0EQJHggCgmUQZNj5seMPYdi4KLEtAKaTTWlsAoIiOTMs4CaRk2bQP
|
||||
yW5Pvxz/XHjl
|
||||
=UNM4
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A signed message suffixed with an unsigned literal packet.
|
||||
;; (fols = faked-literal-data, one-pass, literal-data, signature)
|
||||
;; This should throw an error because running gpg to extract the
|
||||
;; signed data will return both literal data packets
|
||||
(define bad_olsf_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45axdYgxtc2cudW5zaWduZWREDGNMdGltZXNoYXJpbmcsIG46CglB
|
||||
biBhY2Nlc3MgbWV0aG9kIHdoZXJlYnkgb25lIGNvbXB1dGVyIGFidXNlcyBtYW55
|
||||
IHBlb3BsZS4K
|
||||
=3gnG
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
|
||||
;; Two standard signed messages in a row
|
||||
(define msg_olsols_asc_multiple "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGluayB0aGF0IGFsbCByaWdo
|
||||
dC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5IGFyZSBzaWNrIGFuZAp0
|
||||
aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkgZGVjZW50IHBlb3BsZSBh
|
||||
cmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJlaW5nIHNpY2sgYW5kIHRp
|
||||
cmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdtCnNpY2sgYW5kIHRpcmVk
|
||||
IG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5IFB5dGhvbgqIPwMFAEQM
|
||||
UlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk01pbAKCIjkzLOAmkZNm0
|
||||
D8luT78c/1x45ZANAwACES1yfMdoaXc0Aa0BB2IDbXNnRAxSWkkgdGhpbmsgdGhh
|
||||
dCBhbGwgcmlnaHQtdGhpbmtpbmcgcGVvcGxlIGluIHRoaXMgY291bnRyeSBhcmUg
|
||||
c2ljayBhbmQKdGlyZWQgb2YgYmVpbmcgdG9sZCB0aGF0IG9yZGluYXJ5IGRlY2Vu
|
||||
dCBwZW9wbGUgYXJlIGZlZCB1cCBpbiB0aGlzCmNvdW50cnkgd2l0aCBiZWluZyBz
|
||||
aWNrIGFuZCB0aXJlZC4gIEknbSBjZXJ0YWlubHkgbm90LiAgQnV0IEknbQpzaWNr
|
||||
IGFuZCB0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgSSBhbS4KLSBNb250eSBQeXRo
|
||||
b24KiD8DBQBEDFJaLXJ8x2hpdzQRAkeCAKCZRBk2Pmx4w9h2LgosS0AppNNaWwCg
|
||||
iI5MyzgJpGTZtA/Jbk+/HP9ceOU=
|
||||
=8nLN
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A standard message with two signatures (actually the same signature
|
||||
;; duplicated).
|
||||
(define msg_oolss_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBkA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGlu
|
||||
ayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5
|
||||
IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkg
|
||||
ZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJl
|
||||
aW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdt
|
||||
CnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5
|
||||
IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk
|
||||
01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Yg/AwUARAxSWi1yfMdoaXc0EQJHggCg
|
||||
mUQZNj5seMPYdi4KLEtAKaTTWlsAoIiOTMs4CaRk2bQPyW5Pvxz/XHjl
|
||||
=KVw5
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; A standard message with two one-pass packet but only one signature
|
||||
;; packet
|
||||
(define bad_ools_asc "
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
kA0DAAIRLXJ8x2hpdzQBkA0DAAIRLXJ8x2hpdzQBrQEHYgNtc2dEDFJaSSB0aGlu
|
||||
ayB0aGF0IGFsbCByaWdodC10aGlua2luZyBwZW9wbGUgaW4gdGhpcyBjb3VudHJ5
|
||||
IGFyZSBzaWNrIGFuZAp0aXJlZCBvZiBiZWluZyB0b2xkIHRoYXQgb3JkaW5hcnkg
|
||||
ZGVjZW50IHBlb3BsZSBhcmUgZmVkIHVwIGluIHRoaXMKY291bnRyeSB3aXRoIGJl
|
||||
aW5nIHNpY2sgYW5kIHRpcmVkLiAgSSdtIGNlcnRhaW5seSBub3QuICBCdXQgSSdt
|
||||
CnNpY2sgYW5kIHRpcmVkIG9mIGJlaW5nIHRvbGQgdGhhdCBJIGFtLgotIE1vbnR5
|
||||
IFB5dGhvbgqIPwMFAEQMUlotcnzHaGl3NBECR4IAoJlEGTY+bHjD2HYuCixLQCmk
|
||||
01pbAKCIjkzLOAmkZNm0D8luT78c/1x45Q==
|
||||
=1/ix
|
||||
-----END PGP MESSAGE-----
|
||||
")
|
||||
|
||||
;; Standard cleartext signature
|
||||
(define msg_cls_asc "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
I think that all right-thinking people in this country are sick and
|
||||
tired of being told that ordinary decent people are fed up in this
|
||||
country with being sick and tired. I'm certainly not. But I'm
|
||||
sick and tired of being told that I am.
|
||||
- - Monty Python
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iD8DBQFEDVp1LXJ8x2hpdzQRAplUAKCMfpG3GPw/TLN52tosgXP5lNECkwCfQhAa
|
||||
emmev7IuQjWYrGF9Lxj+zj8=
|
||||
=qJsY
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; Cleartext signature with two signatures
|
||||
(define msg_clss_asc "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
What is the difference between a Turing machine and the modern computer?
|
||||
It's the same as that between Hillary's ascent of Everest and the
|
||||
establishment of a Hilton on its peak.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iD8DBQFEDVz6LXJ8x2hpdzQRAtkGAKCeMhNbHnh339fpjNj9owsYcC4zBwCfYO5l
|
||||
2u+KEfXX0FKyk8SMzLjZ536IPwMFAUQNXPr+GAsdqeOwshEC2QYAoPOWAiQm0EF/
|
||||
FWIAQUplk7JWbyRKAJ92ZJyJpWfzb0yc1s7MY65r2qEHrg==
|
||||
=1Xvv
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; Two clear text signatures in a row
|
||||
(define msg_clsclss_asc_multiple (string-append msg_cls_asc msg_clss_asc))
|
||||
|
||||
|
||||
;; An Ed25519 cleartext message with an R parameter of only 247 bits
|
||||
;; so that the code to re-insert the stripped zero byte kicks in. The
|
||||
;; S parameter has 253 bits but that does not strip a full byte.
|
||||
;;
|
||||
;; Note that the message has a typo ("the the"), but this should not
|
||||
;; be fixed because it breaks this test.
|
||||
(define msg_ed25519_rshort "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
Dear Emily:
|
||||
I'm still confused as to what groups articles should be posted
|
||||
to. How about an example?
|
||||
-- Still Confused
|
||||
|
||||
Dear Still:
|
||||
Ok. Let's say you want to report that Gretzky has been traded from
|
||||
the Oilers to the Kings. Now right away you might think rec.sport.hockey
|
||||
would be enough. WRONG. Many more people might be interested. This is a
|
||||
big trade! Since it's a NEWS article, it belongs in the news.* hierarchy
|
||||
as well. If you are a news admin, or there is one on your machine, try
|
||||
news.admin. If not, use news.misc.
|
||||
The Oilers are probably interested in geology, so try sci.physics.
|
||||
He is a big star, so post to sci.astro, and sci.space because they are also
|
||||
interested in stars. Next, his name is Polish sounding. So post to
|
||||
soc.culture.polish. But that group doesn't exist, so cross-post to
|
||||
news.groups suggesting it should be created. With this many groups of
|
||||
interest, your article will be quite bizarre, so post to talk.bizarre as
|
||||
well. (And post to comp.std.mumps, since they hardly get any articles
|
||||
there, and a \"comp\" group will propagate your article further.)
|
||||
You may also find it is more fun to post the article once in each
|
||||
group. If you list all the newsgroups in the same article, some newsreaders
|
||||
will only show the the article to the reader once! Don't tolerate this.
|
||||
-- Emily Postnews Answers Your Questions on Netiquette
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iJEEARYIADoWIQSyHeq0+HX7PaQvHR0TlWNoKgINCgUCV772DhwccGF0cmljZS5s
|
||||
dW11bWJhQGV4YW1wbGUubmV0AAoJEBOVY2gqAg0KMAIA90EtUwAja0iJGpO91wyz
|
||||
GLh9pS5v495V0r94yU6uUyUA/RT/StyPWe1wbnEZuacZnLbUV6Yy/aTXCVAlxf0r
|
||||
TusO
|
||||
=vQ3f
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
;; An Ed25519 cleartext message with an S parameter of only 248 bits
|
||||
;; so that the code to re-insert the stripped zero byte kicks in.
|
||||
(define msg_ed25519_sshort "
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
All articles that coruscate with resplendence are not truly auriferous.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iJEEARYIADoWIQSyHeq0+HX7PaQvHR0TlWNoKgINCgUCV771QhwccGF0cmljZS5s
|
||||
dW11bWJhQGV4YW1wbGUubmV0AAoJEBOVY2gqAg0KHVEBAI66OPDYXKWO3r6SaFT+
|
||||
uxmh8x4ZerW41vMA9gkJ4AEKAPjoe/Z7fDqo1lCptIFutFAGbfNxcm/53prfx2fT
|
||||
GisM
|
||||
=L7sk
|
||||
-----END PGP SIGNATURE-----
|
||||
")
|
||||
|
||||
|
||||
|
||||
;; Fixme: We need more tests with manipulated cleartext signatures.
|
||||
|
||||
;;
|
||||
|
Loading…
x
Reference in New Issue
Block a user