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)