2020-12-28 10:09:56 +01:00
|
|
|
export function hobaResult(nonce, kid, challenge, signature) {
|
2021-05-10 18:15:25 +02:00
|
|
|
return nonce + '.' + kid + '.' + challenge + '.' + signature;
|
2020-12-28 10:09:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export function hobaToSign(nonce, kid, challenge, realm, origin, alg) {
|
2021-05-10 18:15:25 +02:00
|
|
|
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;
|
2020-12-28 10:09:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export function hobaParseChallengeHeader(s) {
|
2021-05-10 18:15:25 +02:00
|
|
|
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];
|
|
|
|
}
|
|
|
|
const challenge_bytes = atob(auth_values['challenge']);
|
2020-12-28 10:09:56 +01:00
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
return {
|
|
|
|
challenge: challenge_bytes,
|
|
|
|
realm: auth_values['realm'],
|
|
|
|
};
|
2020-12-28 10:09:56 +01:00
|
|
|
}
|