Skip to content

Commit 42c757b

Browse files
committed
WIP: Add PGPv6MessageDecryptionTest
1 parent c6a5067 commit 42c757b

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package org.bouncycastle.openpgp.test;
2+
3+
import org.bouncycastle.asn1.cms.KEKIdentifier;
4+
import org.bouncycastle.bcpg.ArmoredInputStream;
5+
import org.bouncycastle.bcpg.BCPGInputStream;
6+
import org.bouncycastle.bcpg.PublicKeyAlgorithmTags;
7+
import org.bouncycastle.bcpg.PublicKeyEncSessionPacket;
8+
import org.bouncycastle.bcpg.PublicKeyPacket;
9+
import org.bouncycastle.openpgp.PGPEncryptedDataList;
10+
import org.bouncycastle.openpgp.PGPObjectFactory;
11+
import org.bouncycastle.openpgp.PGPPublicKeyEncryptedData;
12+
import org.bouncycastle.openpgp.PGPSecretKeyRing;
13+
import org.bouncycastle.openpgp.bc.BcPGPObjectFactory;
14+
import org.bouncycastle.util.encoders.Hex;
15+
16+
import java.io.ByteArrayInputStream;
17+
import java.io.IOException;
18+
import java.nio.charset.StandardCharsets;
19+
20+
public class PGPv6MessageDecryptionTest
21+
extends AbstractPgpKeyPairTest
22+
{
23+
@Override
24+
public String getName()
25+
{
26+
return "PGPv6MessageDecryptionTest";
27+
}
28+
29+
@Override
30+
public void performTest()
31+
throws Exception
32+
{
33+
decryptMessageEncryptedUsingPKESKv6();
34+
}
35+
36+
private void decryptMessageEncryptedUsingPKESKv6()
37+
throws IOException
38+
{
39+
String key = "-----BEGIN PGP PRIVATE KEY BLOCK-----\n" +
40+
"\n" +
41+
"xUsGY4d/4xsAAAAg+U2nu0jWCmHlZ3BqZYfQMxmZu52JGggkLq2EVD34laMAGXKB\n" +
42+
"exK+cH6NX1hs5hNhIB00TrJmosgv3mg1ditlsLfCsQYfGwoAAABCBYJjh3/jAwsJ\n" +
43+
"BwUVCg4IDAIWAAKbAwIeCSIhBssYbE8GCaaX5NUt+mxyKwwfHifBilZwj2Ul7Ce6\n" +
44+
"2azJBScJAgcCAAAAAK0oIBA+LX0ifsDm185Ecds2v8lwgyU2kCcUmKfvBXbAf6rh\n" +
45+
"RYWzuQOwEn7E/aLwIwRaLsdry0+VcallHhSu4RN6HWaEQsiPlR4zxP/TP7mhfVEe\n" +
46+
"7XWPxtnMUMtf15OyA51YBMdLBmOHf+MZAAAAIIaTJINn+eUBXbki+PSAld2nhJh/\n" +
47+
"LVmFsS+60WyvXkQ1AE1gCk95TUR3XFeibg/u/tVY6a//1q0NWC1X+yui3O24wpsG\n" +
48+
"GBsKAAAALAWCY4d/4wKbDCIhBssYbE8GCaaX5NUt+mxyKwwfHifBilZwj2Ul7Ce6\n" +
49+
"2azJAAAAAAQBIKbpGG2dWTX8j+VjFM21J0hqWlEg+bdiojWnKfA5AQpWUWtnNwDE\n" +
50+
"M0g12vYxoWM8Y81W+bHBw805I8kWVkXU6vFOi+HWvv/ira7ofJu16NnoUkhclkUr\n" +
51+
"k0mXubZvyl4GBg==\n" +
52+
"-----END PGP PRIVATE KEY BLOCK-----\n";
53+
ByteArrayInputStream bIn = new ByteArrayInputStream(key.getBytes(StandardCharsets.UTF_8));
54+
ArmoredInputStream aIn = new ArmoredInputStream(bIn);
55+
BCPGInputStream pIn = new BCPGInputStream(aIn);
56+
PGPObjectFactory objFac = new BcPGPObjectFactory(pIn);
57+
PGPSecretKeyRing secretKeys = (PGPSecretKeyRing) objFac.nextObject();
58+
pIn.close();
59+
aIn.close();
60+
bIn.close();
61+
62+
// created using rpgpie 0.1.1 (rpgp 0.14.0-alpha.0)
63+
String MSG = "-----BEGIN PGP MESSAGE-----\n" +
64+
"\n" +
65+
"wW0GIQYSyD8ecG9jCP4VGkF3Q6HwM3kOk+mXhIjR2zeNqZMIhRk5Bu/DU62hzgRm\n" +
66+
"JYvBYeLA2Nrmz15g69ZN0xAB7SLDRCjjhnK6V7fGns6P1EiSCYbl1uNVBhK0MPGe\n" +
67+
"rU9FY4yUXTnbB6eIXdCw0loCCQIOu95D17wvJJC2a96ou9SGPIoA4Q2dMH5BMS9Z\n" +
68+
"veq3AGgIBdJMF8Ft8PBE30R0cba1O5oQC0Eiscw7fkNnYGuSXagqNXdOBkHDN0fk\n" +
69+
"VWFrxQRbxEVYUWc=\n" +
70+
"=u2kL\n" +
71+
"-----END PGP MESSAGE-----\n";
72+
bIn = new ByteArrayInputStream(MSG.getBytes(StandardCharsets.UTF_8));
73+
aIn = new ArmoredInputStream(bIn);
74+
pIn = new BCPGInputStream(aIn);
75+
objFac = new BcPGPObjectFactory(pIn);
76+
PGPEncryptedDataList encList = (PGPEncryptedDataList) objFac.nextObject();
77+
PGPPublicKeyEncryptedData encData = (PGPPublicKeyEncryptedData) encList.get(0);
78+
79+
isEquals(PublicKeyEncSessionPacket.VERSION_6, encData.getVersion());
80+
isEquals(PublicKeyAlgorithmTags.X25519, encData.getAlgorithm());
81+
82+
}
83+
84+
public static void main(String[] args)
85+
{
86+
runTest(new PGPv6MessageDecryptionTest());
87+
}
88+
}

0 commit comments

Comments
 (0)