diff --git a/crypto/keyring_message.go b/crypto/keyring_message.go index a38656e..37f8edf 100644 --- a/crypto/keyring_message.go +++ b/crypto/keyring_message.go @@ -142,15 +142,15 @@ func asymmetricDecrypt( return nil, constants.SIGNATURE_NOT_SIGNED, err } - if verifyKey != nil { - processSignatureExpiration(messageDetails, verifyTime) - } - body, err := ioutil.ReadAll(messageDetails.UnverifiedBody) if err != nil { return nil, constants.SIGNATURE_NOT_SIGNED, err } + if verifyKey != nil { + processSignatureExpiration(messageDetails, verifyTime) + } + if verifyKey != nil { verifyStatus, verifyError := verifyDetailsSignature(messageDetails, verifyKey) diff --git a/crypto/message_test.go b/crypto/message_test.go index ccc6e47..8161c43 100644 --- a/crypto/message_test.go +++ b/crypto/message_test.go @@ -102,3 +102,35 @@ func TestBinaryMessageEncryption(t *testing.T) { assert.Exactly(t, constants.SIGNATURE_OK, ver.GetVerification()) assert.Exactly(t, true, ver.IsValid()) } + +func TestIssue11(t *testing.T) { + myKeyring, err := pgp.BuildKeyRingArmored(readTestFile("issue11_privatekey", false)) + if err != nil { + t.Fatal("Expected no error while bulding private keyring, got:", err) + } + + err = myKeyring.UnlockWithPassphrase("1234"); + if err != nil { + t.Fatal("Expected no error while unlocking private keyring, got:", err) + } + + senderKeyring, err := pgp.BuildKeyRingArmored(readTestFile("issue11_publickey", false)) + if err != nil { + t.Fatal("Expected no error while building public keyring, got:", err) + } + + assert.Exactly(t, []uint64{0x643b3595e6ee4fdf}, senderKeyring.KeyIds()) + + pgpMessage, err := NewPGPMessageFromArmored(readTestFile("issue11_message", false)) + if err != nil { + t.Fatal("Expected no error while unlocking private keyring, got:", err) + } + + plainMessage, verification, err := myKeyring.Decrypt(pgpMessage, senderKeyring, 0) + if err != nil { + t.Fatal("Expected no error while decrypting/verifying, got:", err) + } + + assert.Exactly(t, "message from sender", plainMessage.GetString()) + assert.Exactly(t, true, verification.IsValid()) +} diff --git a/crypto/testdata/issue11_message b/crypto/testdata/issue11_message new file mode 100644 index 0000000..3db95a4 --- /dev/null +++ b/crypto/testdata/issue11_message @@ -0,0 +1,18 @@ +-----BEGIN PGP MESSAGE----- + +wcBMA4JttJqRS09RAQgAY9TSYXHAT76rrpihX3db4BLnnSjPqWhxysWE8HI6d5tx +ZLjxDGE81CO/t0hpokwId7g2GImLHL2LRiwn/V+7AZcF8byX+gIpQsG3TLY/LwZ+ +i4FKG7WwZzM50nUNKt6kczvF7QVDd4GLB6GgrvoTvwAhqRGs7EuMHTNAciq7AgBA +D6XZbzcG77i367+X6nRLNMujH+CNNlKNKkV7bIQYzHteplQUvDrF+e4+lOOVuc+r +ZUKgEyIJrwSUoTU01tJD8M0iRIlKQsBrO7QpjGNna5HDi9dG6UQcKX2wuvkxajHt +3UcPDNjNKapXpshUydnmt6PXnW5IV0aOaZcS9l95SNLAsgGuStjEic6pru368BYO +S3j63CG24KiB55eNMdMhZhjgR8ngHDGw/rAWKZKJ0DjI+UV7FJP3GS/y1/KjGEv1 +ii7FqPIdiKAUO2f5gtBsstyNmaKpwswP5XP7n9sf76rsoSr2yYSc+nWuAOpyTL0c +Q69ln+UvxvRih6x8h7Cbn6N6ex7Jo7p9KMgXJ3gYAOL8WgeF2ZYCrdqNFvH8ManY +kqZgnrng8SvTaEpLVIwX8heugVrgT6wdQBpIhmuPIR2jez9Pv8fpg21HHuGId2PV +wl7LqgxAWuDBa9BXilR8gR7G6AlK37KUgzAJ6E0/yzQ7RLaECtSzVOZZq6p99tRi +SEQxKGd+oTAnsfEm2stTLHblvHxYn2tEKc2pv+v962CoDz4+iNJQdonBaDhRP8jw +1BkzrhNvMZGl9XTO02SUboRufyQsOLq7ba7kmNoLSFOsdj5ugSCAHGFra2zf1Drt +jqkiw78nef9bedQ5VMYcQMq7UGo= +=zA0T +-----END PGP MESSAGE----- diff --git a/crypto/testdata/issue11_privatekey b/crypto/testdata/issue11_privatekey new file mode 100644 index 0000000..ed761e1 --- /dev/null +++ b/crypto/testdata/issue11_privatekey @@ -0,0 +1,60 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GopenPGP 0.0.1 (ddacebe0) +Comment: https://gopenpgp.org + +xcMGBFz2c2cBCACddbzJF5GCd5NjCw+LX/Uva5Y9Rjxawtp9wlYsec7G1w4Tiqdb +KOojOKEJPVhbJeHnZkLpW/sbgFJUnI+ogZAGAOcbf+3+AmRcliOxc9xGFjNOE8xv +OFUvgabjFJ1k/VnwmGHfahMJ4OaPxN6ZR8VPveDJfJyF2JVpdvfpG70jSPeMn16U +nr2JiKGN0/3Y3NoVSp9x2vHQhTi9XAd3/1Rv6UzgJHu2rQBrwfcGvNmeRoMdpQDu +tL6QnhSNcVuGj/funXJLGJREFPmyrpnNOn40l46vpITmkkYKV+bThUWYy3ryFe52 ++bbErQX/DPJbfzn1UTiodOfW0LlrTZF2UULDABEBAAH+CQMIkhKcZjGfcLlgndyK +2dbbmEjigl1LX+5JE4wlXhVjch0bctn5isAGtYyYQ0a+K6OjrAh6xN8E+K+utq+5 +zWrCeddWVH+WOjqrYxTR9bcRcLGy9Ofuqi9aCD+qalV+stLzq5iSJecBuoatleQI +DwvZ634DIcRibnqm22FMjeBTP4P/B58pTKNWRCD9HrD7p5JQ+HfUZGmvx742Ft2x +hJo2vnkSKnGre5V1L6RpWvogX7JuxeZSbbYSdJ/cJ55hfQykeN9CkBpscNXr0UeM +dpqAT2udsAUHW1tbhd7lMgRJ2JQEVbyR8WPg/B2dV5RJXxKgMsr+g+L47MkLtcfF +tmmzgX6brSqiUkzN1TYE+HSKcgz8PSeflaaZh1ngThGXCjOEdTI00gUeCSNeQEHP +Yka27fnVkAquhcOc+8kIDoWloEWqXX53rtIkknsPTljs9oR5EdrivGEKVHuwpBoI +CYf1ASDqnhrN+Bcre8lc9rYA1Qm3qV2bkrVneMXrU0kf6N4Jfu+/00ipfSDVn6Cr +gjIOQcjYCpbvIB8qDWRNWpjSD7t9Emil7ThNaUd0WK09njoxeBnQn3ymOtRRhfHG +ZLhXdb5OQSiMJ3wl6b15C/ka5KIp5u/3yDLklBDr4ObhRNj6yp0MIhHz8RXlk2++ +nTeBQTJT8TApJUE2z9fyIegO7751H3x4FQF90jpLGeXexpmu5i59n3+f8OtEOPrn +PllXcn/0t6rRT5NN4C12jVt8dhgHuWova6x0bs1EG4bWVCdRkNCLCgqMjwgjUiu5 +JLz7x+9EtPKMsuue6Jh6SOWK0e2wQ7J6WH7EQXleXOlE8jMPwjHlhPslly2V62Qh +nUV6gJ+ThzWmGdrp7NoKApfkA180lfe6dwU8lS1ds+IbvAuwCjkVAkeAn180bQ73 +eJLUAHWBphwdzS91c2VyMS5uYW1lQGhvdG1haWwuY29tIDx1c2VyMS5uYW1lQGhv +dG1haWwuY29tPsLAaAQTAQgAHAUCXPZzZwkQKk019iASvDsCGwMCGQECCwkCFQgA +AObPCAALuflJpipyXvjqMfU9yd4qe4KxXhVc88Ui2ozeUUnGff94vC3/ViWcB9dF +K4WSm/mi0v98dc007QhD5/XSsq5GoxINVAiysivggZu6aZusiUDX/lOPK1Zs+qdH +udys/f2e1HW2rvNgur7nxXCuqMbkXWnknPpnGwy2tGWuIjwj9xpSmjE4Psk6/dQH +Fk//oD1VPdT2FUyd0yyAkDvZ6Z0d2OJZXORa+vIvj9pUBDc9Di0Nsrx0n0s551hB +hEWjYAnBO//1kh/xZ45PlkRtdZkizpP6BI1KaB2ZDl7tX+EBVQDIEO7mg4TnIkWB +4xWV+6GWklIpXwiUDrrDjt8RnzTfx8MGBFz2c2cBCADHgEFVouZHpN9FYjMckql+ +SIQWzTpQL8WdnIdAexoxDXma5KnvTYXFoKzA7aY30Euq/r8Dxxa/vbP23pgOJyCc +34QlGCAfNQogacMaXoxkJO9oImlVvoIfg3a65izfnvRsK7dxAF/2MsRs4J89XmzF +yAg7+xG8o2mA0reUPv0r+8bXaaJxlpfdcvISaU2AF80DetywiQ37bcQzQGeArEoo +AUOEGhwezFNev7OuL0y+FJ0Ys1d3UcQwmWNSD8DOFYe8r8klgDPZmnosrH7zvtQe +KEOq2/lv0G5L7HZDuUzkFG9uUeA5UiBbBryaP2XzTxlMJDYOrXaOWI80wkxW5Fbr +ABEBAAH+CQMIoIATh1Zvl7hg7+iDFgHBNjzqSxx84TyxSnoymXSfAUS8JfeEFV1x +0YfM4pxUIr/PgU/iUzM+T7x3LVZVMEGo+Mpl9D2t4W91CYdbJtfPBr+ivqX6VQPC +47vG68VNpEuOSk1GnYx8dmkT6YLxnyzYkYXHDIpfJJ3wA7relt3XOt/oExiuJdKH +HdNawfS2mpfnslN/NTll8dDQzIjJBjdqWM+w+MaPbtyjCqpvk+EXnYnOYuYV4ejk +aIJtiI4XtoRoov/a6OKk+4dRy+iHy8gfmiBxHrTb7KZCyMvT1xM27/UzAXiX8Pv9 +8wJRZsIhsmd74P1TrxW2X/MjfIBSu1MOKAO7wYxvGcVb0ugvjC8GNoFUBk+aOFS+ +u5nDJHgyoSAlT2othvwDKqkm7mzFPxXyxPNXpj85yBmofxif/4aKkyI5VgXsRoau +PZ0YSSsCsV+Be0vfKAbGxHXs+e+elhL1pqbeyQbEG9WYSbbp9T+vKFanDPlSso0j +ktVnlsLEOaSSE7oIxs9M09yQnRtYps5XFCCT2knR8A8+0z+TDaU+w9WWn9ocl3Uo +1q6CAg/DAIShHecsRHLcSf+9+r6o64Ng0NAvOFXGaTMC3yFt2UrIV+Ari75gRzof +GKqY9r1335kxtEsaHg9Tkq02x9L9PZTS6VuWEgNXz9BXHTJs9qX1XFhyhb8sVGah +FMBRP7lxYoU2zD4wdugmaI6dNxCXf5qG4+sbGXJOxX+TdEk7jexeVgFe3IoEyT4p +LqKjMfXcqppFVnRu0z2uoSf0NEHH0FRtgKjvJzN9aIFgPv96PPKU051VlfX2SbKh +hZFBmHaDupVedBVV1Kik6eRRKhBaoSAX8Cj+UpY5a9wejXwlN/WIdUqxtTb4ZXC2 +S3GfiXtk243gEeo1i7uIrNqL47HV/ID0Yw/dAIoFwsBfBBgBCAATBQJc9nNnCRAq +TTX2IBK8OwIbDAAAhT8IAApBZ3mc0wN+Efd4VS7WatHNAyGDGL7NGG8saqIBQ3/p +7Cb80ql9i1gnUqKW4NDcWGTNwnEwf06tFmWZ93SwmkXYliNK4Uc/W4Lt6U5nSvby +PfVOoqJO6NXVXrCxX83Jfp+qGbtpyuXAObPkwEpjRs3cm+FfNXYlhvP86DN6usBH +d63ZJUPyuefvMxwAr3FJzpjKv+UQqYL6o8Hzqba3ZBtmVCnmhACBVAIQpeEKOXPz +Zg3XO4aX4Q1lEDvIYFwI142vxMLCAwI0Vo0fEjS5sQa1DMckcpe1Gxhrbw85cS2A +OG0zNY9+3gqrVl5G6mld763eciP7jvZdYeacR6tgccM= +=GKOq +-----END PGP PRIVATE KEY BLOCK----- diff --git a/crypto/testdata/issue11_publickey b/crypto/testdata/issue11_publickey new file mode 100644 index 0000000..c275f6b --- /dev/null +++ b/crypto/testdata/issue11_publickey @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +xsBNBFz2c2cBCADYDbvxzmxrkjM0EKEHDc00b7gPk8z9bXgEV783Qc+MJZmUb2pk +VmBaH0d6ldJ9djJY1ljfBOakn4fGd623uYtgEJKxSQ0FiMwFfiih0hYJ84fmW7g7 +EqGlnk9dBzjYWXAOqpkHSDJlAB/rY6jKsAYgVmGQqvdF7SWST512WGoSC4A6sMIC +KuNmQNMQ3li9O02wNgvUlZjpn7LBGuoCw9aHjQ72MXSnd4gwt6ds48A5zcXKc8ML +TRjo2BIKli+MPyFW9uATfYFkv55KBIFk7JHL/iWhP4m1CQa9xgsoV1C81oOxUqCf +CFqfTQ/xhUsdnhdYhsA+whE5mfTg3Hc2fBpBABEBAAHNK3VzZXIyLm5hbWVAZ21h +aWwuY29tIDx1c2VyMi5uYW1lQGdtYWlsLmNvbT7CwGgEEwEIABwFAlz2c2cJEGQ7 +NZXm7k/fAhsDAhkBAgsJAhUIAAD2OAgAE23JjWTSiZtVinyXyuUYfG0OEaBVopBz +lNp25dTcVEBwK/UCtiVEFfHSW4LExYWMICwQTRaE2ViWGASI//ZZZL1ADozqVrZJ +YjaUrX50wIMjpazkTsulEdZ7bA/MvV02yyVczC0slc4Q7D70Ley0UKwDlL+1PGj8 +Bn8IWd0yBng+/weLCLN7rGCRXdgTe3K+M5enhOMhMaVXElfkEUYDnNIVs7begOWd +NB6RAIF9e2TP9z1daj7qjzmqePq9HkykbZXSrrrQzbeYqKvdHn9PO5Mtsaf1r1DH +OhG0FMU//ZyG+weEQnB5cuDT58+GGaf68AgNalN1e83kqJRTVvqiYc7ATQRc9nNn +AQgAtBDZ1zTTss3tcGDRllycQlahHjMeDkDZbyk4r+h/D+xiMRhrYkgfCg8dZIef +SJTJWfqv3BdppcdhnnSBLjFvsXmqqmPDklUM9SqmKcXRKWvQo8/MgOX4uRQJfJ2l +uYSba6dCsCl2qHpgv73PH6BK9dllMPXCcdYZjhvKCc9AdD4rL6iVnsqtHcyWHVtZ +JaRQWi40nE7w8idkhN9zG/i0Ty25AnaeYyywiOSmaJm0IYIdbw4FPOnLqrT7jlDF +s77w8xrWLog5XLFrK2dW+kUBA9qHaBNQc8nlLOzWUKJm0rDnaxR1sJ9YLT0mKCNW +RvjGfsUwhQi2095pXoMvNwjMvwARAQABwsBfBBgBCAATBQJc9nNnCRBkOzWV5u5P +3wIbDAAAJXwIABxmfurNk66yBzlxGmhl9SirBy6RG5amJ08jcSru2LkoNnYHgmQj +MY2iLvzC4Qw1Q3Iac3oJWHVKqiHlyVUP4PSCbMDo1HScGfKtFRRDNJmNaxQfvcAv +dD4xa4L2rT2/ghKgIMRC7U/3XfRPKL+TZTxV5U90tjyIAPEmf+ZdCwoktrCrEo6w +AgC5sfEcCPWww6MFWZNqEs0NvFYDsPOJRMdJFYW7BzhkUUasBbF2qNf7L7LmwnfV +V1SvIG1FLu/+kUnZriD28dUYmbJbjb9CfZU+2m/KCkcyj/qacdODxxH0Jirta32y +o93mjX+Os6LC02tNBzXtzMLnrpJYDDAfb2A= +=vMgh +-----END PGP PUBLIC KEY BLOCK-----