Skip to content

Commit 5c4bdb6

Browse files
authored
Merge pull request #244 from hannesm/ecdh-secret-to-octets
mirage-crypto-ec: provide Dh.secret_to_octets
2 parents 56906c0 + 35aa1be commit 5c4bdb6

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

ec/mirage_crypto_ec.ml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ module type Dh = sig
3838
type secret
3939
val secret_of_octets : ?compress:bool -> string ->
4040
(secret * string, error) result
41+
val secret_to_octets : secret -> string
4142
val gen_key : ?compress:bool -> ?g:Mirage_crypto_rng.g -> unit ->
4243
secret * string
4344
val key_exchange : secret -> string -> (string, error) result
@@ -505,6 +506,9 @@ module Make_dh (Param : Parameters) (P : Point) (S : Scalar) : Dh = struct
505506
| Ok p -> Ok (p, share ?compress p)
506507
| Error _ as e -> e
507508

509+
let secret_to_octets s =
510+
S.to_octets s
511+
508512
let rec generate_private_key ?g () =
509513
let candidate = Mirage_crypto_rng.generate ?g Param.byte_length in
510514
match S.of_octets candidate with
@@ -953,6 +957,8 @@ module X25519 = struct
953957
else
954958
Error `Invalid_length
955959

960+
let secret_to_octets s = s
961+
956962
let is_zero =
957963
let zero = String.make key_len '\000' in
958964
fun buf -> String.equal zero buf

ec/mirage_crypto_ec.mli

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ module type Dh = sig
3838
the shared part will be compressed. May result in an error if the buffer
3939
had an invalid length or was not in bounds. *)
4040

41+
val secret_to_octets : secret -> string
42+
(** [secret_to_octets secret] encodes the provided secret into a freshly
43+
allocated buffer. *)
44+
4145
val gen_key : ?compress:bool -> ?g:Mirage_crypto_rng.g -> unit ->
4246
secret * string
4347
(** [gen_key ~compress ~g ()] generates a private and a public key for

0 commit comments

Comments
 (0)