jcgertig/bsso

View on GitHub
src/utils.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import 'text-encoding';

import { Base64 } from 'js-base64';

export function generateRandomString(length: number) {
  const array = global.crypto.getRandomValues(new Uint32Array(length));
  return Array.from(array, (uint32) =>
    ('0' + uint32.toString(16)).substr(-1)
  ).join('');
}

export function sha256(str: string) {
  const encoder = new TextEncoder();
  const data = encoder.encode(str);
  return global.crypto.subtle.digest('SHA-256', data);
}

export function base64UrlEncode(hashBuf: ArrayBuffer) {
  return Base64.fromUint8Array(new Uint8Array(hashBuf), true);
}