Skip to content

Instantly share code, notes, and snippets.

@jskulavik
Last active July 30, 2016 05:09
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 jskulavik/fce928323a4cec93bfe78e9351b745f0 to your computer and use it in GitHub Desktop.
Save jskulavik/fce928323a4cec93bfe78e9351b745f0 to your computer and use it in GitHub Desktop.
F# Snippet for DocumentDB token generation
let GenerateAuthToken (verb:string) (resourceType:string) (resourceId:string) (key:string) (keyType:string) (tokenVersion:string) =
let hmacSha256 = new Security.Cryptography.HMACSHA256()
hmacSha256.Key <- Convert.FromBase64String(key)
let payLoad = sprintf "%s\n%s\n%s\n%s\n%s\n" (verb.ToLowerInvariant()) (resourceType.ToLowerInvariant()) (resourceId.ToLowerInvariant()) (DateTime.UtcNow.ToString("r").ToLowerInvariant()) ""
let hashPayLoad = hmacSha256.ComputeHash(Text.Encoding.UTF8.GetBytes(payLoad))
let signature = Convert.ToBase64String(hashPayLoad)
let token = Web.HttpUtility.UrlEncode (sprintf "type=%s&ver=%s&sig=%s" keyType tokenVersion signature)
token
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment