View Source Tezex.Crypto.ECDSA (tezex v0.1.0)
Decode compressed public key and verify signatures using the Elliptic Curve Digital Signature Algorithm (ECDSA).
Link to this section Summary
Functions
Decodes a compressed public key to the EC public key it is representing on EC curve
.
Verifies a message signature based on a public key
Link to this section Functions
Decodes a compressed public key to the EC public key it is representing on EC curve
.
Here is a sample curve
, P-256 with curve parameters from https://neuromancer.sk/std/nist/:
%EllipticCurve.Curve{
name: :prime256v1,
A: 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC,
B: 0x5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B,
P: 0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF,
N: 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551,
G: %Point{
x: 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296,
y: 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5
},
oid: [1, 2, 840, 10045, 3, 1, 7]
}
Parameters:
compressed_pubkey
[binary
]: the public key to decodecurve
[%EllipticCurve.Curve{}
]: the curve to use (or one of:prime256v1
,:secp256k1
for the two known curves supported by default)
Returns:
- public_key [
%EllipticCurve.PublicKey{}
]: a struct containing the public point and the curve;
Verifies a message signature based on a public key
Parameters:
message
[binary
]: message that was signedsignature
[%EllipticCurve.Signature{}
]: signature associated with the messagepublic_key
[%EllipticCurve.PublicKey{}
]: public key associated with the message signeroptions
[kw list
]: refines request:hashfunc
[fun/1
]: hash function applied to the message. Default:fn msg -> :crypto.hash(:sha256, msg) end
Returns:
- verified [
bool
]: true if message, public key and signature are compatible, false otherwise