| /* GENERATED SOURCE. DO NOT MODIFY. */ |
| package com.android.internal.org.bouncycastle.jcajce.provider.asymmetric.util; |
| |
| import java.math.BigInteger; |
| import java.security.SignatureException; |
| import java.security.SignatureSpi; |
| import java.security.spec.AlgorithmParameterSpec; |
| |
| import com.android.internal.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; |
| import com.android.internal.org.bouncycastle.asn1.x509.X509ObjectIdentifiers; |
| import com.android.internal.org.bouncycastle.crypto.DSAExt; |
| import com.android.internal.org.bouncycastle.crypto.Digest; |
| import com.android.internal.org.bouncycastle.crypto.signers.DSAEncoding; |
| |
| /** |
| * @hide This class is not part of the Android public SDK API |
| */ |
| public abstract class DSABase |
| extends SignatureSpi |
| implements PKCSObjectIdentifiers, X509ObjectIdentifiers |
| { |
| protected Digest digest; |
| protected DSAExt signer; |
| protected DSAEncoding encoding; |
| |
| protected DSABase( |
| Digest digest, |
| DSAExt signer, |
| DSAEncoding encoding) |
| { |
| this.digest = digest; |
| this.signer = signer; |
| this.encoding = encoding; |
| } |
| |
| protected void engineUpdate( |
| byte b) |
| throws SignatureException |
| { |
| digest.update(b); |
| } |
| |
| protected void engineUpdate( |
| byte[] b, |
| int off, |
| int len) |
| throws SignatureException |
| { |
| digest.update(b, off, len); |
| } |
| |
| protected byte[] engineSign() |
| throws SignatureException |
| { |
| byte[] hash = new byte[digest.getDigestSize()]; |
| digest.doFinal(hash, 0); |
| |
| try |
| { |
| BigInteger[] sig = signer.generateSignature(hash); |
| |
| return encoding.encode(signer.getOrder(), sig[0], sig[1]); |
| } |
| catch (Exception e) |
| { |
| throw new SignatureException(e.toString()); |
| } |
| } |
| |
| protected boolean engineVerify( |
| byte[] sigBytes) |
| throws SignatureException |
| { |
| byte[] hash = new byte[digest.getDigestSize()]; |
| digest.doFinal(hash, 0); |
| |
| BigInteger[] sig; |
| try |
| { |
| sig = encoding.decode(signer.getOrder(), sigBytes); |
| } |
| catch (Exception e) |
| { |
| throw new SignatureException("error decoding signature bytes."); |
| } |
| |
| return signer.verifySignature(hash, sig[0], sig[1]); |
| } |
| |
| protected void engineSetParameter( |
| AlgorithmParameterSpec params) |
| { |
| throw new UnsupportedOperationException("engineSetParameter unsupported"); |
| } |
| |
| /** |
| * @deprecated replaced with "#engineSetParameter(java.security.spec.AlgorithmParameterSpec)" |
| */ |
| protected void engineSetParameter( |
| String param, |
| Object value) |
| { |
| throw new UnsupportedOperationException("engineSetParameter unsupported"); |
| } |
| |
| /** |
| * @deprecated |
| */ |
| protected Object engineGetParameter( |
| String param) |
| { |
| throw new UnsupportedOperationException("engineSetParameter unsupported"); |
| } |
| } |