You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let shift = (8*Param.byte_length) -Param.bit_length in
644
+
if shift =0then
645
+
Bytes.unsafe_to_string r
646
+
else
647
+
(* Assuming shift is < 8 *)
648
+
let r' =Bytes.create Param.byte_length in
649
+
let p =ref0x00in
650
+
for i =0toParam.byte_length -1do
651
+
let x =Bytes.get_uint8 r i in
652
+
let v = (x lsr shift) lor (!p lsl (8- shift)) in
653
+
p := x;
654
+
Bytes.set_uint8 r' i v
655
+
done;
656
+
Bytes.unsafe_to_string r'
657
+
635
658
(* take qbit length, and ensure it is suitable for ECDSA (> 0 & < n) *)
636
659
letgeng=
637
660
letrec go()=
638
-
let r =Mirage_crypto_rng.generate ~gParam.byte_length in
661
+
let b =Bytes.create Param.byte_length in
662
+
Mirage_crypto_rng.generate_into ~g b Param.byte_length;
663
+
(* truncate to the desired number of bits *)
664
+
let r = bits2int b in
639
665
ifS.is_in_range r then r else go ()
640
666
in
641
667
go ()
@@ -758,6 +784,7 @@ module P256 : Dh_dsa = struct
758
784
let n ="\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFC\x63\x25\x51"
759
785
let pident ="\x3F\xFF\xFF\xFF\xC0\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"|> rev_string (* (Params.p + 1) / 4*)
760
786
let byte_length =32
787
+
let bit_length =256
761
788
let fe_length =32
762
789
let first_byte_bits =None
763
790
end
@@ -809,6 +836,7 @@ module P384 : Dh_dsa = struct
809
836
let n ="\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC7\x63\x4D\x81\xF4\x37\x2D\xDF\x58\x1A\x0D\xB2\x48\xB0\xA7\x7A\xEC\xEC\x19\x6A\xCC\xC5\x29\x73"
810
837
let pident ="\x3F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBF\xFF\xFF\xFF\xC0\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00"|> rev_string (* (Params.p + 1) / 4*)
811
838
let byte_length =48
839
+
let bit_length =384
812
840
let fe_length =48
813
841
let first_byte_bits =None
814
842
end
@@ -861,6 +889,7 @@ module P521 : Dh_dsa = struct
861
889
let n ="\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFA\x51\x86\x87\x83\xBF\x2F\x96\x6B\x7F\xCC\x01\x48\xF7\x09\xA5\xD0\x3B\xB5\xC9\xB8\x89\x9C\x47\xAE\xBB\x6F\xB7\x1E\x91\x38\x64\x09"
862
890
let pident ="\x01\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"|> rev_string
863
891
let byte_length =66
892
+
let bit_length =521
864
893
let fe_length =ifSys.word_size ==64then72else68(* TODO: is this congruent with C code? *)
0 commit comments