Package org.bitcoinj.crypto
Class ECKey.ECDSASignature
java.lang.Object
org.bitcoinj.crypto.ECKey.ECDSASignature
- Direct Known Subclasses:
TransactionSignature
- Enclosing class:
- ECKey
Groups the two components that make up a signature, and provides a way to encode to DER form, which is
how ECDSA signatures are represented when embedded in other data structures in the Bitcoin protocol. The raw
components can be useful for doing further EC maths on them.
-
Field Summary
Modifier and TypeFieldDescriptionfinal BigInteger
The two components of the signature.final BigInteger
The two components of the signature. -
Constructor Summary
ConstructorDescriptionConstructs a signature with the given components. -
Method Summary
Modifier and TypeMethodDescriptionstatic ECKey.ECDSASignature
decodeFromDER
(byte[] bytes) protected ByteArrayOutputStream
byte[]
DER is an international standard for serializing data structures which is widely used in cryptography.boolean
int
hashCode()
boolean
Returns true if the S component is "low", that means it is belowECKey.HALF_CURVE_ORDER
.Will automatically adjust the S component to be less than or equal to half the curve order, if necessary.
-
Field Details
-
r
The two components of the signature. -
s
The two components of the signature.
-
-
Constructor Details
-
ECDSASignature
Constructs a signature with the given components. Does NOT automatically canonicalise the signature.
-
-
Method Details
-
isCanonical
public boolean isCanonical()Returns true if the S component is "low", that means it is belowECKey.HALF_CURVE_ORDER
. See BIP62. -
toCanonicalised
Will automatically adjust the S component to be less than or equal to half the curve order, if necessary. This is required because for every signature (r,s) the signature (r, -s (mod N)) is a valid signature of the same message. However, we dislike the ability to modify the bits of a Bitcoin transaction after it's been signed, as that violates various assumed invariants. Thus in future only one of those forms will be considered legal and the other will be banned. -
encodeToDER
public byte[] encodeToDER()DER is an international standard for serializing data structures which is widely used in cryptography. It's somewhat like protocol buffers but less convenient. This method returns a standard DER encoding of the signature, as recognized by OpenSSL and other libraries. -
decodeFromDER
- Throws:
SignatureDecodeException
- if the signature is unparseable in some way.
-
derByteStream
- Throws:
IOException
-
equals
-
hashCode
public int hashCode()
-