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