List of usage examples for org.bouncycastle.crypto.signers ECDSASigner ECDSASigner
public ECDSASigner(DSAKCalculator kCalculator)
From source file:com.facebook.delegatedrecovery.RecoveryToken.java
License:Open Source License
private byte[] getSignature(final byte[] rawArray, final ECPrivateKey privateKey) throws IOException { if (this.signature != null) { throw new IllegalStateException("This token already has a signature."); }// w w w .j av a 2 s .c o m final BigInteger privatePoint = privateKey.getS(); final SHA256Digest digest = new SHA256Digest(); final byte[] hash = new byte[digest.getByteLength()]; digest.update(rawArray, 0, rawArray.length); digest.doFinal(hash, 0); final ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); signer.init(true, new ECPrivateKeyParameters(privatePoint, DelegatedRecoveryUtils.P256_DOMAIN_PARAMS)); final BigInteger[] signature = signer.generateSignature(hash); final ByteArrayOutputStream s = new ByteArrayOutputStream(); final DERSequenceGenerator seq = new DERSequenceGenerator(s); seq.addObject(new ASN1Integer(signature[0])); seq.addObject(new ASN1Integer(signature[1])); seq.close(); return s.toByteArray(); }
From source file:COSE.SignCommon.java
byte[] computeSignature(byte[] rgbToBeSigned, CipherParameters key) throws CoseException { AlgorithmID alg = AlgorithmID.FromCBOR(findAttribute(HeaderKeys.Algorithm)); Digest digest;// w ww . j ava2 s . c o m CBORObject cn; switch (alg) { case ECDSA_256: digest = new SHA256Digest(); break; case ECDSA_384: digest = new SHA384Digest(); break; case ECDSA_512: digest = new SHA512Digest(); break; default: throw new CoseException("Unsupported Algorithm Specified"); } switch (alg) { case ECDSA_256: case ECDSA_384: case ECDSA_512: { digest.update(rgbToBeSigned, 0, rgbToBeSigned.length); byte[] rgbDigest = new byte[digest.getDigestSize()]; digest.doFinal(rgbDigest, 0); ECDSASigner ecdsa = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); ecdsa.init(true, key); BigInteger[] sig = ecdsa.generateSignature(rgbDigest); int cb = (((ECPrivateKeyParameters) key).getParameters().getCurve().getFieldSize() + 7) / 8; byte[] r = sig[0].toByteArray(); byte[] s = sig[1].toByteArray(); byte[] sigs = new byte[cb * 2]; int cbR = min(cb, r.length); System.arraycopy(r, r.length - cbR, sigs, cb - cbR, cbR); cbR = min(cb, s.length); System.arraycopy(s, s.length - cbR, sigs, cb + cb - cbR, cbR); return sigs; } default: throw new CoseException("Inernal error"); } }
From source file:me.grapebaba.hyperledger.fabric.Crypto.java
License:Apache License
public BigInteger[] ecdsaSign(PrivateKey privateKey, ByteString message) { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(digest)); ECPrivateKeyParameters ecdhPrivateKeyParameters; try {//from w ww . j a v a2s.c o m ecdhPrivateKeyParameters = (ECPrivateKeyParameters) (PrivateKeyFactory .createKey(privateKey.getEncoded())); } catch (IOException e) { logger.error("ECDSA sign load private key exception", e); throw new RuntimeException(e); } signer.init(true, ecdhPrivateKeyParameters); return signer.generateSignature(message.toByteArray()); }
From source file:org.ethereum.crypto.ECKey.java
License:Open Source License
/** * Signs the given hash and returns the R and S components as BigIntegers * and put them in ECDSASignature/*from w w w .ja v a2 s . c o m*/ * * @param input to sign * @return ECDSASignature signature that contains the R and S components */ public ECDSASignature doSign(byte[] input) { // No decryption of private key required. if (priv == null) { throw new MissingPrivateKeyException(); } ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(priv, CURVE); signer.init(true, privKey); BigInteger[] components = signer.generateSignature(input); return new ECDSASignature(components[0], components[1]).toCanonicalised(); }
From source file:org.hyperledger.common.BouncyCastleCrypto.java
License:Apache License
@Override public byte[] sign(byte[] hash, byte[] privateKey) { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); signer.init(true, new ECPrivateKeyParameters(new BigInteger(privateKey), domain)); BigInteger[] signature = signer.generateSignature(hash); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try {/*from ww w.ja va2 s .c o m*/ DERSequenceGenerator seq = new DERSequenceGenerator(baos); seq.addObject(new ASN1Integer(signature[0])); seq.addObject(new ASN1Integer(toCanonicalS(signature[1]))); seq.close(); return baos.toByteArray(); } catch (IOException e) { return new byte[0]; } }
From source file:org.hyperledger.common.PrivateKey.java
License:Apache License
/** * Sign a digest with this key./* w w w .ja v a 2 s . c o m*/ * * @param hash arbitrary data * @return signature */ public byte[] sign(byte[] hash) { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); signer.init(true, new ECPrivateKeyParameters(priv, domain)); BigInteger[] signature = signer.generateSignature(hash); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { DERSequenceGenerator seq = new DERSequenceGenerator(baos); seq.addObject(new ASN1Integer(signature[0])); seq.addObject(new ASN1Integer(toCanonicalS(signature[1]))); seq.close(); return baos.toByteArray(); } catch (IOException e) { } return null; }
From source file:org.hyperledger.fabric.sdk.security.CryptoPrimitives.java
License:Open Source License
public byte[][] ecdsaSign(PrivateKey privateKey, byte[] data) throws CryptoException { try {//ww w.ja v a 2 s .c o m byte[] encoded = hash(data); X9ECParameters params = SECNamedCurves.getByName(this.curveName); ECDomainParameters ecParams = new ECDomainParameters(params.getCurve(), params.getG(), params.getN(), params.getH()); ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA512Digest())); ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(((ECPrivateKey) privateKey).getS(), ecParams); signer.init(true, privKey); BigInteger[] sigs = signer.generateSignature(encoded); return new byte[][] { sigs[0].toString().getBytes(UTF_8), sigs[1].toString().getBytes(UTF_8) }; } catch (Exception e) { throw new CryptoException("Could not sign the message using private key", e); } }
From source file:org.ScripterRon.BitcoinCore.ECKey.java
License:Apache License
/** * Creates a signature for the supplied contents using the private key * * @param contents Contents to be signed * @return ECDSA signature * @throws ECException Unable to create signature *///from w w w .jav a2 s .c o m public ECDSASignature createSignature(byte[] contents) throws ECException { if (privKey == null) throw new IllegalStateException("No private key available"); // // Get the double SHA-256 hash of the signed contents // byte[] contentsHash = Utils.doubleDigest(contents); // // Create the signature // BigInteger[] sigs; try { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); ECPrivateKeyParameters privKeyParams = new ECPrivateKeyParameters(privKey, ecParams); signer.init(true, privKeyParams); sigs = signer.generateSignature(contentsHash); } catch (RuntimeException exc) { throw new ECException("Exception while creating signature", exc); } // // Create a canonical signature by adjusting the S component to be less than or equal to // half the curve order. // if (sigs[1].compareTo(HALF_CURVE_ORDER) > 0) sigs[1] = ecParams.getN().subtract(sigs[1]); return new ECDSASignature(sigs[0], sigs[1]); }
From source file:us.eharning.atomun.core.ec.internal.BouncyCastleECKeyPair.java
License:Apache License
/** * Perform an ECDSA signature using the private key. * * @param hash/*from w w w . ja v a2 s . c o m*/ * byte array to sign. * * @return ASN.1 representation of the signature. */ @Nonnull @Override public byte[] sign(@Nonnull byte[] hash) { /* The HMacDSAKCalculator is what makes this signer RFC 6979 compliant. */ ECDSASigner signer = new ECDSASigner(new RFC6979KCalculator(new SHA256Digest())); signer.init(true, new ECPrivateKeyParameters(privateExponent, domain)); BigInteger[] signature = signer.generateSignature(hash); ByteArrayOutputStream stream = new ByteArrayOutputStream(); /* Need to canonicalize signature up front ... */ if (CANONICALIZE && signature[1].compareTo(HALF_CURVE_ORDER) > 0) { /* BOP does not do this */ signature[1] = curve.getN().subtract(signature[1]); } try { DERSequenceGenerator seq = new DERSequenceGenerator(stream); seq.addObject(new ASN1Integer(signature[0])); seq.addObject(new ASN1Integer(signature[1])); seq.close(); return stream.toByteArray(); } catch (IOException e) { throw new IllegalStateException("IOException should not be thrown", e); } }