JSFiddle - React, Tailwind, and code Playground

by ant_logist

HTML

<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha256.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64-min.js"></script>
</body>
</html>

JavaScript

function CreateChallengeResponse(secretKey, challenge) 
{
 var secretKeyArr = base64url_decode(secretKey);
 var challengeArr = base64url_decode(challenge);
 var challengeResponse = CryptoJS.HmacSHA256(challengeArr, secretKeyArr);
 return base64url_encode(challengeResponse);
}

function base64url_encode(arg)
{
 var s = CryptoJS.enc.Base64.stringify(arg);
 s = s.split('=')[0];
 s = s.replace(/\+/g, '-');
 s = s.replace(/\//g, '_');
 return s;
}

function base64url_decode(arg)
{
 var s = arg;
 s = s.replace(/-/g, '+');
 s = s.replace(/_/g, '/');
 switch (s.length % 4) 
  {
   case 0: break;
   case 2: s += "=="; break;
   case 3: s += "="; break;
   default: console.log("Illegal base64url string!");
  }
 return CryptoJS.enc.Base64.parse(s);
}

k = CreateChallengeResponse('WFjSiVLQzBFd5xmlcV_Ba6SNpFuVfTtaAevPJX3-eWQvc0cWO5TYEWTHTpIsUMNWHTxpNzPlu88aI3-We8he2g', '1NQxgkRQlUvJRMFxodvECfpz2dRiLRgojuDQguo2RKg')

alert(k)