Skip to content

rlopzc/elm-hmac-sha1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elm-hmac-sha1

Compute HMAC message digests using SHA-1 hash function. You provide a key and a message and you get a digest. You can convert the digest into different representations like Bytes, Base16 or Base64.

This provide the native Bytes (elm/bytes). This is important as you can represent the data as you want.

More information of HMAC here.

Examples

Some API's use the HMAC SHA-1 as Authentication, like Amazon or Twitter.

import HmacSha1
import HmacSha1.Key as Key exposing (Key)

canonicalString : String
canonicalString =
    String.join ","
        [ "application/json"
        , ""
        , "/account"
        , "Wed, 02 Nov 2016 17:26:52 GMT"
        ]

appKey : Key
appKey =
    Key.fromString "verify-secret"

HmacSha1.fromString appKey canonicalString
    |> HmacSha1.toBase64
--> "nLet/JEZG9CRXHScwaQ/na4vsKQ="

Notes

This package doesn't implement the SHA-1 hash function. It internally uses this implementation.

HMAC strength depends on the hashing algorithm and SHA-1 is not considered cryptographically strong. Use this package to interoperate with systems that already uses HMAC SHA-1 and not for implementing new systems.

There are stronger cryptographic algorithms like HMAC SHA-2, and this Elm package implements it.

Testing

This package uses doc tests, which can be tested using elm-verify-examples. To run all tests (assuming elm-test and elm-verify-examples are installed):

cd elm-hmac-sha1
elm-verify-examples --fail-on-warn && elm-test