package savvy
A straightforward OAuth2 client
Install
Dune Dependency
Authors
Maintainers
Sources
savvy-0.2.0.tbz
sha256=172de1fdd0e5d015c7dbbef1845f47d452bd9c3153ebb07b0a0d459164906957
sha512=4cdb0156d9bce1ae8f466bedc7be52d303dfb73d099dceb47949fbf0cd5a9452ba1da13db829e88432ff4fb9404fda41694033dcd91e3bb6466b729cf2740272
doc/src/savvy.utils/utils.ml.html
Source file utils.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
(* Generate a cryptographically secure random state value *) let generate_state () = let open Cryptokit in let rng = Random.device_rng "/dev/urandom" in transform_string (Hexa.encode ()) (Random.string rng 32) (* Create a code_verifier for PKCE *) let generate_code_verifier () = let open Cryptokit in let rng = Random.device_rng "/dev/urandom" in transform_string (Hexa.encode ()) (Random.string rng 128) let generate_code_challenge verifier = let hasher = Cryptokit.Hash.sha256 () in hasher#add_string verifier; let base64_string = Base64.encode_string ~pad:false hasher#result in (* URLs are so picky, can't have pluses, can't have slashes, can't have pictures, the worst. *) String.map (function '+' -> '-' | '/' -> '_' | c -> c) base64_string let form_encode p = p |> List.map (fun (k,v) -> Printf.sprintf "%s=%s" k v) |> String.concat "&" |> Cohttp_lwt.Body.of_string
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>