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-----
|