oidc-spa 8.2.11 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +58 -6
  2. package/core/createOidc.js +9 -2
  3. package/core/createOidc.js.map +1 -1
  4. package/core/earlyInit.d.ts +6 -2
  5. package/core/earlyInit.js +157 -32
  6. package/core/earlyInit.js.map +1 -1
  7. package/core/loginSilent.js +7 -42
  8. package/core/loginSilent.js.map +1 -1
  9. package/esm/core/createOidc.js +9 -2
  10. package/esm/core/createOidc.js.map +1 -1
  11. package/esm/core/earlyInit.d.ts +6 -2
  12. package/esm/core/earlyInit.js +156 -32
  13. package/esm/core/earlyInit.js.map +1 -1
  14. package/esm/core/loginSilent.js +7 -42
  15. package/esm/core/loginSilent.js.map +1 -1
  16. package/esm/tanstack-start/react/withHandlingOidcPostLoginNavigation.js +13 -2
  17. package/esm/tanstack-start/react/withHandlingOidcPostLoginNavigation.js.map +1 -1
  18. package/esm/tools/Evt.js +18 -10
  19. package/esm/tools/Evt.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/core/createOidc.ts +8 -1
  22. package/src/core/earlyInit.ts +205 -42
  23. package/src/core/loginSilent.ts +18 -79
  24. package/src/tanstack-start/react/withHandlingOidcPostLoginNavigation.tsx +13 -2
  25. package/src/tools/Evt.ts +17 -16
  26. package/src/vite-plugin/handleClientEntrypoint.ts +4 -6
  27. package/tools/Evt.js +18 -10
  28. package/tools/Evt.js.map +1 -1
  29. package/vite-plugin/handleClientEntrypoint.js +3 -1
  30. package/vite-plugin/handleClientEntrypoint.js.map +1 -1
  31. package/core/iframeMessageProtection.d.ts +0 -29
  32. package/core/iframeMessageProtection.js +0 -129
  33. package/core/iframeMessageProtection.js.map +0 -1
  34. package/esm/core/iframeMessageProtection.d.ts +0 -29
  35. package/esm/core/iframeMessageProtection.js +0 -123
  36. package/esm/core/iframeMessageProtection.js.map +0 -1
  37. package/esm/tools/asymmetricEncryption.d.ts +0 -18
  38. package/esm/tools/asymmetricEncryption.js +0 -85
  39. package/esm/tools/asymmetricEncryption.js.map +0 -1
  40. package/src/core/iframeMessageProtection.ts +0 -186
  41. package/src/tools/asymmetricEncryption.ts +0 -184
  42. package/tools/asymmetricEncryption.d.ts +0 -18
  43. package/tools/asymmetricEncryption.js +0 -90
  44. package/tools/asymmetricEncryption.js.map +0 -1
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateKeys = generateKeys;
4
- exports.asymmetricEncrypt = asymmetricEncrypt;
5
- exports.asymmetricDecrypt = asymmetricDecrypt;
6
- const INFO_LABEL = "oidc-spa/tools/asymmetricEncryption";
7
- async function generateKeys() {
8
- const keyPair = await crypto.subtle.generateKey({
9
- name: "ECDH",
10
- namedCurve: "P-256"
11
- }, true, ["deriveKey", "deriveBits"]);
12
- const publicKeyRaw = await crypto.subtle.exportKey("jwk", keyPair.publicKey);
13
- const privateKeyRaw = await crypto.subtle.exportKey("jwk", keyPair.privateKey);
14
- return {
15
- publicKey: btoa(JSON.stringify(publicKeyRaw)),
16
- privateKey: btoa(JSON.stringify(privateKeyRaw))
17
- };
18
- }
19
- async function asymmetricEncrypt(params) {
20
- const { publicKey, message } = params;
21
- const importedPublicKey = await crypto.subtle.importKey("jwk", JSON.parse(atob(publicKey)), {
22
- name: "ECDH",
23
- namedCurve: "P-256"
24
- }, false, []);
25
- const ephemeralKeyPair = await crypto.subtle.generateKey({
26
- name: "ECDH",
27
- namedCurve: "P-256"
28
- }, true, ["deriveKey", "deriveBits"]);
29
- const sharedSecret = await crypto.subtle.deriveBits({
30
- name: "ECDH",
31
- public: importedPublicKey
32
- }, ephemeralKeyPair.privateKey, 256);
33
- const salt = crypto.getRandomValues(new Uint8Array(16));
34
- const infoBytes = new TextEncoder().encode(INFO_LABEL);
35
- const hkdfKey = await crypto.subtle.importKey("raw", sharedSecret, "HKDF", false, ["deriveKey"]);
36
- const derivedKey = await crypto.subtle.deriveKey({
37
- name: "HKDF",
38
- hash: "SHA-256",
39
- salt,
40
- info: infoBytes
41
- }, hkdfKey, { name: "AES-GCM", length: 256 }, false, ["encrypt"]);
42
- const iv = crypto.getRandomValues(new Uint8Array(12));
43
- const encodedMessage = new TextEncoder().encode(message);
44
- const ciphertext = await crypto.subtle.encrypt({
45
- name: "AES-GCM",
46
- iv
47
- }, derivedKey, encodedMessage);
48
- const ephemeralPubKeyRaw = await crypto.subtle.exportKey("jwk", ephemeralKeyPair.publicKey);
49
- const payload = {
50
- ephemeralPubKey: ephemeralPubKeyRaw,
51
- iv: Array.from(iv),
52
- salt: Array.from(salt),
53
- ciphertext: Array.from(new Uint8Array(ciphertext))
54
- };
55
- return {
56
- encryptedMessage: btoa(JSON.stringify(payload))
57
- };
58
- }
59
- async function asymmetricDecrypt(params) {
60
- const { privateKey, encryptedMessage } = params;
61
- const { ephemeralPubKey, iv, salt, ciphertext } = JSON.parse(atob(encryptedMessage));
62
- const importedPrivateKey = await crypto.subtle.importKey("jwk", JSON.parse(atob(privateKey)), {
63
- name: "ECDH",
64
- namedCurve: "P-256"
65
- }, false, ["deriveKey", "deriveBits"]);
66
- const importedEphemeralPubKey = await crypto.subtle.importKey("jwk", ephemeralPubKey, {
67
- name: "ECDH",
68
- namedCurve: "P-256"
69
- }, false, []);
70
- const sharedSecret = await crypto.subtle.deriveBits({
71
- name: "ECDH",
72
- public: importedEphemeralPubKey
73
- }, importedPrivateKey, 256);
74
- const infoBytes = new TextEncoder().encode(INFO_LABEL);
75
- const hkdfKey = await crypto.subtle.importKey("raw", sharedSecret, "HKDF", false, ["deriveKey"]);
76
- const derivedKey = await crypto.subtle.deriveKey({
77
- name: "HKDF",
78
- hash: "SHA-256",
79
- salt: new Uint8Array(salt),
80
- info: infoBytes
81
- }, hkdfKey, { name: "AES-GCM", length: 256 }, false, ["decrypt"]);
82
- const decryptedBuffer = await crypto.subtle.decrypt({
83
- name: "AES-GCM",
84
- iv: new Uint8Array(iv)
85
- }, derivedKey, new Uint8Array(ciphertext));
86
- return {
87
- message: new TextDecoder().decode(decryptedBuffer)
88
- };
89
- }
90
- //# sourceMappingURL=asymmetricEncryption.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asymmetricEncryption.js","sourceRoot":"","sources":["../src/tools/asymmetricEncryption.ts"],"names":[],"mappings":"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"}