package uecc

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type secp160r1
type secp192r1
type secp224r1
type secp256r1
type secp256k1

Kinds of ECC curves.

type _ t

Type of an ECC curve, parametrized by its kind.

val secp160r1 : secp160r1 t
val secp192r1 : secp192r1 t
val secp224r1 : secp224r1 t
val secp256r1 : secp256r1 t
val secp256k1 : secp256k1 t

Supported curves.

val sk_size : _ t -> int

sk_size curve is the size in bytes of secret keys from curve. Typically the same as the curve size, (i.e. 32 bytes for secp256r1) except for secp160r1 which is 21 bytes.

val pk_size : _ t -> int

pk_size curve is the size in bytes of public keys from curve. Equals to 2*curve_size.

val compressed_size : _ t -> int

compressed_size curve is the size in bytes of compressed public keys from curve. Equals to pk_size curve/2+1.

type secret
type public
type (_, _) key

Type of a key, parametrized by its curve and kind.

val equal : ('a, 'b) key -> ('a, 'b) key -> bool

equal k1 k2 is true if k1 is represented by the same bytes as k2, and false otherwise.

val neuterize : ('a, _) key -> ('a, public) key

neuterize k is k if k is public, or is the associated public key of k if k is secret.

val sk_of_bytes : 'a t -> Bigstring.t -> (('a, secret) key * ('a, public) key) option

sk_of_bytes curve buf is Some (sk, pk) if buf contains a valid serialization of a curve secret key, or None otherwise.

val pk_of_bytes : 'a t -> Bigstring.t -> ('a, public) key option

pk_of_bytes curve buf is Some pk if buf contains a valid serialization of a curve public key, or None otherwise.

val to_bytes : ?compress:bool -> (_, _) key -> Bigstring.t

to_bytes ?compress k is a serialization of k. If compress is true (the default) and k is a public key, the public key will be in compressed format.

val write_key : ?compress:bool -> Bigstring.t -> (_, _) key -> int

write_key buf k writes k at buf and returns the number of bytes actually written.

val keypair : 'a t -> (('a, secret) key * ('a, public) key) option

keypair curve is Some (sk, pk) where sk and pk is freshly generated keypair for curve if everything went well, or None otherwise.

val dh : ('a, secret) key -> ('a, public) key -> Bigstring.t option

dh sk pk is Some buf where buf contains a shared secret value computed from your sk and someone else's pk if everything went well, or None otherwise.

val write_dh : ('a, secret) key -> ('a, public) key -> Bigstring.t -> int

write_dh sk pk buf writes a shared secret value computed from your sk and someone else's pk and returns the number of bytes actually written (0 in the case of an error).

val sign : (_, secret) key -> Bigstring.t -> Bigstring.t option

sign sk msg is Some signature where signature is a valid signature of msg with secret key sk, or None if an error occured.

val write_sign : (_, secret) key -> Bigstring.t -> msg:Bigstring.t -> int

write_sign sk ~msg buf writes a signature of msg with sk to buf, and returns the number of bytes written (0 in the case of an error).

val verify : (_, public) key -> msg:Bigstring.t -> signature:Bigstring.t -> bool

verify pk ~msg ~signature is true if signature is a valid signature of msg corresponding to pk.

OCaml

Innovation. Community. Security.