edwin 03/08/23 18:17:50 Modified: openpgp CHANGELOG.TXT openpgp/src/cryptix/openpgp/test/all TestOpenPGP.java openpgp/src/cryptix/openpgp/util PGPArmoury.java Added: openpgp/src/cryptix/openpgp/test/interop PGP5Interop.java openpgp/src/testdata PGP5_cls_DHDSS.asc PGP5_cls_RSA.asc PGP5_enc_DHDSS_sig_RSA.asc PGP5_enc_RSA_sig_DHDSS.asc PGP5_secring.skr PGP5_testkey_DHDSS.asc PGP5_testkey_RSA.asc Log: PGP5 interop testing: - Fixed support for cleartext signed messages that lack the Hash: header. Revision Changes Path 1.24 +1 -0 projects/openpgp/CHANGELOG.TXT Index: CHANGELOG.TXT =================================================================== RCS file: /home/cryptix-cvs/cvsroot/projects/openpgp/CHANGELOG.TXT,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- CHANGELOG.TXT 23 Aug 2003 11:37:55 -0000 1.23 +++ CHANGELOG.TXT 23 Aug 2003 22:17:49 -0000 1.24 @@ -31,6 +31,7 @@ - Fixed a nasty bug in the old checksum code for secret keys that would result in failure to decrypt longer RSA keys (I estimate this to happen for RSA keys over 1600 bits). +- Fixed support for cleartext signed messages that lack the Hash: header. 20030205 snapshot 1.16 +2 -1 projects/openpgp/src/cryptix/openpgp/test/all/TestOpenPGP.java Index: TestOpenPGP.java =================================================================== RCS file: /home/cryptix-cvs/cvsroot/projects/openpgp/src/cryptix/openpgp/test/all/TestOpenPGP.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- TestOpenPGP.java 23 Aug 2003 10:35:57 -0000 1.15 +++ TestOpenPGP.java 23 Aug 2003 22:17:49 -0000 1.16 @@ -1,4 +1,4 @@ -/* $Id: TestOpenPGP.java,v 1.15 2003/08/23 10:35:57 edwin Exp $ +/* $Id: TestOpenPGP.java,v 1.16 2003/08/23 22:17:49 edwin Exp $ * * Copyright (C) 1999-2001 The Cryptix Foundation Limited. * All rights reserved. @@ -27,6 +27,7 @@ public TestSuite suite() { TestSuite all = new TestSuite("All OpenPGP tests"); + all.addTestSuite(cryptix.openpgp.test.interop.PGP5Interop.class); all.addTestSuite(cryptix.openpgp.test.interop.PGP8Interop.class); all.addTestSuite(cryptix.openpgp.test.interop.ZLibEOFTest.class); all.addTestSuite(cryptix.openpgp.test.util.PGPCompareTest.class); 1.1 projects/openpgp/src/cryptix/openpgp/test/interop/PGP5Interop.java Index: PGP5Interop.java =================================================================== /* $Id: PGP5Interop.java,v 1.1 2003/08/23 22:17:49 edwin Exp $ * * Copyright (C) 1999-2003 The Cryptix Foundation Limited. * All rights reserved. * * Use, modification, copying and distribution of this software is subject * the terms and conditions of the Cryptix General Licence. You should have * received a copy of the Cryptix General License along with this library; * if not, you can download a copy from http://www.cryptix.org/ . */ package cryptix.openpgp.test.interop; import cryptix.message.*; import cryptix.openpgp.*; import cryptix.pki.*; import junit.framework.TestCase; import junit.framework.TestSuite; import java.io.*; import java.util.*; public class PGP5Interop extends TestCase { private static final String FS = System.getProperty("file.separator"); private final File _testdir; public PGP5Interop(String name) { super(name); String td = System.getProperty("CRYPTIX_OPENPGP_TESTDIR"); if(td == null || "".equals(td) ) { _testdir = new File("." + FS + "testdata"); } else { _testdir = new File(td + FS + "testdata"); } } protected void setUp() { } protected void tearDown() { } public void testPGP5Interop() throws Exception { FileInputStream in; Collection msgs; KeyBundleMessage kbm; EncryptedMessage em; LiteralMessage lm; SignedMessage sm; Iterator it; KeyBundle prvDHDSS, pubDHDSS, prvRSAleg, pubRSAleg; MessageFactory mf = MessageFactory.getInstance("OpenPGP"); in = new FileInputStream(new File(_testdir, "PGP5_testkey_DHDSS.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); kbm = (KeyBundleMessage)it.next(); pubDHDSS = kbm.getKeyBundle(); in.close(); in = new FileInputStream(new File(_testdir, "PGP5_testkey_RSA.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); kbm = (KeyBundleMessage)it.next(); pubRSAleg = kbm.getKeyBundle(); in.close(); in = new FileInputStream(new File(_testdir, "PGP5_secring.skr")); msgs = mf.generateMessages(in); it = msgs.iterator(); kbm = (KeyBundleMessage)it.next(); prvRSAleg = kbm.getKeyBundle(); kbm = (KeyBundleMessage)it.next(); prvDHDSS = kbm.getKeyBundle(); in.close(); in = new FileInputStream(new File(_testdir, "PGP5_enc_DHDSS_sig_RSA.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); em = (EncryptedMessage)msgs.iterator().next(); sm = (SignedMessage)em.decrypt(prvDHDSS, "TestingPassphrase".toCharArray()); assertTrue("Correctly signed", sm.verify(pubRSAleg)); lm = (LiteralMessage)sm.getContents(); assertEquals("Decrypted data", "PGP5 Test", lm.getTextData()); in = new FileInputStream(new File(_testdir, "PGP5_enc_RSA_sig_DHDSS.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); em = (EncryptedMessage)msgs.iterator().next(); sm = (SignedMessage)em.decrypt(prvRSAleg, "TestingPassphrase".toCharArray()); assertTrue("Correctly signed", sm.verify(pubDHDSS)); lm = (LiteralMessage)sm.getContents(); assertEquals("Decrypted data", "PGP5 Test", lm.getTextData()); in = new FileInputStream(new File(_testdir, "PGP5_cls_DHDSS.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); sm = (SignedMessage)msgs.iterator().next(); assertTrue("Correctly signed", sm.verify(pubDHDSS)); lm = (LiteralMessage)sm.getContents(); assertEquals("Signed data", "PGP5 Test", lm.getTextData()); in = new FileInputStream(new File(_testdir, "PGP5_cls_RSA.asc")); msgs = mf.generateMessages(in); it = msgs.iterator(); sm = (SignedMessage)msgs.iterator().next(); assertTrue("Correctly signed", sm.verify(pubRSAleg)); lm = (LiteralMessage)sm.getContents(); assertEquals("Signed data", "PGP5 Test\r\n", lm.getTextData()); } } 1.22 +8 -6 projects/openpgp/src/cryptix/openpgp/util/PGPArmoury.java Index: PGPArmoury.java =================================================================== RCS file: /home/cryptix-cvs/cvsroot/projects/openpgp/src/cryptix/openpgp/util/PGPArmoury.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- PGPArmoury.java 4 Feb 2003 13:23:30 -0000 1.21 +++ PGPArmoury.java 23 Aug 2003 22:17:49 -0000 1.22 @@ -1,4 +1,4 @@ -/* $Id: PGPArmoury.java,v 1.21 2003/02/04 13:23:30 edwin Exp $ +/* $Id: PGPArmoury.java,v 1.22 2003/08/23 22:17:49 edwin Exp $ * * Copyright (C) 1995-2001 The Cryptix Foundation Limited. * All rights reserved. @@ -26,7 +26,7 @@ /** * Methods for armouring and dearmouring of messages and other objects. * - * @version $Revision: 1.21 $ + * @version $Revision: 1.22 $ * @author Jill Baker * @author Ian Brown * @author Gary Howland @@ -290,14 +290,16 @@ "-----BEGIN PGP SIGNED MESSAGE-----\r\n" )) != -1) { // Get clear text section - startPos += 38; + startPos += 36; int sigPos = armouredMessage.indexOf( "\r\n-----BEGIN PGP SIGNATURE-----\r\n", startPos ); // Now deal with headers - msgPos = armouredMessage.indexOf( "\r\n\r\n", startPos ); - propString = armouredMessage.substring( startPos, msgPos ); - stringToHeaders( propString, clearheaders ); + msgPos = armouredMessage.indexOf( "\r\n\r\n", startPos-2 ); + if (msgPos > startPos) { + propString = armouredMessage.substring( startPos, msgPos ); + stringToHeaders( propString, clearheaders ); + } String text = armouredMessage.substring( msgPos + 4, sigPos ); 1.1 projects/openpgp/src/testdata/PGP5_cls_DHDSS.asc Index: PGP5_cls_DHDSS.asc =================================================================== -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 PGP5 Test -----BEGIN PGP SIGNATURE----- Version: PGP 5.0 Charset: noconv iQA/AwUBP0fcJRNWsa3JXa5QEQLflACg8pMS12Hhl/Mxqg1msf5Z/OgTJlsAoLr/ gsTJuErTlrAhNGTMqp7gzmpw =Vs38 -----END PGP SIGNATURE----- 1.1 projects/openpgp/src/testdata/PGP5_cls_RSA.asc Index: PGP5_cls_RSA.asc =================================================================== -----BEGIN PGP SIGNED MESSAGE----- PGP5 Test -----BEGIN PGP SIGNATURE----- Version: PGP 5.0 Charset: noconv iQEVAwUBP0fcfMB94gnosg+tAQH/gAf/cCeNfl4D3uWYXZWQeQAbpIeSpAnRrGAe 0r013RLOn14Kmz7gstQU3s3px0w8EiYE4QKo/5VkB47opEg/IQOqzYOEdBKaTWY7 x8kTxxrfV9AnT7qlGH0EuoHCtKfdrS1j5ZSWV0S7YbFRDvH6ClEtRzSinAulVuo+ bppWztUuzBsDWVdolvUpWRPy23+9w91en5fc24Ucr3JBj3OOX7XDNBUTMK6yhj2A p0vAZDrRmnsMMpp0z0lVvHB3OmSqlKWvfQAvRiL+ZyWGlMBH4fRo2uzmWFNFGTFE iGQpN7HAnJ0mmmZNT50bjY3UJt1v1DNXHM+wnWGMDYhCIzfFRU2Edg== =9O+i -----END PGP SIGNATURE----- 1.1 projects/openpgp/src/testdata/PGP5_enc_DHDSS_sig_RSA.asc Index: PGP5_enc_DHDSS_sig_RSA.asc =================================================================== -----BEGIN PGP MESSAGE----- Version: PGP 5.0 MessageID: MKP1D1aGUp85rh+pO3FRVBlaVlp0Stx1 qANQR1DBwU4D6xND7T8c6hMQB/40m5gHJJQ+1iO2IZoogRMCJWf9B8xXGjjuijUm bsDmzLtBrQa6DlXwbB4yJovfOnEJ1raTgO39GRe4Bk3yeyqerrdfq6ZH15to7ErI SuaGmTv9k5B2GMEdtIUnwRKFMxNVx+Wgexfwa/VQ3k6yOFqRO832uoMmW2RQnaRL O4Xoqs41A/qqC3aebX2K296XiCLOUSjaL4qv2wY6gUjoW82fx7an76P7X7f/SNha 0S5+F1ROulX4+tTJ/1DILnZ0iI73Vrw3S8O8WgxYQ4jdWvytsTHbSHT/rX8EEypJ 92w/P7gqkB369+Q6m7XaM0GX+xgseVtStI875onSbwqdEMNnCADYoZHfoD6Pp4MC Hof4+bMV9ZTrB322aIgYX00ZDFVsMTbjsNWM+I2bpR3WxQeqYJY+pejRe1mPN0cg A/lTYmLLJXASzKY8ZDaLcFCS2yjOEStaS2JQEKhgkjnX7ZGZG9LdBPRrJyAVeAG4 JWdei24TqurLBTbZP56n6beElAac9BRQtE9DsTZcmqG5A/R0PePwRNhQgIHH3lvM 11rSboD+n+ygGJoQSlI+2C8oIjdhBXSnNYzJQrwqcJ8Y230Kt5Fnx+RNHHYxbCQB KhnbNLgI1DraY9tH+Gq6Zd7gnpJcBmFyrwoeKhVnwF9t4J+pUlPyzGqO6RxU0vMO 559dnD+UycCQIf64l0dNbV07Ay4gRIzZ/iQwNyHI1DhGtsy66R5HqF4vSynB4r1G 9GuqvdqZQsFG9Rv5dAVUAoijRDA34I7E0Xc33Oti8YdkO9deJk7nPEm/f9vWTxVy qEOOGDaPrIodA+LIlZ31my1sdH7YzRkscua+KmpnomMMOAIlR7tpTonBVuCanKJ8 rKKfAlVG3KUORW2PSY+ZKm8musqlCtl57xRlMftKPTP2sfbG4gd2o6UmUWC+iFYt SS2WxgxtCBDyVxTQ1SJr8FEE0+JepTIW81miYRaF6CycJYPxWzNiGhvOuP2e2pN/ +2jRe0fcgwo3jEj+AFQn2O2GpZ8AwcK3xlh0ezRR4M+kXt3ObtNZNT9PdtliR1ER O6j9FYLzzPmXAbEMdMoJ8DXW5O4RXk3U2X7nWbH/3GifPe4cEknBwFsgdh6N+sn5 jA9y2LMsePE8 =WOKP -----END PGP MESSAGE----- 1.1 projects/openpgp/src/testdata/PGP5_enc_RSA_sig_DHDSS.asc Index: PGP5_enc_RSA_sig_DHDSS.asc =================================================================== -----BEGIN PGP MESSAGE----- Version: PGP for Personal Privacy 5.0 MessageID: mnhUClrdB3uT/I+WxF2j1BAeO4VVL1mD hQEMA8B94gnosg+tAQf/QNdG1w4z8Uo9E//ZE2kYbf00JnsVOuQZ9BfqBQJoUV/v ZQimd37q8DQ5Y6RoDKP+BpnFwYUbJJCgoQ43PKGz+jBSnO1lvHAPnvMaZ9Kdrs5+ 4evWOjsVOKMk/qts7mKt2pZIF62ic1lAFoB6JXDQOvW0IvMCrcGYX83wcCoLlvxD +KgF9JOgwMBpQlbDN/y+22WWjECLsPwLyHmQFQnt2+JVcS6686EMzak+EXTT4rhW gC8VJWtcxswuhCsExyNkFpZyvhqMlhyPFOS9SAymmMbldPQonXs7b1GDU+KUC+ki +73RevkvGkamIxLUTI3orXpCc7EQxaXfjoQhDvgPQqRpCMwLeHp3AZ6cixqKPBCK HXuymtt9YnRmU/I8DVfqwdN8xkgUX3LZ/VoeSt4q5dusGVeU4CAi09uVBB+9UbYv UjqK7Ot5z/fF+W8wTlN3PInL0Jo+gKenJ3LV7FajHhT7f0HCALhwdJRB =cnfs -----END PGP MESSAGE----- 1.1 projects/openpgp/src/testdata/PGP5_testkey_DHDSS.asc Index: PGP5_testkey_DHDSS.asc =================================================================== -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP 5.0 mQGiBD9H2PgRBADrub4GaUsmgXSXBn2Dv9u61pLUZ0CF8RG0N51vbGLmcZphB0O1 sSHcWK0hYOwwGRQJjwwZmUfwc9tgq+f0ZsuO4I6SnmFKFgmMt8u6BQsi8lSxChnW UVcCMhp7T/StQXYS1cdRR9FMlAoygOAnq08+wQuu7h3MRnFvpi0zRhp3JwCg/4uu sAxqaL1B/6iKQuTG2zEM8JUEAMslp3fFViT2t283fGKJ88dKU5T55aymH+ejyBVL Eu7PtZEYs5ZDP7wfTf51feWiD3ieoQT5DTLqglrEh6q2mLqKD1grEUG+zb5tyeke OA8Ji02XDLhvL+ZNBzLafEhfLgeeo824kaxyn2KizBTBHs4gD8IGtfmE2jY3cHE1 AB8uBACdgp6hg89qhuaYga2WzmOcw57tRWYw8irFsuP+dy5gU+5+QQiJDGxlF54F 332+Hz4toU5NOI6JWBIrxexMIav28o0LLsejXkqa8w1fCKDhsan5F8merD6d54nt d4bYZjKh6PXyHxrHki7h1qyAptnF/ZsKEFd8prx95ytjh/K1ZbQVUEdQNSB0ZXN0 a2V5IERIRFNTIDw+iQBLBBARAgALBQI/R9j4BAsDAQIACgkQE1axrcldrlDPEwCd HSxZni2dFA++OTCLjI0LrpOnweIAniCwSAHEVjcAjWC7oiWM5OPV0+OFuQINBD9H 2PgQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfG y0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2 vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd 5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0Y bN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWak XUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICCADhXi1t9eRGDWxHN9rroOPGoYdaBc3N W0qJJ+WggbgkfzaUz8HIp49unif6D06SEIHmwhtenbv+PDBSlVMUnqJLvloxL3A3 AMhut6Y8Nm3ILx/L1ufdC2/0W7DJp6m3mBYEP3UyEHZ4cfLtgz755RKR5n3lClJX 2fBQ4Y7wf/lZqEntV9yPkPxMAJokFf4ekAo3tUFYeiJ1P2q9nQGzUGObGMimLW/d w163J95LXa9WiJXVv7Px5EkfR2nr6NfXRNPDrmBI7Fg4ooA+qWPeo1EltddcYyqb rpM6OMMidDxC/dLyDqHPr6QhVeCfsgkdlLmQE56DFwjBNGzogy7oGCz9iQA/AwUY P0fY+BNWsa3JXa5QEQIClQCfZ3p64XlGRwKLLwCtmVO5JJqm68UAn1kGy2TS3foD 187Rj1tCVJo3ZOOr =VAxD -----END PGP PUBLIC KEY BLOCK----- 1.1 projects/openpgp/src/testdata/PGP5_testkey_RSA.asc Index: PGP5_testkey_RSA.asc =================================================================== -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP 5.0 mQENAz9H2SYAAAEIAKAdbGbiPN8zfDqqAFnNoers8DwQEnBSm3soTT4jNxUQCgk7 sVTxqkqcM16jP3eA3pVN93sYj1LecbJ8gJ2gj6VZ53/CP/dNfgxKOKX93oLlKnFu qyCy1EgTxs1CAZ/Huq9Hm29ZmumCfMWRlp0ey4kNfpgPsTGxbNAXK2CwJ5SDg/NV Eoa8s/r3xfa6L4IbFCVeGjaV+laWMawjArYK8Cp0Us6XQ9EAZhP0jDYRL+aBdYTj fQpNx6H3XJ2z2oTf9L+N74VRsxtb0DX90icPi0Tv3QJrjNI9YpQ6NZQwnEhVON4t V0kc56rN9UZwhuF35Ne8dfgH5j5GwH3iCeiyD60ABRG0E1BHUDUgdGVzdGtleSBS U0EgPD6JARUDBRA/R9kmwH3iCeiyD60BAfqkCACA+cC8KaaYTAiUrZkThy/vW5In MYJJlOaifDoqn8TQAK+JeOeUWZ+oUlXP/V+VvSmChOJptDfJ2XBhEDWHcz64ogE7 Lb951msuavJyEUX7mKOlKxMvXCskcdHmGYozTLLRqOe/0qUVBt10lnq407lD54wc +B10KgpCPksvEUhpZElSnlYB2SYM6kjJ+bSOtKVQHIGjsBUFlf9qgz4krPllr8Xx aq7J1hxekqaFSQlr0isn/pJcB6lUzoLYgvD8MMvl4+JiELr16zz3LpjGgR0bDfB0 b2GSryrcWZdCuCrO+9biR9nutjj1IphjdrNTCrG+H/6HF53wCSz5FG+zeF0A =aDPI -----END PGP PUBLIC KEY BLOCK----- |