@azure/msal-browser 3.0.2 → 3.2.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 (280) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +2 -0
  2. package/dist/app/IPublicClientApplication.d.ts.map +1 -1
  3. package/dist/app/IPublicClientApplication.mjs +22 -18
  4. package/dist/app/IPublicClientApplication.mjs.map +1 -1
  5. package/dist/app/PublicClientApplication.d.ts +20 -6
  6. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  7. package/dist/app/PublicClientApplication.mjs +24 -7
  8. package/dist/app/PublicClientApplication.mjs.map +1 -1
  9. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +3 -4
  10. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -1
  11. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +17 -16
  12. package/dist/broker/nativeBroker/NativeMessageHandler.mjs.map +1 -1
  13. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +8 -0
  14. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map +1 -0
  15. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +16 -0
  16. package/dist/broker/nativeBroker/NativeStatusCodes.mjs.map +1 -0
  17. package/dist/cache/AsyncMemoryStorage.mjs +4 -3
  18. package/dist/cache/AsyncMemoryStorage.mjs.map +1 -1
  19. package/dist/cache/BrowserCacheManager.d.ts +10 -3
  20. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  21. package/dist/cache/BrowserCacheManager.mjs +58 -29
  22. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  23. package/dist/cache/BrowserStorage.d.ts.map +1 -1
  24. package/dist/cache/BrowserStorage.mjs +7 -9
  25. package/dist/cache/BrowserStorage.mjs.map +1 -1
  26. package/dist/cache/CryptoKeyStore.mjs +1 -1
  27. package/dist/cache/CryptoKeyStore.mjs.map +1 -1
  28. package/dist/cache/DatabaseStorage.d.ts.map +1 -1
  29. package/dist/cache/DatabaseStorage.mjs +9 -8
  30. package/dist/cache/DatabaseStorage.mjs.map +1 -1
  31. package/dist/cache/MemoryStorage.mjs +1 -1
  32. package/dist/cache/MemoryStorage.mjs.map +1 -1
  33. package/dist/cache/TokenCache.d.ts.map +1 -1
  34. package/dist/cache/TokenCache.mjs +30 -30
  35. package/dist/cache/TokenCache.mjs.map +1 -1
  36. package/dist/config/Configuration.d.ts +1 -0
  37. package/dist/config/Configuration.d.ts.map +1 -1
  38. package/dist/config/Configuration.mjs +12 -16
  39. package/dist/config/Configuration.mjs.map +1 -1
  40. package/dist/controllers/ControllerFactory.mjs +1 -1
  41. package/dist/controllers/ControllerFactory.mjs.map +1 -1
  42. package/dist/controllers/IController.d.ts +5 -28
  43. package/dist/controllers/IController.d.ts.map +1 -1
  44. package/dist/controllers/StandardController.d.ts +17 -31
  45. package/dist/controllers/StandardController.d.ts.map +1 -1
  46. package/dist/controllers/StandardController.mjs +78 -83
  47. package/dist/controllers/StandardController.mjs.map +1 -1
  48. package/dist/crypto/BrowserCrypto.d.ts +44 -49
  49. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  50. package/dist/crypto/BrowserCrypto.mjs +78 -77
  51. package/dist/crypto/BrowserCrypto.mjs.map +1 -1
  52. package/dist/crypto/CryptoOps.d.ts +1 -10
  53. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  54. package/dist/crypto/CryptoOps.mjs +23 -34
  55. package/dist/crypto/CryptoOps.mjs.map +1 -1
  56. package/dist/crypto/PkceGenerator.d.ts +6 -22
  57. package/dist/crypto/PkceGenerator.d.ts.map +1 -1
  58. package/dist/crypto/PkceGenerator.mjs +48 -49
  59. package/dist/crypto/PkceGenerator.mjs.map +1 -1
  60. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  61. package/dist/crypto/SignedHttpRequest.mjs.map +1 -1
  62. package/dist/encode/Base64Decode.d.ts +6 -19
  63. package/dist/encode/Base64Decode.d.ts.map +1 -1
  64. package/dist/encode/Base64Decode.mjs +31 -68
  65. package/dist/encode/Base64Decode.mjs.map +1 -1
  66. package/dist/encode/Base64Encode.d.ts +15 -27
  67. package/dist/encode/Base64Encode.d.ts.map +1 -1
  68. package/dist/encode/Base64Encode.mjs +36 -75
  69. package/dist/encode/Base64Encode.mjs.map +1 -1
  70. package/dist/error/BrowserAuthError.d.ts +63 -195
  71. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  72. package/dist/error/BrowserAuthError.mjs +159 -381
  73. package/dist/error/BrowserAuthError.mjs.map +1 -1
  74. package/dist/error/BrowserAuthErrorCodes.d.ts +46 -0
  75. package/dist/error/BrowserAuthErrorCodes.d.ts.map +1 -0
  76. package/dist/error/BrowserAuthErrorCodes.mjs +54 -0
  77. package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -0
  78. package/dist/error/BrowserConfigurationAuthError.d.ts +9 -46
  79. package/dist/error/BrowserConfigurationAuthError.d.ts.map +1 -1
  80. package/dist/error/BrowserConfigurationAuthError.mjs +20 -73
  81. package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
  82. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +4 -0
  83. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map +1 -0
  84. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +12 -0
  85. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map +1 -0
  86. package/dist/error/NativeAuthError.d.ts +17 -45
  87. package/dist/error/NativeAuthError.d.ts.map +1 -1
  88. package/dist/error/NativeAuthError.mjs +49 -79
  89. package/dist/error/NativeAuthError.mjs.map +1 -1
  90. package/dist/error/NativeAuthErrorCodes.d.ts +3 -0
  91. package/dist/error/NativeAuthErrorCodes.d.ts.map +1 -0
  92. package/dist/error/NativeAuthErrorCodes.mjs +11 -0
  93. package/dist/error/NativeAuthErrorCodes.mjs.map +1 -0
  94. package/dist/event/EventHandler.d.ts.map +1 -1
  95. package/dist/event/EventHandler.mjs +3 -2
  96. package/dist/event/EventHandler.mjs.map +1 -1
  97. package/dist/event/EventMessage.mjs +1 -1
  98. package/dist/event/EventMessage.mjs.map +1 -1
  99. package/dist/event/EventType.mjs +1 -1
  100. package/dist/event/EventType.mjs.map +1 -1
  101. package/dist/index.d.ts +6 -6
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.mjs +8 -4
  104. package/dist/index.mjs.map +1 -1
  105. package/dist/interaction_client/BaseInteractionClient.d.ts +2 -1
  106. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  107. package/dist/interaction_client/BaseInteractionClient.mjs +7 -8
  108. package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
  109. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  110. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map +1 -1
  111. package/dist/interaction_client/NativeInteractionClient.d.ts +4 -10
  112. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  113. package/dist/interaction_client/NativeInteractionClient.mjs +32 -38
  114. package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
  115. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  116. package/dist/interaction_client/PopupClient.mjs +16 -15
  117. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  118. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  119. package/dist/interaction_client/RedirectClient.mjs +7 -6
  120. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  121. package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
  122. package/dist/interaction_client/SilentAuthCodeClient.mjs +9 -11
  123. package/dist/interaction_client/SilentAuthCodeClient.mjs.map +1 -1
  124. package/dist/interaction_client/SilentCacheClient.d.ts +4 -2
  125. package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
  126. package/dist/interaction_client/SilentCacheClient.mjs +19 -25
  127. package/dist/interaction_client/SilentCacheClient.mjs.map +1 -1
  128. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  129. package/dist/interaction_client/SilentIframeClient.mjs +20 -47
  130. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  131. package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
  132. package/dist/interaction_client/SilentRefreshClient.mjs +11 -20
  133. package/dist/interaction_client/SilentRefreshClient.mjs.map +1 -1
  134. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  135. package/dist/interaction_client/StandardInteractionClient.mjs +18 -38
  136. package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
  137. package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
  138. package/dist/interaction_handler/InteractionHandler.mjs +13 -16
  139. package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
  140. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  141. package/dist/interaction_handler/RedirectHandler.mjs +12 -11
  142. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  143. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  144. package/dist/interaction_handler/SilentHandler.mjs +11 -11
  145. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  146. package/dist/navigation/NavigationClient.mjs +1 -1
  147. package/dist/navigation/NavigationClient.mjs.map +1 -1
  148. package/dist/network/FetchClient.d.ts.map +1 -1
  149. package/dist/network/FetchClient.mjs +9 -8
  150. package/dist/network/FetchClient.mjs.map +1 -1
  151. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  152. package/dist/operatingcontext/BaseOperatingContext.mjs.map +1 -1
  153. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  154. package/dist/operatingcontext/StandardOperatingContext.mjs.map +1 -1
  155. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +1 -1
  156. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  157. package/dist/packageMetadata.d.ts +1 -1
  158. package/dist/packageMetadata.mjs +2 -2
  159. package/dist/packageMetadata.mjs.map +1 -1
  160. package/dist/request/ClearCacheRequest.d.ts +11 -0
  161. package/dist/request/ClearCacheRequest.d.ts.map +1 -0
  162. package/dist/telemetry/BrowserPerformanceClient.d.ts +2 -4
  163. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  164. package/dist/telemetry/BrowserPerformanceClient.mjs +2 -6
  165. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  166. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  167. package/dist/telemetry/BrowserPerformanceMeasurement.mjs.map +1 -1
  168. package/dist/utils/BrowserConstants.mjs +1 -1
  169. package/dist/utils/BrowserConstants.mjs.map +1 -1
  170. package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
  171. package/dist/utils/BrowserProtocolUtils.mjs +4 -4
  172. package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
  173. package/dist/utils/BrowserStringUtils.mjs +1 -1
  174. package/dist/utils/BrowserStringUtils.mjs.map +1 -1
  175. package/dist/utils/BrowserUtils.d.ts +0 -9
  176. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  177. package/dist/utils/BrowserUtils.mjs +8 -33
  178. package/dist/utils/BrowserUtils.mjs.map +1 -1
  179. package/lib/msal-browser.cjs +8729 -9566
  180. package/lib/msal-browser.cjs.map +1 -1
  181. package/lib/msal-browser.js +8729 -9566
  182. package/lib/msal-browser.js.map +1 -1
  183. package/lib/msal-browser.min.js +68 -62
  184. package/package.json +7 -5
  185. package/src/app/IPublicClientApplication.ts +236 -0
  186. package/src/app/PublicClientApplication.ts +417 -0
  187. package/src/broker/nativeBroker/NativeMessageHandler.ts +416 -0
  188. package/src/broker/nativeBroker/NativeRequest.ts +52 -0
  189. package/src/broker/nativeBroker/NativeResponse.ts +56 -0
  190. package/src/broker/nativeBroker/NativeStatusCodes.ts +13 -0
  191. package/src/cache/AsyncMemoryStorage.ts +158 -0
  192. package/src/cache/BrowserCacheManager.ts +2009 -0
  193. package/src/cache/BrowserStorage.ts +52 -0
  194. package/src/cache/CryptoKeyStore.ts +63 -0
  195. package/src/cache/DatabaseStorage.ts +287 -0
  196. package/src/cache/IAsyncMemoryStorage.ts +36 -0
  197. package/src/cache/ITokenCache.ts +21 -0
  198. package/src/cache/IWindowStorage.ts +36 -0
  199. package/src/cache/MemoryStorage.ts +42 -0
  200. package/src/cache/TokenCache.ts +484 -0
  201. package/src/config/Configuration.ts +383 -0
  202. package/src/controllers/ControllerFactory.ts +55 -0
  203. package/src/controllers/IController.ts +134 -0
  204. package/src/controllers/StandardController.ts +2170 -0
  205. package/src/crypto/BrowserCrypto.ts +151 -0
  206. package/src/crypto/CryptoOps.ts +235 -0
  207. package/src/crypto/PkceGenerator.ts +115 -0
  208. package/src/crypto/SignedHttpRequest.ts +76 -0
  209. package/src/encode/Base64Decode.ts +46 -0
  210. package/src/encode/Base64Encode.ts +52 -0
  211. package/src/error/BrowserAuthError.ts +352 -0
  212. package/src/error/BrowserAuthErrorCodes.ts +57 -0
  213. package/src/error/BrowserConfigurationAuthError.ts +64 -0
  214. package/src/error/BrowserConfigurationAuthErrorCodes.ts +9 -0
  215. package/src/error/NativeAuthError.ts +113 -0
  216. package/src/error/NativeAuthErrorCodes.ts +7 -0
  217. package/src/event/EventHandler.ts +177 -0
  218. package/src/event/EventMessage.ts +125 -0
  219. package/src/event/EventType.ts +33 -0
  220. package/src/index.ts +157 -0
  221. package/src/interaction_client/BaseInteractionClient.ts +307 -0
  222. package/src/interaction_client/HybridSpaAuthorizationCodeClient.ts +16 -0
  223. package/src/interaction_client/NativeInteractionClient.ts +925 -0
  224. package/src/interaction_client/PopupClient.ts +926 -0
  225. package/src/interaction_client/RedirectClient.ts +616 -0
  226. package/src/interaction_client/SilentAuthCodeClient.ts +165 -0
  227. package/src/interaction_client/SilentCacheClient.ts +125 -0
  228. package/src/interaction_client/SilentIframeClient.ts +301 -0
  229. package/src/interaction_client/SilentRefreshClient.ts +118 -0
  230. package/src/interaction_client/StandardInteractionClient.ts +450 -0
  231. package/src/interaction_handler/InteractionHandler.ts +251 -0
  232. package/src/interaction_handler/RedirectHandler.ts +229 -0
  233. package/src/interaction_handler/SilentHandler.ts +269 -0
  234. package/src/navigation/INavigationClient.ts +23 -0
  235. package/src/navigation/NavigationClient.ts +55 -0
  236. package/src/navigation/NavigationOptions.ts +18 -0
  237. package/src/network/FetchClient.ts +130 -0
  238. package/src/operatingcontext/BaseOperatingContext.ts +82 -0
  239. package/src/operatingcontext/StandardOperatingContext.ts +49 -0
  240. package/src/operatingcontext/TeamsAppOperatingContext.ts +48 -0
  241. package/src/packageMetadata.ts +3 -0
  242. package/src/request/AuthorizationCodeRequest.ts +19 -0
  243. package/src/request/AuthorizationUrlRequest.ts +17 -0
  244. package/src/request/ClearCacheRequest.ts +16 -0
  245. package/src/request/EndSessionPopupRequest.ts +26 -0
  246. package/src/request/EndSessionRequest.ts +23 -0
  247. package/src/request/PopupRequest.ts +51 -0
  248. package/src/request/PopupWindowAttributes.ts +22 -0
  249. package/src/request/RedirectRequest.ts +51 -0
  250. package/src/request/SilentRequest.ts +49 -0
  251. package/src/request/SsoSilentRequest.ts +44 -0
  252. package/src/response/AuthenticationResult.ts +13 -0
  253. package/src/telemetry/BrowserPerformanceClient.ts +226 -0
  254. package/src/telemetry/BrowserPerformanceMeasurement.ts +144 -0
  255. package/src/utils/BrowserConstants.ts +241 -0
  256. package/src/utils/BrowserProtocolUtils.ts +58 -0
  257. package/src/utils/BrowserStringUtils.ts +143 -0
  258. package/src/utils/BrowserUtils.ts +156 -0
  259. package/dist/crypto/GuidGenerator.d.ts +0 -13
  260. package/dist/crypto/GuidGenerator.d.ts.map +0 -1
  261. package/dist/crypto/GuidGenerator.mjs +0 -104
  262. package/dist/crypto/GuidGenerator.mjs.map +0 -1
  263. package/dist/crypto/ISubtleCrypto.d.ts +0 -10
  264. package/dist/crypto/ISubtleCrypto.d.ts.map +0 -1
  265. package/dist/crypto/ModernBrowserCrypto.d.ts +0 -10
  266. package/dist/crypto/ModernBrowserCrypto.d.ts.map +0 -1
  267. package/dist/crypto/ModernBrowserCrypto.mjs +0 -31
  268. package/dist/crypto/ModernBrowserCrypto.mjs.map +0 -1
  269. package/dist/internals.d.ts +0 -23
  270. package/dist/internals.d.ts.map +0 -1
  271. package/dist/internals.mjs +0 -28
  272. package/dist/internals.mjs.map +0 -1
  273. package/dist/network/XhrClient.d.ts +0 -41
  274. package/dist/network/XhrClient.d.ts.map +0 -1
  275. package/dist/network/XhrClient.mjs +0 -125
  276. package/dist/network/XhrClient.mjs.map +0 -1
  277. package/dist/utils/MathUtils.d.ts +0 -12
  278. package/dist/utils/MathUtils.d.ts.map +0 -1
  279. package/dist/utils/MathUtils.mjs +0 -26
  280. package/dist/utils/MathUtils.mjs.map +0 -1
@@ -1,13 +1,19 @@
1
- /*! @azure/msal-browser v3.0.2 2023-08-18 */
1
+ /*! @azure/msal-browser v3.2.0 2023-10-05 */
2
2
  'use strict';
3
3
  import { BrowserStringUtils } from '../utils/BrowserStringUtils.mjs';
4
- import { BrowserAuthError } from '../error/BrowserAuthError.mjs';
5
- import { ModernBrowserCrypto } from './ModernBrowserCrypto.mjs';
4
+ import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
5
+ import { PerformanceEvents } from '@azure/msal-common';
6
+ import { KEY_FORMAT_JWK } from '../utils/BrowserConstants.mjs';
7
+ import { cryptoNonExistent } from '../error/BrowserAuthErrorCodes.mjs';
6
8
 
7
9
  /*
8
10
  * Copyright (c) Microsoft Corporation. All rights reserved.
9
11
  * Licensed under the MIT License.
10
12
  */
13
+ /**
14
+ * This file defines functions used by the browser library to perform cryptography operations such as
15
+ * hashing and encoding. It also has helper functions to validate the availability of specific APIs.
16
+ */
11
17
  /**
12
18
  * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams
13
19
  */
@@ -19,84 +25,79 @@ const S256_HASH_ALG = "SHA-256";
19
25
  const MODULUS_LENGTH = 2048;
20
26
  // Public Exponent
21
27
  const PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);
28
+ const keygenAlgorithmOptions = {
29
+ name: PKCS1_V15_KEYGEN_ALG,
30
+ hash: S256_HASH_ALG,
31
+ modulusLength: MODULUS_LENGTH,
32
+ publicExponent: PUBLIC_EXPONENT,
33
+ };
22
34
  /**
23
- * This class implements functions used by the browser library to perform cryptography operations such as
24
- * hashing and encoding. It also has helper functions to validate the availability of specific APIs.
35
+ * Check whether browser crypto is available.
25
36
  */
26
- class BrowserCrypto {
27
- constructor(logger) {
28
- this.logger = logger;
29
- if (this.hasBrowserCrypto()) {
30
- // Use standard modern web crypto if available
31
- this.logger.verbose("BrowserCrypto: modern crypto interface available");
32
- this.subtleCrypto = new ModernBrowserCrypto();
33
- }
34
- else {
35
- this.logger.error("BrowserCrypto: crypto interface is unavailable");
36
- throw BrowserAuthError.createCryptoNotAvailableError("Browser crypto interface is not available.");
37
- }
38
- this.keygenAlgorithmOptions = {
39
- name: PKCS1_V15_KEYGEN_ALG,
40
- hash: S256_HASH_ALG,
41
- modulusLength: MODULUS_LENGTH,
42
- publicExponent: PUBLIC_EXPONENT,
43
- };
44
- }
45
- /**
46
- * Check whether browser crypto is available.
47
- */
48
- hasBrowserCrypto() {
49
- return "crypto" in window;
50
- }
51
- /**
52
- * Returns a sha-256 hash of the given dataString as an ArrayBuffer.
53
- * @param dataString
54
- */
55
- async sha256Digest(dataString) {
56
- const data = BrowserStringUtils.stringToUtf8Arr(dataString);
57
- // MSR Crypto wants object with name property, instead of string
58
- return this.subtleCrypto.digest({ name: S256_HASH_ALG }, data);
59
- }
60
- /**
61
- * Populates buffer with cryptographically random values.
62
- * @param dataBuffer
63
- */
64
- getRandomValues(dataBuffer) {
65
- return this.subtleCrypto.getRandomValues(dataBuffer);
66
- }
67
- /**
68
- * Generates a keypair based on current keygen algorithm config.
69
- * @param extractable
70
- * @param usages
71
- */
72
- async generateKeyPair(extractable, usages) {
73
- return this.subtleCrypto.generateKey(this.keygenAlgorithmOptions, extractable, usages);
37
+ function validateCryptoAvailable(logger) {
38
+ if ("crypto" in window) {
39
+ logger.verbose("BrowserCrypto: modern crypto interface available");
74
40
  }
75
- /**
76
- * Export key as Json Web Key (JWK)
77
- * @param key
78
- */
79
- async exportJwk(key) {
80
- return this.subtleCrypto.exportKey(key);
81
- }
82
- /**
83
- * Imports key as Json Web Key (JWK), can set extractable and usages.
84
- * @param key
85
- * @param extractable
86
- * @param usages
87
- */
88
- async importJwk(key, extractable, usages) {
89
- return this.subtleCrypto.importKey(key, this.keygenAlgorithmOptions, extractable, usages);
90
- }
91
- /**
92
- * Signs given data with given key
93
- * @param key
94
- * @param data
95
- */
96
- async sign(key, data) {
97
- return this.subtleCrypto.sign(this.keygenAlgorithmOptions, key, data);
41
+ else {
42
+ logger.error("BrowserCrypto: crypto interface is unavailable");
43
+ throw createBrowserAuthError(cryptoNonExistent);
98
44
  }
99
45
  }
46
+ /**
47
+ * Returns a sha-256 hash of the given dataString as an ArrayBuffer.
48
+ * @param dataString
49
+ */
50
+ async function sha256Digest(dataString, performanceClient, correlationId) {
51
+ performanceClient?.addQueueMeasurement(PerformanceEvents.Sha256Digest, correlationId);
52
+ const data = BrowserStringUtils.stringToUtf8Arr(dataString);
53
+ return window.crypto.subtle.digest(S256_HASH_ALG, data);
54
+ }
55
+ /**
56
+ * Populates buffer with cryptographically random values.
57
+ * @param dataBuffer
58
+ */
59
+ function getRandomValues(dataBuffer) {
60
+ return window.crypto.getRandomValues(dataBuffer);
61
+ }
62
+ /**
63
+ * Creates a new random GUID
64
+ * @returns
65
+ */
66
+ function createNewGuid() {
67
+ return window.crypto.randomUUID();
68
+ }
69
+ /**
70
+ * Generates a keypair based on current keygen algorithm config.
71
+ * @param extractable
72
+ * @param usages
73
+ */
74
+ async function generateKeyPair(extractable, usages) {
75
+ return window.crypto.subtle.generateKey(keygenAlgorithmOptions, extractable, usages);
76
+ }
77
+ /**
78
+ * Export key as Json Web Key (JWK)
79
+ * @param key
80
+ */
81
+ async function exportJwk(key) {
82
+ return window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);
83
+ }
84
+ /**
85
+ * Imports key as Json Web Key (JWK), can set extractable and usages.
86
+ * @param key
87
+ * @param extractable
88
+ * @param usages
89
+ */
90
+ async function importJwk(key, extractable, usages) {
91
+ return window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, keygenAlgorithmOptions, extractable, usages);
92
+ }
93
+ /**
94
+ * Signs given data with given key
95
+ * @param key
96
+ * @param data
97
+ */
98
+ async function sign(key, data) {
99
+ return window.crypto.subtle.sign(keygenAlgorithmOptions, key, data);
100
+ }
100
101
 
101
- export { BrowserCrypto };
102
+ export { createNewGuid, exportJwk, generateKeyPair, getRandomValues, importJwk, sha256Digest, sign, validateCryptoAvailable };
102
103
  //# sourceMappingURL=BrowserCrypto.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserCrypto.mjs","sources":["../../src/crypto/BrowserCrypto.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGG;AAOH;;AAEG;AACH;AACA,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACjD;AACA,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC;AACA,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B;AACA,MAAM,eAAe,GAAe,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvE;;;AAGG;MACU,aAAa,CAAA;AAKtB,IAAA,WAAA,CAAY,MAAc,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;;AAEzB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CACf,kDAAkD,CACrD,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACjD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACpE,YAAA,MAAM,gBAAgB,CAAC,6BAA6B,CAChD,4CAA4C,CAC/C,CAAC;AACL,SAAA;QAED,IAAI,CAAC,sBAAsB,GAAG;AAC1B,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,aAAa,EAAE,cAAc;AAC7B,YAAA,cAAc,EAAE,eAAe;SAClC,CAAC;KACL;AAED;;AAEG;IACK,gBAAgB,GAAA;QACpB,OAAO,QAAQ,IAAI,MAAM,CAAC;KAC7B;AAED;;;AAGG;IACH,MAAM,YAAY,CAAC,UAAkB,EAAA;QACjC,MAAM,IAAI,GAAG,kBAAkB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;;AAE5D,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;KAClE;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,UAAsB,EAAA;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACxD;AAED;;;;AAIG;AACH,IAAA,MAAM,eAAe,CACjB,WAAoB,EACpB,MAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAChC,IAAI,CAAC,sBAAsB,EAC3B,WAAW,EACX,MAAM,CACT,CAAC;KACL;AAED;;;AAGG;IACH,MAAM,SAAS,CAAC,GAAc,EAAA;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KAC3C;AAED;;;;;AAKG;AACH,IAAA,MAAM,SAAS,CACX,GAAe,EACf,WAAoB,EACpB,MAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAC9B,GAAG,EACH,IAAI,CAAC,sBAAsB,EAC3B,WAAW,EACX,MAAM,CACT,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,MAAM,IAAI,CAAC,GAAc,EAAE,IAAiB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KACzE;AACJ;;;;"}
1
+ {"version":3,"file":"BrowserCrypto.mjs","sources":["../../src/crypto/BrowserCrypto.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.cryptoNonExistent"],"mappings":";;;;;;;;AAUA;AA+BA;;AAEG;AAaA;AACH;AAgBA;;;AAGG;AACH;AAIA;;;AAGG,MAAA,aAAA,GAAA,SAAA,CAAA;AACH;AAIA,MAAA,cAAA,GAAA,IAAA,CAAA;;;;AAIG,IAAA,IAAA,EAAA,oBAAA;AACH,IAAA,IAAA,EAAA,aAAA;AAWA,IAAA,aAAA,EAAA,cAAA;;;AAGG;AACH;AAOA;;;;;AAKG,SAAA;AACH,QAAsB,MAAA,CAAA,KAAA,CAAA,gDAEE,CAAA,CAAA;AAYxB,QAAA,MAAA,sBAAA,CAAAA,iBAAA,CAAA,CAAA;;;;AAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { ICrypto, IPerformanceClient, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
1
+ import { ICrypto, IPerformanceClient, Logger, SignedHttpRequest, SignedHttpRequestParameters } from "@azure/msal-common";
2
2
  export type CachedKeyPair = {
3
3
  publicKey: CryptoKey;
4
4
  privateKey: CryptoKey;
@@ -10,11 +10,6 @@ export type CachedKeyPair = {
10
10
  * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).
11
11
  */
12
12
  export declare class CryptoOps implements ICrypto {
13
- private browserCrypto;
14
- private guidGenerator;
15
- private b64Encode;
16
- private b64Decode;
17
- private pkceGenerator;
18
13
  private logger;
19
14
  /**
20
15
  * CryptoOps can be used in contexts outside a PCA instance,
@@ -40,10 +35,6 @@ export declare class CryptoOps implements ICrypto {
40
35
  * @param input
41
36
  */
42
37
  base64Decode(input: string): string;
43
- /**
44
- * Generates PKCE codes used in Authorization Code Flow.
45
- */
46
- generatePkceCodes(): Promise<PkceCodes>;
47
38
  /**
48
39
  * Generates a keypair, stores it and returns a thumbprint
49
40
  * @param request
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,SAAS,EACT,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,oBAAoB,CAAC;AAU5B,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAYlE;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC;IAI7C;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA8DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOvD"}
1
+ {"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,oBAAoB,CAAC;AAW5B,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAQlE;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA0DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOvD"}
@@ -1,14 +1,13 @@
1
- /*! @azure/msal-browser v3.0.2 2023-08-18 */
1
+ /*! @azure/msal-browser v3.2.0 2023-10-05 */
2
2
  'use strict';
3
3
  import { PerformanceEvents, JoseHeader } from '@azure/msal-common';
4
- import { GuidGenerator } from './GuidGenerator.mjs';
5
- import { Base64Encode } from '../encode/Base64Encode.mjs';
6
- import { Base64Decode } from '../encode/Base64Decode.mjs';
7
- import { PkceGenerator } from './PkceGenerator.mjs';
8
- import { BrowserCrypto } from './BrowserCrypto.mjs';
4
+ import { base64Encode, urlEncode, urlEncodeArr } from '../encode/Base64Encode.mjs';
5
+ import { base64Decode } from '../encode/Base64Decode.mjs';
6
+ import { validateCryptoAvailable, createNewGuid, generateKeyPair, exportJwk, importJwk, sign, sha256Digest } from './BrowserCrypto.mjs';
9
7
  import { BrowserStringUtils } from '../utils/BrowserStringUtils.mjs';
10
- import { BrowserAuthError } from '../error/BrowserAuthError.mjs';
8
+ import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
11
9
  import { CryptoKeyStore } from '../cache/CryptoKeyStore.mjs';
10
+ import { cryptoKeyNotFound } from '../error/BrowserAuthErrorCodes.mjs';
12
11
 
13
12
  /*
14
13
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -22,11 +21,7 @@ class CryptoOps {
22
21
  constructor(logger, performanceClient) {
23
22
  this.logger = logger;
24
23
  // Browser crypto needs to be validated first before any other classes can be set.
25
- this.browserCrypto = new BrowserCrypto(this.logger);
26
- this.b64Encode = new Base64Encode();
27
- this.b64Decode = new Base64Decode();
28
- this.guidGenerator = new GuidGenerator(this.browserCrypto);
29
- this.pkceGenerator = new PkceGenerator(this.browserCrypto);
24
+ validateCryptoAvailable(logger);
30
25
  this.cache = new CryptoKeyStore(this.logger);
31
26
  this.performanceClient = performanceClient;
32
27
  }
@@ -35,27 +30,21 @@ class CryptoOps {
35
30
  * @returns string (GUID)
36
31
  */
37
32
  createNewGuid() {
38
- return this.guidGenerator.generateGuid();
33
+ return createNewGuid();
39
34
  }
40
35
  /**
41
36
  * Encodes input string to base64.
42
37
  * @param input
43
38
  */
44
39
  base64Encode(input) {
45
- return this.b64Encode.encode(input);
40
+ return base64Encode(input);
46
41
  }
47
42
  /**
48
43
  * Decodes input string from base64.
49
44
  * @param input
50
45
  */
51
46
  base64Decode(input) {
52
- return this.b64Decode.decode(input);
53
- }
54
- /**
55
- * Generates PKCE codes used in Authorization Code Flow.
56
- */
57
- async generatePkceCodes() {
58
- return this.pkceGenerator.generateCodes();
47
+ return base64Decode(input);
59
48
  }
60
49
  /**
61
50
  * Generates a keypair, stores it and returns a thumbprint
@@ -64,9 +53,9 @@ class CryptoOps {
64
53
  async getPublicKeyThumbprint(request) {
65
54
  const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);
66
55
  // Generate Keypair
67
- const keyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);
56
+ const keyPair = await generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);
68
57
  // Generate Thumbprint for Public Key
69
- const publicKeyJwk = await this.browserCrypto.exportJwk(keyPair.publicKey);
58
+ const publicKeyJwk = await exportJwk(keyPair.publicKey);
70
59
  const pubKeyThumprintObj = {
71
60
  e: publicKeyJwk.e,
72
61
  kty: publicKeyJwk.kty,
@@ -75,9 +64,9 @@ class CryptoOps {
75
64
  const publicJwkString = BrowserStringUtils.getSortedObjectString(pubKeyThumprintObj);
76
65
  const publicJwkHash = await this.hashString(publicJwkString);
77
66
  // Generate Thumbprint for Private Key
78
- const privateKeyJwk = await this.browserCrypto.exportJwk(keyPair.privateKey);
67
+ const privateKeyJwk = await exportJwk(keyPair.privateKey);
79
68
  // Re-import private key to make it unextractable
80
- const unextractablePrivateKey = await this.browserCrypto.importJwk(privateKeyJwk, false, ["sign"]);
69
+ const unextractablePrivateKey = await importJwk(privateKeyJwk, false, ["sign"]);
81
70
  // Store Keypair data in keystore
82
71
  await this.cache.asymmetricKeys.setItem(publicJwkHash, {
83
72
  privateKey: unextractablePrivateKey,
@@ -116,30 +105,30 @@ class CryptoOps {
116
105
  const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);
117
106
  const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);
118
107
  if (!cachedKeyPair) {
119
- throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);
108
+ throw createBrowserAuthError(cryptoKeyNotFound);
120
109
  }
121
110
  // Get public key as JWK
122
- const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);
111
+ const publicKeyJwk = await exportJwk(cachedKeyPair.publicKey);
123
112
  const publicKeyJwkString = BrowserStringUtils.getSortedObjectString(publicKeyJwk);
124
113
  // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: "FULL_PUBLIC_KEY_HASH" })
125
- const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));
114
+ const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid }));
126
115
  // Generate header
127
116
  const shrHeader = JoseHeader.getShrHeaderString({
128
117
  kid: encodedKeyIdThumbprint,
129
118
  alg: publicKeyJwk.alg,
130
119
  });
131
- const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);
120
+ const encodedShrHeader = urlEncode(shrHeader);
132
121
  // Generate payload
133
122
  payload.cnf = {
134
123
  jwk: JSON.parse(publicKeyJwkString),
135
124
  };
136
- const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));
125
+ const encodedPayload = urlEncode(JSON.stringify(payload));
137
126
  // Form token string
138
127
  const tokenString = `${encodedShrHeader}.${encodedPayload}`;
139
128
  // Sign token
140
129
  const tokenBuffer = BrowserStringUtils.stringToUtf8Arr(tokenString);
141
- const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);
142
- const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));
130
+ const signatureBuffer = await sign(cachedKeyPair.privateKey, tokenBuffer);
131
+ const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer));
143
132
  const signedJwt = `${tokenString}.${encodedSignature}`;
144
133
  if (signJwtMeasurement) {
145
134
  signJwtMeasurement.end({
@@ -153,9 +142,9 @@ class CryptoOps {
153
142
  * @param plainText
154
143
  */
155
144
  async hashString(plainText) {
156
- const hashBuffer = await this.browserCrypto.sha256Digest(plainText);
145
+ const hashBuffer = await sha256Digest(plainText);
157
146
  const hashBytes = new Uint8Array(hashBuffer);
158
- return this.b64Encode.urlEncodeArr(hashBytes);
147
+ return urlEncodeArr(hashBytes);
159
148
  }
160
149
  }
161
150
  CryptoOps.POP_KEY_USAGES = ["sign", "verify"];
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoOps.mjs","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptoOps.mjs","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":[null],"names":["BrowserCrypto.validateCryptoAvailable","BrowserCrypto.generateKeyPair","BrowserCrypto.exportJwk"],"mappings":";;;;;;;;;;;AAKA;AAmBA;;;AAWA;;AAGI;;;AAGG,IAAA,WAAA,CAAA,MAAA,EAAA,iBAAA,EAAA;QACI,IAAC,iBAAiB;AAEzB;AACA,QAAAA,uBAA2C,CAAA,MAAA,CAAA,CAAA;QACpC,IAAC,MAAsB,GAAA,IAAA,cAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;AAElB,QAAA,IAAA,CAAA,iBAAc,GAAmB,iBAAC;AAQ9C,KAAA;;;AAGG;AACH;AAIA,IAAA,aAAA,GAAA;;;AAGG;AACH;AAIA;;;AAGG,QAAA,OAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACH,KAAA;AAIA;;;AAGG;IACG,YAAsB,CAAA,KAAA,EAAA;AAuD5B,QAAA,OAAA,YAAA,CAAA,KAAA,CAAA,CAAA;;;AAGG;;AAOH;;AAEG,QAAA,MAAA,yBAAA,GAAA,IAAA,CAAA,iBAAA,EAAA,gBAAA,CAAA,iBAAA,CAAA,gCAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;AACG;AAIN,QAAA,MAAA,OAAA,GAAA,MAAAC,eAAA,CAAA,SAAA,CAAA,WAAA,EAAA,SAAA,CAAA,cAAA,CAAA,CAAA;;;;AAIG,YAAA,CAAA,EAAA,YAAA,CAAA,CAAA;AACG,YACF,GAAO,EAAA,YAAmB,CAAA,GAAA;AA6D9B,YAAA,CAAA,EAAA,YAAA,CAAA,CAAA;;;AAGG,QAAA,MAAA,aAAA,GAAA,MAAA,IAAA,CAAA,UAAA,CAAA,eAAA,CAAA,CAAA;;AAQN,QAAA,MAAA,aAAA,GAAA,MAAAC,SAAA,CAAA,OAAA,CAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,25 +1,9 @@
1
- import { PkceCodes } from "@azure/msal-common";
2
- import { BrowserCrypto } from "./BrowserCrypto";
1
+ import { IPerformanceClient, Logger, PkceCodes } from "@azure/msal-common";
3
2
  /**
4
- * Class which exposes APIs to generate PKCE codes and code verifiers.
3
+ * This file defines APIs to generate PKCE codes and code verifiers.
5
4
  */
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
- }
5
+ /**
6
+ * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
7
+ */
8
+ export declare function generatePkceCodes(performanceClient: IPerformanceClient, logger: Logger, correlationId: string): Promise<PkceCodes>;
25
9
  //# sourceMappingURL=PkceGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAgB;gBAErB,SAAS,EAAE,aAAa;IAKpC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAWzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;YACW,iCAAiC;CAgBlD"}
1
+ {"version":3,"file":"PkceGenerator.d.ts","sourceRoot":"","sources":["../../src/crypto/PkceGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,kBAAkB,EAClB,MAAM,EAEN,SAAS,EAGZ,MAAM,oBAAoB,CAAC;AAW5B;;GAEG;AAEH;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,SAAS,CAAC,CAuBpB"}
@@ -1,7 +1,10 @@
1
- /*! @azure/msal-browser v3.0.2 2023-08-18 */
1
+ /*! @azure/msal-browser v3.2.0 2023-10-05 */
2
2
  'use strict';
3
- import { BrowserAuthError } from '../error/BrowserAuthError.mjs';
4
- import { Base64Encode } from '../encode/Base64Encode.mjs';
3
+ import { PerformanceEvents, invoke, invokeAsync } from '@azure/msal-common';
4
+ import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
5
+ import { urlEncodeArr } from '../encode/Base64Encode.mjs';
6
+ import { getRandomValues, sha256Digest } from './BrowserCrypto.mjs';
7
+ import { pkceNotCreated } from '../error/BrowserAuthErrorCodes.mjs';
5
8
 
6
9
  /*
7
10
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -10,57 +13,53 @@ import { Base64Encode } from '../encode/Base64Encode.mjs';
10
13
  // Constant byte array length
11
14
  const RANDOM_BYTE_ARR_LENGTH = 32;
12
15
  /**
13
- * Class which exposes APIs to generate PKCE codes and code verifiers.
16
+ * This file defines APIs to generate PKCE codes and code verifiers.
14
17
  */
15
- class PkceGenerator {
16
- constructor(cryptoObj) {
17
- this.base64Encode = new Base64Encode();
18
- this.cryptoObj = cryptoObj;
18
+ /**
19
+ * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636
20
+ */
21
+ async function generatePkceCodes(performanceClient, logger, correlationId) {
22
+ performanceClient.addQueueMeasurement(PerformanceEvents.GeneratePkceCodes, correlationId);
23
+ const codeVerifier = invoke(generateCodeVerifier, PerformanceEvents.GenerateCodeVerifier, logger, performanceClient, correlationId)(performanceClient, logger, correlationId);
24
+ const codeChallenge = await invokeAsync(generateCodeChallengeFromVerifier, PerformanceEvents.GenerateCodeChallengeFromVerifier, logger, performanceClient, correlationId)(codeVerifier, performanceClient, logger, correlationId);
25
+ return {
26
+ verifier: codeVerifier,
27
+ challenge: codeChallenge,
28
+ };
29
+ }
30
+ /**
31
+ * Generates a random 32 byte buffer and returns the base64
32
+ * encoded string to be used as a PKCE Code Verifier
33
+ */
34
+ function generateCodeVerifier(performanceClient, logger, correlationId) {
35
+ try {
36
+ // Generate random values as utf-8
37
+ const buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);
38
+ invoke(getRandomValues, PerformanceEvents.GetRandomValues, logger, performanceClient, correlationId)(buffer);
39
+ // encode verifier as base64
40
+ const pkceCodeVerifierB64 = urlEncodeArr(buffer);
41
+ return pkceCodeVerifierB64;
19
42
  }
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
- };
43
+ catch (e) {
44
+ throw createBrowserAuthError(pkceNotCreated);
30
45
  }
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
- }
46
+ }
47
+ /**
48
+ * Creates a base64 encoded PKCE Code Challenge string from the
49
+ * hash created from the PKCE Code Verifier supplied
50
+ */
51
+ async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceClient, logger, correlationId) {
52
+ performanceClient.addQueueMeasurement(PerformanceEvents.GenerateCodeChallengeFromVerifier, correlationId);
53
+ try {
54
+ // hashed verifier
55
+ const pkceHashedCodeVerifier = await invokeAsync(sha256Digest, PerformanceEvents.Sha256Digest, logger, performanceClient, correlationId)(pkceCodeVerifier, performanceClient, correlationId);
56
+ // encode hash as base64
57
+ return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));
47
58
  }
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
- }
59
+ catch (e) {
60
+ throw createBrowserAuthError(pkceNotCreated);
62
61
  }
63
62
  }
64
63
 
65
- export { PkceGenerator };
64
+ export { generatePkceCodes };
66
65
  //# sourceMappingURL=PkceGenerator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkceGenerator.mjs","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAOH;AACA,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;AAEG;MACU,aAAa,CAAA;AAItB,IAAA,WAAA,CAAY,SAAwB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,MAAM,aAAa,GAAA;AACf,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAC9D,YAAY,CACf,CAAC;QACF,OAAO;AACH,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,aAAa;SAC3B,CAAC;KACL;AAED;;;AAGG;IACK,oBAAoB,GAAA;QACxB,IAAI;;AAEA,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;YAEvC,MAAM,mBAAmB,GACrB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3C,YAAA,OAAO,mBAAmB,CAAC;AAC9B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,CAAW,CAAC,CAAC;AACnE,SAAA;KACJ;AAED;;;AAGG;IACK,MAAM,iCAAiC,CAC3C,gBAAwB,EAAA;QAExB,IAAI;;YAEA,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAC5D,gBAAgB,CACnB,CAAC;;AAEF,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CACjC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CACzC,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,CAAW,CAAC,CAAC;AACnE,SAAA;KACJ;AACJ;;;;"}
1
+ {"version":3,"file":"PkceGenerator.mjs","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAKA;AAkBA;;AAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v3.0.2 2023-08-18 */
1
+ /*! @azure/msal-browser v3.2.0 2023-10-05 */
2
2
  'use strict';
3
3
  import { CryptoOps } from './CryptoOps.mjs';
4
4
  import { Logger, PopTokenGenerator } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"SignedHttpRequest.mjs","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAeU,iBAAiB,CAAA;IAM1B,WACI,CAAA,aAA0C,EAC1C,UAAqC,EAAA;QAErC,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,KAAK,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;;AAGG;AACH,IAAA,MAAM,2BAA2B,GAAA;AAC7B,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACpD,IAAI,CAAC,aAAa,CACrB,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;AAMG;AACH,IAAA,MAAM,WAAW,CACb,OAAe,EACf,mBAA2B,EAC3B,MAAe,EAAA;AAEf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACrC,OAAO,EACP,mBAAmB,EACnB,IAAI,CAAC,aAAa,EAClB,MAAM,CACT,CAAC;KACL;AAED;;;;AAIG;IACH,MAAM,UAAU,CAAC,mBAA2B,EAAA;QACxC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;KAC1E;AACJ;;;;"}
1
+ {"version":3,"file":"SignedHttpRequest.mjs","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAMA;AAQA;;;AAOW,uBAA4C,CAAA;IACnD,yBAAuB,EAAA,UAAA,EAAA;AAGnB,QAAA,MAAA,aAAA,IAAe,UAA2B,IAAA,UAAA,CAAA,aAChC,KAA2B,EAAA,CAAA;AASzC,QAAA,IAAA,CAAA,MAAA,GAAA,IAAA,MAAA,CAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;AAGG,QAAA,IAAA,CAAA,aAAA,GAAA,aAAA,CAAA;AACG,KAAA;AAQN;;;;;;AAMG,QAAA,OAAA,GAAA,CAAA;AACG,KAAA;AAaN;;;;AAIG;;AAIN;;;;;;;;;;;;;;;;"}
@@ -1,23 +1,10 @@
1
1
  /**
2
2
  * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:
3
- * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64
3
+ * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem
4
4
  */
5
- export declare class Base64Decode {
6
- /**
7
- * Returns a URL-safe plaintext decoded string from b64 encoded input.
8
- * @param input
9
- */
10
- decode(input: string): string;
11
- /**
12
- * Decodes base64 into Uint8Array
13
- * @param base64String
14
- * @param nBlockSize
15
- */
16
- private base64DecToArr;
17
- /**
18
- * Base64 string to array decoding helper
19
- * @param charNum
20
- */
21
- private b64ToUint6;
22
- }
5
+ /**
6
+ * Returns a URL-safe plaintext decoded string from b64 encoded input.
7
+ * @param input
8
+ */
9
+ export declare function base64Decode(input: string): string;
23
10
  //# sourceMappingURL=Base64Decode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Base64Decode.d.ts","sourceRoot":"","sources":["../../src/encode/Base64Decode.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmB7B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqCtB;;;OAGG;IACH,OAAO,CAAC,UAAU;CAarB"}
1
+ {"version":3,"file":"Base64Decode.d.ts","sourceRoot":"","sources":["../../src/encode/Base64Decode.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}