## std::crypto::dsa::ecdsa::secp256k1
| Procedure | Description |
| ----------- | ------------- |
| verify | Given an ECDSA public key ( in projective coordinate system i.e. each secp256k1 curve point
is represented in terms of X, Y, Z coordinates ), hashed message h ( a 256 -bit element represented
in Montgomery form ) and an ECDSA signature, represented in terms of (r, s) s.t. each of them are
represented in Montgomery form, this routine attempts to verify the ECDSA signature.
Expected stack state
[X, Y, Z, h, r, s, ...] i.e. total 48 elements on stack top
X -> x0, x1, x2, x3, x4, x5, x6, x7 ( secp256k1 base field element, in Montgomery form )
Y -> y0, y1, y2, y3, y4, y5, y6, y7 ( secp256k1 base field element, in Montgomery form )
Z -> z0, z1, z2, z3, z4, z5, z6, z7 ( secp256k1 base field element, in Montgomery form )
h -> h0, h1, h2, h3, h4, h5, h6, h7 ( secp256k1 scalar field element, in Montgomery form )
r -> r0, r1, r2, r3, r4, r5, r6, r7 ( secp256k1 scalar field element, in Montgomery form )
s -> s0, s1, s2, s3, s4, s5, s6, s7 ( secp256k1 scalar field element, in Montgomery form )
Final stack state
[ ... ]
If verification fails, program execution will be aborted.
See https://github.com/itzmeanjan/secp256k1/blob/37b339db3e03d24c2977399eb8896ef515ebb09b/ecdsa/verify.py#L11-L45
|