mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 01:13:45 +00:00
crypto/secp256k1: rename C extension functions to secp256k1_ext_*
This commit is contained in:
parent
b5874273ce
commit
e34dea192c
3 changed files with 13 additions and 13 deletions
|
|
@ -42,7 +42,7 @@ import (
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include "libsecp256k1/include/secp256k1.h"
|
#include "libsecp256k1/include/secp256k1.h"
|
||||||
extern int secp256k1_pubkey_scalar_mul(const secp256k1_context* ctx, const unsigned char *point, const unsigned char *scalar);
|
extern int secp256k1_ext_scalar_mul(const secp256k1_context* ctx, const unsigned char *point, const unsigned char *scalar);
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
|
|
@ -236,7 +236,7 @@ func (BitCurve *BitCurve) ScalarMult(Bx, By *big.Int, scalar []byte) (*big.Int,
|
||||||
math.ReadBits(By, point[32:])
|
math.ReadBits(By, point[32:])
|
||||||
pointPtr := (*C.uchar)(unsafe.Pointer(&point[0]))
|
pointPtr := (*C.uchar)(unsafe.Pointer(&point[0]))
|
||||||
scalarPtr := (*C.uchar)(unsafe.Pointer(&scalar[0]))
|
scalarPtr := (*C.uchar)(unsafe.Pointer(&scalar[0]))
|
||||||
res := C.secp256k1_pubkey_scalar_mul(context, pointPtr, scalarPtr)
|
res := C.secp256k1_ext_scalar_mul(context, pointPtr, scalarPtr)
|
||||||
|
|
||||||
// Unpack the result and clear temporaries.
|
// Unpack the result and clear temporaries.
|
||||||
x := new(big.Int).SetBytes(point[:32])
|
x := new(big.Int).SetBytes(point[:32])
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ static secp256k1_context* secp256k1_context_create_sign_verify() {
|
||||||
return secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
|
return secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// secp256k1_ecdsa_recover_pubkey recovers the public key of an encoded compact signature.
|
// secp256k1_ext_ecdsa_recover recovers the public key of an encoded compact signature.
|
||||||
//
|
//
|
||||||
// Returns: 1: recovery was successful
|
// Returns: 1: recovery was successful
|
||||||
// 0: recovery was not successful
|
// 0: recovery was not successful
|
||||||
|
|
@ -27,7 +27,7 @@ static secp256k1_context* secp256k1_context_create_sign_verify() {
|
||||||
// Out: pubkey_out: the serialized 65-byte public key of the signer (cannot be NULL)
|
// Out: pubkey_out: the serialized 65-byte public key of the signer (cannot be NULL)
|
||||||
// In: sigdata: pointer to a 65-byte signature with the recovery id at the end (cannot be NULL)
|
// In: sigdata: pointer to a 65-byte signature with the recovery id at the end (cannot be NULL)
|
||||||
// msgdata: pointer to a 32-byte message (cannot be NULL)
|
// msgdata: pointer to a 32-byte message (cannot be NULL)
|
||||||
static int secp256k1_ecdsa_recover_pubkey(
|
static int secp256k1_ext_ecdsa_recover(
|
||||||
const secp256k1_context* ctx,
|
const secp256k1_context* ctx,
|
||||||
unsigned char *pubkey_out,
|
unsigned char *pubkey_out,
|
||||||
const unsigned char *sigdata,
|
const unsigned char *sigdata,
|
||||||
|
|
@ -46,7 +46,7 @@ static int secp256k1_ecdsa_recover_pubkey(
|
||||||
return secp256k1_ec_pubkey_serialize(ctx, pubkey_out, &outputlen, &pubkey, SECP256K1_EC_UNCOMPRESSED);
|
return secp256k1_ec_pubkey_serialize(ctx, pubkey_out, &outputlen, &pubkey, SECP256K1_EC_UNCOMPRESSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// secp256k1_ecdsa_verify_enc verifies an encoded compact signature.
|
// secp256k1_ext_ecdsa_verify verifies an encoded compact signature.
|
||||||
//
|
//
|
||||||
// Returns: 1: signature is valid
|
// Returns: 1: signature is valid
|
||||||
// 0: signature is invalid
|
// 0: signature is invalid
|
||||||
|
|
@ -55,7 +55,7 @@ static int secp256k1_ecdsa_recover_pubkey(
|
||||||
// msgdata: pointer to a 32-byte message (cannot be NULL)
|
// msgdata: pointer to a 32-byte message (cannot be NULL)
|
||||||
// pubkeydata: pointer to public key data (cannot be NULL)
|
// pubkeydata: pointer to public key data (cannot be NULL)
|
||||||
// pubkeylen: length of pubkeydata
|
// pubkeylen: length of pubkeydata
|
||||||
static int secp256k1_ecdsa_verify_enc(
|
static int secp256k1_ext_ecdsa_verify(
|
||||||
const secp256k1_context* ctx,
|
const secp256k1_context* ctx,
|
||||||
const unsigned char *sigdata,
|
const unsigned char *sigdata,
|
||||||
const unsigned char *msgdata,
|
const unsigned char *msgdata,
|
||||||
|
|
@ -74,14 +74,14 @@ static int secp256k1_ecdsa_verify_enc(
|
||||||
return secp256k1_ecdsa_verify(ctx, &sig, msgdata, &pubkey);
|
return secp256k1_ecdsa_verify(ctx, &sig, msgdata, &pubkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
// secp256k1_decompress_pubkey decompresses a public key.
|
// secp256k1_ext_decompress_pubkey decompresses a public key.
|
||||||
//
|
//
|
||||||
// Returns: 1: public key is valid
|
// Returns: 1: public key is valid
|
||||||
// 0: public key is invalid
|
// 0: public key is invalid
|
||||||
// Args: ctx: pointer to a context object (cannot be NULL)
|
// Args: ctx: pointer to a context object (cannot be NULL)
|
||||||
// Out: pubkey_out: the serialized 65-byte public key (cannot be NULL)
|
// Out: pubkey_out: the serialized 65-byte public key (cannot be NULL)
|
||||||
// In: pubkeydata: pointer to 33 bytes of compressed public key data (cannot be NULL)
|
// In: pubkeydata: pointer to 33 bytes of compressed public key data (cannot be NULL)
|
||||||
static int secp256k1_decompress_pubkey(
|
static int secp256k1_ext_decompress_pubkey(
|
||||||
const secp256k1_context* ctx,
|
const secp256k1_context* ctx,
|
||||||
unsigned char *pubkey_out,
|
unsigned char *pubkey_out,
|
||||||
const unsigned char *pubkeydata
|
const unsigned char *pubkeydata
|
||||||
|
|
@ -95,7 +95,7 @@ static int secp256k1_decompress_pubkey(
|
||||||
return secp256k1_ec_pubkey_serialize(ctx, pubkey_out, &outputlen, &pubkey, SECP256K1_EC_UNCOMPRESSED);
|
return secp256k1_ec_pubkey_serialize(ctx, pubkey_out, &outputlen, &pubkey, SECP256K1_EC_UNCOMPRESSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// secp256k1_pubkey_scalar_mul multiplies a point by a scalar in constant time.
|
// secp256k1_ext_scalar_mul multiplies a point by a scalar in constant time.
|
||||||
//
|
//
|
||||||
// Returns: 1: multiplication was successful
|
// Returns: 1: multiplication was successful
|
||||||
// 0: scalar was invalid (zero or overflow)
|
// 0: scalar was invalid (zero or overflow)
|
||||||
|
|
@ -104,7 +104,7 @@ static int secp256k1_decompress_pubkey(
|
||||||
// In: point: pointer to a 64-byte public point,
|
// In: point: pointer to a 64-byte public point,
|
||||||
// encoded as two 256bit big-endian numbers.
|
// encoded as two 256bit big-endian numbers.
|
||||||
// scalar: a 32-byte scalar with which to multiply the point
|
// scalar: a 32-byte scalar with which to multiply the point
|
||||||
int secp256k1_pubkey_scalar_mul(const secp256k1_context* ctx, unsigned char *point, const unsigned char *scalar) {
|
int secp256k1_ext_scalar_mul(const secp256k1_context* ctx, unsigned char *point, const unsigned char *scalar) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int overflow = 0;
|
int overflow = 0;
|
||||||
secp256k1_fe feX, feY;
|
secp256k1_fe feX, feY;
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ func RecoverPubkey(msg []byte, sig []byte) ([]byte, error) {
|
||||||
sigdata = (*C.uchar)(unsafe.Pointer(&sig[0]))
|
sigdata = (*C.uchar)(unsafe.Pointer(&sig[0]))
|
||||||
msgdata = (*C.uchar)(unsafe.Pointer(&msg[0]))
|
msgdata = (*C.uchar)(unsafe.Pointer(&msg[0]))
|
||||||
)
|
)
|
||||||
if C.secp256k1_ecdsa_recover_pubkey(context, (*C.uchar)(unsafe.Pointer(&pubkey[0])), sigdata, msgdata) == 0 {
|
if C.secp256k1_ext_ecdsa_recover(context, (*C.uchar)(unsafe.Pointer(&pubkey[0])), sigdata, msgdata) == 0 {
|
||||||
return nil, ErrRecoverFailed
|
return nil, ErrRecoverFailed
|
||||||
}
|
}
|
||||||
return pubkey, nil
|
return pubkey, nil
|
||||||
|
|
@ -130,7 +130,7 @@ func VerifySignature(pubkey, msg, signature []byte) bool {
|
||||||
sigdata := (*C.uchar)(unsafe.Pointer(&signature[0]))
|
sigdata := (*C.uchar)(unsafe.Pointer(&signature[0]))
|
||||||
msgdata := (*C.uchar)(unsafe.Pointer(&msg[0]))
|
msgdata := (*C.uchar)(unsafe.Pointer(&msg[0]))
|
||||||
keydata := (*C.uchar)(unsafe.Pointer(&pubkey[0]))
|
keydata := (*C.uchar)(unsafe.Pointer(&pubkey[0]))
|
||||||
return C.secp256k1_ecdsa_verify_enc(context, sigdata, msgdata, keydata, C.size_t(len(pubkey))) != 0
|
return C.secp256k1_ext_ecdsa_verify(context, sigdata, msgdata, keydata, C.size_t(len(pubkey))) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecompressPubkey parses a public key in the 33-byte compressed format.
|
// DecompressPubkey parses a public key in the 33-byte compressed format.
|
||||||
|
|
@ -142,7 +142,7 @@ func DecompressPubkey(pubkey []byte) (X, Y *big.Int) {
|
||||||
buf := make([]byte, 65)
|
buf := make([]byte, 65)
|
||||||
bufdata := (*C.uchar)(unsafe.Pointer(&buf[0]))
|
bufdata := (*C.uchar)(unsafe.Pointer(&buf[0]))
|
||||||
pubkeydata := (*C.uchar)(unsafe.Pointer(&pubkey[0]))
|
pubkeydata := (*C.uchar)(unsafe.Pointer(&pubkey[0]))
|
||||||
if C.secp256k1_decompress_pubkey(context, bufdata, pubkeydata) == 0 {
|
if C.secp256k1_ext_decompress_pubkey(context, outdata, pubkeydata) == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
return new(big.Int).SetBytes(buf[1:33]), new(big.Int).SetBytes(buf[33:])
|
return new(big.Int).SetBytes(buf[1:33]), new(big.Int).SetBytes(buf[33:])
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue