Revert "test: manual rsa"

This reverts commit 0baca6aff4.
This commit is contained in:
Swrup 2025-10-03 15:40:38 +02:00
parent 0baca6aff4
commit 04bb29b30c
2 changed files with 7 additions and 60 deletions

View file

@ -33,17 +33,15 @@
do we re-implement crypto
or do we re-use secmodules with IPC on a Unix domain socket *)
(*
type key =
| Eddsa of Mirage_crypto_ec.Ed25519.(priv * pub)
| Rsa of Mirage_crypto_pk.Rsa.(priv * pub)
*)
let eddsa_online_key_device =
let finally _key = () in
Vif.Device.v ~name:"eddsa_online_key" ~finally [] @@ fun () ->
(* [Mirage_crypto_rng_miou_unix.(initialize (module Pfortuna))] is already done by [Vif.run] *)
Mirage_crypto_ec.Ed25519.generate ()
Eddsa (Mirage_crypto_ec.Ed25519.generate ())
let rsa_denomination_key_device =
let finally _key = () in
@ -51,58 +49,4 @@ let rsa_denomination_key_device =
let open Mirage_crypto_pk.Rsa in
let rsa_keysize = 2048 in
let priv = generate ~bits:rsa_keysize () in
(priv, pub_of_priv priv)
(* full-domain-hash ; not impl *)
let fdh m = Fun.id m
let mod_inverse a n =
let open Z in
(* extended Euclidean algorithm: returns (g, x, y) s.t. ax + by = g = gcd(a,b) *)
let rec extended_gcd a b =
if equal b zero then (a, one, zero)
else
let q, r = ediv_rem a b in
let g, x1, y1 = extended_gcd b r in
(g, y1, sub x1 (mul q y1))
in
(* modular inverse of a modulo n, if it exists *)
let mod_inverse a n =
let g, x, _ = extended_gcd a n in
if not (equal g one) then Fmt.failwith "no inverse"
else
(* normalize result into [0, n-1] *)
erem (add x n) n
in
mod_inverse a n
let test =
let finally _key = () in
Vif.Device.v ~name:"test" ~finally
[ Vif.Device.value rsa_denomination_key_device ]
@@ fun (priv, pub) ->
let { e; n } : Mirage_crypto_pk.Rsa.pub = pub in
let d = priv.d in
(* client *)
let m = "uhuh ~~!" |> Z.of_bits in
let f = fdh m in
assert (Z.lt f n);
(* random blinding factor *)
(* should be in Z_n *)
let b = "qwertyuiop" |> Z.of_bits in
assert (Z.(lt (abs b) n));
let b_inv = mod_inverse b n in
assert (Z.(equal Z.one (b * b_inv mod n)));
let f' = Z.(f * powm b e n mod n) in
Fmt.pr "@. ok step 1. @.";
(* server *)
let s' = Z.(powm f' d n) in
Fmt.pr "@. ok step 2. @.";
(* client *)
let s = Z.(s' * b_inv mod n) in
let m' = Z.(powm s e n) in
Fmt.pr "m : `%s`@." (Z.to_string m);
Fmt.pr "m': `%s`@." (Z.to_string m');
let msg_txt = Z.to_bits m' in
Fmt.pr "msg_txt: `%s`@." msg_txt;
fun _key -> ()
Rsa (priv, pub_of_priv priv)

View file

@ -122,8 +122,11 @@ let () =
Miou_unix.run @@ fun () ->
let env = () in
let devices =
let open Management in
Vif.Devices.[ eddsa_online_key_device; rsa_denomination_key_device; test ]
Vif.Devices.
[
Management.eddsa_online_key_device
; Management.rsa_denomination_key_device
]
in
let middlewares = Vif.Middlewares.[] in
Vif.run ~cfg ~devices ~middlewares routes env