@criipto/oidc
Advanced tools
Comparing version 1.2.3 to 1.3.0
@@ -1,2 +0,2 @@ | ||
export { generate as generatePKCE } from './pkce'; | ||
export { generate as generatePKCE, generatePlatform as generatePlatformPKCE } from './pkce'; | ||
export { parseQueryResponse, parseURLResponse } from './response'; | ||
@@ -3,0 +3,0 @@ import { type OpenIDConfiguration } from './OpenIDConfiguration'; |
@@ -12,5 +12,6 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.userInfo = exports.codeExchange = exports.parseAuthorizeOptionsFromUrl = exports.buildAuthorizeURL = exports.buildLogoutURL = exports.OpenIDConfigurationManager = exports.parseURLResponse = exports.parseQueryResponse = exports.generatePKCE = void 0; | ||
exports.userInfo = exports.codeExchange = exports.parseAuthorizeOptionsFromUrl = exports.buildAuthorizeURL = exports.buildLogoutURL = exports.OpenIDConfigurationManager = exports.parseURLResponse = exports.parseQueryResponse = exports.generatePlatformPKCE = exports.generatePKCE = void 0; | ||
var pkce_1 = require("./pkce"); | ||
Object.defineProperty(exports, "generatePKCE", { enumerable: true, get: function () { return pkce_1.generate; } }); | ||
Object.defineProperty(exports, "generatePlatformPKCE", { enumerable: true, get: function () { return pkce_1.generatePlatform; } }); | ||
var response_1 = require("./response"); | ||
@@ -17,0 +18,0 @@ Object.defineProperty(exports, "parseQueryResponse", { enumerable: true, get: function () { return response_1.parseQueryResponse; } }); |
@@ -7,2 +7,10 @@ export interface PKCE { | ||
export declare type PKCEPublicPart = Omit<PKCE, 'code_verifier'>; | ||
interface PartialCrypto { | ||
getRandomValues<T extends Uint8Array>(t: T): T; | ||
subtle: { | ||
digest(algorithm: AlgorithmIdentifier, data: BufferSource): Promise<ArrayBuffer>; | ||
}; | ||
} | ||
export declare function generatePlatform(crypto: PartialCrypto): Promise<PKCE>; | ||
export declare function generate(): Promise<PKCE>; | ||
export {}; |
@@ -12,5 +12,5 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.generate = void 0; | ||
exports.generate = exports.generatePlatform = void 0; | ||
function base64URLEncode(input) { | ||
return window.btoa(String.fromCharCode(...input)) | ||
return btoa(String.fromCharCode(...input)) | ||
.replace(/\+/g, '-') | ||
@@ -20,17 +20,26 @@ .replace(/\//g, '_') | ||
} | ||
function generate() { | ||
function browserCrypto() { | ||
var _a; | ||
return { | ||
getRandomValues: crypto.getRandomValues.bind(crypto), | ||
subtle: (_a = crypto.webkitSubtle) !== null && _a !== void 0 ? _a : crypto.subtle | ||
}; | ||
} | ||
function generatePlatform(crypto) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const encoder = new TextEncoder(); | ||
const bytes = new Uint8Array(32); | ||
window.crypto.getRandomValues(bytes); | ||
const bytes = crypto.getRandomValues(new Uint8Array(32)); | ||
const code_verifier = base64URLEncode(bytes); | ||
const code_challenge_method = 'S256'; | ||
const subtle = (_a = window.crypto.webkitSubtle) !== null && _a !== void 0 ? _a : window.crypto.subtle; | ||
const buffer = yield subtle.digest('SHA-256', encoder.encode(code_verifier)); | ||
const code_challenge = yield base64URLEncode(new Uint8Array(buffer)); | ||
const buffer = yield crypto.subtle.digest('SHA-256', encoder.encode(code_verifier)); | ||
const code_challenge = base64URLEncode(new Uint8Array(buffer)); | ||
return { code_verifier, code_challenge, code_challenge_method }; | ||
}); | ||
} | ||
exports.generatePlatform = generatePlatform; | ||
function generate() { | ||
const crypto = browserCrypto(); | ||
return generatePlatform(crypto); | ||
} | ||
exports.generate = generate; | ||
//# sourceMappingURL=pkce.js.map |
{ | ||
"name": "@criipto/oidc", | ||
"version": "1.2.3", | ||
"version": "1.3.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -1,1 +0,10 @@ | ||
# criipto-oidc-js | ||
# criipto-oidc-js | ||
## PKCE with Node.js | ||
```js | ||
import crypto from 'node:crypto'; | ||
const pkce = await generatePlatformPKCE(crypto.webcrypto); | ||
// pkce.code_verifier, pkce.code_challenge, pkce.code_challenge_method | ||
``` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
25995
369
10