+ Rsa_denomination_key
This commit is contained in:
parent
aa1f64fe3e
commit
8dd5973c38
3 changed files with 74 additions and 4 deletions
46
src/json.ml
46
src/json.ml
|
|
@ -84,3 +84,49 @@ module Eddsa = struct
|
||||||
let enc = Jsont.Base.enc pub_to_string in
|
let enc = Jsont.Base.enc pub_to_string in
|
||||||
Jsont.Base.string (Jsont.Base.map ~kind:"EddsaPublicKey" ~dec ~enc ())
|
Jsont.Base.string (Jsont.Base.map ~kind:"EddsaPublicKey" ~dec ~enc ())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Rsa_denomination_key = struct
|
||||||
|
open Rsa_denomination_key
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let make age_mask rsa_pub = { age_mask; rsa_pub } in
|
||||||
|
let age_mask v = v.age_mask in
|
||||||
|
let rsa_pub v = v.rsa_pub in
|
||||||
|
Jsont.Object.map ~kind:"RsaDenominationKey" make
|
||||||
|
|> Jsont.Object.mem "age_mask" Jsont.int ~enc:age_mask
|
||||||
|
|> Jsont.Object.mem "rsa_pub" Jsont.string ~enc:rsa_pub
|
||||||
|
|> Jsont.Object.finish
|
||||||
|
end
|
||||||
|
|
||||||
|
module CS_denomination_key = struct
|
||||||
|
open CS_denomination_key
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let make age_mask cs_pub = { age_mask; cs_pub } in
|
||||||
|
let age_mask v = v.age_mask in
|
||||||
|
let cs_pub v = v.cs_pub in
|
||||||
|
Jsont.Object.map ~kind:"CSDenominationKey" make
|
||||||
|
|> Jsont.Object.mem "age_mask" Jsont.int ~enc:age_mask
|
||||||
|
|> Jsont.Object.mem "cs_pub" Jsont.string ~enc:cs_pub
|
||||||
|
|> Jsont.Object.finish
|
||||||
|
end
|
||||||
|
|
||||||
|
module Denomination_key = struct
|
||||||
|
open Denomination_key
|
||||||
|
|
||||||
|
let rsa v = Rsa v
|
||||||
|
let cs v = CS v
|
||||||
|
|
||||||
|
let jsont =
|
||||||
|
let open Jsont.Object in
|
||||||
|
let rsa = Case.map "RSA" Rsa_denomination_key.jsont ~dec:rsa in
|
||||||
|
let cs = Case.map "CS" CS_denomination_key.jsont ~dec:cs in
|
||||||
|
let enc_case = function
|
||||||
|
| Rsa v -> Case.value rsa v
|
||||||
|
| CS v -> Case.value cs v
|
||||||
|
in
|
||||||
|
let cases = Case.[ make rsa; make cs ] in
|
||||||
|
map ~kind:"DenominationKey" Fun.id
|
||||||
|
|> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases
|
||||||
|
|> finish
|
||||||
|
end
|
||||||
|
|
|
||||||
27
src/types.ml
27
src/types.ml
|
|
@ -130,19 +130,17 @@ module Eddsa = struct
|
||||||
let pub_to_string pub =
|
let pub_to_string pub =
|
||||||
pub |> Mirage_crypto_ec.Ed25519.pub_to_octets |> Base_32.encode
|
pub |> Mirage_crypto_ec.Ed25519.pub_to_octets |> Base_32.encode
|
||||||
|
|
||||||
(*type priv = string*)
|
|
||||||
(* EdDSA signatures are transmitted as 64-bytes base32
|
(* EdDSA signatures are transmitted as 64-bytes base32
|
||||||
binary-encoded objects with just the R and S values (base32_ binary-only). *)
|
binary-encoded objects with just the R and S values (base32_ binary-only). *)
|
||||||
(*type signature = string*)
|
(*type signature = string*)
|
||||||
end
|
end
|
||||||
|
|
||||||
module Rsa = struct
|
module Rsa = struct
|
||||||
|
(* TODO
|
||||||
|
GNUNET_CRYPTO custom encode/decode *)
|
||||||
(* RSA public key converted to Crockford Base32. *)
|
(* RSA public key converted to Crockford Base32. *)
|
||||||
type pub = Mirage_crypto_pk.Rsa.pub
|
type pub = Mirage_crypto_pk.Rsa.pub
|
||||||
|
|
||||||
(* TODO
|
|
||||||
how to read/write pub rsa key
|
|
||||||
what format is used? *)
|
|
||||||
let pub_of_string _s = assert false
|
let pub_of_string _s = assert false
|
||||||
let pub_to_string _pub = assert false
|
let pub_to_string _pub = assert false
|
||||||
end
|
end
|
||||||
|
|
@ -151,3 +149,24 @@ module Hash_code = struct
|
||||||
(* 32-byte value representing a point on Curve25519. *)
|
(* 32-byte value representing a point on Curve25519. *)
|
||||||
type cs25519Point = string
|
type cs25519Point = string
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Rsa_denomination_key = struct
|
||||||
|
type t = {
|
||||||
|
age_mask: int
|
||||||
|
; rsa_pub: string (* Rsa.pub *)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
module CS_denomination_key = struct
|
||||||
|
(* Clause Schnorr *)
|
||||||
|
type t = {
|
||||||
|
age_mask: int
|
||||||
|
; cs_pub: string
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
module Denomination_key = struct
|
||||||
|
type t =
|
||||||
|
| Rsa of Rsa_denomination_key.t
|
||||||
|
| CS of CS_denomination_key.t
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,11 @@ let () =
|
||||||
check Timestamp.jsont {|{"t_s": "never"}|};
|
check Timestamp.jsont {|{"t_s": "never"}|};
|
||||||
check_bad Timestamp.jsont {|{"t_s": "123456780"}|};
|
check_bad Timestamp.jsont {|{"t_s": "123456780"}|};
|
||||||
check_bad Timestamp.jsont {|{"t_s": "agagou"}|};
|
check_bad Timestamp.jsont {|{"t_s": "agagou"}|};
|
||||||
|
|
||||||
|
check Denomination_key.jsont
|
||||||
|
{|{"cipher": "RSA", "age_mask": 18, "rsa_pub": "agagouh"}|};
|
||||||
|
check Denomination_key.jsont
|
||||||
|
{|{"cipher": "CS", "age_mask": 18, "cs_pub": "ouhagag"}|};
|
||||||
()
|
()
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue