Bitcoin-Core
libsecp256k1中與G的基本點乘法
我正在嘗試使用比特幣核心 secp256k1 庫制定一個最小的範例,但由於可用的選項很多,我有點迷失了。具體來說,我只是想使用 libsecp256k1 將標准定義的生成點 G 與整數 k 相乘,即
H = k*G
.到目前為止,我發現
secp256k1_scalar_mul
,它將兩個標量secp256k1_fe_mul
相乘,並將兩個欄位元素相乘,而 close 兩者都不是我想要的。所以我想知道是否有人可以指出 libsecp256k1 中的合適函式?謝謝!
請記住,正如 Pieter Wuille 所說,所有公開的功能(只有您需要使用的功能)都在
include/secp256k1.h
你可以
secp256k1_ec_pubkey_create
這樣使用:secp256k1_context *sign = secp256k1_context_create(SECP256K1_CONTEXT_SIGN); secp256k1_pubkey pubkey; // Here our private key is 1, little endian const unsigned char seckey[32] = {1}; if (!secp256k1_ec_pubkey_create(sign, &pubkey, seckey)) { // Private key out of range // abort! secp256k1_context_destroy(sign); exit(1); } // Use 65 and SECP256K1_EC_UNCOMPRESSED for uncompressed public key unsigned char outpubkey[33]; size_t written_bytes = 33; secp256k1_ec_pubkey_serialize(sign, outpubkey, &written_bytes, &pubkey, SECP256K1_EC_COMPRESSED); printf("Public key: "); for (int i = 0; i < 33; i++) { printf("%.2x", (unsigned int) outpubkey[i]); } printf("\n"); secp256k1_context_destroy(sign);
可以使用ThePiachu 的工具和私鑰驗證誰的輸出
0100000000000000000000000000000000000000000000000000000000000000