# Crate secp256kfun_k256_backend

source · [−]## Expand description

Pure Rust implementation of the secp256k1 (K-256) elliptic curve, including support for the Elliptic Curve Digital Signature Algorithm (ECDSA), Elliptic Curve Diffie-Hellman (ECDH), and general purpose elliptic curve/field arithmetic which can be used to implement protocols based on group operations.

### About secp256k1 (K-256)

secp256k1 is a Koblitz curve commonly used in cryptocurrency applications. The “K-256” name follows NIST notation where P = prime fields, B = binary fields, and K = Koblitz curves.

The curve is specified as `secp256k1`

by Certicom’s SECG in
“SEC 2: Recommended Elliptic Curve Domain Parameters”:

https://www.secg.org/sec2-v2.pdf

### ⚠️ Security Warning

The elliptic curve arithmetic contained in this crate has never been independently audited!

This crate has been designed with the goal of ensuring that secret-dependent
operations are performed in constant time (using the `subtle`

crate and
constant-time formulas). However, it has not been thoroughly assessed to ensure
that generated assembly is constant time on common CPU architectures.

USE AT YOUR OWN RISK!

### Minimum Supported Rust Version

Rust **1.51** or higher.

Minimum supported Rust version may be changed in the future, but it will be accompanied with a minor version bump.

## Structs

A point on the secp256k1 curve in affine coordinates.

An element in the finite field used for curve coordinates.

A point on the secp256k1 curve in projective coordinates.

Scalars are elements in the finite field modulo n.

K-256 (secp256k1) elliptic curve.

## Functions

Calculates `x * k + y * l`

.

Calculates a linear combination `sum(x[i] * k[i])`

, `i = 0..N`

## Type Definitions

Compressed SEC1-encoded secp256k1 (K-256) curve point.

secp256k1 (K-256) field element serialized as bytes.

Non-zero secp256k1 (K-256) scalar field element.
inner byte value is within range of `Secp256k1::ORDER`

.