aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java')
-rw-r--r--libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java b/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java
new file mode 100644
index 000000000..a2cfbf911
--- /dev/null
+++ b/libraries/spongycastle/pg/src/main/java/org/spongycastle/openpgp/operator/bc/BcPGPContentVerifierBuilderProvider.java
@@ -0,0 +1,75 @@
+package org.spongycastle.openpgp.operator.bc;
+
+import java.io.OutputStream;
+
+import org.spongycastle.crypto.Signer;
+import org.spongycastle.openpgp.PGPException;
+import org.spongycastle.openpgp.PGPPublicKey;
+import org.spongycastle.openpgp.operator.PGPContentVerifier;
+import org.spongycastle.openpgp.operator.PGPContentVerifierBuilder;
+import org.spongycastle.openpgp.operator.PGPContentVerifierBuilderProvider;
+
+public class BcPGPContentVerifierBuilderProvider
+ implements PGPContentVerifierBuilderProvider
+{
+ private BcPGPKeyConverter keyConverter = new BcPGPKeyConverter();
+
+ public BcPGPContentVerifierBuilderProvider()
+ {
+ }
+
+ public PGPContentVerifierBuilder get(int keyAlgorithm, int hashAlgorithm)
+ throws PGPException
+ {
+ return new BcPGPContentVerifierBuilder(keyAlgorithm, hashAlgorithm);
+ }
+
+ private class BcPGPContentVerifierBuilder
+ implements PGPContentVerifierBuilder
+ {
+ private int hashAlgorithm;
+ private int keyAlgorithm;
+
+ public BcPGPContentVerifierBuilder(int keyAlgorithm, int hashAlgorithm)
+ {
+ this.keyAlgorithm = keyAlgorithm;
+ this.hashAlgorithm = hashAlgorithm;
+ }
+
+ public PGPContentVerifier build(final PGPPublicKey publicKey)
+ throws PGPException
+ {
+ final Signer signer = BcImplProvider.createSigner(keyAlgorithm, hashAlgorithm);
+
+ signer.init(false, keyConverter.getPublicKey(publicKey));
+
+ return new PGPContentVerifier()
+ {
+ public int getHashAlgorithm()
+ {
+ return hashAlgorithm;
+ }
+
+ public int getKeyAlgorithm()
+ {
+ return keyAlgorithm;
+ }
+
+ public long getKeyID()
+ {
+ return publicKey.getKeyID();
+ }
+
+ public boolean verify(byte[] expected)
+ {
+ return signer.verifySignature(expected);
+ }
+
+ public OutputStream getOutputStream()
+ {
+ return new SignerOutputStream(signer);
+ }
+ };
+ }
+ }
+}