@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-beta.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 (178) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +213 -213
  3. package/dist/app/IPublicClientApplication.d.ts +45 -45
  4. package/dist/app/IPublicClientApplication.js +96 -96
  5. package/dist/app/PublicClientApplication.d.ts +244 -244
  6. package/dist/app/PublicClientApplication.js +307 -307
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
  8. package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  12. package/dist/cache/AsyncMemoryStorage.js +132 -132
  13. package/dist/cache/BrowserCacheManager.d.ts +376 -377
  14. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  15. package/dist/cache/BrowserCacheManager.js +1275 -1276
  16. package/dist/cache/BrowserCacheManager.js.map +1 -1
  17. package/dist/cache/BrowserStorage.d.ts +11 -11
  18. package/dist/cache/BrowserStorage.js +35 -35
  19. package/dist/cache/CryptoKeyStore.d.ts +18 -17
  20. package/dist/cache/CryptoKeyStore.d.ts.map +1 -1
  21. package/dist/cache/CryptoKeyStore.js +40 -41
  22. package/dist/cache/CryptoKeyStore.js.map +1 -1
  23. package/dist/cache/DatabaseStorage.d.ts +56 -56
  24. package/dist/cache/DatabaseStorage.js +190 -190
  25. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  26. package/dist/cache/ITokenCache.d.ts +10 -10
  27. package/dist/cache/IWindowStorage.d.ts +27 -27
  28. package/dist/cache/MemoryStorage.d.ts +11 -11
  29. package/dist/cache/MemoryStorage.js +31 -31
  30. package/dist/cache/TokenCache.d.ts +76 -76
  31. package/dist/cache/TokenCache.js +225 -225
  32. package/dist/config/Configuration.d.ts +187 -203
  33. package/dist/config/Configuration.d.ts.map +1 -1
  34. package/dist/config/Configuration.js +97 -101
  35. package/dist/config/Configuration.js.map +1 -1
  36. package/dist/controllers/ControllerFactory.d.ts +9 -9
  37. package/dist/controllers/ControllerFactory.js +37 -37
  38. package/dist/controllers/IController.d.ts +66 -66
  39. package/dist/controllers/IController.d.ts.map +1 -1
  40. package/dist/controllers/StandardController.d.ts +413 -413
  41. package/dist/controllers/StandardController.d.ts.map +1 -1
  42. package/dist/controllers/StandardController.js +1277 -1272
  43. package/dist/controllers/StandardController.js.map +1 -1
  44. package/dist/crypto/BrowserCrypto.d.ts +49 -61
  45. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  46. package/dist/crypto/BrowserCrypto.js +93 -134
  47. package/dist/crypto/BrowserCrypto.js.map +1 -1
  48. package/dist/crypto/CryptoOps.d.ts +72 -73
  49. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  50. package/dist/crypto/CryptoOps.js +150 -150
  51. package/dist/crypto/CryptoOps.js.map +1 -1
  52. package/dist/crypto/GuidGenerator.d.ts +12 -12
  53. package/dist/crypto/GuidGenerator.js +96 -96
  54. package/dist/crypto/ISubtleCrypto.d.ts +9 -9
  55. package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
  56. package/dist/crypto/ModernBrowserCrypto.js +24 -24
  57. package/dist/crypto/PkceGenerator.d.ts +24 -24
  58. package/dist/crypto/PkceGenerator.js +58 -58
  59. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  60. package/dist/crypto/SignedHttpRequest.js +39 -39
  61. package/dist/encode/Base64Decode.d.ts +22 -22
  62. package/dist/encode/Base64Decode.js +73 -73
  63. package/dist/encode/Base64Encode.d.ts +31 -31
  64. package/dist/encode/Base64Encode.js +79 -79
  65. package/dist/error/BrowserAuthError.d.ts +382 -382
  66. package/dist/error/BrowserAuthError.js +483 -483
  67. package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
  68. package/dist/error/BrowserConfigurationAuthError.js +96 -96
  69. package/dist/error/NativeAuthError.d.ts +57 -56
  70. package/dist/error/NativeAuthError.d.ts.map +1 -1
  71. package/dist/error/NativeAuthError.js +93 -88
  72. package/dist/error/NativeAuthError.js.map +1 -1
  73. package/dist/event/EventHandler.d.ts +41 -41
  74. package/dist/event/EventHandler.js +119 -119
  75. package/dist/event/EventMessage.d.ts +25 -25
  76. package/dist/event/EventMessage.d.ts.map +1 -1
  77. package/dist/event/EventMessage.js +68 -67
  78. package/dist/event/EventMessage.js.map +1 -1
  79. package/dist/event/EventType.d.ts +28 -26
  80. package/dist/event/EventType.d.ts.map +1 -1
  81. package/dist/event/EventType.js +32 -32
  82. package/dist/event/EventType.js.map +1 -1
  83. package/dist/index.d.ts +35 -35
  84. package/dist/index.js +1 -1
  85. package/dist/interaction_client/BaseInteractionClient.d.ts +53 -52
  86. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  87. package/dist/interaction_client/BaseInteractionClient.js +151 -138
  88. package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
  89. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  90. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
  91. package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
  92. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  93. package/dist/interaction_client/NativeInteractionClient.js +521 -517
  94. package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
  95. package/dist/interaction_client/PopupClient.d.ts +111 -111
  96. package/dist/interaction_client/PopupClient.js +476 -476
  97. package/dist/interaction_client/RedirectClient.d.ts +48 -48
  98. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  99. package/dist/interaction_client/RedirectClient.js +291 -290
  100. package/dist/interaction_client/RedirectClient.js.map +1 -1
  101. package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
  102. package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
  103. package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
  104. package/dist/interaction_client/SilentCacheClient.js +67 -67
  105. package/dist/interaction_client/SilentCacheClient.js.map +1 -1
  106. package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
  107. package/dist/interaction_client/SilentIframeClient.js +127 -127
  108. package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
  109. package/dist/interaction_client/SilentRefreshClient.js +62 -62
  110. package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
  111. package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
  112. package/dist/interaction_client/StandardInteractionClient.js +259 -259
  113. package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
  114. package/dist/interaction_handler/InteractionHandler.js +127 -127
  115. package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
  116. package/dist/interaction_handler/RedirectHandler.js +118 -118
  117. package/dist/interaction_handler/SilentHandler.d.ts +47 -47
  118. package/dist/interaction_handler/SilentHandler.js +162 -162
  119. package/dist/internals.d.ts +23 -23
  120. package/dist/internals.js +4 -4
  121. package/dist/navigation/INavigationClient.d.ts +16 -16
  122. package/dist/navigation/NavigationClient.d.ts +22 -22
  123. package/dist/navigation/NavigationClient.js +40 -40
  124. package/dist/navigation/NavigationOptions.d.ts +12 -12
  125. package/dist/network/FetchClient.d.ts +26 -26
  126. package/dist/network/FetchClient.js +99 -99
  127. package/dist/network/XhrClient.d.ts +40 -40
  128. package/dist/network/XhrClient.js +117 -117
  129. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  130. package/dist/operatingcontext/BaseOperatingContext.js +44 -44
  131. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  132. package/dist/operatingcontext/StandardOperatingContext.js +43 -43
  133. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
  134. package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
  135. package/dist/packageMetadata.d.ts +2 -2
  136. package/dist/packageMetadata.d.ts.map +1 -1
  137. package/dist/packageMetadata.js +4 -4
  138. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  139. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  140. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  141. package/dist/request/EndSessionRequest.d.ts +15 -15
  142. package/dist/request/PopupRequest.d.ts +32 -32
  143. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  144. package/dist/request/RedirectRequest.d.ts +33 -33
  145. package/dist/request/SilentRequest.d.ts +30 -30
  146. package/dist/request/SsoSilentRequest.d.ts +26 -26
  147. package/dist/telemetry/BrowserPerformanceClient.d.ts +37 -38
  148. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  149. package/dist/telemetry/BrowserPerformanceClient.js +124 -124
  150. package/dist/telemetry/BrowserPerformanceClient.js.map +1 -1
  151. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  152. package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
  153. package/dist/utils/BrowserConstants.d.ts +176 -166
  154. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  155. package/dist/utils/BrowserConstants.js +205 -215
  156. package/dist/utils/BrowserConstants.js.map +1 -1
  157. package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
  158. package/dist/utils/BrowserProtocolUtils.js +34 -34
  159. package/dist/utils/BrowserStringUtils.d.ts +26 -26
  160. package/dist/utils/BrowserStringUtils.js +149 -149
  161. package/dist/utils/BrowserUtils.d.ts +65 -65
  162. package/dist/utils/BrowserUtils.js +138 -138
  163. package/dist/utils/MathUtils.d.ts +11 -11
  164. package/dist/utils/MathUtils.js +21 -21
  165. package/lib/msal-browser.cjs.js +18227 -0
  166. package/lib/msal-browser.cjs.js.map +1 -0
  167. package/lib/msal-browser.js +18233 -0
  168. package/lib/msal-browser.js.map +1 -0
  169. package/lib/msal-browser.min.js +63 -0
  170. package/package.json +101 -95
  171. package/dist/crypto/MsBrowserCrypto.d.ts +0 -10
  172. package/dist/crypto/MsBrowserCrypto.d.ts.map +0 -1
  173. package/dist/crypto/MsBrowserCrypto.js +0 -88
  174. package/dist/crypto/MsBrowserCrypto.js.map +0 -1
  175. package/dist/crypto/MsrBrowserCrypto.d.ts +0 -18
  176. package/dist/crypto/MsrBrowserCrypto.d.ts.map +0 -1
  177. package/dist/crypto/MsrBrowserCrypto.js +0 -35
  178. package/dist/crypto/MsrBrowserCrypto.js.map +0 -1
@@ -1,103 +1,103 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { Constants } from '@azure/msal-common';
4
4
  import { MathUtils } from '../utils/MathUtils.js';
5
5
 
6
- /*
7
- * Copyright (c) Microsoft Corporation. All rights reserved.
8
- * Licensed under the MIT License.
9
- */
10
- class GuidGenerator {
11
- constructor(cryptoObj) {
12
- this.cryptoObj = cryptoObj;
13
- }
14
- /*
15
- * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or
16
- * pseudo-random numbers.
17
- * The algorithm is as follows:
18
- * Set the two most significant bits (bits 6 and 7) of the
19
- * clock_seq_hi_and_reserved to zero and one, respectively.
20
- * Set the four most significant bits (bits 12 through 15) of the
21
- * time_hi_and_version field to the 4-bit version number from
22
- * Section 4.1.3. Version4
23
- * Set all the other bits to randomly (or pseudo-randomly) chosen
24
- * values.
25
- * UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node
26
- * time-low = 4hexOctet
27
- * time-mid = 2hexOctet
28
- * time-high-and-version = 2hexOctet
29
- * clock-seq-and-reserved = hexOctet:
30
- * clock-seq-low = hexOctet
31
- * node = 6hexOctet
32
- * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
33
- * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10
34
- * y values are 8, 9, A, B
35
- */
36
- generateGuid() {
37
- try {
38
- const buffer = new Uint8Array(16);
39
- this.cryptoObj.getRandomValues(buffer);
40
- // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).
41
- buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.
42
- buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4".
43
- // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.
44
- buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.
45
- buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.
46
- return (MathUtils.decimalToHex(buffer[0]) +
47
- MathUtils.decimalToHex(buffer[1]) +
48
- MathUtils.decimalToHex(buffer[2]) +
49
- MathUtils.decimalToHex(buffer[3]) +
50
- "-" +
51
- MathUtils.decimalToHex(buffer[4]) +
52
- MathUtils.decimalToHex(buffer[5]) +
53
- "-" +
54
- MathUtils.decimalToHex(buffer[6]) +
55
- MathUtils.decimalToHex(buffer[7]) +
56
- "-" +
57
- MathUtils.decimalToHex(buffer[8]) +
58
- MathUtils.decimalToHex(buffer[9]) +
59
- "-" +
60
- MathUtils.decimalToHex(buffer[10]) +
61
- MathUtils.decimalToHex(buffer[11]) +
62
- MathUtils.decimalToHex(buffer[12]) +
63
- MathUtils.decimalToHex(buffer[13]) +
64
- MathUtils.decimalToHex(buffer[14]) +
65
- MathUtils.decimalToHex(buffer[15]));
66
- }
67
- catch (err) {
68
- const guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
69
- const hex = "0123456789abcdef";
70
- let r = 0;
71
- let guidResponse = Constants.EMPTY_STRING;
72
- for (let i = 0; i < 36; i++) {
73
- if (guidHolder[i] !== "-" && guidHolder[i] !== "4") {
74
- // each x and y needs to be random
75
- r = (Math.random() * 16) | 0;
76
- }
77
- if (guidHolder[i] === "x") {
78
- guidResponse += hex[r];
79
- }
80
- else if (guidHolder[i] === "y") {
81
- // clock-seq-and-reserved first hex is filtered and remaining hex values are random
82
- r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??
83
- r |= 0x8; // set pos 3 to 1 as 1???
84
- guidResponse += hex[r];
85
- }
86
- else {
87
- guidResponse += guidHolder[i];
88
- }
89
- }
90
- return guidResponse;
91
- }
92
- }
93
- /**
94
- * verifies if a string is GUID
95
- * @param guid
96
- */
97
- isGuid(guid) {
98
- const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
99
- return regexGuid.test(guid);
100
- }
6
+ /*
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License.
9
+ */
10
+ class GuidGenerator {
11
+ constructor(cryptoObj) {
12
+ this.cryptoObj = cryptoObj;
13
+ }
14
+ /*
15
+ * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or
16
+ * pseudo-random numbers.
17
+ * The algorithm is as follows:
18
+ * Set the two most significant bits (bits 6 and 7) of the
19
+ * clock_seq_hi_and_reserved to zero and one, respectively.
20
+ * Set the four most significant bits (bits 12 through 15) of the
21
+ * time_hi_and_version field to the 4-bit version number from
22
+ * Section 4.1.3. Version4
23
+ * Set all the other bits to randomly (or pseudo-randomly) chosen
24
+ * values.
25
+ * UUID = time-low "-" time-mid "-"time-high-and-version "-"clock-seq-reserved and low(2hexOctet)"-" node
26
+ * time-low = 4hexOctet
27
+ * time-mid = 2hexOctet
28
+ * time-high-and-version = 2hexOctet
29
+ * clock-seq-and-reserved = hexOctet:
30
+ * clock-seq-low = hexOctet
31
+ * node = 6hexOctet
32
+ * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
33
+ * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10
34
+ * y values are 8, 9, A, B
35
+ */
36
+ generateGuid() {
37
+ try {
38
+ const buffer = new Uint8Array(16);
39
+ this.cryptoObj.getRandomValues(buffer);
40
+ // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).
41
+ buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.
42
+ buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = "4".
43
+ // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.
44
+ buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.
45
+ buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.
46
+ return (MathUtils.decimalToHex(buffer[0]) +
47
+ MathUtils.decimalToHex(buffer[1]) +
48
+ MathUtils.decimalToHex(buffer[2]) +
49
+ MathUtils.decimalToHex(buffer[3]) +
50
+ "-" +
51
+ MathUtils.decimalToHex(buffer[4]) +
52
+ MathUtils.decimalToHex(buffer[5]) +
53
+ "-" +
54
+ MathUtils.decimalToHex(buffer[6]) +
55
+ MathUtils.decimalToHex(buffer[7]) +
56
+ "-" +
57
+ MathUtils.decimalToHex(buffer[8]) +
58
+ MathUtils.decimalToHex(buffer[9]) +
59
+ "-" +
60
+ MathUtils.decimalToHex(buffer[10]) +
61
+ MathUtils.decimalToHex(buffer[11]) +
62
+ MathUtils.decimalToHex(buffer[12]) +
63
+ MathUtils.decimalToHex(buffer[13]) +
64
+ MathUtils.decimalToHex(buffer[14]) +
65
+ MathUtils.decimalToHex(buffer[15]));
66
+ }
67
+ catch (err) {
68
+ const guidHolder = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
69
+ const hex = "0123456789abcdef";
70
+ let r = 0;
71
+ let guidResponse = Constants.EMPTY_STRING;
72
+ for (let i = 0; i < 36; i++) {
73
+ if (guidHolder[i] !== "-" && guidHolder[i] !== "4") {
74
+ // each x and y needs to be random
75
+ r = (Math.random() * 16) | 0;
76
+ }
77
+ if (guidHolder[i] === "x") {
78
+ guidResponse += hex[r];
79
+ }
80
+ else if (guidHolder[i] === "y") {
81
+ // clock-seq-and-reserved first hex is filtered and remaining hex values are random
82
+ r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??
83
+ r |= 0x8; // set pos 3 to 1 as 1???
84
+ guidResponse += hex[r];
85
+ }
86
+ else {
87
+ guidResponse += guidHolder[i];
88
+ }
89
+ }
90
+ return guidResponse;
91
+ }
92
+ }
93
+ /**
94
+ * verifies if a string is GUID
95
+ * @param guid
96
+ */
97
+ isGuid(guid) {
98
+ const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
99
+ return regexGuid.test(guid);
100
+ }
101
101
  }
102
102
 
103
103
  export { GuidGenerator };
@@ -1,10 +1,10 @@
1
- export interface ISubtleCrypto {
2
- initPrng?(entropy: Uint8Array): void;
3
- getRandomValues(dataBuffer: Uint8Array): Uint8Array;
4
- generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
5
- exportKey(key: CryptoKey): Promise<JsonWebKey>;
6
- importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
7
- sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
8
- digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
9
- }
1
+ export interface ISubtleCrypto {
2
+ initPrng?(entropy: Uint8Array): void;
3
+ getRandomValues(dataBuffer: Uint8Array): Uint8Array;
4
+ generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
5
+ exportKey(key: CryptoKey): Promise<JsonWebKey>;
6
+ importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
7
+ sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
8
+ digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
9
+ }
10
10
  //# sourceMappingURL=ISubtleCrypto.d.ts.map
@@ -1,10 +1,10 @@
1
- import { ISubtleCrypto } from "./ISubtleCrypto";
2
- export declare class ModernBrowserCrypto implements ISubtleCrypto {
3
- getRandomValues(dataBuffer: Uint8Array): Uint8Array;
4
- generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
5
- exportKey(key: CryptoKey): Promise<JsonWebKey>;
6
- importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
7
- sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
8
- digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
9
- }
1
+ import { ISubtleCrypto } from "./ISubtleCrypto";
2
+ export declare class ModernBrowserCrypto implements ISubtleCrypto {
3
+ getRandomValues(dataBuffer: Uint8Array): Uint8Array;
4
+ generateKey(algorithm: RsaHashedKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKeyPair>;
5
+ exportKey(key: CryptoKey): Promise<JsonWebKey>;
6
+ importKey(keyData: JsonWebKey, algorithm: RsaHashedImportParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey>;
7
+ sign(algorithm: AlgorithmIdentifier, key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
8
+ digest(algorithm: AlgorithmIdentifier, data: Uint8Array): Promise<ArrayBuffer>;
9
+ }
10
10
  //# sourceMappingURL=ModernBrowserCrypto.d.ts.map
@@ -1,30 +1,30 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';
4
4
 
5
- /*
6
- * Copyright (c) Microsoft Corporation. All rights reserved.
7
- * Licensed under the MIT License.
8
- */
9
- class ModernBrowserCrypto {
10
- getRandomValues(dataBuffer) {
11
- return window.crypto.getRandomValues(dataBuffer);
12
- }
13
- async generateKey(algorithm, extractable, keyUsages) {
14
- return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages);
15
- }
16
- async exportKey(key) {
17
- return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);
18
- }
19
- async importKey(keyData, algorithm, extractable, keyUsages) {
20
- return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages);
21
- }
22
- async sign(algorithm, key, data) {
23
- return window.crypto.subtle.sign(algorithm, key, data);
24
- }
25
- async digest(algorithm, data) {
26
- return window.crypto.subtle.digest(algorithm, data);
27
- }
5
+ /*
6
+ * Copyright (c) Microsoft Corporation. All rights reserved.
7
+ * Licensed under the MIT License.
8
+ */
9
+ class ModernBrowserCrypto {
10
+ getRandomValues(dataBuffer) {
11
+ return window.crypto.getRandomValues(dataBuffer);
12
+ }
13
+ async generateKey(algorithm, extractable, keyUsages) {
14
+ return window.crypto.subtle.generateKey(algorithm, extractable, keyUsages);
15
+ }
16
+ async exportKey(key) {
17
+ return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);
18
+ }
19
+ async importKey(keyData, algorithm, extractable, keyUsages) {
20
+ return window.crypto.subtle.importKey(KEY_FORMAT_JWK, keyData, algorithm, extractable, keyUsages);
21
+ }
22
+ async sign(algorithm, key, data) {
23
+ return window.crypto.subtle.sign(algorithm, key, data);
24
+ }
25
+ async digest(algorithm, data) {
26
+ return window.crypto.subtle.digest(algorithm, data);
27
+ }
28
28
  }
29
29
 
30
30
  export { ModernBrowserCrypto };
@@ -1,25 +1,25 @@
1
- import { PkceCodes } from "@azure/msal-common";
2
- import { BrowserCrypto } from "./BrowserCrypto";
3
- /**
4
- * Class which exposes APIs to generate PKCE codes and code verifiers.
5
- */
6
- export declare class PkceGenerator {
7
- private base64Encode;
8
- private cryptoObj;
9
- constructor(cryptoObj: BrowserCrypto);
10
- /**
11
- * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
12
- */
13
- generateCodes(): Promise<PkceCodes>;
14
- /**
15
- * Generates a random 32 byte buffer and returns the base64
16
- * encoded string to be used as a PKCE Code Verifier
17
- */
18
- private generateCodeVerifier;
19
- /**
20
- * Creates a base64 encoded PKCE Code Challenge string from the
21
- * hash created from the PKCE Code Verifier supplied
22
- */
23
- private generateCodeChallengeFromVerifier;
24
- }
1
+ import { PkceCodes } from "@azure/msal-common";
2
+ import { BrowserCrypto } from "./BrowserCrypto";
3
+ /**
4
+ * Class which exposes APIs to generate PKCE codes and code verifiers.
5
+ */
6
+ export declare class PkceGenerator {
7
+ private base64Encode;
8
+ private cryptoObj;
9
+ constructor(cryptoObj: BrowserCrypto);
10
+ /**
11
+ * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
12
+ */
13
+ generateCodes(): Promise<PkceCodes>;
14
+ /**
15
+ * Generates a random 32 byte buffer and returns the base64
16
+ * encoded string to be used as a PKCE Code Verifier
17
+ */
18
+ private generateCodeVerifier;
19
+ /**
20
+ * Creates a base64 encoded PKCE Code Challenge string from the
21
+ * hash created from the PKCE Code Verifier supplied
22
+ */
23
+ private generateCodeChallengeFromVerifier;
24
+ }
25
25
  //# sourceMappingURL=PkceGenerator.d.ts.map
@@ -1,65 +1,65 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
4
4
  import { Base64Encode } from '../encode/Base64Encode.js';
5
5
 
6
- /*
7
- * Copyright (c) Microsoft Corporation. All rights reserved.
8
- * Licensed under the MIT License.
9
- */
10
- // Constant byte array length
11
- const RANDOM_BYTE_ARR_LENGTH = 32;
12
- /**
13
- * Class which exposes APIs to generate PKCE codes and code verifiers.
14
- */
15
- class PkceGenerator {
16
- constructor(cryptoObj) {
17
- this.base64Encode = new Base64Encode();
18
- this.cryptoObj = cryptoObj;
19
- }
20
- /**
21
- * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
22
- */
23
- async generateCodes() {
24
- const codeVerifier = this.generateCodeVerifier();
25
- const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);
26
- return {
27
- verifier: codeVerifier,
28
- challenge: codeChallenge,
29
- };
30
- }
31
- /**
32
- * Generates a random 32 byte buffer and returns the base64
33
- * encoded string to be used as a PKCE Code Verifier
34
- */
35
- generateCodeVerifier() {
36
- try {
37
- // Generate random values as utf-8
38
- const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);
39
- this.cryptoObj.getRandomValues(buffer);
40
- // encode verifier as base64
41
- const pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);
42
- return pkceCodeVerifierB64;
43
- }
44
- catch (e) {
45
- throw BrowserAuthError.createPkceNotGeneratedError(e);
46
- }
47
- }
48
- /**
49
- * Creates a base64 encoded PKCE Code Challenge string from the
50
- * hash created from the PKCE Code Verifier supplied
51
- */
52
- async generateCodeChallengeFromVerifier(pkceCodeVerifier) {
53
- try {
54
- // hashed verifier
55
- const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);
56
- // encode hash as base64
57
- return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));
58
- }
59
- catch (e) {
60
- throw BrowserAuthError.createPkceNotGeneratedError(e);
61
- }
62
- }
6
+ /*
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License.
9
+ */
10
+ // Constant byte array length
11
+ const RANDOM_BYTE_ARR_LENGTH = 32;
12
+ /**
13
+ * Class which exposes APIs to generate PKCE codes and code verifiers.
14
+ */
15
+ class PkceGenerator {
16
+ constructor(cryptoObj) {
17
+ this.base64Encode = new Base64Encode();
18
+ this.cryptoObj = cryptoObj;
19
+ }
20
+ /**
21
+ * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
22
+ */
23
+ async generateCodes() {
24
+ const codeVerifier = this.generateCodeVerifier();
25
+ const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);
26
+ return {
27
+ verifier: codeVerifier,
28
+ challenge: codeChallenge,
29
+ };
30
+ }
31
+ /**
32
+ * Generates a random 32 byte buffer and returns the base64
33
+ * encoded string to be used as a PKCE Code Verifier
34
+ */
35
+ generateCodeVerifier() {
36
+ try {
37
+ // Generate random values as utf-8
38
+ const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);
39
+ this.cryptoObj.getRandomValues(buffer);
40
+ // encode verifier as base64
41
+ const pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);
42
+ return pkceCodeVerifierB64;
43
+ }
44
+ catch (e) {
45
+ throw BrowserAuthError.createPkceNotGeneratedError(e);
46
+ }
47
+ }
48
+ /**
49
+ * Creates a base64 encoded PKCE Code Challenge string from the
50
+ * hash created from the PKCE Code Verifier supplied
51
+ */
52
+ async generateCodeChallengeFromVerifier(pkceCodeVerifier) {
53
+ try {
54
+ // hashed verifier
55
+ const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);
56
+ // encode hash as base64
57
+ return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));
58
+ }
59
+ catch (e) {
60
+ throw BrowserAuthError.createPkceNotGeneratedError(e);
61
+ }
62
+ }
63
63
  }
64
64
 
65
65
  export { PkceGenerator };
@@ -1,31 +1,31 @@
1
- import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common";
2
- export type SignedHttpRequestOptions = {
3
- loggerOptions: LoggerOptions;
4
- };
5
- export declare class SignedHttpRequest {
6
- private popTokenGenerator;
7
- private cryptoOps;
8
- private shrParameters;
9
- private logger;
10
- constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions);
11
- /**
12
- * Generates and caches a keypair for the given request options.
13
- * @returns Public key digest, which should be sent to the token issuer.
14
- */
15
- generatePublicKeyThumbprint(): Promise<string>;
16
- /**
17
- * Generates a signed http request for the given payload with the given key.
18
- * @param payload Payload to sign (e.g. access token)
19
- * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
20
- * @param claims Additional claims to include/override in the signed JWT
21
- * @returns Pop token signed with the corresponding private key
22
- */
23
- signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string>;
24
- /**
25
- * Removes cached keys from browser for given public key thumbprint
26
- * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
27
- * @returns If keys are properly deleted
28
- */
29
- removeKeys(publicKeyThumbprint: string): Promise<boolean>;
30
- }
1
+ import { LoggerOptions, SignedHttpRequestParameters } from "@azure/msal-common";
2
+ export type SignedHttpRequestOptions = {
3
+ loggerOptions: LoggerOptions;
4
+ };
5
+ export declare class SignedHttpRequest {
6
+ private popTokenGenerator;
7
+ private cryptoOps;
8
+ private shrParameters;
9
+ private logger;
10
+ constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions);
11
+ /**
12
+ * Generates and caches a keypair for the given request options.
13
+ * @returns Public key digest, which should be sent to the token issuer.
14
+ */
15
+ generatePublicKeyThumbprint(): Promise<string>;
16
+ /**
17
+ * Generates a signed http request for the given payload with the given key.
18
+ * @param payload Payload to sign (e.g. access token)
19
+ * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
20
+ * @param claims Additional claims to include/override in the signed JWT
21
+ * @returns Pop token signed with the corresponding private key
22
+ */
23
+ signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string>;
24
+ /**
25
+ * Removes cached keys from browser for given public key thumbprint
26
+ * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
27
+ * @returns If keys are properly deleted
28
+ */
29
+ removeKeys(publicKeyThumbprint: string): Promise<boolean>;
30
+ }
31
31
  //# sourceMappingURL=SignedHttpRequest.d.ts.map
@@ -1,47 +1,47 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { CryptoOps } from './CryptoOps.js';
4
4
  import { Logger, PopTokenGenerator } from '@azure/msal-common';
5
5
  import { name, version } from '../packageMetadata.js';
6
6
 
7
- /*
8
- * Copyright (c) Microsoft Corporation. All rights reserved.
9
- * Licensed under the MIT License.
10
- */
11
- class SignedHttpRequest {
12
- constructor(shrParameters, shrOptions) {
13
- const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};
14
- this.logger = new Logger(loggerOptions, name, version);
15
- this.cryptoOps = new CryptoOps(this.logger);
16
- this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);
17
- this.shrParameters = shrParameters;
18
- }
19
- /**
20
- * Generates and caches a keypair for the given request options.
21
- * @returns Public key digest, which should be sent to the token issuer.
22
- */
23
- async generatePublicKeyThumbprint() {
24
- const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);
25
- return kid;
26
- }
27
- /**
28
- * Generates a signed http request for the given payload with the given key.
29
- * @param payload Payload to sign (e.g. access token)
30
- * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
31
- * @param claims Additional claims to include/override in the signed JWT
32
- * @returns Pop token signed with the corresponding private key
33
- */
34
- async signRequest(payload, publicKeyThumbprint, claims) {
35
- return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims);
36
- }
37
- /**
38
- * Removes cached keys from browser for given public key thumbprint
39
- * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
40
- * @returns If keys are properly deleted
41
- */
42
- async removeKeys(publicKeyThumbprint) {
43
- return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
44
- }
7
+ /*
8
+ * Copyright (c) Microsoft Corporation. All rights reserved.
9
+ * Licensed under the MIT License.
10
+ */
11
+ class SignedHttpRequest {
12
+ constructor(shrParameters, shrOptions) {
13
+ const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};
14
+ this.logger = new Logger(loggerOptions, name, version);
15
+ this.cryptoOps = new CryptoOps(this.logger);
16
+ this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);
17
+ this.shrParameters = shrParameters;
18
+ }
19
+ /**
20
+ * Generates and caches a keypair for the given request options.
21
+ * @returns Public key digest, which should be sent to the token issuer.
22
+ */
23
+ async generatePublicKeyThumbprint() {
24
+ const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);
25
+ return kid;
26
+ }
27
+ /**
28
+ * Generates a signed http request for the given payload with the given key.
29
+ * @param payload Payload to sign (e.g. access token)
30
+ * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
31
+ * @param claims Additional claims to include/override in the signed JWT
32
+ * @returns Pop token signed with the corresponding private key
33
+ */
34
+ async signRequest(payload, publicKeyThumbprint, claims) {
35
+ return this.popTokenGenerator.signPayload(payload, publicKeyThumbprint, this.shrParameters, claims);
36
+ }
37
+ /**
38
+ * Removes cached keys from browser for given public key thumbprint
39
+ * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)
40
+ * @returns If keys are properly deleted
41
+ */
42
+ async removeKeys(publicKeyThumbprint) {
43
+ return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
44
+ }
45
45
  }
46
46
 
47
47
  export { SignedHttpRequest };