diff options
Diffstat (limited to 'libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/examples/SignedFileProcessor.java')
-rw-r--r-- | libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/examples/SignedFileProcessor.java | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/examples/SignedFileProcessor.java b/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/examples/SignedFileProcessor.java deleted file mode 100644 index ad3311f1c..000000000 --- a/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/examples/SignedFileProcessor.java +++ /dev/null @@ -1,215 +0,0 @@ -package org.spongycastle.openpgp.examples; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Security; -import java.security.SignatureException; -import java.util.Iterator; - -import org.spongycastle.bcpg.ArmoredOutputStream; -import org.spongycastle.bcpg.BCPGOutputStream; -import org.spongycastle.jce.provider.BouncyCastleProvider; -import org.spongycastle.openpgp.PGPCompressedData; -import org.spongycastle.openpgp.PGPCompressedDataGenerator; -import org.spongycastle.openpgp.PGPException; -import org.spongycastle.openpgp.PGPLiteralData; -import org.spongycastle.openpgp.PGPLiteralDataGenerator; -import org.spongycastle.openpgp.PGPObjectFactory; -import org.spongycastle.openpgp.PGPOnePassSignature; -import org.spongycastle.openpgp.PGPOnePassSignatureList; -import org.spongycastle.openpgp.PGPPrivateKey; -import org.spongycastle.openpgp.PGPPublicKey; -import org.spongycastle.openpgp.PGPPublicKeyRingCollection; -import org.spongycastle.openpgp.PGPSecretKey; -import org.spongycastle.openpgp.PGPSignature; -import org.spongycastle.openpgp.PGPSignatureGenerator; -import org.spongycastle.openpgp.PGPSignatureList; -import org.spongycastle.openpgp.PGPSignatureSubpacketGenerator; -import org.spongycastle.openpgp.PGPUtil; -import org.spongycastle.openpgp.operator.jcajce.JcaPGPContentSignerBuilder; -import org.spongycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider; -import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder; - -/** - * A simple utility class that signs and verifies files. - * <p> - * To sign a file: SignedFileProcessor -s [-a] fileName secretKey passPhrase.<br> - * If -a is specified the output file will be "ascii-armored". - * <p> - * To decrypt: SignedFileProcessor -v fileName publicKeyFile. - * <p> - * <b>Note</b>: this example will silently overwrite files, nor does it pay any attention to - * the specification of "_CONSOLE" in the filename. It also expects that a single pass phrase - * will have been used. - * <p> - * <b>Note</b>: the example also makes use of PGP compression. If you are having difficulty getting it - * to interoperate with other PGP programs try removing the use of compression first. - */ -public class SignedFileProcessor -{ - /* - * verify the passed in file as being correctly signed. - */ - private static void verifyFile( - InputStream in, - InputStream keyIn) - throws Exception - { - in = PGPUtil.getDecoderStream(in); - - PGPObjectFactory pgpFact = new PGPObjectFactory(in); - - PGPCompressedData c1 = (PGPCompressedData)pgpFact.nextObject(); - - pgpFact = new PGPObjectFactory(c1.getDataStream()); - - PGPOnePassSignatureList p1 = (PGPOnePassSignatureList)pgpFact.nextObject(); - - PGPOnePassSignature ops = p1.get(0); - - PGPLiteralData p2 = (PGPLiteralData)pgpFact.nextObject(); - - InputStream dIn = p2.getInputStream(); - int ch; - PGPPublicKeyRingCollection pgpRing = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(keyIn)); - - PGPPublicKey key = pgpRing.getPublicKey(ops.getKeyID()); - FileOutputStream out = new FileOutputStream(p2.getFileName()); - - ops.init(new JcaPGPContentVerifierBuilderProvider().setProvider("SC"), key); - - while ((ch = dIn.read()) >= 0) - { - ops.update((byte)ch); - out.write(ch); - } - - out.close(); - - PGPSignatureList p3 = (PGPSignatureList)pgpFact.nextObject(); - - if (ops.verify(p3.get(0))) - { - System.out.println("signature verified."); - } - else - { - System.out.println("signature verification failed."); - } - } - - /** - * Generate an encapsulated signed file. - * - * @param fileName - * @param keyIn - * @param out - * @param pass - * @param armor - * @throws IOException - * @throws NoSuchAlgorithmException - * @throws NoSuchProviderException - * @throws PGPException - * @throws SignatureException - */ - private static void signFile( - String fileName, - InputStream keyIn, - OutputStream out, - char[] pass, - boolean armor) - throws IOException, NoSuchAlgorithmException, NoSuchProviderException, PGPException, SignatureException - { - if (armor) - { - out = new ArmoredOutputStream(out); - } - - PGPSecretKey pgpSec = PGPExampleUtil.readSecretKey(keyIn); - PGPPrivateKey pgpPrivKey = pgpSec.extractPrivateKey(new JcePBESecretKeyDecryptorBuilder().setProvider("SC").build(pass)); - PGPSignatureGenerator sGen = new PGPSignatureGenerator(new JcaPGPContentSignerBuilder(pgpSec.getPublicKey().getAlgorithm(), PGPUtil.SHA1).setProvider("SC")); - - sGen.init(PGPSignature.BINARY_DOCUMENT, pgpPrivKey); - - Iterator it = pgpSec.getPublicKey().getUserIDs(); - if (it.hasNext()) - { - PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator(); - - spGen.setSignerUserID(false, (String)it.next()); - sGen.setHashedSubpackets(spGen.generate()); - } - - PGPCompressedDataGenerator cGen = new PGPCompressedDataGenerator( - PGPCompressedData.ZLIB); - - BCPGOutputStream bOut = new BCPGOutputStream(cGen.open(out)); - - sGen.generateOnePassVersion(false).encode(bOut); - - File file = new File(fileName); - PGPLiteralDataGenerator lGen = new PGPLiteralDataGenerator(); - OutputStream lOut = lGen.open(bOut, PGPLiteralData.BINARY, file); - FileInputStream fIn = new FileInputStream(file); - int ch; - - while ((ch = fIn.read()) >= 0) - { - lOut.write(ch); - sGen.update((byte)ch); - } - - lGen.close(); - - sGen.generate().encode(bOut); - - cGen.close(); - - if (armor) - { - out.close(); - } - } - - public static void main( - String[] args) - throws Exception - { - Security.addProvider(new BouncyCastleProvider()); - - if (args[0].equals("-s")) - { - if (args[1].equals("-a")) - { - FileInputStream keyIn = new FileInputStream(args[3]); - FileOutputStream out = new FileOutputStream(args[2] + ".asc"); - - signFile(args[2], keyIn, out, args[4].toCharArray(), true); - } - else - { - FileInputStream keyIn = new FileInputStream(args[2]); - FileOutputStream out = new FileOutputStream(args[1] + ".bpg"); - - signFile(args[1], keyIn, out, args[3].toCharArray(), false); - } - } - else if (args[0].equals("-v")) - { - FileInputStream in = new FileInputStream(args[1]); - FileInputStream keyIn = new FileInputStream(args[2]); - - verifyFile(in, keyIn); - } - else - { - System.err.println("usage: SignedFileProcessor -v|-s [-a] file keyfile [passPhrase]"); - } - } -}
\ No newline at end of file |