cic-staff-client/src/assets/js/hoba.js

31 lines
915 B
JavaScript

export function hobaResult(nonce, kid, challenge, signature) {
return nonce + '.' + kid + '.' + challenge + '.' + signature;
}
export function hobaToSign(nonce, kid, challenge, realm, origin, alg) {
var s = '';
var params = [nonce, alg, origin, realm, kid, challenge];
for (var i = 0; i < params.length; i++) {
s += params[i].length + ':' + params[i];
}
return s
}
export function hobaParseChallengeHeader(s) {
const auth_parts = s.split(" ");
const auth_pairs = auth_parts[1].split(",");
let auth_values = {}
for (var i = 0; i < auth_pairs.length; i++) {
var auth_kv = auth_pairs[i].split(/^([^=]+)="(.+)"/);
auth_values[auth_kv[1]] = auth_kv[2];
}
console.debug('challenge b64', auth_values['challenge']);
const challenge_bytes = atob(auth_values['challenge']);
console.debug('challenge bytes', challenge_bytes);
return {
challenge: challenge_bytes,
realm: auth_values['realm'],
};
}