UNPKG

@dbg-riskit/angular-auth

Version:

35 lines 4.58 kB
import { secureRandom } from '@dbg-riskit/common'; import { defer, of } from 'rxjs'; // @dynamic export class NonceGenerator { static generateNonce() { return defer(() => { const guidHolder = 'xxx-xxyxxxxx4xxxyxxxxxx-xxxx4xxx'; const hex = '0123456789abcdef'; let r = 0; let guidResponse = ''; for (const placeHolder of guidHolder) { if (placeHolder !== '-' && placeHolder !== '4') { // each x and y needs to be random r = Math.floor(secureRandom() * 16); } if (placeHolder === 'x') { guidResponse += hex[r]; } else if (placeHolder === 'y') { /* eslint-disable no-bitwise */ // clock-seq-and-reserved first hex is filtered and remaining hex values are random r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0?? r |= 0x8; // set pos 3 to 1 as 1??? /* eslint-enable */ guidResponse += hex[r]; } else { guidResponse += placeHolder; } } return of(guidResponse); }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9uY2UuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1hdXRoL3NyYy9saWIvbm9uY2UuZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsS0FBSyxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUzQyxXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFFaEIsTUFBTSxDQUFDLGFBQWE7UUFDdkIsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxVQUFVLEdBQUcsa0NBQWtDLENBQUM7WUFDdEQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLEtBQUssTUFBTSxXQUFXLElBQUksVUFBVSxFQUFFO2dCQUNsQyxJQUFJLFdBQVcsS0FBSyxHQUFHLElBQUksV0FBVyxLQUFLLEdBQUcsRUFBRTtvQkFDNUMsa0NBQWtDO29CQUNsQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDdkM7Z0JBRUQsSUFBSSxXQUFXLEtBQUssR0FBRyxFQUFFO29CQUNyQixZQUFZLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxQjtxQkFBTSxJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUU7b0JBRTVCLCtCQUErQjtvQkFFL0IsbUZBQW1GO29CQUNuRixDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsOENBQThDO29CQUN4RCxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMseUJBQXlCO29CQUVuQyxtQkFBbUI7b0JBRW5CLFlBQVksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCO3FCQUFNO29CQUNILFlBQVksSUFBSSxXQUFXLENBQUM7aUJBQy9CO2FBQ0o7WUFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2VjdXJlUmFuZG9tfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtkZWZlciwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIE5vbmNlR2VuZXJhdG9yIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVOb25jZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3VpZEhvbGRlciA9ICd4eHgteHh5eHh4eHg0eHh4eXh4eHh4eC14eHh4NHh4eCc7XG4gICAgICAgICAgICBjb25zdCBoZXggPSAnMDEyMzQ1Njc4OWFiY2RlZic7XG4gICAgICAgICAgICBsZXQgciA9IDA7XG4gICAgICAgICAgICBsZXQgZ3VpZFJlc3BvbnNlID0gJyc7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBsYWNlSG9sZGVyIG9mIGd1aWRIb2xkZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VIb2xkZXIgIT09ICctJyAmJiBwbGFjZUhvbGRlciAhPT0gJzQnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggeCBhbmQgeSBuZWVkcyB0byBiZSByYW5kb21cbiAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguZmxvb3Ioc2VjdXJlUmFuZG9tKCkgKiAxNik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlSG9sZGVyID09PSAneCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VpZFJlc3BvbnNlICs9IGhleFtyXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVyID09PSAneScpIHtcblxuICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gY2xvY2stc2VxLWFuZC1yZXNlcnZlZCBmaXJzdCBoZXggaXMgZmlsdGVyZWQgYW5kIHJlbWFpbmluZyBoZXggdmFsdWVzIGFyZSByYW5kb21cbiAgICAgICAgICAgICAgICAgICAgciAmPSAweDM7IC8vIGJpdCBhbmQgd2l0aCAwMDExIHRvIHNldCBwb3MgMiB0byB6ZXJvID8wPz9cbiAgICAgICAgICAgICAgICAgICAgciB8PSAweDg7IC8vIHNldCBwb3MgMyB0byAxIGFzIDE/Pz9cblxuICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG5cbiAgICAgICAgICAgICAgICAgICAgZ3VpZFJlc3BvbnNlICs9IGhleFtyXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBndWlkUmVzcG9uc2UgKz0gcGxhY2VIb2xkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKGd1aWRSZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==