/** * Sign a hash with the private key of this key pair. * @param transactionHash the hash to sign * @return An {@link ECDSASignature} of the hash */ public ECDSASignature sign(byte[] transactionHash) { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(privateKey, Sign.CURVE); signer.init(true, privKey); BigInteger[] components = signer.generateSignature(transactionHash); return new ECDSASignature(components[0], components[1]).toCanonicalised(); }
/** * 用公钥检验数字签名的合法性 * * @param data 数据 * @param sign 签名 * @param id 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes() * @return 是否验证通过 */ public boolean verify(byte[] data, byte[] sign, byte[] id) { lock.lock(); if (null == this.signer) { this.signer = new SM2Signer(); } final SM2Signer signer = this.signer; try { CipherParameters param = generateCipherParameters(KeyType.PublicKey); if (id != null) { param = new ParametersWithID(param, id); } signer.init(false, param); signer.update(data, 0, data.length); return signer.verifySignature(sign); } catch (Exception e) { throw new CryptoException(e); } finally { lock.unlock(); } }
/** * 用私钥对信息生成数字签名 * * @param data 加密数据 * @param id 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes() * @return 签名 */ public byte[] sign(byte[] data, byte[] id) { lock.lock(); if (null == this.signer) { this.signer = new SM2Signer(); } final SM2Signer signer = this.signer; try { CipherParameters param = new ParametersWithRandom(generateCipherParameters(KeyType.PrivateKey)); if (id != null) { param = new ParametersWithID(param, id); } signer.init(true, param); signer.update(data, 0, data.length); return signer.generateSignature(); } catch (Exception e) { throw new CryptoException(e); } finally { lock.unlock(); } }
public ecDetDSASha3_224() { super(DigestFactory.createSHA3_224(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_224())), StandardDSAEncoding.INSTANCE); } }
public detDSA256() { super(DigestFactory.createSHA256(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA256()))); } }
public boolean verifySignature(byte[] signature) { try { BigInteger[] rs = encoding.decode(ecParams.getN(), signature); return verifySignature(rs[0], rs[1]); } catch (Exception e) { } return false; }
protected void engineUpdate(byte b) throws SignatureException { signer.update(b); }
/** * Default configuration, random K values. */ public DSASigner() { this.kCalculator = new RandomDSAKCalculator(); }
private boolean returnFalse(byte[] block) { messageLength = 0; clearBlock(mBuf); clearBlock(block); return false; }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { isInitState = true; return pss.verifySignature(sigBytes); }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { boolean yes = signer.verifySignature(sigBytes); return yes; }
public sm3WithSM2() { super(new SM2Signer()); } }
protected void engineUpdate( byte[] b, int off, int len) throws SignatureException { signer.update(b, off, len); }
public ecDetDSASha3_256() { super(DigestFactory.createSHA3_256(), new ECDSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_256())), StandardDSAEncoding.INSTANCE); } }
public detDSA384() { super(DigestFactory.createSHA384(), new org.bouncycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA384()))); } }
/** * 用公钥检验数字签名的合法性 * * @param data 数据 * @param sign 签名 * @param id 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes() * @return 是否验证通过 */ public boolean verify(byte[] data, byte[] sign, byte[] id) { lock.lock(); if (null == this.signer) { this.signer = new SM2Signer(); } final SM2Signer signer = this.signer; try { CipherParameters param = generateCipherParameters(KeyType.PublicKey); if (id != null) { param = new ParametersWithID(param, id); } signer.init(false, param); signer.update(data, 0, data.length); return signer.verifySignature(sign); } catch (Exception e) { throw new CryptoException(e); } finally { lock.unlock(); } }
/** * 用私钥对信息生成数字签名 * * @param data 加密数据 * @param id 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes() * @return 签名 */ public byte[] sign(byte[] data, byte[] id) { lock.lock(); if (null == this.signer) { this.signer = new SM2Signer(); } final SM2Signer signer = this.signer; try { CipherParameters param = new ParametersWithRandom(generateCipherParameters(KeyType.PrivateKey)); if (id != null) { param = new ParametersWithID(param, id); } signer.init(true, param); signer.update(data, 0, data.length); return signer.generateSignature(); } catch (Exception e) { throw new CryptoException(e); } finally { lock.unlock(); } }
protected void engineUpdate(byte[] bytes, int off, int length) throws SignatureException { signer.update(bytes, off, length); }
/** * Default configuration, random K values. */ public ECDSASigner() { this.kCalculator = new RandomDSAKCalculator(); }
/** * Default configuration, random K values. */ public DSASigner() { this.kCalculator = new RandomDSAKCalculator(); }