Crypto
Digests and signing
Hashing, HMAC, base64 and random bytes. JavaScriptCore is an ECMAScript engine, not a browser, so it has no atob, btoa or crypto object. Needed for signed APIs (AWS, Cloudflare, anything HMAC) and for Basic auth.
Methods
Crypto.md5(text)StringMD5 digest, hex.
- text String required
Crypto.sha1(text)StringSHA-1 digest, hex.
- text String required
Crypto.sha256(text)StringSHA-256 digest, hex.
- text String required
Crypto.sha384(text)StringSHA-384 digest, hex.
- text String required
Crypto.sha512(text)StringSHA-512 digest, hex.
- text String required
Crypto.hmacSHA256(message, key)StringHMAC-SHA256, hex.
- message String required
- key String required
Crypto.hmacSHA512(message, key)StringHMAC-SHA512, hex.
- message String required
- key String required
Crypto.hmacSHA256Base64(message, key)StringHMAC-SHA256, base64. What most signing schemes want.
- message String required
- key String required
Crypto.base64Encode(text)StringUTF-8 text to base64.
- text String required
Crypto.base64Decode(encoded)StringBase64 back to text, or null if it isn't valid.
- encoded String required
Crypto.randomUUID()StringA new UUID string.
Crypto.randomBytes(count)StringCryptographically random bytes as hex, up to 1024.
- count Number required
Examples
A signed request
var stamp = String(Math.floor(Date.now() / 1000));
var signature = Crypto.hmacSHA256(stamp + path, Keychain.get("apiSecret"));
Http.get(url, { headers: {
"X-Timestamp": stamp,
"X-Signature": signature,
}});