aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java')
-rw-r--r--libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java181
1 files changed, 0 insertions, 181 deletions
diff --git a/libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java b/libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java
deleted file mode 100644
index 1d124cb23..000000000
--- a/libraries/spongycastle/pkix/src/main/java/org/spongycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.spongycastle.eac.operator.jcajce;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.math.BigInteger;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Provider;
-import java.security.PublicKey;
-import java.security.Signature;
-import java.security.SignatureException;
-
-import org.spongycastle.asn1.ASN1EncodableVector;
-import org.spongycastle.asn1.ASN1ObjectIdentifier;
-import org.spongycastle.asn1.DERInteger;
-import org.spongycastle.asn1.DERSequence;
-import org.spongycastle.asn1.eac.EACObjectIdentifiers;
-import org.spongycastle.eac.operator.EACSignatureVerifier;
-import org.spongycastle.operator.OperatorCreationException;
-import org.spongycastle.operator.OperatorStreamException;
-import org.spongycastle.operator.RuntimeOperatorException;
-
-public class JcaEACSignatureVerifierBuilder
-{
- private EACHelper helper = new DefaultEACHelper();
-
- public JcaEACSignatureVerifierBuilder setProvider(String providerName)
- {
- this.helper = new NamedEACHelper(providerName);
-
- return this;
- }
-
- public JcaEACSignatureVerifierBuilder setProvider(Provider provider)
- {
- this.helper = new ProviderEACHelper(provider);
-
- return this;
- }
-
- public EACSignatureVerifier build(final ASN1ObjectIdentifier usageOid, PublicKey pubKey)
- throws OperatorCreationException
- {
- Signature sig;
- try
- {
- sig = helper.getSignature(usageOid);
-
- sig.initVerify(pubKey);
- }
- catch (NoSuchAlgorithmException e)
- {
- throw new OperatorCreationException("unable to find algorithm: " + e.getMessage(), e);
- }
- catch (NoSuchProviderException e)
- {
- throw new OperatorCreationException("unable to find provider: " + e.getMessage(), e);
- }
- catch (InvalidKeyException e)
- {
- throw new OperatorCreationException("invalid key: " + e.getMessage(), e);
- }
-
- final SignatureOutputStream sigStream = new SignatureOutputStream(sig);
-
- return new EACSignatureVerifier()
- {
- public ASN1ObjectIdentifier getUsageIdentifier()
- {
- return usageOid;
- }
-
- public OutputStream getOutputStream()
- {
- return sigStream;
- }
-
- public boolean verify(byte[] expected)
- {
- try
- {
- if (usageOid.on(EACObjectIdentifiers.id_TA_ECDSA))
- {
- try
- {
- byte[] reencoded = derEncode(expected);
-
- return sigStream.verify(reencoded);
- }
- catch (Exception e)
- {
- return false;
- }
- }
- else
- {
- return sigStream.verify(expected);
- }
- }
- catch (SignatureException e)
- {
- throw new RuntimeOperatorException("exception obtaining signature: " + e.getMessage(), e);
- }
- }
- };
- }
-
- private static byte[] derEncode(byte[] rawSign) throws IOException
- {
- int len = rawSign.length / 2;
-
- byte[] r = new byte[len];
- byte[] s = new byte[len];
- System.arraycopy(rawSign, 0, r, 0, len);
- System.arraycopy(rawSign, len, s, 0, len);
-
- ASN1EncodableVector v = new ASN1EncodableVector();
- v.add(new DERInteger(new BigInteger(1, r)));
- v.add(new DERInteger(new BigInteger(1, s)));
-
- DERSequence seq = new DERSequence(v);
- return seq.getEncoded();
- }
-
- private class SignatureOutputStream
- extends OutputStream
- {
- private Signature sig;
-
- SignatureOutputStream(Signature sig)
- {
- this.sig = sig;
- }
-
- public void write(byte[] bytes, int off, int len)
- throws IOException
- {
- try
- {
- sig.update(bytes, off, len);
- }
- catch (SignatureException e)
- {
- throw new OperatorStreamException("exception in content signer: " + e.getMessage(), e);
- }
- }
-
- public void write(byte[] bytes)
- throws IOException
- {
- try
- {
- sig.update(bytes);
- }
- catch (SignatureException e)
- {
- throw new OperatorStreamException("exception in content signer: " + e.getMessage(), e);
- }
- }
-
- public void write(int b)
- throws IOException
- {
- try
- {
- sig.update((byte)b);
- }
- catch (SignatureException e)
- {
- throw new OperatorStreamException("exception in content signer: " + e.getMessage(), e);
- }
- }
-
- boolean verify(byte[] expected)
- throws SignatureException
- {
- return sig.verify(expected);
- }
- }
-}