Search in sources :

Example 6 with ECDSASigner

use of org.spongycastle.crypto.signers.ECDSASigner in project AppCoins-ethereumj by AppStoreFoundation.

the class ECKey method doSign.

/**
 * Signs the given hash and returns the R and S components as BigIntegers
 * and put them in ECDSASignature
 *
 * @param input to sign
 * @return ECDSASignature signature that contains the R and S components
 */
public ECDSASignature doSign(byte[] input) {
    if (input.length != 32) {
        throw new IllegalArgumentException("Expected 32 byte input to ECDSA signature, not " + input.length);
    }
    // No decryption of private key required.
    if (privKey == null)
        throw new MissingPrivateKeyException();
    if (privKey instanceof BCECPrivateKey) {
        ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest()));
        ECPrivateKeyParameters privKeyParams = new ECPrivateKeyParameters(((BCECPrivateKey) privKey).getD(), CURVE);
        signer.init(true, privKeyParams);
        BigInteger[] components = signer.generateSignature(input);
        return new ECDSASignature(components[0], components[1]).toCanonicalised();
    } else {
        try {
            Signature ecSig = ECSignatureFactory.getRawInstance(provider);
            ecSig.initSign(privKey);
            ecSig.update(input);
            byte[] derSignature = ecSig.sign();
            return ECDSASignature.decodeFromDER(derSignature).toCanonicalised();
        } catch (SignatureException | InvalidKeyException ex) {
            throw new RuntimeException("ECKey signing error", ex);
        }
    }
}
Also used : ECDSASigner(org.spongycastle.crypto.signers.ECDSASigner) SignatureException(java.security.SignatureException) InvalidKeyException(java.security.InvalidKeyException) BCECPrivateKey(org.spongycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey) HMacDSAKCalculator(org.spongycastle.crypto.signers.HMacDSAKCalculator) ECPrivateKeyParameters(org.spongycastle.crypto.params.ECPrivateKeyParameters) SHA256Digest(org.spongycastle.crypto.digests.SHA256Digest) Signature(java.security.Signature) BigInteger(java.math.BigInteger)

Example 7 with ECDSASigner

use of org.spongycastle.crypto.signers.ECDSASigner in project aion by aionnetwork.

the class ECKeySecp256k1 method doSign.

/**
 * Groups the two components that make up a signature, and provides a way to
 * encode to Base64 form, which is how ECDSA signatures are represented when
 * embedded in other data structures in the Ethereum protocol. The raw
 * components can be useful for doing further EC maths on them.
 */
/**
 * Signs the given hash and returns the R and S components as BigIntegers
 * and put them in ECDSASignature
 *
 * @param input
 *            to sign
 * @return ECDSASignature signature that contains the R and S components
 */
public ECDSASignature doSign(byte[] input) {
    if (input.length != 32) {
        throw new IllegalArgumentException("Expected 32 byte input to ECDSA signature, not " + input.length);
    }
    // No decryption of private key required.
    if (privKey == null) {
        throw new MissingPrivateKeyException();
    }
    if (privKey instanceof BCECPrivateKey) {
        ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest()));
        ECPrivateKeyParameters privKeyParams = new ECPrivateKeyParameters(((BCECPrivateKey) privKey).getD(), CURVE);
        signer.init(true, privKeyParams);
        BigInteger[] components = signer.generateSignature(input);
        return new ECDSASignature(components[0], components[1]).toCanonicalised();
    } else {
        try {
            final Signature ecSig = ECSignatureFactory.getRawInstance(provider);
            ecSig.initSign(privKey);
            ecSig.update(input);
            final byte[] derSignature = ecSig.sign();
            return ECDSASignature.decodeFromDER(derSignature).toCanonicalised();
        } catch (SignatureException | InvalidKeyException ex) {
            throw new RuntimeException("ECKey signing error", ex);
        }
    }
}
Also used : ECDSASigner(org.spongycastle.crypto.signers.ECDSASigner) SignatureException(java.security.SignatureException) InvalidKeyException(java.security.InvalidKeyException) BCECPrivateKey(org.spongycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey) HMacDSAKCalculator(org.spongycastle.crypto.signers.HMacDSAKCalculator) ECPrivateKeyParameters(org.spongycastle.crypto.params.ECPrivateKeyParameters) SHA256Digest(org.spongycastle.crypto.digests.SHA256Digest) Signature(java.security.Signature) ISignature(org.aion.crypto.ISignature) BigInteger(java.math.BigInteger)

Example 8 with ECDSASigner

use of org.spongycastle.crypto.signers.ECDSASigner in project nuls by nuls-io.

the class ECKey method doSign.

protected byte[] doSign(byte[] input, BigInteger privateKeyForSigning) {
    Utils.checkNotNull(privateKeyForSigning);
    ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest()));
    ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(privateKeyForSigning, CURVE);
    signer.init(true, privKey);
    BigInteger[] components = signer.generateSignature(input);
    return new ECDSASignature(components[0], components[1]).toCanonicalised().encodeToDER();
}
Also used : HMacDSAKCalculator(org.spongycastle.crypto.signers.HMacDSAKCalculator) ECDSASigner(org.spongycastle.crypto.signers.ECDSASigner) SHA256Digest(org.spongycastle.crypto.digests.SHA256Digest) BigInteger(java.math.BigInteger)

Example 9 with ECDSASigner

use of org.spongycastle.crypto.signers.ECDSASigner in project nuls by nuls-io.

the class ECKey method verify.

/**
 * 验证签名
 */
public static boolean verify(byte[] data, ECDSASignature signature, byte[] pub) {
    ECDSASigner signer = new ECDSASigner();
    ECPublicKeyParameters params = new ECPublicKeyParameters(CURVE.getCurve().decodePoint(pub), CURVE);
    signer.init(false, params);
    try {
        return signer.verifySignature(data, signature.r, signature.s);
    } catch (NullPointerException e) {
        log.error("Caught NPE inside bouncy castle", e);
        return false;
    }
}
Also used : ECDSASigner(org.spongycastle.crypto.signers.ECDSASigner)

Example 10 with ECDSASigner

use of org.spongycastle.crypto.signers.ECDSASigner in project SmartMesh_Android by SmartMeshFoundation.

the class Sign2 method sign.

private static ECDSASignature sign(byte[] transactionHash, BigInteger privateKey) {
    ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest()));
    ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(privateKey, CURVE);
    signer.init(true, privKey);
    BigInteger[] components = signer.generateSignature(transactionHash);
    return new ECDSASignature(components[0], components[1]).toCanonicalised();
}
Also used : HMacDSAKCalculator(org.spongycastle.crypto.signers.HMacDSAKCalculator) ECPrivateKeyParameters(org.spongycastle.crypto.params.ECPrivateKeyParameters) ECDSASigner(org.spongycastle.crypto.signers.ECDSASigner) SHA256Digest(org.spongycastle.crypto.digests.SHA256Digest) BigInteger(java.math.BigInteger)

Aggregations

ECDSASigner (org.spongycastle.crypto.signers.ECDSASigner)14 BigInteger (java.math.BigInteger)8 SHA256Digest (org.spongycastle.crypto.digests.SHA256Digest)7 HMacDSAKCalculator (org.spongycastle.crypto.signers.HMacDSAKCalculator)7 ECPrivateKeyParameters (org.spongycastle.crypto.params.ECPrivateKeyParameters)6 InvalidKeyException (java.security.InvalidKeyException)4 Signature (java.security.Signature)4 SignatureException (java.security.SignatureException)4 ECPublicKeyParameters (org.spongycastle.crypto.params.ECPublicKeyParameters)4 BCECPrivateKey (org.spongycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey)4 Script (co.rsk.bitcoinj.script.Script)1 ScriptChunk (co.rsk.bitcoinj.script.ScriptChunk)1 Keccak256 (co.rsk.crypto.Keccak256)1 RepositoryImpl (co.rsk.db.RepositoryImpl)1 BridgeEventLogger (co.rsk.peg.utils.BridgeEventLogger)1 BridgeEventLoggerImpl (co.rsk.peg.utils.BridgeEventLoggerImpl)1 ISignature (org.aion.crypto.ISignature)1 RLPList (org.ethereum.util.RLPList)1 LogInfo (org.ethereum.vm.LogInfo)1