@@ -2,12 +2,16 @@ package openpgp
22
33import (
44 "bytes"
5+ "io"
56 "strings"
67 "testing"
78 "time"
89
10+ goerrors "errors"
11+
912 "github.com/keybase/go-crypto/openpgp/errors"
1013 "github.com/keybase/go-crypto/openpgp/packet"
14+ "golang.org/x/crypto/openpgp/armor"
1115)
1216
1317func TestKeyExpiry (t * testing.T ) {
@@ -368,6 +372,30 @@ func TestOelna(t *testing.T) {
368372 testKey (t , oelna , "oelna" )
369373}
370374
375+ type timeoutReader struct {
376+ r io.Reader
377+ t time.Time
378+ }
379+
380+ var errTimeout = goerrors .New ("timeout" )
381+
382+ func (tr timeoutReader ) Read (p []byte ) (n int , err error ) {
383+ if time .Now ().After (tr .t ) {
384+ return 0 , errTimeout
385+ }
386+ return tr .r .Read (p )
387+ }
388+
389+ func TestCorrupt (t * testing.T ) {
390+ sr := strings .NewReader (corrupt )
391+ tr := timeoutReader {sr , time .Now ().Add (5 * time .Second )}
392+
393+ _ , err := ReadArmoredKeyRing (tr )
394+ if err .Error () != armor .ArmorCorrupt .Error () {
395+ t .Fatal ("expected armor.ArmorCorrupt, got " , err )
396+ }
397+ }
398+
371399func TestBrentMaxwell (t * testing.T ) {
372400 testKey (t , brentmaxwell , "brentmaxwell" )
373401}
@@ -3882,6 +3910,32 @@ CgkQPz43h/BcVhvFKACfXS4YmNzOAwDZqVUIIVJ83xpdcpgAoP3MfQMG2T+sCpzKClSgo9BdQ9SG
38823910
38833911-----END PGP PUBLIC KEY BLOCK-----`
38843912
3913+ const corrupt = `-----BEGIN PGP PUBLIC KEY BLOCK-----
3914+
3915+ mQGiBEAP4PcRBADDRPKYk4zN+8bmKufn++lYvyRXy2QvT+CB5+eqlZu+ub5AQQdYXP440J1W22Fk
3916+ HCiMBRY8AK7XxNB7RfixHU57fLBHdj9QfpeeRdAr7z9QAAOtBdVwa9sjVJV5iJigIMgrDfzalfa+
3917+ 4jfAyfgL7X5gSwMfbtSrGfjoGGmXxI5aEwCg/3BidcIrFxoscJI4imq/K+nNn2cD/RIT6kbdS0WK
3918+ Fc47ibu2/Y8xtV5G9vdhgdKUr1ujr2xJyRRC3Eb+4GhAFRXtqbTZ6thvFIdHjbwafKoeDSzcpgo+
3919+ nnFlPp0yfOC5WYJ+IiS2FEZbv9QBOw4L9t8T4y0vzD6eujcwSLO22/M5Q5yF2oanbk9Yp/8S7/m2
3920+ NdB3fNLLA/43kEJIgAYkSv51Rlci/nLVKrAYcyEMQt9D2W7LzIlR3JpxvFVjhfS1nyJuEqM2RRdQ
3921+ mJl6aL9WVQpqQxC1xO26A9puOWbhw232A1Gd7jRz77Ue74l3wKj/ZPXW90NaGQ8WK9V8PFrVxkOL
3922+ BGkf0F+pFAn32Vj8D0HOxGBxZbGpNbQWb2VsbmEgPG9lbG5hQG9lbG5hLmRlPohXBBARAgAXBQJA
3923+ D+D3BwsJCAcDAgoCGQEFGwMAAAAACgkQPz43h/BcVhsw3ACgjMu7dbscsEHTqUsgwY8bgFloDoUA
3924+ oL+YMsxdSLEij+RaS6Yq/1sHxZztuQINBEAP4PcQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFu
3925+ uUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZ
3926+ zf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd
3927+ 5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv88
3928+ 4bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1Xp
3929+ Mgs7AAICB/9Hxkw9SnbtECQ2LXR0nvhagTaq2CXPqpDtJ4MwRD+oJL4DQaY7EK7hii8eDTq8umxT
3930+ nICdJcxC9hFgXA4ob0NpHwclbmyEHywj4T7gkwOe+jCzwP6MA965tg7O+pqiwdzAlPVTZFMoEMYz
3931+ dvkXNLamRcc1bVUv7YvpVTv+O/BrpZ6P+x4GHGfNl4W3PtQL+O8u2XmoZXh6+tx6PIgNNGxODrWx
3932+ 0vYhLzBShsXMALrxmPe5DYPjAd2BR8frpDnawB0GNg5ll2gmoeJOLsYG2/MRa+7CobPja1Fnfop0
3933+ H/71ymWlaxPzMapNVQRw3vdBdGdp55srSFRDvLUHmm1tpHX3iEwEGBECAAwFAkAP4PcFGwwAAAAA
3934+ CgkQPz43h/BcVhvFKACfXS4YmNzOAwDZqVUIIVJ83xpdcpgAoP3MfQMG2T+sCpzKClSgo9BdQ9SG
3935+ =w6Zv
3936+
3937+ `
3938+
38853939const brentmaxwell = `-----BEGIN PGP PUBLIC KEY BLOCK-----
38863940Version: GnuPG v2
38873941
0 commit comments