Skip to content

Instantly share code, notes, and snippets.

@moonlightdrive
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moonlightdrive/39907c73b1102a7d36c4 to your computer and use it in GitHub Desktop.
Save moonlightdrive/39907c73b1102a7d36c4 to your computer and use it in GitHub Desktop.
AWS Signature 4 Signing Process
(* See http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
# signature;;
- : string = "ced6826de92d2bdeed8f846f0bf508e8559e98e4b0199114b84c54174deb456c"
*)
#require "cryptokit";;
open Cryptokit;;
let secret = "AWS4" ^ "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY";;
let date = "20110909";;
let reg = "us-east-1";;
let service = "iam";;
let signing = "aws4_request";;
let hash_str key str = hash_string (MAC.hmac_sha256 key) str;;
let kSecret = secret;;
let kDate = hash_str kSecret date;;
let kReg = hash_str kDate reg;;
let kService = hash_str kReg service;;
let kSigning = hash_str kService "aws4_request";;
let str_to_sign = "AWS4-HMAC-SHA256
20110909T233600Z
20110909/us-east-1/iam/aws4_request
3511de7e95d28ecd39e9513b642aee07e54f4941150d8df8bf94b328ef7e55e2";;
let signature = hash_str kSigning str_to_sign |> transform_string ( Hexa.encode () );;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment