当前位置: 首页>>代码示例>>Java>>正文


Java ECKey.ECDSASignature方法代码示例

本文整理汇总了Java中org.ethereum.crypto.ECKey.ECDSASignature方法的典型用法代码示例。如果您正苦于以下问题:Java ECKey.ECDSASignature方法的具体用法?Java ECKey.ECDSASignature怎么用?Java ECKey.ECDSASignature使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.ethereum.crypto.ECKey的用法示例。


在下文中一共展示了ECKey.ECDSASignature方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: eth_sign

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
public String eth_sign(String addr,String data) throws Exception {
    String s = null;
    try {
        String ha = JSonHexToHex(addr);
        Account account = getAccount(ha);

        if (account==null)
            throw new Exception("Inexistent account");

        // Todo: is not clear from the spec what hash function must be used to sign
        byte[] masgHash= HashUtil.sha3(TypeConverter.StringHexToByteArray(data));
        ECKey.ECDSASignature signature = account.getEcKey().sign(masgHash);
        // Todo: is not clear if result should be RlpEncoded or serialized by other means
        byte[] rlpSig = RLP.encode(signature);
        return s = TypeConverter.toJsonHex(rlpSig);
    } finally {
        if (logger.isDebugEnabled()) logger.debug("eth_sign(" + addr + ", " + data + "): " + s);
    }
}
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:20,代码来源:JsonRpcImpl.java

示例2: decodeSignature

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
private ECKey.ECDSASignature decodeSignature() {
    if (signature == null) {
        return null;
    }

    byte[] r = new byte[32];
    byte[] s = new byte[32];
    byte v = signature[64];

    if (v == 1) v = 28;
    if (v == 0) v = 27;

    System.arraycopy(signature, 0, r, 0, 32);
    System.arraycopy(signature, 32, s, 0, 32);

    return ECKey.ECDSASignature.fromComponents(r, s, v);
}
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:18,代码来源:WhisperMessage.java

示例3: recover

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
private ECKey recover() {
    ECKey.ECDSASignature signature = decodeSignature();
    if (signature == null) return null;

    byte[] msgHash = hash();

    ECKey outKey = null;
    try {
        outKey = ECKey.signatureToKey(msgHash, signature);
    } catch (SignatureException e) {
        logger.warn("Exception recovering signature: ", e);
        throw new RuntimeException(e);
    }

    return outKey;
}
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:17,代码来源:WhisperMessage.java

示例4: sign

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
private void sign() {
    flags |= SIGNATURE_FLAG;
    byte[] forSig = hash();

    ECKey.ECDSASignature signature = from.sign(forSig);

    byte v;

    if (signature.v == 27) v = 0;
    else if (signature.v == 28) v = 1;
    else throw new RuntimeException("Invalid signature: " + signature);

    this.signature =
            merge(BigIntegers.asUnsignedByteArray(32, signature.r),
                    BigIntegers.asUnsignedByteArray(32, signature.s), new byte[]{v});
}
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:17,代码来源:WhisperMessage.java

示例5: sign

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
private String sign(String data, ECKey ecKey) {
    byte[] dataHash = TypeConverter.stringHexToByteArray(data);
    ECKey.ECDSASignature signature = ecKey.sign(dataHash);

    String signatureAsString = signature.r.toString() + signature.s.toString() + signature.v;

    return TypeConverter.toJsonHex(signatureAsString);
}
 
开发者ID:rsksmart,项目名称:rskj,代码行数:9,代码来源:EthModuleWalletEnabled.java

示例6: fallbackSign

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
private byte[] fallbackSign(byte[] hash, ECKey privKey) {
    ECKey.ECDSASignature signature = privKey.sign(hash);

    byte vdata = signature.v;
    byte[] rdata = signature.r.toByteArray();
    byte[] sdata = signature.s.toByteArray();

    byte[] vencoded = RLP.encodeByte(vdata);
    byte[] rencoded = RLP.encodeElement(rdata);
    byte[] sencoded = RLP.encodeElement(sdata);

    return RLP.encodeList(vencoded, rencoded, sencoded);
}
 
开发者ID:rsksmart,项目名称:rskj,代码行数:14,代码来源:MinerServerImpl.java

示例7: validFallbackBlockSignature

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
public static boolean validFallbackBlockSignature(Constants constants, BlockHeader header, byte[] signatureBytesRLP) {

        if (header.getBitcoinMergedMiningCoinbaseTransaction() != null) {
            return false;
        }

        if (header.getBitcoinMergedMiningMerkleProof() != null) {
            return false;
        }

        byte[] fallbackMiningPubKeyBytes;
        boolean isEvenBlockNumber = header.getNumber() % 2 == 0;
        if (isEvenBlockNumber) {
            fallbackMiningPubKeyBytes = constants.getFallbackMiningPubKey0();
        } else {
            fallbackMiningPubKeyBytes = constants.getFallbackMiningPubKey1();
        }

        ECKey fallbackMiningPubKey = ECKey.fromPublicOnly(fallbackMiningPubKeyBytes);
        List<RLPElement> signatureRLP = (RLPList) RLP.decode2(signatureBytesRLP).get(0);
        if (signatureRLP.size() != 3) {
            return false;
        }

        byte[] v = signatureRLP.get(0).getRLPData();
        byte[] r = signatureRLP.get(1).getRLPData();
        byte[] s = signatureRLP.get(2).getRLPData();

        ECKey.ECDSASignature signature = ECKey.ECDSASignature.fromComponents(r, s, v[0]);

        return fallbackMiningPubKey.verify(header.getHashForMergedMining(), signature);
    }
 
开发者ID:rsksmart,项目名称:rskj,代码行数:33,代码来源:ProofOfWorkRule.java

示例8: encode

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
public PeerDiscoveryMessage encode(byte[] type, byte[] data, ECKey privKey) {
    /* [1] Calc sha3 - prepare for sig */
    byte[] payload = new byte[type.length + data.length];
    payload[0] = type[0];
    System.arraycopy(data, 0, payload, 1, data.length);
    byte[] forSig = sha3(payload);

    /* [2] Crate signature*/
    ECKey.ECDSASignature ecdsaSignature = privKey.sign(forSig);

    ecdsaSignature.v -= 27;

    byte[] sigBytes =
            merge(BigIntegers.asUnsignedByteArray(32, ecdsaSignature.r),
                    BigIntegers.asUnsignedByteArray(32, ecdsaSignature.s), new byte[]{ecdsaSignature.v});

    // [3] calculate MDC
    byte[] forSha = merge(sigBytes, type, data);

    // wrap all the data in to the packet
    this.mdc = sha3(forSha);
    this.signature = sigBytes;
    this.type = type;
    this.data = data;

    this.wire = merge(this.mdc, this.signature, this.type, this.data);

    return this;
}
 
开发者ID:rsksmart,项目名称:rskj,代码行数:30,代码来源:PeerDiscoveryMessage.java

示例9: execute

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Override
public byte[] execute(byte[] data) {

    byte[] h = new byte[32];
    byte[] v = new byte[32];
    byte[] r = new byte[32];
    byte[] s = new byte[32];

    DataWord out = null;

    try {
        System.arraycopy(data, 0, h, 0, 32);
        System.arraycopy(data, 32, v, 0, 32);
        System.arraycopy(data, 64, r, 0, 32);

        int sLength = data.length < 128 ? data.length - 96 : 32;
        System.arraycopy(data, 96, s, 0, sLength);

        if (isValid(r, s, v)) {
            ECKey.ECDSASignature signature = ECKey.ECDSASignature.fromComponents(r, s, v[31]);

            ECKey key = ECKey.signatureToKey(h, signature.toBase64());
            out = new DataWord(key.getAddress());
        }
    } catch (Exception any) {
    }

    if (out == null) {
        return new byte[0];
    } else {
        return out.getData();
    }
}
 
开发者ID:rsksmart,项目名称:rskj,代码行数:34,代码来源:PrecompiledContracts.java

示例10: fallbackSign

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
byte[] fallbackSign(byte[] hash, ECKey privKey) {
    ECKey.ECDSASignature signature = privKey.sign(hash);

    byte vdata = signature.v;
    byte[] rdata = signature.r.toByteArray();
    byte[] sdata = signature.s.toByteArray();

    byte[] vencoded =  RLP.encodeByte(vdata);
    byte[] rencoded = RLP.encodeElement(rdata);
    byte[] sencoded = RLP.encodeElement(sdata);

    return RLP.encodeList(vencoded, rencoded, sencoded);
}
 
开发者ID:rsksmart,项目名称:rskj,代码行数:14,代码来源:BlockGenerator.java

示例11: execute

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Override
public Pair<Boolean, byte[]> execute(byte[] data) {

    byte[] h = new byte[32];
    byte[] v = new byte[32];
    byte[] r = new byte[32];
    byte[] s = new byte[32];

    DataWord out = null;

    try {
        System.arraycopy(data, 0, h, 0, 32);
        System.arraycopy(data, 32, v, 0, 32);
        System.arraycopy(data, 64, r, 0, 32);

        int sLength = data.length < 128 ? data.length - 96 : 32;
        System.arraycopy(data, 96, s, 0, sLength);

        ECKey.ECDSASignature signature = ECKey.ECDSASignature.fromComponents(r, s, v[31]);
        if (validateV(v) && signature.validateComponents()) {
            out = new DataWord(ECKey.signatureToAddress(h, signature));
        }
    } catch (Throwable any) {
    }

    if (out == null) {
        return Pair.of(true, EMPTY_BYTE_ARRAY);
    } else {
        return Pair.of(true, out.getData());
    }
}
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:32,代码来源:PrecompiledContracts.java

示例12: encode

import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
public Message encode(byte[] type, byte[] data, ECKey privKey) {

        /* [1] Calc keccak - prepare for sig */
        byte[] payload = new byte[type.length + data.length];
        payload[0] = type[0];
        System.arraycopy(data, 0, payload, 1, data.length);
        byte[] forSig = sha3(payload);

        /* [2] Crate signature*/
        ECKey.ECDSASignature signature = privKey.sign(forSig);

        signature.v -= 27;

        byte[] sigBytes =
                merge(BigIntegers.asUnsignedByteArray(32, signature.r),
                        BigIntegers.asUnsignedByteArray(32, signature.s), new byte[]{signature.v});

        // [3] calculate MDC
        byte[] forSha = merge(sigBytes, type, data);
        byte[] mdc = sha3(forSha);

        // wrap all the data in to the packet
        this.mdc = mdc;
        this.signature = sigBytes;
        this.type = type;
        this.data = data;

        this.wire = merge(this.mdc, this.signature, this.type, this.data);

        return this;
    }
 
开发者ID:Aptoide,项目名称:AppCoins-ethereumj,代码行数:32,代码来源:Message.java


注:本文中的org.ethereum.crypto.ECKey.ECDSASignature方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。