Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

secp256k1 ライブラリの関数

secp256k1のC89実装のライブラリの関数のメモです。

GitHub - bitcoin-core/secp256k1: Optimized C library for EC operations on curve secp256k1

秘密鍵はスカラー値であり、sと表現することにします。
sは1以上secp256k1の群位数N未満である必要があります。
点は大文字で表現します。
公開鍵は楕円曲線上の点であり、Pと表現することにします。
ベースポイントはGと表現することにします。
tweakはスカラー値を表します。

/// P とデータを使い署名が正しいか検証する
secp256k1_ecdsa_verify()

/// s と nonce を使ってデータに対する署名を作成する
secp256k1_ecdsa_sign()

/// s が1以上、N未満であるかを返す
secp256k1_ec_seckey_verify()

/// s * G
secp256k1_ec_pubkey_create()

/// -s
secp256k1_ec_privkey_negate()

/// - P
secp256k1_ec_pubkey_negate()

/// s + tweak
secp256k1_ec_privkey_tweak_add()

/// P + tweak * G
secp256k1_ec_pubkey_tweak_add()

/// s * tweak
secp256k1_ec_privkey_tweak_mul()

/// P * tweak
secp256k1_ec_pubkey_tweak_mul()

/// P[0] + P[1] + ... + P[n]
secp256k1_ec_pubkey_combine()