js-keygen/base64url.js
2018-02-13 09:30:29 +01:00

28 lines
863 B
JavaScript

/*jslint browser: true, sloppy: true */
//adapted from https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-08#appendix-C
function base64urlEncode(arg) {
var s = window.btoa(arg); // Regular base64 encoder
s = s.split("=")[0]; // Remove any trailing '='s
s = s.replace(/\+/g, "-"); // 62nd char of encoding
s = s.replace(/\//g, "_"); // 63rd char of encoding
return s;
}
function base64urlDecode(s) {
s = s.replace(/-/g, "+"); // 62nd char of encoding
s = s.replace(/_/g, "/"); // 63rd char of encoding
switch (s.length % 4) { // Pad with trailing '='s
case 0: // No pad chars in this case
break;
case 2: // Two pad chars
s += "==";
break;
case 3: // One pad char
s += "=";
break;
default:
throw "Illegal base64url string!";
}
return window.atob(s); // Standard base64 decoder
}