public class ECSignUtils extends Object
Transaction signing logic.
Adapted from the BitcoinJ ECKey implementation.
| 限定符和类型 | 字段和说明 |
|---|---|
static org.bouncycastle.crypto.params.ECDomainParameters |
CURVE |
| 构造器和说明 |
|---|
ECSignUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static BigInteger |
publicKeyFromPrivate(BigInteger privKey)
Returns public key from the given private key.
|
static PublicKey |
publicKeyFromPrivateKey(BigInteger privKey) |
static BigInteger |
recoverFromSignature(int recId,
ECDSASignature sig,
byte[] message)
Given the components of a signature and a selector value, recover and return the public
key that generated the signature according to the algorithm in SEC1v2 section 4.1.6.
|
static BigInteger |
signedMessageToKey(byte[] message,
SignatureData signatureData)
Given an arbitrary piece of text and an Ethereum message signature encoded in bytes,
returns the public key that was used to sign it.
|
static SignatureData |
signMessage(byte[] message,
AbstractKeyPair keyPair) |
public static SignatureData signMessage(byte[] message, AbstractKeyPair keyPair)
public static BigInteger recoverFromSignature(int recId, ECDSASignature sig, byte[] message)
Given the components of a signature and a selector value, recover and return the public key that generated the signature according to the algorithm in SEC1v2 section 4.1.6.
The recId is an index from 0 to 3 which indicates which of the 4 possible keys is the correct one. Because the key recovery operation yields multiple potential keys, the correct key must either be stored alongside the signature, or you must be willing to try each recId in turn until you find one that outputs the key you are expecting.
If this method returns null it means recovery was not possible and recId should be iterated.
Given the above two points, a correct usage of this method is inside a for loop from 0 to 3, and if the output is null OR a key that is not the one you expect, you try again with the next recId.
recId - Which possible key to recover.sig - the R and S components of the signature, wrapped.message - Hash of the data that was signed.public static BigInteger signedMessageToKey(byte[] message, SignatureData signatureData) throws SignatureException
message - RLP encoded message.signatureData - The message signature componentsSignatureException - If the public key could not be recovered or if there was a
signature format error.public static BigInteger publicKeyFromPrivate(BigInteger privKey)
privKey - the private key to derive the public key frompublic static PublicKey publicKeyFromPrivateKey(BigInteger privKey) throws Exception
ExceptionCopyright © 2022. All rights reserved.