tedious 17.0.0 → 18.1.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 (266) hide show
  1. package/lib/all-headers.d.ts +3 -0
  2. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +2 -3
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +2 -3
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
  6. package/lib/always-encrypted/cek-entry.d.ts +12 -0
  7. package/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts +22 -0
  8. package/lib/always-encrypted/symmetric-key.js +2 -3
  9. package/lib/always-encrypted/symmetric-key.js.map +1 -1
  10. package/lib/always-encrypted/types.d.ts +74 -0
  11. package/lib/always-encrypted/types.js +5 -9
  12. package/lib/always-encrypted/types.js.map +1 -1
  13. package/lib/bulk-load-payload.d.ts +9 -0
  14. package/lib/bulk-load.d.ts +278 -0
  15. package/lib/bulk-load.js +2 -4
  16. package/lib/bulk-load.js.map +1 -1
  17. package/lib/collation.d.ts +29 -0
  18. package/lib/collation.js +4 -7
  19. package/lib/collation.js.map +1 -1
  20. package/lib/connection.d.ts +1303 -0
  21. package/lib/connection.js +7 -10
  22. package/lib/connection.js.map +1 -1
  23. package/lib/connector.d.ts +21 -0
  24. package/lib/connector.js +3 -4
  25. package/lib/connector.js.map +1 -1
  26. package/lib/data-type.d.ts +456 -0
  27. package/lib/data-type.js +4 -7
  28. package/lib/data-type.js.map +1 -1
  29. package/lib/data-types/bigint.d.ts +3 -0
  30. package/lib/data-types/bigint.js +2 -3
  31. package/lib/data-types/bigint.js.map +1 -1
  32. package/lib/data-types/binary.d.ts +5 -0
  33. package/lib/data-types/binary.js +2 -3
  34. package/lib/data-types/binary.js.map +1 -1
  35. package/lib/data-types/bit.d.ts +3 -0
  36. package/lib/data-types/bit.js +2 -3
  37. package/lib/data-types/bit.js.map +1 -1
  38. package/lib/data-types/bitn.d.ts +3 -0
  39. package/lib/data-types/bitn.js +2 -3
  40. package/lib/data-types/bitn.js.map +1 -1
  41. package/lib/data-types/char.d.ts +5 -0
  42. package/lib/data-types/char.js +2 -3
  43. package/lib/data-types/char.js.map +1 -1
  44. package/lib/data-types/date.d.ts +3 -0
  45. package/lib/data-types/date.js +2 -3
  46. package/lib/data-types/date.js.map +1 -1
  47. package/lib/data-types/datetime.d.ts +3 -0
  48. package/lib/data-types/datetime.js +2 -3
  49. package/lib/data-types/datetime.js.map +1 -1
  50. package/lib/data-types/datetime2.d.ts +5 -0
  51. package/lib/data-types/datetime2.js +2 -3
  52. package/lib/data-types/datetime2.js.map +1 -1
  53. package/lib/data-types/datetimen.d.ts +3 -0
  54. package/lib/data-types/datetimen.js +2 -3
  55. package/lib/data-types/datetimen.js.map +1 -1
  56. package/lib/data-types/datetimeoffset.d.ts +5 -0
  57. package/lib/data-types/datetimeoffset.js +2 -3
  58. package/lib/data-types/datetimeoffset.js.map +1 -1
  59. package/lib/data-types/decimal.d.ts +6 -0
  60. package/lib/data-types/decimal.js +2 -3
  61. package/lib/data-types/decimal.js.map +1 -1
  62. package/lib/data-types/decimaln.d.ts +3 -0
  63. package/lib/data-types/decimaln.js +2 -3
  64. package/lib/data-types/decimaln.js.map +1 -1
  65. package/lib/data-types/float.d.ts +3 -0
  66. package/lib/data-types/float.js +2 -3
  67. package/lib/data-types/float.js.map +1 -1
  68. package/lib/data-types/floatn.d.ts +3 -0
  69. package/lib/data-types/floatn.js +2 -3
  70. package/lib/data-types/floatn.js.map +1 -1
  71. package/lib/data-types/image.d.ts +3 -0
  72. package/lib/data-types/image.js +2 -3
  73. package/lib/data-types/image.js.map +1 -1
  74. package/lib/data-types/int.d.ts +3 -0
  75. package/lib/data-types/int.js +2 -3
  76. package/lib/data-types/int.js.map +1 -1
  77. package/lib/data-types/intn.d.ts +3 -0
  78. package/lib/data-types/intn.js +2 -3
  79. package/lib/data-types/intn.js.map +1 -1
  80. package/lib/data-types/money.d.ts +3 -0
  81. package/lib/data-types/money.js +2 -3
  82. package/lib/data-types/money.js.map +1 -1
  83. package/lib/data-types/moneyn.d.ts +3 -0
  84. package/lib/data-types/moneyn.js +2 -3
  85. package/lib/data-types/moneyn.js.map +1 -1
  86. package/lib/data-types/nchar.d.ts +5 -0
  87. package/lib/data-types/nchar.js +2 -3
  88. package/lib/data-types/nchar.js.map +1 -1
  89. package/lib/data-types/ntext.d.ts +3 -0
  90. package/lib/data-types/ntext.js +2 -3
  91. package/lib/data-types/ntext.js.map +1 -1
  92. package/lib/data-types/null.d.ts +3 -0
  93. package/lib/data-types/null.js +2 -3
  94. package/lib/data-types/null.js.map +1 -1
  95. package/lib/data-types/numeric.d.ts +6 -0
  96. package/lib/data-types/numeric.js +2 -3
  97. package/lib/data-types/numeric.js.map +1 -1
  98. package/lib/data-types/numericn.d.ts +3 -0
  99. package/lib/data-types/numericn.js +2 -3
  100. package/lib/data-types/numericn.js.map +1 -1
  101. package/lib/data-types/nvarchar.d.ts +5 -0
  102. package/lib/data-types/nvarchar.js +2 -3
  103. package/lib/data-types/nvarchar.js.map +1 -1
  104. package/lib/data-types/real.d.ts +3 -0
  105. package/lib/data-types/real.js +2 -3
  106. package/lib/data-types/real.js.map +1 -1
  107. package/lib/data-types/smalldatetime.d.ts +3 -0
  108. package/lib/data-types/smalldatetime.js +2 -3
  109. package/lib/data-types/smalldatetime.js.map +1 -1
  110. package/lib/data-types/smallint.d.ts +3 -0
  111. package/lib/data-types/smallint.js +2 -3
  112. package/lib/data-types/smallint.js.map +1 -1
  113. package/lib/data-types/smallmoney.d.ts +3 -0
  114. package/lib/data-types/smallmoney.js +2 -3
  115. package/lib/data-types/smallmoney.js.map +1 -1
  116. package/lib/data-types/sql-variant.d.ts +3 -0
  117. package/lib/data-types/sql-variant.js +2 -3
  118. package/lib/data-types/sql-variant.js.map +1 -1
  119. package/lib/data-types/text.d.ts +3 -0
  120. package/lib/data-types/text.js +2 -3
  121. package/lib/data-types/text.js.map +1 -1
  122. package/lib/data-types/time.d.ts +3 -0
  123. package/lib/data-types/time.js +2 -3
  124. package/lib/data-types/time.js.map +1 -1
  125. package/lib/data-types/tinyint.d.ts +3 -0
  126. package/lib/data-types/tinyint.js +2 -3
  127. package/lib/data-types/tinyint.js.map +1 -1
  128. package/lib/data-types/tvp.d.ts +3 -0
  129. package/lib/data-types/tvp.js +2 -3
  130. package/lib/data-types/tvp.js.map +1 -1
  131. package/lib/data-types/udt.d.ts +3 -0
  132. package/lib/data-types/udt.js +2 -3
  133. package/lib/data-types/udt.js.map +1 -1
  134. package/lib/data-types/uniqueidentifier.d.ts +3 -0
  135. package/lib/data-types/uniqueidentifier.js +2 -3
  136. package/lib/data-types/uniqueidentifier.js.map +1 -1
  137. package/lib/data-types/varbinary.d.ts +5 -0
  138. package/lib/data-types/varbinary.js +2 -3
  139. package/lib/data-types/varbinary.js.map +1 -1
  140. package/lib/data-types/varchar.d.ts +5 -0
  141. package/lib/data-types/varchar.js +2 -3
  142. package/lib/data-types/varchar.js.map +1 -1
  143. package/lib/data-types/xml.d.ts +3 -0
  144. package/lib/data-types/xml.js +2 -3
  145. package/lib/data-types/xml.js.map +1 -1
  146. package/lib/debug.d.ts +25 -0
  147. package/lib/debug.js +4 -5
  148. package/lib/debug.js.map +1 -1
  149. package/lib/errors/abort-error.d.ts +4 -0
  150. package/lib/errors/timeout-error.d.ts +4 -0
  151. package/lib/errors.d.ts +15 -0
  152. package/lib/guid-parser.d.ts +4 -0
  153. package/lib/incoming-message-stream.d.ts +21 -0
  154. package/lib/incoming-message-stream.js +2 -3
  155. package/lib/incoming-message-stream.js.map +1 -1
  156. package/lib/instance-lookup.d.ts +15 -0
  157. package/lib/instance-lookup.js +1 -1
  158. package/lib/instance-lookup.js.map +1 -1
  159. package/lib/library.d.ts +1 -0
  160. package/lib/library.js +2 -3
  161. package/lib/library.js.map +1 -1
  162. package/lib/login7-payload.d.ts +52 -0
  163. package/lib/login7-payload.js +2 -3
  164. package/lib/login7-payload.js.map +1 -1
  165. package/lib/message-io.d.ts +33 -0
  166. package/lib/message-io.js +4 -5
  167. package/lib/message-io.js.map +1 -1
  168. package/lib/message.d.ts +12 -0
  169. package/lib/message.js +2 -3
  170. package/lib/message.js.map +1 -1
  171. package/lib/metadata-parser.d.ts +49 -0
  172. package/lib/metadata-parser.js +2 -3
  173. package/lib/metadata-parser.js.map +1 -1
  174. package/lib/ntlm-payload.d.ts +24 -0
  175. package/lib/ntlm-payload.js +4 -5
  176. package/lib/ntlm-payload.js.map +1 -1
  177. package/lib/ntlm.d.ts +5 -0
  178. package/lib/outgoing-message-stream.d.ts +16 -0
  179. package/lib/outgoing-message-stream.js +2 -3
  180. package/lib/outgoing-message-stream.js.map +1 -1
  181. package/lib/packet.d.ts +34 -0
  182. package/lib/packet.js +4 -7
  183. package/lib/packet.js.map +1 -1
  184. package/lib/prelogin-payload.d.ts +62 -0
  185. package/lib/prelogin-payload.js +2 -3
  186. package/lib/prelogin-payload.js.map +1 -1
  187. package/lib/request.d.ts +371 -0
  188. package/lib/request.js +2 -3
  189. package/lib/request.js.map +1 -1
  190. package/lib/rpcrequest-payload.d.ts +17 -0
  191. package/lib/rpcrequest-payload.js +3 -3
  192. package/lib/rpcrequest-payload.js.map +1 -1
  193. package/lib/sender.d.ts +8 -0
  194. package/lib/sender.js +1 -1
  195. package/lib/sender.js.map +1 -1
  196. package/lib/special-stored-procedure.d.ts +18 -0
  197. package/lib/special-stored-procedure.js +2 -3
  198. package/lib/special-stored-procedure.js.map +1 -1
  199. package/lib/sqlbatch-payload.d.ts +14 -0
  200. package/lib/sqlbatch-payload.js +2 -3
  201. package/lib/sqlbatch-payload.js.map +1 -1
  202. package/lib/tds-versions.d.ts +6 -0
  203. package/lib/tds-versions.js +3 -5
  204. package/lib/tds-versions.js.map +1 -1
  205. package/lib/tedious.d.ts +13 -0
  206. package/lib/tedious.js +2 -3
  207. package/lib/tedious.js.map +1 -1
  208. package/lib/token/colmetadata-token-parser.d.ts +12 -0
  209. package/lib/token/colmetadata-token-parser.js +2 -3
  210. package/lib/token/colmetadata-token-parser.js.map +1 -1
  211. package/lib/token/done-token-parser.d.ts +7 -0
  212. package/lib/token/env-change-token-parser.d.ts +6 -0
  213. package/lib/token/env-change-token-parser.js +2 -3
  214. package/lib/token/env-change-token-parser.js.map +1 -1
  215. package/lib/token/feature-ext-ack-parser.d.ts +6 -0
  216. package/lib/token/feature-ext-ack-parser.js +2 -3
  217. package/lib/token/feature-ext-ack-parser.js.map +1 -1
  218. package/lib/token/fedauth-info-parser.d.ts +6 -0
  219. package/lib/token/fedauth-info-parser.js +2 -3
  220. package/lib/token/fedauth-info-parser.js.map +1 -1
  221. package/lib/token/handler.d.ts +135 -0
  222. package/lib/token/handler.js +2 -3
  223. package/lib/token/handler.js.map +1 -1
  224. package/lib/token/helpers.d.ts +29 -0
  225. package/lib/token/infoerror-token-parser.d.ts +6 -0
  226. package/lib/token/loginack-token-parser.d.ts +6 -0
  227. package/lib/token/loginack-token-parser.js +2 -3
  228. package/lib/token/loginack-token-parser.js.map +1 -1
  229. package/lib/token/nbcrow-token-parser.d.ts +4 -0
  230. package/lib/token/nbcrow-token-parser.js +4 -5
  231. package/lib/token/nbcrow-token-parser.js.map +1 -1
  232. package/lib/token/order-token-parser.d.ts +6 -0
  233. package/lib/token/order-token-parser.js +2 -3
  234. package/lib/token/order-token-parser.js.map +1 -1
  235. package/lib/token/returnstatus-token-parser.d.ts +6 -0
  236. package/lib/token/returnstatus-token-parser.js +2 -3
  237. package/lib/token/returnstatus-token-parser.js.map +1 -1
  238. package/lib/token/returnvalue-token-parser.d.ts +4 -0
  239. package/lib/token/returnvalue-token-parser.js +4 -5
  240. package/lib/token/returnvalue-token-parser.js.map +1 -1
  241. package/lib/token/row-token-parser.d.ts +4 -0
  242. package/lib/token/row-token-parser.js +4 -5
  243. package/lib/token/row-token-parser.js.map +1 -1
  244. package/lib/token/sspi-token-parser.d.ts +6 -0
  245. package/lib/token/sspi-token-parser.js +2 -3
  246. package/lib/token/sspi-token-parser.js.map +1 -1
  247. package/lib/token/stream-parser.d.ts +35 -0
  248. package/lib/token/stream-parser.js +2 -3
  249. package/lib/token/stream-parser.js.map +1 -1
  250. package/lib/token/token-stream-parser.d.ts +17 -0
  251. package/lib/token/token.d.ts +313 -0
  252. package/lib/token/token.js +2 -3
  253. package/lib/token/token.js.map +1 -1
  254. package/lib/tracking-buffer/writable-tracking-buffer.d.ts +48 -0
  255. package/lib/tracking-buffer/writable-tracking-buffer.js +2 -3
  256. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
  257. package/lib/transaction.d.ts +40 -0
  258. package/lib/transaction.js +4 -7
  259. package/lib/transaction.js.map +1 -1
  260. package/lib/transient-error-lookup.d.ts +3 -0
  261. package/lib/utils/with-timeout.d.ts +8 -0
  262. package/lib/utils/with-timeout.js +2 -3
  263. package/lib/utils/with-timeout.js.map +1 -1
  264. package/lib/value-parser.d.ts +8 -0
  265. package/package.json +28 -30
  266. package/tsconfig.build-types.json +15 -0
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';
3
+ export declare function writeToTrackingBuffer(buffer: WritableTrackingBuffer, txnDescriptor: Buffer, outstandingRequestCount: number): WritableTrackingBuffer;
@@ -10,8 +10,7 @@ var _aeadAes256CbcHmacEncryptionKey = require("./aead-aes-256-cbc-hmac-encryptio
10
10
  // This code is based on the `mssql-jdbc` library published under the conditions of MIT license.
11
11
  // Copyright (c) 2019 Microsoft Corporation
12
12
 
13
- const algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256';
14
- exports.algorithmName = algorithmName;
13
+ const algorithmName = exports.algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256';
15
14
  const algorithmVersion = 0x1;
16
15
  const blockSizeInBytes = 16;
17
16
  class AeadAes256CbcHmac256Algorithm {
@@ -80,4 +79,4 @@ class AeadAes256CbcHmac256Algorithm {
80
79
  }
81
80
  }
82
81
  exports.AeadAes256CbcHmac256Algorithm = AeadAes256CbcHmac256Algorithm;
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZXMiLCJyZXF1aXJlIiwiX2NyeXB0byIsIl9hZWFkQWVzMjU2Q2JjSG1hY0VuY3J5cHRpb25LZXkiLCJhbGdvcml0aG1OYW1lIiwiZXhwb3J0cyIsImFsZ29yaXRobVZlcnNpb24iLCJibG9ja1NpemVJbkJ5dGVzIiwiQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0iLCJjb25zdHJ1Y3RvciIsImNvbHVtbkVuY3J5cHRpb25LZXkiLCJlbmNyeXB0aW9uVHlwZSIsImtleVNpemVJbkJ5dGVzIiwia2V5U2l6ZSIsInZlcnNpb24iLCJCdWZmZXIiLCJmcm9tIiwidmVyc2lvblNpemUiLCJtaW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnIiwibWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnIiwiY29sdW1uRW5jcnlwdGlvbmtleSIsImlzRGV0ZXJtaW5pc3RpYyIsIlNRTFNlcnZlckVuY3J5cHRpb25UeXBlIiwiRGV0ZXJtaW5pc3RpYyIsImVuY3J5cHREYXRhIiwicGxhaW50VGV4dCIsIml2IiwiaG1hY0l2IiwiY3JlYXRlSG1hYyIsImdldEl2S2V5IiwidXBkYXRlIiwiZGlnZXN0Iiwic2xpY2UiLCJyYW5kb21CeXRlcyIsImVuY3J5cHRDaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImdldEVuY3J5cHRpb25LZXkiLCJlbmNyeXB0ZWRCdWZmZXIiLCJjb25jYXQiLCJmaW5hbCIsImF1dGhlbnRpY2F0aW9uVGFnIiwiX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyIsImxlbmd0aCIsImRlY3J5cHREYXRhIiwiY2lwaGVyVGV4dCIsImFsbG9jIiwibWluaW11bUNpcGVyVGV4dExlbmd0aCIsIkVycm9yIiwic3RhcnRJbmRleCIsInRvU3RyaW5nIiwiYXV0aGVudGljYXRpb25UYWdPZmZzZXQiLCJjb3B5IiwiY2lwaGVyVGV4dE9mZnNldCIsImNpcGhlclRleHRDb3VudCIsImNvbXBhcmUiLCJNYXRoIiwibWluIiwicGxhaW5UZXh0IiwiZGVjaXBoZXIiLCJjcmVhdGVEZWNpcGhlcml2IiwiZXJyb3IiLCJtZXNzYWdlIiwib2Zmc2V0IiwiaG1hYyIsImdldE1hY0tleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1hbGdvcml0aG0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IHR5cGUgRW5jcnlwdGlvbkFsZ29yaXRobSwgU1FMU2VydmVyRW5jcnlwdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUhtYWMsIHJhbmRvbUJ5dGVzLCBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXksIGtleVNpemUgfSBmcm9tICcuL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleSc7XG5cbmV4cG9ydCBjb25zdCBhbGdvcml0aG1OYW1lID0gJ0FFQURfQUVTXzI1Nl9DQkNfSE1BQ19TSEEyNTYnO1xuY29uc3QgYWxnb3JpdGhtVmVyc2lvbiA9IDB4MTtcbmNvbnN0IGJsb2NrU2l6ZUluQnl0ZXMgPSAxNjtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2QWxnb3JpdGhtIGltcGxlbWVudHMgRW5jcnlwdGlvbkFsZ29yaXRobSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSBjb2x1bW5FbmNyeXB0aW9ua2V5OiBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBpc0RldGVybWluaXN0aWM6IGJvb2xlYW47XG4gIGRlY2xhcmUgcHJpdmF0ZSBrZXlTaXplSW5CeXRlczogbnVtYmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvbjogQnVmZmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvblNpemU6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWc6IG51bWJlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc1dpdGhBdXRoZW50aWNhdGlvblRhZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbkVuY3J5cHRpb25LZXk6IEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSwgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlKSB7XG4gICAgdGhpcy5rZXlTaXplSW5CeXRlcyA9IGtleVNpemUgLyA4O1xuICAgIHRoaXMudmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFthbGdvcml0aG1WZXJzaW9uXSk7XG4gICAgdGhpcy52ZXJzaW9uU2l6ZSA9IEJ1ZmZlci5mcm9tKFsxXSk7XG4gICAgdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnID0gMSArIGJsb2NrU2l6ZUluQnl0ZXMgKyBibG9ja1NpemVJbkJ5dGVzO1xuICAgIHRoaXMubWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnICsgdGhpcy5rZXlTaXplSW5CeXRlcztcbiAgICB0aGlzLmNvbHVtbkVuY3J5cHRpb25rZXkgPSBjb2x1bW5FbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5pc0RldGVybWluaXN0aWMgPSBlbmNyeXB0aW9uVHlwZSA9PT0gU1FMU2VydmVyRW5jcnlwdGlvblR5cGUuRGV0ZXJtaW5pc3RpYztcbiAgfVxuXG4gIGVuY3J5cHREYXRhKHBsYWludFRleHQ6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgbGV0IGl2OiBCdWZmZXI7XG5cbiAgICBpZiAodGhpcy5pc0RldGVybWluaXN0aWMgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGhtYWNJdiA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRJdktleSgpKTtcbiAgICAgIGhtYWNJdi51cGRhdGUocGxhaW50VGV4dCk7XG4gICAgICBpdiA9IGhtYWNJdi5kaWdlc3QoKS5zbGljZSgwLCBibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXYgPSByYW5kb21CeXRlcyhibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmNyeXB0Q2lwaGVyID0gY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdENpcGhlci51cGRhdGUocGxhaW50VGV4dCksIGVuY3J5cHRDaXBoZXIuZmluYWwoKV0pO1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgZW5jcnlwdGVkQnVmZmVyLCAwLCBlbmNyeXB0ZWRCdWZmZXIubGVuZ3RoKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbYWxnb3JpdGhtVmVyc2lvbl0pLCBhdXRoZW50aWNhdGlvblRhZywgaXYsIGVuY3J5cHRlZEJ1ZmZlcl0pO1xuICB9XG5cbiAgZGVjcnlwdERhdGEoY2lwaGVyVGV4dDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBpdjogQnVmZmVyID0gQnVmZmVyLmFsbG9jKGJsb2NrU2l6ZUluQnl0ZXMpO1xuXG4gICAgY29uc3QgbWluaW11bUNpcGVyVGV4dExlbmd0aDogbnVtYmVyID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNXaXRoQXV0aGVudGljYXRpb25UYWc7XG5cbiAgICBpZiAoY2lwaGVyVGV4dC5sZW5ndGggPCBtaW5pbXVtQ2lwZXJUZXh0TGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIHNpemUgb2YgJHtjaXBoZXJUZXh0Lmxlbmd0aH0gYnl0ZXMsIHdoaWNoIGlzIGJlbG93IHRoZSBtaW5pbXVtICR7bWluaW11bUNpcGVyVGV4dExlbmd0aH0gYnl0ZXMgcmVxdWlyZWQgZm9yIGRlY3J5cHRpb24uYCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgIGlmIChjaXBoZXJUZXh0WzBdICE9PSBhbGdvcml0aG1WZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzcGVjaWZpZWQgY2lwaGVydGV4dCdzIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHtCdWZmZXIuZnJvbShbY2lwaGVyVGV4dFswXV0pLnRvU3RyaW5nKCdoZXgnKX0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHthbGdvcml0aG1WZXJzaW9ufS5gKTtcbiAgICB9XG5cbiAgICBzdGFydEluZGV4ICs9IDE7XG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gMDtcblxuICAgIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gc3RhcnRJbmRleDtcbiAgICBzdGFydEluZGV4ICs9IHRoaXMua2V5U2l6ZUluQnl0ZXM7XG5cbiAgICBjaXBoZXJUZXh0LmNvcHkoaXYsIDAsIHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBpdi5sZW5ndGgpO1xuICAgIHN0YXJ0SW5kZXggKz0gaXYubGVuZ3RoO1xuXG4gICAgY29uc3QgY2lwaGVyVGV4dE9mZnNldCA9IHN0YXJ0SW5kZXg7XG4gICAgY29uc3QgY2lwaGVyVGV4dENvdW50ID0gY2lwaGVyVGV4dC5sZW5ndGggLSBzdGFydEluZGV4O1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgY2lwaGVyVGV4dCwgY2lwaGVyVGV4dE9mZnNldCwgY2lwaGVyVGV4dENvdW50KTtcblxuICAgIGlmICgwICE9PSBhdXRoZW50aWNhdGlvblRhZy5jb21wYXJlKGNpcGhlclRleHQsIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0LCBNYXRoLm1pbihhdXRoZW50aWNhdGlvblRhZ09mZnNldCArIGNpcGhlclRleHRDb3VudCwgYXV0aGVudGljYXRpb25UYWdPZmZzZXQgKyBhdXRoZW50aWNhdGlvblRhZy5sZW5ndGgpLCAwLCBNYXRoLm1pbihjaXBoZXJUZXh0Q291bnQsIGF1dGhlbnRpY2F0aW9uVGFnLmxlbmd0aCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIHRhZy4nKTtcbiAgICB9XG5cbiAgICBsZXQgcGxhaW5UZXh0OiBCdWZmZXI7XG5cbiAgICBjb25zdCBkZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuICAgIHRyeSB7XG4gICAgICBwbGFpblRleHQgPSBkZWNpcGhlci51cGRhdGUoY2lwaGVyVGV4dC5zbGljZShjaXBoZXJUZXh0T2Zmc2V0LCBjaXBoZXJUZXh0T2Zmc2V0ICsgY2lwaGVyVGV4dENvdW50KSk7XG4gICAgICBwbGFpblRleHQgPSBCdWZmZXIuY29uY2F0KFtwbGFpblRleHQsIGRlY2lwaGVyLmZpbmFsKCldKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycm9yIHdoaWxlIGRlY3J5cHRpb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdjogQnVmZmVyLCBjaXBoZXJUZXh0OiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgaG1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRNYWNLZXkoKSk7XG5cbiAgICBobWFjLnVwZGF0ZSh0aGlzLnZlcnNpb24pO1xuICAgIGhtYWMudXBkYXRlKGl2KTtcbiAgICBobWFjLnVwZGF0ZShjaXBoZXJUZXh0LnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSk7XG4gICAgaG1hYy51cGRhdGUodGhpcy52ZXJzaW9uU2l6ZSk7XG4gICAgcmV0dXJuIGhtYWMuZGlnZXN0KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsK0JBQUEsR0FBQUYsT0FBQTtBQUxBO0FBQ0E7O0FBTU8sTUFBTUcsYUFBYSxHQUFHLDhCQUE4QjtBQUFDQyxPQUFBLENBQUFELGFBQUEsR0FBQUEsYUFBQTtBQUM1RCxNQUFNRSxnQkFBZ0IsR0FBRyxHQUFHO0FBQzVCLE1BQU1DLGdCQUFnQixHQUFHLEVBQUU7QUFFcEIsTUFBTUMsNkJBQTZCLENBQWdDO0VBU3hFQyxXQUFXQSxDQUFDQyxtQkFBc0QsRUFBRUMsY0FBdUMsRUFBRTtJQUMzRyxJQUFJLENBQUNDLGNBQWMsR0FBR0MsdUNBQU8sR0FBRyxDQUFDO0lBQ2pDLElBQUksQ0FBQ0MsT0FB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
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZXMiLCJyZXF1aXJlIiwiX2NyeXB0byIsIl9hZWFkQWVzMjU2Q2JjSG1hY0VuY3J5cHRpb25LZXkiLCJhbGdvcml0aG1OYW1lIiwiZXhwb3J0cyIsImFsZ29yaXRobVZlcnNpb24iLCJibG9ja1NpemVJbkJ5dGVzIiwiQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0iLCJjb25zdHJ1Y3RvciIsImNvbHVtbkVuY3J5cHRpb25LZXkiLCJlbmNyeXB0aW9uVHlwZSIsImtleVNpemVJbkJ5dGVzIiwia2V5U2l6ZSIsInZlcnNpb24iLCJCdWZmZXIiLCJmcm9tIiwidmVyc2lvblNpemUiLCJtaW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnIiwibWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnIiwiY29sdW1uRW5jcnlwdGlvbmtleSIsImlzRGV0ZXJtaW5pc3RpYyIsIlNRTFNlcnZlckVuY3J5cHRpb25UeXBlIiwiRGV0ZXJtaW5pc3RpYyIsImVuY3J5cHREYXRhIiwicGxhaW50VGV4dCIsIml2IiwiaG1hY0l2IiwiY3JlYXRlSG1hYyIsImdldEl2S2V5IiwidXBkYXRlIiwiZGlnZXN0Iiwic2xpY2UiLCJyYW5kb21CeXRlcyIsImVuY3J5cHRDaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImdldEVuY3J5cHRpb25LZXkiLCJlbmNyeXB0ZWRCdWZmZXIiLCJjb25jYXQiLCJmaW5hbCIsImF1dGhlbnRpY2F0aW9uVGFnIiwiX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyIsImxlbmd0aCIsImRlY3J5cHREYXRhIiwiY2lwaGVyVGV4dCIsImFsbG9jIiwibWluaW11bUNpcGVyVGV4dExlbmd0aCIsIkVycm9yIiwic3RhcnRJbmRleCIsInRvU3RyaW5nIiwiYXV0aGVudGljYXRpb25UYWdPZmZzZXQiLCJjb3B5IiwiY2lwaGVyVGV4dE9mZnNldCIsImNpcGhlclRleHRDb3VudCIsImNvbXBhcmUiLCJNYXRoIiwibWluIiwicGxhaW5UZXh0IiwiZGVjaXBoZXIiLCJjcmVhdGVEZWNpcGhlcml2IiwiZXJyb3IiLCJtZXNzYWdlIiwib2Zmc2V0IiwiaG1hYyIsImdldE1hY0tleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1hbGdvcml0aG0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IHR5cGUgRW5jcnlwdGlvbkFsZ29yaXRobSwgU1FMU2VydmVyRW5jcnlwdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUhtYWMsIHJhbmRvbUJ5dGVzLCBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXksIGtleVNpemUgfSBmcm9tICcuL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleSc7XG5cbmV4cG9ydCBjb25zdCBhbGdvcml0aG1OYW1lID0gJ0FFQURfQUVTXzI1Nl9DQkNfSE1BQ19TSEEyNTYnO1xuY29uc3QgYWxnb3JpdGhtVmVyc2lvbiA9IDB4MTtcbmNvbnN0IGJsb2NrU2l6ZUluQnl0ZXMgPSAxNjtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2QWxnb3JpdGhtIGltcGxlbWVudHMgRW5jcnlwdGlvbkFsZ29yaXRobSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSBjb2x1bW5FbmNyeXB0aW9ua2V5OiBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBpc0RldGVybWluaXN0aWM6IGJvb2xlYW47XG4gIGRlY2xhcmUgcHJpdmF0ZSBrZXlTaXplSW5CeXRlczogbnVtYmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvbjogQnVmZmVyO1xuICBkZWNsYXJlIHByaXZhdGUgdmVyc2lvblNpemU6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWc6IG51bWJlcjtcbiAgZGVjbGFyZSBwcml2YXRlIG1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc1dpdGhBdXRoZW50aWNhdGlvblRhZzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbHVtbkVuY3J5cHRpb25LZXk6IEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSwgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlKSB7XG4gICAgdGhpcy5rZXlTaXplSW5CeXRlcyA9IGtleVNpemUgLyA4O1xuICAgIHRoaXMudmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFthbGdvcml0aG1WZXJzaW9uXSk7XG4gICAgdGhpcy52ZXJzaW9uU2l6ZSA9IEJ1ZmZlci5mcm9tKFsxXSk7XG4gICAgdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnID0gMSArIGJsb2NrU2l6ZUluQnl0ZXMgKyBibG9ja1NpemVJbkJ5dGVzO1xuICAgIHRoaXMubWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnICsgdGhpcy5rZXlTaXplSW5CeXRlcztcbiAgICB0aGlzLmNvbHVtbkVuY3J5cHRpb25rZXkgPSBjb2x1bW5FbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5pc0RldGVybWluaXN0aWMgPSBlbmNyeXB0aW9uVHlwZSA9PT0gU1FMU2VydmVyRW5jcnlwdGlvblR5cGUuRGV0ZXJtaW5pc3RpYztcbiAgfVxuXG4gIGVuY3J5cHREYXRhKHBsYWludFRleHQ6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgbGV0IGl2OiBCdWZmZXI7XG5cbiAgICBpZiAodGhpcy5pc0RldGVybWluaXN0aWMgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGhtYWNJdiA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRJdktleSgpKTtcbiAgICAgIGhtYWNJdi51cGRhdGUocGxhaW50VGV4dCk7XG4gICAgICBpdiA9IGhtYWNJdi5kaWdlc3QoKS5zbGljZSgwLCBibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXYgPSByYW5kb21CeXRlcyhibG9ja1NpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmNyeXB0Q2lwaGVyID0gY3JlYXRlQ2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuXG4gICAgY29uc3QgZW5jcnlwdGVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdENpcGhlci51cGRhdGUocGxhaW50VGV4dCksIGVuY3J5cHRDaXBoZXIuZmluYWwoKV0pO1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgZW5jcnlwdGVkQnVmZmVyLCAwLCBlbmNyeXB0ZWRCdWZmZXIubGVuZ3RoKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbYWxnb3JpdGhtVmVyc2lvbl0pLCBhdXRoZW50aWNhdGlvblRhZywgaXYsIGVuY3J5cHRlZEJ1ZmZlcl0pO1xuICB9XG5cbiAgZGVjcnlwdERhdGEoY2lwaGVyVGV4dDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBpdjogQnVmZmVyID0gQnVmZmVyLmFsbG9jKGJsb2NrU2l6ZUluQnl0ZXMpO1xuXG4gICAgY29uc3QgbWluaW11bUNpcGVyVGV4dExlbmd0aDogbnVtYmVyID0gdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNXaXRoQXV0aGVudGljYXRpb25UYWc7XG5cbiAgICBpZiAoY2lwaGVyVGV4dC5sZW5ndGggPCBtaW5pbXVtQ2lwZXJUZXh0TGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIHNpemUgb2YgJHtjaXBoZXJUZXh0Lmxlbmd0aH0gYnl0ZXMsIHdoaWNoIGlzIGJlbG93IHRoZSBtaW5pbXVtICR7bWluaW11bUNpcGVyVGV4dExlbmd0aH0gYnl0ZXMgcmVxdWlyZWQgZm9yIGRlY3J5cHRpb24uYCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgIGlmIChjaXBoZXJUZXh0WzBdICE9PSBhbGdvcml0aG1WZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzcGVjaWZpZWQgY2lwaGVydGV4dCdzIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHtCdWZmZXIuZnJvbShbY2lwaGVyVGV4dFswXV0pLnRvU3RyaW5nKCdoZXgnKX0gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIHZlcnNpb24gJHthbGdvcml0aG1WZXJzaW9ufS5gKTtcbiAgICB9XG5cbiAgICBzdGFydEluZGV4ICs9IDE7XG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gMDtcblxuICAgIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ID0gc3RhcnRJbmRleDtcbiAgICBzdGFydEluZGV4ICs9IHRoaXMua2V5U2l6ZUluQnl0ZXM7XG5cbiAgICBjaXBoZXJUZXh0LmNvcHkoaXYsIDAsIHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBpdi5sZW5ndGgpO1xuICAgIHN0YXJ0SW5kZXggKz0gaXYubGVuZ3RoO1xuXG4gICAgY29uc3QgY2lwaGVyVGV4dE9mZnNldCA9IHN0YXJ0SW5kZXg7XG4gICAgY29uc3QgY2lwaGVyVGV4dENvdW50ID0gY2lwaGVyVGV4dC5sZW5ndGggLSBzdGFydEluZGV4O1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb25UYWc6IEJ1ZmZlciA9IHRoaXMuX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdiwgY2lwaGVyVGV4dCwgY2lwaGVyVGV4dE9mZnNldCwgY2lwaGVyVGV4dENvdW50KTtcblxuICAgIGlmICgwICE9PSBhdXRoZW50aWNhdGlvblRhZy5jb21wYXJlKGNpcGhlclRleHQsIGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0LCBNYXRoLm1pbihhdXRoZW50aWNhdGlvblRhZ09mZnNldCArIGNpcGhlclRleHRDb3VudCwgYXV0aGVudGljYXRpb25UYWdPZmZzZXQgKyBhdXRoZW50aWNhdGlvblRhZy5sZW5ndGgpLCAwLCBNYXRoLm1pbihjaXBoZXJUZXh0Q291bnQsIGF1dGhlbnRpY2F0aW9uVGFnLmxlbmd0aCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwZWNpZmllZCBjaXBoZXJ0ZXh0IGhhcyBhbiBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIHRhZy4nKTtcbiAgICB9XG5cbiAgICBsZXQgcGxhaW5UZXh0OiBCdWZmZXI7XG5cbiAgICBjb25zdCBkZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoJ2Flcy0yNTYtY2JjJywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEVuY3J5cHRpb25LZXkoKSwgaXYpO1xuICAgIHRyeSB7XG4gICAgICBwbGFpblRleHQgPSBkZWNpcGhlci51cGRhdGUoY2lwaGVyVGV4dC5zbGljZShjaXBoZXJUZXh0T2Zmc2V0LCBjaXBoZXJUZXh0T2Zmc2V0ICsgY2lwaGVyVGV4dENvdW50KSk7XG4gICAgICBwbGFpblRleHQgPSBCdWZmZXIuY29uY2F0KFtwbGFpblRleHQsIGRlY2lwaGVyLmZpbmFsKCldKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycm9yIHdoaWxlIGRlY3J5cHRpb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgX3ByZXBhcmVBdXRoZW50aWNhdGlvblRhZyhpdjogQnVmZmVyLCBjaXBoZXJUZXh0OiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgaG1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleS5nZXRNYWNLZXkoKSk7XG5cbiAgICBobWFjLnVwZGF0ZSh0aGlzLnZlcnNpb24pO1xuICAgIGhtYWMudXBkYXRlKGl2KTtcbiAgICBobWFjLnVwZGF0ZShjaXBoZXJUZXh0LnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSk7XG4gICAgaG1hYy51cGRhdGUodGhpcy52ZXJzaW9uU2l6ZSk7XG4gICAgcmV0dXJuIGhtYWMuZGlnZXN0KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsK0JBQUEsR0FBQUYsT0FBQTtBQUxBO0FBQ0E7O0FBTU8sTUFBTUcsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRyw4QkFBOEI7QUFDM0QsTUFBTUUsZ0JBQWdCLEdBQUcsR0FBRztBQUM1QixNQUFNQyxnQkFBZ0IsR0FBRyxFQUFFO0FBRXBCLE1BQU1DLDZCQUE2QixDQUFnQztFQVN4RUMsV0FBV0EsQ0FBQ0MsbUJBQXNELEVBQUVDLGNBQXVDLEVBQUU7SUFDM0csSUFBSSxDQUFDQyxjQUFjLEdBQUdDLHVDQUFPLEdBQUcsQ0FBQztJQUNqQyxJQUFJLENBQUNDLE9BQU8sR0FBR0MsTUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"aead-aes-256-cbc-hmac-algorithm.js","names":["_types","require","_crypto","_aeadAes256CbcHmacEncryptionKey","algorithmName","exports","algorithmVersion","blockSizeInBytes","AeadAes256CbcHmac256Algorithm","constructor","columnEncryptionKey","encryptionType","keySizeInBytes","keySize","version","Buffer","from","versionSize","minimumCipherTextLengthInBytesNoAuthenticationTag","minimumCipherTextLengthInBytesWithAuthenticationTag","columnEncryptionkey","isDeterministic","SQLServerEncryptionType","Deterministic","encryptData","plaintText","iv","hmacIv","createHmac","getIvKey","update","digest","slice","randomBytes","encryptCipher","createCipheriv","getEncryptionKey","encryptedBuffer","concat","final","authenticationTag","_prepareAuthenticationTag","length","decryptData","cipherText","alloc","minimumCiperTextLength","Error","startIndex","toString","authenticationTagOffset","copy","cipherTextOffset","cipherTextCount","compare","Math","min","plainText","decipher","createDecipheriv","error","message","offset","hmac","getMacKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-algorithm.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type EncryptionAlgorithm, SQLServerEncryptionType } from './types';\nimport { createHmac, randomBytes, createCipheriv, createDecipheriv } from 'crypto';\nimport { AeadAes256CbcHmac256EncryptionKey, keySize } from './aead-aes-256-cbc-hmac-encryption-key';\n\nexport const algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256';\nconst algorithmVersion = 0x1;\nconst blockSizeInBytes = 16;\n\nexport class AeadAes256CbcHmac256Algorithm implements EncryptionAlgorithm {\n declare private columnEncryptionkey: AeadAes256CbcHmac256EncryptionKey;\n declare private isDeterministic: boolean;\n declare private keySizeInBytes: number;\n declare private version: Buffer;\n declare private versionSize: Buffer;\n declare private minimumCipherTextLengthInBytesNoAuthenticationTag: number;\n declare private minimumCipherTextLengthInBytesWithAuthenticationTag: number;\n\n constructor(columnEncryptionKey: AeadAes256CbcHmac256EncryptionKey, encryptionType: SQLServerEncryptionType) {\n this.keySizeInBytes = keySize / 8;\n this.version = Buffer.from([algorithmVersion]);\n this.versionSize = Buffer.from([1]);\n this.minimumCipherTextLengthInBytesNoAuthenticationTag = 1 + blockSizeInBytes + blockSizeInBytes;\n this.minimumCipherTextLengthInBytesWithAuthenticationTag = this.minimumCipherTextLengthInBytesNoAuthenticationTag + this.keySizeInBytes;\n this.columnEncryptionkey = columnEncryptionKey;\n\n this.isDeterministic = encryptionType === SQLServerEncryptionType.Deterministic;\n }\n\n encryptData(plaintText: Buffer): Buffer {\n let iv: Buffer;\n\n if (this.isDeterministic === true) {\n const hmacIv = createHmac('sha256', this.columnEncryptionkey.getIvKey());\n hmacIv.update(plaintText);\n iv = hmacIv.digest().slice(0, blockSizeInBytes);\n } else {\n iv = randomBytes(blockSizeInBytes);\n }\n\n const encryptCipher = createCipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n\n const encryptedBuffer = Buffer.concat([encryptCipher.update(plaintText), encryptCipher.final()]);\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, encryptedBuffer, 0, encryptedBuffer.length);\n\n return Buffer.concat([Buffer.from([algorithmVersion]), authenticationTag, iv, encryptedBuffer]);\n }\n\n decryptData(cipherText: Buffer): Buffer {\n const iv: Buffer = Buffer.alloc(blockSizeInBytes);\n\n const minimumCiperTextLength: number = this.minimumCipherTextLengthInBytesWithAuthenticationTag;\n\n if (cipherText.length < minimumCiperTextLength) {\n throw new Error(`Specified ciphertext has an invalid size of ${cipherText.length} bytes, which is below the minimum ${minimumCiperTextLength} bytes required for decryption.`);\n }\n\n let startIndex = 0;\n if (cipherText[0] !== algorithmVersion) {\n throw new Error(`The specified ciphertext's encryption algorithm version ${Buffer.from([cipherText[0]]).toString('hex')} does not match the expected encryption algorithm version ${algorithmVersion}.`);\n }\n\n startIndex += 1;\n let authenticationTagOffset = 0;\n\n authenticationTagOffset = startIndex;\n startIndex += this.keySizeInBytes;\n\n cipherText.copy(iv, 0, startIndex, startIndex + iv.length);\n startIndex += iv.length;\n\n const cipherTextOffset = startIndex;\n const cipherTextCount = cipherText.length - startIndex;\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, cipherText, cipherTextOffset, cipherTextCount);\n\n if (0 !== authenticationTag.compare(cipherText, authenticationTagOffset, Math.min(authenticationTagOffset + cipherTextCount, authenticationTagOffset + authenticationTag.length), 0, Math.min(cipherTextCount, authenticationTag.length))) {\n throw new Error('Specified ciphertext has an invalid authentication tag.');\n }\n\n let plainText: Buffer;\n\n const decipher = createDecipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n try {\n plainText = decipher.update(cipherText.slice(cipherTextOffset, cipherTextOffset + cipherTextCount));\n plainText = Buffer.concat([plainText, decipher.final()]);\n } catch (error: any) {\n throw new Error(`Internal error while decryption: ${error.message}`);\n }\n\n return plainText;\n }\n\n _prepareAuthenticationTag(iv: Buffer, cipherText: Buffer, offset: number, length: number): Buffer {\n const hmac = createHmac('sha256', this.columnEncryptionkey.getMacKey());\n\n hmac.update(this.version);\n hmac.update(iv);\n hmac.update(cipherText.slice(offset, offset + length));\n hmac.update(this.versionSize);\n return hmac.digest();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"aead-aes-256-cbc-hmac-algorithm.js","names":["_types","require","_crypto","_aeadAes256CbcHmacEncryptionKey","algorithmName","exports","algorithmVersion","blockSizeInBytes","AeadAes256CbcHmac256Algorithm","constructor","columnEncryptionKey","encryptionType","keySizeInBytes","keySize","version","Buffer","from","versionSize","minimumCipherTextLengthInBytesNoAuthenticationTag","minimumCipherTextLengthInBytesWithAuthenticationTag","columnEncryptionkey","isDeterministic","SQLServerEncryptionType","Deterministic","encryptData","plaintText","iv","hmacIv","createHmac","getIvKey","update","digest","slice","randomBytes","encryptCipher","createCipheriv","getEncryptionKey","encryptedBuffer","concat","final","authenticationTag","_prepareAuthenticationTag","length","decryptData","cipherText","alloc","minimumCiperTextLength","Error","startIndex","toString","authenticationTagOffset","copy","cipherTextOffset","cipherTextCount","compare","Math","min","plainText","decipher","createDecipheriv","error","message","offset","hmac","getMacKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-algorithm.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { type EncryptionAlgorithm, SQLServerEncryptionType } from './types';\nimport { createHmac, randomBytes, createCipheriv, createDecipheriv } from 'crypto';\nimport { AeadAes256CbcHmac256EncryptionKey, keySize } from './aead-aes-256-cbc-hmac-encryption-key';\n\nexport const algorithmName = 'AEAD_AES_256_CBC_HMAC_SHA256';\nconst algorithmVersion = 0x1;\nconst blockSizeInBytes = 16;\n\nexport class AeadAes256CbcHmac256Algorithm implements EncryptionAlgorithm {\n declare private columnEncryptionkey: AeadAes256CbcHmac256EncryptionKey;\n declare private isDeterministic: boolean;\n declare private keySizeInBytes: number;\n declare private version: Buffer;\n declare private versionSize: Buffer;\n declare private minimumCipherTextLengthInBytesNoAuthenticationTag: number;\n declare private minimumCipherTextLengthInBytesWithAuthenticationTag: number;\n\n constructor(columnEncryptionKey: AeadAes256CbcHmac256EncryptionKey, encryptionType: SQLServerEncryptionType) {\n this.keySizeInBytes = keySize / 8;\n this.version = Buffer.from([algorithmVersion]);\n this.versionSize = Buffer.from([1]);\n this.minimumCipherTextLengthInBytesNoAuthenticationTag = 1 + blockSizeInBytes + blockSizeInBytes;\n this.minimumCipherTextLengthInBytesWithAuthenticationTag = this.minimumCipherTextLengthInBytesNoAuthenticationTag + this.keySizeInBytes;\n this.columnEncryptionkey = columnEncryptionKey;\n\n this.isDeterministic = encryptionType === SQLServerEncryptionType.Deterministic;\n }\n\n encryptData(plaintText: Buffer): Buffer {\n let iv: Buffer;\n\n if (this.isDeterministic === true) {\n const hmacIv = createHmac('sha256', this.columnEncryptionkey.getIvKey());\n hmacIv.update(plaintText);\n iv = hmacIv.digest().slice(0, blockSizeInBytes);\n } else {\n iv = randomBytes(blockSizeInBytes);\n }\n\n const encryptCipher = createCipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n\n const encryptedBuffer = Buffer.concat([encryptCipher.update(plaintText), encryptCipher.final()]);\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, encryptedBuffer, 0, encryptedBuffer.length);\n\n return Buffer.concat([Buffer.from([algorithmVersion]), authenticationTag, iv, encryptedBuffer]);\n }\n\n decryptData(cipherText: Buffer): Buffer {\n const iv: Buffer = Buffer.alloc(blockSizeInBytes);\n\n const minimumCiperTextLength: number = this.minimumCipherTextLengthInBytesWithAuthenticationTag;\n\n if (cipherText.length < minimumCiperTextLength) {\n throw new Error(`Specified ciphertext has an invalid size of ${cipherText.length} bytes, which is below the minimum ${minimumCiperTextLength} bytes required for decryption.`);\n }\n\n let startIndex = 0;\n if (cipherText[0] !== algorithmVersion) {\n throw new Error(`The specified ciphertext's encryption algorithm version ${Buffer.from([cipherText[0]]).toString('hex')} does not match the expected encryption algorithm version ${algorithmVersion}.`);\n }\n\n startIndex += 1;\n let authenticationTagOffset = 0;\n\n authenticationTagOffset = startIndex;\n startIndex += this.keySizeInBytes;\n\n cipherText.copy(iv, 0, startIndex, startIndex + iv.length);\n startIndex += iv.length;\n\n const cipherTextOffset = startIndex;\n const cipherTextCount = cipherText.length - startIndex;\n\n const authenticationTag: Buffer = this._prepareAuthenticationTag(iv, cipherText, cipherTextOffset, cipherTextCount);\n\n if (0 !== authenticationTag.compare(cipherText, authenticationTagOffset, Math.min(authenticationTagOffset + cipherTextCount, authenticationTagOffset + authenticationTag.length), 0, Math.min(cipherTextCount, authenticationTag.length))) {\n throw new Error('Specified ciphertext has an invalid authentication tag.');\n }\n\n let plainText: Buffer;\n\n const decipher = createDecipheriv('aes-256-cbc', this.columnEncryptionkey.getEncryptionKey(), iv);\n try {\n plainText = decipher.update(cipherText.slice(cipherTextOffset, cipherTextOffset + cipherTextCount));\n plainText = Buffer.concat([plainText, decipher.final()]);\n } catch (error: any) {\n throw new Error(`Internal error while decryption: ${error.message}`);\n }\n\n return plainText;\n }\n\n _prepareAuthenticationTag(iv: Buffer, cipherText: Buffer, offset: number, length: number): Buffer {\n const hmac = createHmac('sha256', this.columnEncryptionkey.getMacKey());\n\n hmac.update(this.version);\n hmac.update(iv);\n hmac.update(cipherText.slice(offset, offset + length));\n hmac.update(this.versionSize);\n return hmac.digest();\n }\n}\n"],"mappings":"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"}
@@ -10,8 +10,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
10
10
  // This code is based on the `mssql-jdbc` library published under the conditions of MIT license.
11
11
  // Copyright (c) 2019 Microsoft Corporation
12
12
 
13
- const keySize = 256;
14
- exports.keySize = keySize;
13
+ const keySize = exports.keySize = 256;
15
14
  const keySizeInBytes = keySize / 8;
16
15
  const deriveKey = (rootKey, salt) => {
17
16
  const hmac = (0, _crypto.createHmac)('sha256', rootKey);
@@ -53,4 +52,4 @@ class AeadAes256CbcHmac256EncryptionKey extends _symmetricKey.default {
53
52
  }
54
53
  }
55
54
  exports.AeadAes256CbcHmac256EncryptionKey = AeadAes256CbcHmac256EncryptionKey;
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9zeW1tZXRyaWNLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJrZXlTaXplIiwiZXhwb3J0cyIsImtleVNpemVJbkJ5dGVzIiwiZGVyaXZlS2V5Iiwicm9vdEtleSIsInNhbHQiLCJobWFjIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsIkJ1ZmZlciIsImZyb20iLCJkaWdlc3QiLCJnZW5lcmF0ZUtleVNhbHQiLCJrZXlUeXBlIiwiYWxnb3JpdGhtTmFtZSIsIkFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSIsIlN5bW1ldHJpY0tleSIsImNvbnN0cnVjdG9yIiwiZW5jcnlwdGlvbktleVNhbHRGb3JtYXQiLCJtYWNLZXlTYWx0Rm9ybWF0IiwiaXZLZXlTYWx0Rm9ybWF0IiwibGVuZ3RoIiwiRXJyb3IiLCJlbmNLZXlCdWZmIiwiZW5jcnlwdGlvbktleSIsIm1hY0tleUJ1ZmYiLCJtYWNLZXkiLCJpdktleUJ1ZmYiLCJpdktleSIsImVycm9yIiwibWVzc2FnZSIsImdldEVuY3J5cHRpb25LZXkiLCJnZXRNYWNLZXkiLCJnZXRJdktleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgU3ltbWV0cmljS2V5IGZyb20gJy4vc3ltbWV0cmljLWtleSc7XG5cbmV4cG9ydCBjb25zdCBrZXlTaXplID0gMjU2O1xuY29uc3Qga2V5U2l6ZUluQnl0ZXMgPSBrZXlTaXplIC8gODtcblxuZXhwb3J0IGNvbnN0IGRlcml2ZUtleSA9IChyb290S2V5OiBCdWZmZXIsIHNhbHQ6IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gIGNvbnN0IGhtYWMgPSBjcmVhdGVIbWFjKCdzaGEyNTYnLCByb290S2V5KTtcbiAgaG1hYy51cGRhdGUoQnVmZmVyLmZyb20oc2FsdCwgJ3V0ZjE2bGUnKSk7XG4gIHJldHVybiBobWFjLmRpZ2VzdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlS2V5U2FsdCA9IChcbiAga2V5VHlwZTogJ2VuY3J5cHRpb24nIHwgJ01BQycgfCAnSVYnLFxuICBhbGdvcml0aG1OYW1lOiBzdHJpbmcsXG4gIGtleVNpemU6IG51bWJlcixcbik6IHN0cmluZyA9PlxuICBgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgY2VsbCAke2tleVR5cGV9IGtleSBgICtcbiAgYHdpdGggZW5jcnlwdGlvbiBhbGdvcml0aG06JHthbGdvcml0aG1OYW1lfSBhbmQga2V5IGxlbmd0aDoke2tleVNpemV9YDtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSBleHRlbmRzIFN5bW1ldHJpY0tleSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSByZWFkb25seSBhbGdvcml0aG1OYW1lOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgbWFjS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgaXZLZXlTYWx0Rm9ybWF0OiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5OiBTeW1tZXRyaWNLZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBtYWNLZXk6IFN5bW1ldHJpY0tleTtcbiAgZGVjbGFyZSBwcml2YXRlIGl2S2V5OiBTeW1tZXRyaWNLZXk7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyLCBhbGdvcml0aG1OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihyb290S2V5KTtcbiAgICB0aGlzLmFsZ29yaXRobU5hbWUgPSBhbGdvcml0aG1OYW1lO1xuICAgIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQgPSBnZW5lcmF0ZUtleVNhbHQoJ2VuY3J5cHRpb24nLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuICAgIHRoaXMubWFjS2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnTUFDJywgdGhpcy5hbGdvcml0aG1OYW1lLCBrZXlTaXplKTtcbiAgICB0aGlzLml2S2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnSVYnLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuXG4gICAgaWYgKHJvb3RLZXkubGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgY29sdW1uIGVuY3J5cHRpb24ga2V5IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBkZWNyeXB0ZWQgYnV0IGl0J3MgbGVuZ3RoOiAke3Jvb3RLZXkubGVuZ3RofSBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoOiAke2tleVNpemVJbkJ5dGVzfSBmb3IgYWxnb3JpdGhtIFwiJHt0aGlzLmFsZ29yaXRobU5hbWV9XCIuIFZlcmlmeSB0aGUgZW5jcnlwdGVkIHZhbHVlIG9mIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgaW4gdGhlIGRhdGFiYXNlLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQpO1xuXG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBuZXcgU3ltbWV0cmljS2V5KGVuY0tleUJ1ZmYpO1xuXG4gICAgICBjb25zdCBtYWNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMubWFjS2V5U2FsdEZvcm1hdCk7XG5cbiAgICAgIHRoaXMubWFjS2V5ID0gbmV3IFN5bW1ldHJpY0tleShtYWNLZXlCdWZmKTtcblxuICAgICAgY29uc3QgaXZLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuaXZLZXlTYWx0Rm9ybWF0KTtcblxuICAgICAgdGhpcy5pdktleSA9IG5ldyBTeW1tZXRyaWNLZXkoaXZLZXlCdWZmKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSBleHRyYWN0aW9uIGZhaWxlZCA6ICR7ZXJyb3IubWVzc2FnZX0uYCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW5jcnlwdGlvbktleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLmVuY3J5cHRpb25LZXkucm9vdEtleTtcbiAgfVxuXG4gIGdldE1hY0tleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLm1hY0tleS5yb290S2V5O1xuICB9XG5cbiAgZ2V0SXZLZXkoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdktleS5yb290S2V5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUEyQyxTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUozQztBQUNBOztBQUtPLE1BQU1HLE9BQU8sR0FBRyxHQUFHO0FBQUNDLE9BQUEsQ0FBQUQsT0FBQSxHQUFBQSxPQUFBO0FBQzNCLE1BQU1FLGNBQWMsR0FBR0YsT0FBTyxHQUFHLENBQUM7QUFFM0IsTUFBTUcsU0FBUyxHQUFHQSxDQUFDQyxPQUFlLEVBQUVDLElBQVksS0FBYTtFQUNsRSxNQUFNQyxJQUFJLEdBQUcsSUFBQUMsa0JBQVUsRUFBQyxR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
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9zeW1tZXRyaWNLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJrZXlTaXplIiwiZXhwb3J0cyIsImtleVNpemVJbkJ5dGVzIiwiZGVyaXZlS2V5Iiwicm9vdEtleSIsInNhbHQiLCJobWFjIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsIkJ1ZmZlciIsImZyb20iLCJkaWdlc3QiLCJnZW5lcmF0ZUtleVNhbHQiLCJrZXlUeXBlIiwiYWxnb3JpdGhtTmFtZSIsIkFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSIsIlN5bW1ldHJpY0tleSIsImNvbnN0cnVjdG9yIiwiZW5jcnlwdGlvbktleVNhbHRGb3JtYXQiLCJtYWNLZXlTYWx0Rm9ybWF0IiwiaXZLZXlTYWx0Rm9ybWF0IiwibGVuZ3RoIiwiRXJyb3IiLCJlbmNLZXlCdWZmIiwiZW5jcnlwdGlvbktleSIsIm1hY0tleUJ1ZmYiLCJtYWNLZXkiLCJpdktleUJ1ZmYiLCJpdktleSIsImVycm9yIiwibWVzc2FnZSIsImdldEVuY3J5cHRpb25LZXkiLCJnZXRNYWNLZXkiLCJnZXRJdktleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgU3ltbWV0cmljS2V5IGZyb20gJy4vc3ltbWV0cmljLWtleSc7XG5cbmV4cG9ydCBjb25zdCBrZXlTaXplID0gMjU2O1xuY29uc3Qga2V5U2l6ZUluQnl0ZXMgPSBrZXlTaXplIC8gODtcblxuZXhwb3J0IGNvbnN0IGRlcml2ZUtleSA9IChyb290S2V5OiBCdWZmZXIsIHNhbHQ6IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gIGNvbnN0IGhtYWMgPSBjcmVhdGVIbWFjKCdzaGEyNTYnLCByb290S2V5KTtcbiAgaG1hYy51cGRhdGUoQnVmZmVyLmZyb20oc2FsdCwgJ3V0ZjE2bGUnKSk7XG4gIHJldHVybiBobWFjLmRpZ2VzdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlS2V5U2FsdCA9IChcbiAga2V5VHlwZTogJ2VuY3J5cHRpb24nIHwgJ01BQycgfCAnSVYnLFxuICBhbGdvcml0aG1OYW1lOiBzdHJpbmcsXG4gIGtleVNpemU6IG51bWJlcixcbik6IHN0cmluZyA9PlxuICBgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgY2VsbCAke2tleVR5cGV9IGtleSBgICtcbiAgYHdpdGggZW5jcnlwdGlvbiBhbGdvcml0aG06JHthbGdvcml0aG1OYW1lfSBhbmQga2V5IGxlbmd0aDoke2tleVNpemV9YDtcblxuZXhwb3J0IGNsYXNzIEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSBleHRlbmRzIFN5bW1ldHJpY0tleSB7XG4gIGRlY2xhcmUgcHJpdmF0ZSByZWFkb25seSBhbGdvcml0aG1OYW1lOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgbWFjS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBkZWNsYXJlIHByaXZhdGUgaXZLZXlTYWx0Rm9ybWF0OiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5OiBTeW1tZXRyaWNLZXk7XG4gIGRlY2xhcmUgcHJpdmF0ZSBtYWNLZXk6IFN5bW1ldHJpY0tleTtcbiAgZGVjbGFyZSBwcml2YXRlIGl2S2V5OiBTeW1tZXRyaWNLZXk7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyLCBhbGdvcml0aG1OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihyb290S2V5KTtcbiAgICB0aGlzLmFsZ29yaXRobU5hbWUgPSBhbGdvcml0aG1OYW1lO1xuICAgIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQgPSBnZW5lcmF0ZUtleVNhbHQoJ2VuY3J5cHRpb24nLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuICAgIHRoaXMubWFjS2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnTUFDJywgdGhpcy5hbGdvcml0aG1OYW1lLCBrZXlTaXplKTtcbiAgICB0aGlzLml2S2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnSVYnLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuXG4gICAgaWYgKHJvb3RLZXkubGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgY29sdW1uIGVuY3J5cHRpb24ga2V5IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBkZWNyeXB0ZWQgYnV0IGl0J3MgbGVuZ3RoOiAke3Jvb3RLZXkubGVuZ3RofSBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoOiAke2tleVNpemVJbkJ5dGVzfSBmb3IgYWxnb3JpdGhtIFwiJHt0aGlzLmFsZ29yaXRobU5hbWV9XCIuIFZlcmlmeSB0aGUgZW5jcnlwdGVkIHZhbHVlIG9mIHRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgaW4gdGhlIGRhdGFiYXNlLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuZW5jcnlwdGlvbktleVNhbHRGb3JtYXQpO1xuXG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBuZXcgU3ltbWV0cmljS2V5KGVuY0tleUJ1ZmYpO1xuXG4gICAgICBjb25zdCBtYWNLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMubWFjS2V5U2FsdEZvcm1hdCk7XG5cbiAgICAgIHRoaXMubWFjS2V5ID0gbmV3IFN5bW1ldHJpY0tleShtYWNLZXlCdWZmKTtcblxuICAgICAgY29uc3QgaXZLZXlCdWZmID0gZGVyaXZlS2V5KHJvb3RLZXksIHRoaXMuaXZLZXlTYWx0Rm9ybWF0KTtcblxuICAgICAgdGhpcy5pdktleSA9IG5ldyBTeW1tZXRyaWNLZXkoaXZLZXlCdWZmKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSBleHRyYWN0aW9uIGZhaWxlZCA6ICR7ZXJyb3IubWVzc2FnZX0uYCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW5jcnlwdGlvbktleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLmVuY3J5cHRpb25LZXkucm9vdEtleTtcbiAgfVxuXG4gIGdldE1hY0tleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLm1hY0tleS5yb290S2V5O1xuICB9XG5cbiAgZ2V0SXZLZXkoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5pdktleS5yb290S2V5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUEyQyxTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUozQztBQUNBOztBQUtPLE1BQU1HLE9BQU8sR0FBQUMsT0FBQSxDQUFBRCxPQUFBLEdBQUcsR0FBRztBQUMxQixNQUFNRSxjQUFjLEdBQUdGLE9BQU8sR0FBRyxDQUFDO0FBRTNCLE1BQU1HLFNBQVMsR0FBR0EsQ0FBQ0MsT0FBZSxFQUFFQyxJQUFZLEtBQWE7RUFDbEUsTUFBTUMsSUFBSSxHQUFHLElBQUFDLGtCQUFVLEVBQUMsUUFBUSxFQUFFSCxP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
@@ -1 +1 @@
1
- {"version":3,"file":"aead-aes-256-cbc-hmac-encryption-key.js","names":["_crypto","require","_symmetricKey","_interopRequireDefault","obj","__esModule","default","keySize","exports","keySizeInBytes","deriveKey","rootKey","salt","hmac","createHmac","update","Buffer","from","digest","generateKeySalt","keyType","algorithmName","AeadAes256CbcHmac256EncryptionKey","SymmetricKey","constructor","encryptionKeySaltFormat","macKeySaltFormat","ivKeySaltFormat","length","Error","encKeyBuff","encryptionKey","macKeyBuff","macKey","ivKeyBuff","ivKey","error","message","getEncryptionKey","getMacKey","getIvKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { createHmac } from 'crypto';\nimport SymmetricKey from './symmetric-key';\n\nexport const keySize = 256;\nconst keySizeInBytes = keySize / 8;\n\nexport const deriveKey = (rootKey: Buffer, salt: string): Buffer => {\n const hmac = createHmac('sha256', rootKey);\n hmac.update(Buffer.from(salt, 'utf16le'));\n return hmac.digest();\n};\n\nexport const generateKeySalt = (\n keyType: 'encryption' | 'MAC' | 'IV',\n algorithmName: string,\n keySize: number,\n): string =>\n `Microsoft SQL Server cell ${keyType} key ` +\n `with encryption algorithm:${algorithmName} and key length:${keySize}`;\n\nexport class AeadAes256CbcHmac256EncryptionKey extends SymmetricKey {\n declare private readonly algorithmName: string;\n declare private encryptionKeySaltFormat: string;\n declare private macKeySaltFormat: string;\n declare private ivKeySaltFormat: string;\n declare private encryptionKey: SymmetricKey;\n declare private macKey: SymmetricKey;\n declare private ivKey: SymmetricKey;\n\n constructor(rootKey: Buffer, algorithmName: string) {\n super(rootKey);\n this.algorithmName = algorithmName;\n this.encryptionKeySaltFormat = generateKeySalt('encryption', this.algorithmName, keySize);\n this.macKeySaltFormat = generateKeySalt('MAC', this.algorithmName, keySize);\n this.ivKeySaltFormat = generateKeySalt('IV', this.algorithmName, keySize);\n\n if (rootKey.length !== keySizeInBytes) {\n throw new Error(`The column encryption key has been successfully decrypted but it's length: ${rootKey.length} does not match the length: ${keySizeInBytes} for algorithm \"${this.algorithmName}\". Verify the encrypted value of the column encryption key in the database.`);\n }\n\n try {\n const encKeyBuff = deriveKey(rootKey, this.encryptionKeySaltFormat);\n\n this.encryptionKey = new SymmetricKey(encKeyBuff);\n\n const macKeyBuff = deriveKey(rootKey, this.macKeySaltFormat);\n\n this.macKey = new SymmetricKey(macKeyBuff);\n\n const ivKeyBuff = deriveKey(rootKey, this.ivKeySaltFormat);\n\n this.ivKey = new SymmetricKey(ivKeyBuff);\n } catch (error: any) {\n throw new Error(`Key extraction failed : ${error.message}.`);\n }\n }\n\n getEncryptionKey(): Buffer {\n return this.encryptionKey.rootKey;\n }\n\n getMacKey(): Buffer {\n return this.macKey.rootKey;\n }\n\n getIvKey(): Buffer {\n return this.ivKey.rootKey;\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAJ3C;AACA;;AAKO,MAAMG,OAAO,GAAG,GAAG;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA;AAC3B,MAAME,cAAc,GAAGF,OAAO,GAAG,CAAC;AAE3B,MAAMG,SAAS,GAAGA,CAACC,OAAe,EAAEC,IAAY,KAAa;EAClE,MAAMC,IAAI,GAAG,IAAAC,kBAAU,EAAC,QAAQ,EAAEH,OAAO,CAAC;EAC1CE,IAAI,CAACE,MAAM,CAACC,MAAM,CAACC,IAAI,CAACL,IAAI,EAAE,SAAS,CAAC,CAAC;EACzC,OAAOC,IAAI,CAACK,MAAM,CAAC,CAAC;AACtB,CAAC;AAACV,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAEK,MAAMS,eAAe,GAAGA,CAC7BC,OAAoC,EACpCC,aAAqB,EACrBd,OAAe,KAEd,6BAA4Ba,OAAQ,OAAM,GAC1C,6BAA4BC,aAAc,mBAAkBd,OAAQ,EAAC;AAACC,OAAA,CAAAW,eAAA,GAAAA,eAAA;AAElE,MAAMG,iCAAiC,SAASC,qBAAY,CAAC;EASlEC,WAAWA,CAACb,OAAe,EAAEU,aAAqB,EAAE;IAClD,KAAK,CAACV,OAAO,CAAC;IACd,IAAI,CAACU,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACI,uBAAuB,GAAGN,eAAe,CAAC,YAAY,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IACzF,IAAI,CAACmB,gBAAgB,GAAGP,eAAe,CAAC,KAAK,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAC3E,IAAI,CAACoB,eAAe,GAAGR,eAAe,CAAC,IAAI,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAEzE,IAAII,OAAO,CAACiB,MAAM,KAAKnB,cAAc,EAAE;MACrC,MAAM,IAAIoB,KAAK,CAAE,8EAA6ElB,OAAO,CAACiB,MAAO,+BAA8BnB,cAAe,mBAAkB,IAAI,CAACY,aAAc,6EAA4E,CAAC;IAC9Q;IAEA,IAAI;MACF,MAAMS,UAAU,GAAGpB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACc,uBAAuB,CAAC;MAEnE,IAAI,CAACM,aAAa,GAAG,IAAIR,qBAAY,CAACO,UAAU,CAAC;MAEjD,MAAME,UAAU,GAAGtB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACe,gBAAgB,CAAC;MAE5D,IAAI,CAACO,MAAM,GAAG,IAAIV,qBAAY,CAACS,UAAU,CAAC;MAE1C,MAAME,SAAS,GAAGxB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACgB,eAAe,CAAC;MAE1D,IAAI,CAACQ,KAAK,GAAG,IAAIZ,qBAAY,CAACW,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAOE,KAAU,EAAE;MACnB,MAAM,IAAIP,KAAK,CAAE,2BAA0BO,KAAK,CAACC,OAAQ,GAAE,CAAC;IAC9D;EACF;EAEAC,gBAAgBA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACP,aAAa,CAACpB,OAAO;EACnC;EAEA4B,SAASA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACN,MAAM,CAACtB,OAAO;EAC5B;EAEA6B,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACL,KAAK,CAACxB,OAAO;EAC3B;AACF;AAACH,OAAA,CAAAc,iCAAA,GAAAA,iCAAA"}
1
+ {"version":3,"file":"aead-aes-256-cbc-hmac-encryption-key.js","names":["_crypto","require","_symmetricKey","_interopRequireDefault","obj","__esModule","default","keySize","exports","keySizeInBytes","deriveKey","rootKey","salt","hmac","createHmac","update","Buffer","from","digest","generateKeySalt","keyType","algorithmName","AeadAes256CbcHmac256EncryptionKey","SymmetricKey","constructor","encryptionKeySaltFormat","macKeySaltFormat","ivKeySaltFormat","length","Error","encKeyBuff","encryptionKey","macKeyBuff","macKey","ivKeyBuff","ivKey","error","message","getEncryptionKey","getMacKey","getIvKey"],"sources":["../../src/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { createHmac } from 'crypto';\nimport SymmetricKey from './symmetric-key';\n\nexport const keySize = 256;\nconst keySizeInBytes = keySize / 8;\n\nexport const deriveKey = (rootKey: Buffer, salt: string): Buffer => {\n const hmac = createHmac('sha256', rootKey);\n hmac.update(Buffer.from(salt, 'utf16le'));\n return hmac.digest();\n};\n\nexport const generateKeySalt = (\n keyType: 'encryption' | 'MAC' | 'IV',\n algorithmName: string,\n keySize: number,\n): string =>\n `Microsoft SQL Server cell ${keyType} key ` +\n `with encryption algorithm:${algorithmName} and key length:${keySize}`;\n\nexport class AeadAes256CbcHmac256EncryptionKey extends SymmetricKey {\n declare private readonly algorithmName: string;\n declare private encryptionKeySaltFormat: string;\n declare private macKeySaltFormat: string;\n declare private ivKeySaltFormat: string;\n declare private encryptionKey: SymmetricKey;\n declare private macKey: SymmetricKey;\n declare private ivKey: SymmetricKey;\n\n constructor(rootKey: Buffer, algorithmName: string) {\n super(rootKey);\n this.algorithmName = algorithmName;\n this.encryptionKeySaltFormat = generateKeySalt('encryption', this.algorithmName, keySize);\n this.macKeySaltFormat = generateKeySalt('MAC', this.algorithmName, keySize);\n this.ivKeySaltFormat = generateKeySalt('IV', this.algorithmName, keySize);\n\n if (rootKey.length !== keySizeInBytes) {\n throw new Error(`The column encryption key has been successfully decrypted but it's length: ${rootKey.length} does not match the length: ${keySizeInBytes} for algorithm \"${this.algorithmName}\". Verify the encrypted value of the column encryption key in the database.`);\n }\n\n try {\n const encKeyBuff = deriveKey(rootKey, this.encryptionKeySaltFormat);\n\n this.encryptionKey = new SymmetricKey(encKeyBuff);\n\n const macKeyBuff = deriveKey(rootKey, this.macKeySaltFormat);\n\n this.macKey = new SymmetricKey(macKeyBuff);\n\n const ivKeyBuff = deriveKey(rootKey, this.ivKeySaltFormat);\n\n this.ivKey = new SymmetricKey(ivKeyBuff);\n } catch (error: any) {\n throw new Error(`Key extraction failed : ${error.message}.`);\n }\n }\n\n getEncryptionKey(): Buffer {\n return this.encryptionKey.rootKey;\n }\n\n getMacKey(): Buffer {\n return this.macKey.rootKey;\n }\n\n getIvKey(): Buffer {\n return this.ivKey.rootKey;\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAJ3C;AACA;;AAKO,MAAMG,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,GAAG;AAC1B,MAAME,cAAc,GAAGF,OAAO,GAAG,CAAC;AAE3B,MAAMG,SAAS,GAAGA,CAACC,OAAe,EAAEC,IAAY,KAAa;EAClE,MAAMC,IAAI,GAAG,IAAAC,kBAAU,EAAC,QAAQ,EAAEH,OAAO,CAAC;EAC1CE,IAAI,CAACE,MAAM,CAACC,MAAM,CAACC,IAAI,CAACL,IAAI,EAAE,SAAS,CAAC,CAAC;EACzC,OAAOC,IAAI,CAACK,MAAM,CAAC,CAAC;AACtB,CAAC;AAACV,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAEK,MAAMS,eAAe,GAAGA,CAC7BC,OAAoC,EACpCC,aAAqB,EACrBd,OAAe,KAEd,6BAA4Ba,OAAQ,OAAM,GAC1C,6BAA4BC,aAAc,mBAAkBd,OAAQ,EAAC;AAACC,OAAA,CAAAW,eAAA,GAAAA,eAAA;AAElE,MAAMG,iCAAiC,SAASC,qBAAY,CAAC;EASlEC,WAAWA,CAACb,OAAe,EAAEU,aAAqB,EAAE;IAClD,KAAK,CAACV,OAAO,CAAC;IACd,IAAI,CAACU,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACI,uBAAuB,GAAGN,eAAe,CAAC,YAAY,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IACzF,IAAI,CAACmB,gBAAgB,GAAGP,eAAe,CAAC,KAAK,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAC3E,IAAI,CAACoB,eAAe,GAAGR,eAAe,CAAC,IAAI,EAAE,IAAI,CAACE,aAAa,EAAEd,OAAO,CAAC;IAEzE,IAAII,OAAO,CAACiB,MAAM,KAAKnB,cAAc,EAAE;MACrC,MAAM,IAAIoB,KAAK,CAAE,8EAA6ElB,OAAO,CAACiB,MAAO,+BAA8BnB,cAAe,mBAAkB,IAAI,CAACY,aAAc,6EAA4E,CAAC;IAC9Q;IAEA,IAAI;MACF,MAAMS,UAAU,GAAGpB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACc,uBAAuB,CAAC;MAEnE,IAAI,CAACM,aAAa,GAAG,IAAIR,qBAAY,CAACO,UAAU,CAAC;MAEjD,MAAME,UAAU,GAAGtB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACe,gBAAgB,CAAC;MAE5D,IAAI,CAACO,MAAM,GAAG,IAAIV,qBAAY,CAACS,UAAU,CAAC;MAE1C,MAAME,SAAS,GAAGxB,SAAS,CAACC,OAAO,EAAE,IAAI,CAACgB,eAAe,CAAC;MAE1D,IAAI,CAACQ,KAAK,GAAG,IAAIZ,qBAAY,CAACW,SAAS,CAAC;IAC1C,CAAC,CAAC,OAAOE,KAAU,EAAE;MACnB,MAAM,IAAIP,KAAK,CAAE,2BAA0BO,KAAK,CAACC,OAAQ,GAAE,CAAC;IAC9D;EACF;EAEAC,gBAAgBA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACP,aAAa,CAACpB,OAAO;EACnC;EAEA4B,SAASA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACN,MAAM,CAACtB,OAAO;EAC5B;EAEA6B,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACL,KAAK,CAACxB,OAAO;EAC3B;AACF;AAACH,OAAA,CAAAc,iCAAA,GAAAA,iCAAA"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import { type EncryptionKeyInfo } from './types';
3
+ export declare class CEKEntry {
4
+ columnEncryptionKeyValues: EncryptionKeyInfo[];
5
+ ordinal: number;
6
+ databaseId: number;
7
+ cekId: number;
8
+ cekVersion: number;
9
+ cekMdVersion: Buffer;
10
+ constructor(ordinalVal: number);
11
+ add(encryptedKey: Buffer, dbId: number, keyId: number, keyVersion: number, mdVersion: Buffer, keyPath: string, keyStoreName: string, algorithmName: string): void;
12
+ }
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" />
2
+ export declare class ColumnEncryptionAzureKeyVaultProvider {
3
+ readonly name: string;
4
+ private url;
5
+ private readonly rsaEncryptionAlgorithmWithOAEPForAKV;
6
+ private readonly firstVersion;
7
+ private credentials;
8
+ private readonly azureKeyVaultDomainName;
9
+ private keyClient;
10
+ constructor(clientId: string, clientKey: string, tenantId: string);
11
+ decryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, encryptedColumnEncryptionKey: Buffer): Promise<Buffer>;
12
+ encryptColumnEncryptionKey(masterKeyPath: string, encryptionAlgorithm: string, columnEncryptionKey: Buffer): Promise<Buffer>;
13
+ private getMasterKey;
14
+ private createKeyClient;
15
+ private createCryptoClient;
16
+ private parsePath;
17
+ private azureKeyVaultSignedHashedData;
18
+ private azureKeyVaultWrap;
19
+ private azureKeyVaultUnWrap;
20
+ private getAKVKeySize;
21
+ private validateEncryptionAlgorithm;
22
+ }
@@ -21,6 +21,5 @@ class SymmetricKey {
21
21
  }
22
22
  }
23
23
  exports.SymmetricKey = SymmetricKey;
24
- var _default = SymmetricKey;
25
- exports.default = _default;
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTeW1tZXRyaWNLZXkiLCJjb25zdHJ1Y3RvciIsInJvb3RLZXkiLCJFcnJvciIsImxlbmd0aCIsInplcm9PdXRLZXkiLCJCdWZmZXIiLCJhbGxvYyIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWx3YXlzLWVuY3J5cHRlZC9zeW1tZXRyaWMta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5leHBvcnQgY2xhc3MgU3ltbWV0cmljS2V5IHtcbiAgZGVjbGFyZSByb290S2V5OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyKSB7XG4gICAgaWYgKCFyb290S2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9IGVsc2UgaWYgKDAgPT09IHJvb3RLZXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGNvbHVtbiBlbmNyeXB0aW9uIGtleSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuICAgIHRoaXMucm9vdEtleSA9IHJvb3RLZXk7XG4gIH1cblxuICB6ZXJvT3V0S2V5KCkge1xuICAgIHRoaXMucm9vdEtleSA9IEJ1ZmZlci5hbGxvYyh0aGlzLnJvb3RLZXkubGVuZ3RoKTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU3ltbWV0cmljS2V5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVPLE1BQU1BLFlBQVksQ0FBQztFQUd4QkMsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFO0lBQzNCLElBQUksQ0FBQ0EsT0FBTyxFQUFFO01BQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLRCxPQUFPLENBQUNFLE1BQU0sRUFBRTtNQUMvQixNQUFNLElBQUlELEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztJQUMzRDtJQUNBLElBQUksQ0FBQ0QsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUFHLFVBQVVBLENBQUEsRUFBRztJQUNYLElBQUksQ0FBQ0gsT0FBTyxHQUFHSSxNQUFNLENBQUNDLEtBQUssQ0FBQyxJQUFJLENBQUNMLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQ0ksT0FBQSxDQUFBUixZQUFBLEdBQUFBLFlBQUE7QUFBQSxJQUFBUyxRQUFBLEdBQ2NULFlBQVk7QUFBQVEsT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
24
+ var _default = exports.default = SymmetricKey;
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTeW1tZXRyaWNLZXkiLCJjb25zdHJ1Y3RvciIsInJvb3RLZXkiLCJFcnJvciIsImxlbmd0aCIsInplcm9PdXRLZXkiLCJCdWZmZXIiLCJhbGxvYyIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWx3YXlzLWVuY3J5cHRlZC9zeW1tZXRyaWMta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5leHBvcnQgY2xhc3MgU3ltbWV0cmljS2V5IHtcbiAgZGVjbGFyZSByb290S2V5OiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3Iocm9vdEtleTogQnVmZmVyKSB7XG4gICAgaWYgKCFyb290S2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9IGVsc2UgaWYgKDAgPT09IHJvb3RLZXkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IGNvbHVtbiBlbmNyeXB0aW9uIGtleSBzcGVjaWZpZWQuJyk7XG4gICAgfVxuICAgIHRoaXMucm9vdEtleSA9IHJvb3RLZXk7XG4gIH1cblxuICB6ZXJvT3V0S2V5KCkge1xuICAgIHRoaXMucm9vdEtleSA9IEJ1ZmZlci5hbGxvYyh0aGlzLnJvb3RLZXkubGVuZ3RoKTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU3ltbWV0cmljS2V5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVPLE1BQU1BLFlBQVksQ0FBQztFQUd4QkMsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFO0lBQzNCLElBQUksQ0FBQ0EsT0FBTyxFQUFFO01BQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLRCxPQUFPLENBQUNFLE1BQU0sRUFBRTtNQUMvQixNQUFNLElBQUlELEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztJQUMzRDtJQUNBLElBQUksQ0FBQ0QsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUFHLFVBQVVBLENBQUEsRUFBRztJQUNYLElBQUksQ0FBQ0gsT0FBTyxHQUFHSSxNQUFNLENBQUNDLEtBQUssQ0FBQyxJQUFJLENBQUNMLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQ0ksT0FBQSxDQUFBUixZQUFBLEdBQUFBLFlBQUE7QUFBQSxJQUFBUyxRQUFBLEdBQUFELE9BQUEsQ0FBQUUsT0FBQSxHQUNjVixZQUFZIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric-key.js","names":["SymmetricKey","constructor","rootKey","Error","length","zeroOutKey","Buffer","alloc","exports","_default","default"],"sources":["../../src/always-encrypted/symmetric-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nexport class SymmetricKey {\n declare rootKey: Buffer;\n\n constructor(rootKey: Buffer) {\n if (!rootKey) {\n throw new Error('Column encryption key cannot be null.');\n } else if (0 === rootKey.length) {\n throw new Error('Empty column encryption key specified.');\n }\n this.rootKey = rootKey;\n }\n\n zeroOutKey() {\n this.rootKey = Buffer.alloc(this.rootKey.length);\n }\n}\nexport default SymmetricKey;\n"],"mappings":";;;;;;AAAA;AACA;;AAEO,MAAMA,YAAY,CAAC;EAGxBC,WAAWA,CAACC,OAAe,EAAE;IAC3B,IAAI,CAACA,OAAO,EAAE;MACZ,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;IAC1D,CAAC,MAAM,IAAI,CAAC,KAAKD,OAAO,CAACE,MAAM,EAAE;MAC/B,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IACA,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;EAEAG,UAAUA,CAAA,EAAG;IACX,IAAI,CAACH,OAAO,GAAGI,MAAM,CAACC,KAAK,CAAC,IAAI,CAACL,OAAO,CAACE,MAAM,CAAC;EAClD;AACF;AAACI,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAAA,IAAAS,QAAA,GACcT,YAAY;AAAAQ,OAAA,CAAAE,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"symmetric-key.js","names":["SymmetricKey","constructor","rootKey","Error","length","zeroOutKey","Buffer","alloc","exports","_default","default"],"sources":["../../src/always-encrypted/symmetric-key.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nexport class SymmetricKey {\n declare rootKey: Buffer;\n\n constructor(rootKey: Buffer) {\n if (!rootKey) {\n throw new Error('Column encryption key cannot be null.');\n } else if (0 === rootKey.length) {\n throw new Error('Empty column encryption key specified.');\n }\n this.rootKey = rootKey;\n }\n\n zeroOutKey() {\n this.rootKey = Buffer.alloc(this.rootKey.length);\n }\n}\nexport default SymmetricKey;\n"],"mappings":";;;;;;AAAA;AACA;;AAEO,MAAMA,YAAY,CAAC;EAGxBC,WAAWA,CAACC,OAAe,EAAE;IAC3B,IAAI,CAACA,OAAO,EAAE;MACZ,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;IAC1D,CAAC,MAAM,IAAI,CAAC,KAAKD,OAAO,CAACE,MAAM,EAAE;MAC/B,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IACA,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;EAEAG,UAAUA,CAAA,EAAG;IACX,IAAI,CAACH,OAAO,GAAGI,MAAM,CAACC,KAAK,CAAC,IAAI,CAACL,OAAO,CAACE,MAAM,CAAC;EAClD;AACF;AAACI,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAAA,IAAAS,QAAA,GAAAD,OAAA,CAAAE,OAAA,GACcV,YAAY"}
@@ -0,0 +1,74 @@
1
+ /// <reference types="node" />
2
+ import { CEKEntry } from './cek-entry';
3
+ import { type BaseMetadata } from '../metadata-parser';
4
+ export interface EncryptionKeyInfo {
5
+ encryptedKey: Buffer;
6
+ dbId: number;
7
+ keyId: number;
8
+ keyVersion: number;
9
+ mdVersion: Buffer;
10
+ keyPath: string;
11
+ keyStoreName: string;
12
+ algorithmName: string;
13
+ }
14
+ export declare enum SQLServerEncryptionType {
15
+ Deterministic = 1,
16
+ Randomized = 2,
17
+ PlainText = 0
18
+ }
19
+ export interface EncryptionAlgorithm {
20
+ encryptData: (plainText: Buffer) => Buffer;
21
+ decryptData: (cipherText: Buffer) => Buffer;
22
+ }
23
+ export interface CryptoMetadata {
24
+ cekEntry?: CEKEntry;
25
+ cipherAlgorithmId: number;
26
+ cipherAlgorithmName?: string;
27
+ normalizationRuleVersion: Buffer;
28
+ encryptionKeyInfo?: EncryptionKeyInfo;
29
+ ordinal: number;
30
+ encryptionType: SQLServerEncryptionType;
31
+ cipherAlgorithm?: EncryptionAlgorithm;
32
+ baseTypeInfo?: BaseMetadata;
33
+ }
34
+ export interface HashMap<T> {
35
+ [hash: string]: T;
36
+ }
37
+ export declare enum DescribeParameterEncryptionResultSet1 {
38
+ KeyOrdinal = 0,
39
+ DbId = 1,
40
+ KeyId = 2,
41
+ KeyVersion = 3,
42
+ KeyMdVersion = 4,
43
+ EncryptedKey = 5,
44
+ ProviderName = 6,
45
+ KeyPath = 7,
46
+ KeyEncryptionAlgorithm = 8
47
+ }
48
+ export declare enum DescribeParameterEncryptionResultSet2 {
49
+ ParameterOrdinal = 0,
50
+ ParameterName = 1,
51
+ ColumnEncryptionAlgorithm = 2,
52
+ ColumnEncrytionType = 3,
53
+ ColumnEncryptionKeyOrdinal = 4,
54
+ NormalizationRuleVersion = 5
55
+ }
56
+ export declare enum SQLServerStatementColumnEncryptionSetting {
57
+ /**
58
+ * if "Column Encryption Setting=Enabled" in the connection string, use Enabled. Otherwise, maps to Disabled.
59
+ */
60
+ UseConnectionSetting = 0,
61
+ /**
62
+ * Enables TCE for the command. Overrides the connection level setting for this command.
63
+ */
64
+ Enabled = 1,
65
+ /**
66
+ * Parameters will not be encrypted, only the ResultSet will be decrypted. This is an optimization for queries that
67
+ * do not pass any encrypted input parameters. Overrides the connection level setting for this command.
68
+ */
69
+ ResultSetOnly = 2,
70
+ /**
71
+ * Disables TCE for the command.Overrides the connection level setting for this command.
72
+ */
73
+ Disabled = 3
74
+ }
@@ -6,17 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SQLServerStatementColumnEncryptionSetting = exports.SQLServerEncryptionType = exports.DescribeParameterEncryptionResultSet2 = exports.DescribeParameterEncryptionResultSet1 = void 0;
7
7
  // This code is based on the `mssql-jdbc` library published under the conditions of MIT license.
8
8
  // Copyright (c) 2019 Microsoft Corporation
9
- let SQLServerEncryptionType = /*#__PURE__*/function (SQLServerEncryptionType) {
9
+ let SQLServerEncryptionType = exports.SQLServerEncryptionType = /*#__PURE__*/function (SQLServerEncryptionType) {
10
10
  SQLServerEncryptionType[SQLServerEncryptionType["Deterministic"] = 1] = "Deterministic";
11
11
  SQLServerEncryptionType[SQLServerEncryptionType["Randomized"] = 2] = "Randomized";
12
12
  SQLServerEncryptionType[SQLServerEncryptionType["PlainText"] = 0] = "PlainText";
13
13
  return SQLServerEncryptionType;
14
14
  }({});
15
- exports.SQLServerEncryptionType = SQLServerEncryptionType;
16
15
  // Fields in the first resultset of "sp_describe_parameter_encryption"
17
16
  // We expect the server to return the fields in the resultset in the same order as mentioned below.
18
17
  // If the server changes the below order, then transparent parameter encryption will break.
19
- let DescribeParameterEncryptionResultSet1 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet1) {
18
+ let DescribeParameterEncryptionResultSet1 = exports.DescribeParameterEncryptionResultSet1 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet1) {
20
19
  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyOrdinal"] = 0] = "KeyOrdinal";
21
20
  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["DbId"] = 1] = "DbId";
22
21
  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1["KeyId"] = 2] = "KeyId";
@@ -30,8 +29,7 @@ let DescribeParameterEncryptionResultSet1 = /*#__PURE__*/function (DescribeParam
30
29
  }({}); // Fields in the second resultset of "sp_describe_parameter_encryption"
31
30
  // We expect the server to return the fields in the resultset in the same order as mentioned below.
32
31
  // If the server changes the below order, then transparent parameter encryption will break.
33
- exports.DescribeParameterEncryptionResultSet1 = DescribeParameterEncryptionResultSet1;
34
- let DescribeParameterEncryptionResultSet2 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet2) {
32
+ let DescribeParameterEncryptionResultSet2 = exports.DescribeParameterEncryptionResultSet2 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet2) {
35
33
  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ParameterOrdinal"] = 0] = "ParameterOrdinal";
36
34
  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ParameterName"] = 1] = "ParameterName";
37
35
  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["ColumnEncryptionAlgorithm"] = 2] = "ColumnEncryptionAlgorithm";
@@ -40,13 +38,11 @@ let DescribeParameterEncryptionResultSet2 = /*#__PURE__*/function (DescribeParam
40
38
  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2["NormalizationRuleVersion"] = 5] = "NormalizationRuleVersion";
41
39
  return DescribeParameterEncryptionResultSet2;
42
40
  }({});
43
- exports.DescribeParameterEncryptionResultSet2 = DescribeParameterEncryptionResultSet2;
44
- let SQLServerStatementColumnEncryptionSetting = /*#__PURE__*/function (SQLServerStatementColumnEncryptionSetting) {
41
+ let SQLServerStatementColumnEncryptionSetting = exports.SQLServerStatementColumnEncryptionSetting = /*#__PURE__*/function (SQLServerStatementColumnEncryptionSetting) {
45
42
  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["UseConnectionSetting"] = 0] = "UseConnectionSetting";
46
43
  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Enabled"] = 1] = "Enabled";
47
44
  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["ResultSetOnly"] = 2] = "ResultSetOnly";
48
45
  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Disabled"] = 3] = "Disabled";
49
46
  return SQLServerStatementColumnEncryptionSetting;
50
47
  }({});
51
- exports.SQLServerStatementColumnEncryptionSetting = SQLServerStatementColumnEncryptionSetting;
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSIsImV4cG9ydHMiLCJEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MiIsIlNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IENFS0VudHJ5IH0gZnJvbSAnLi9jZWstZW50cnknO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25LZXlJbmZvIHtcbiAgZW5jcnlwdGVkS2V5OiBCdWZmZXI7XG4gIGRiSWQ6IG51bWJlcjtcbiAga2V5SWQ6IG51bWJlcjtcbiAga2V5VmVyc2lvbjogbnVtYmVyO1xuICBtZFZlcnNpb246IEJ1ZmZlcjtcbiAga2V5UGF0aDogc3RyaW5nO1xuICBrZXlTdG9yZU5hbWU6IHN0cmluZztcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSB7XG4gIERldGVybWluaXN0aWMgPSAxLFxuICBSYW5kb21pemVkID0gMixcbiAgUGxhaW5UZXh0ID0gMCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQWxnb3JpdGhtIHtcbiAgZW5jcnlwdERhdGE6IChwbGFpblRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xuICBkZWNyeXB0RGF0YTogKGNpcGhlclRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b01ldGFkYXRhIHtcbiAgY2VrRW50cnk/OiBDRUtFbnRyeTtcbiAgY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlcjtcbiAgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZztcbiAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXI7XG4gIGVuY3J5cHRpb25LZXlJbmZvPzogRW5jcnlwdGlvbktleUluZm87XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlO1xuICBjaXBoZXJBbGdvcml0aG0/OiBFbmNyeXB0aW9uQWxnb3JpdGhtO1xuICBiYXNlVHlwZUluZm8/OiBCYXNlTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaE1hcDxUPiB7XG4gIFtoYXNoOiBzdHJpbmddOiBUO1xufVxuXG5cbi8vIEZpZWxkcyBpbiB0aGUgZmlyc3QgcmVzdWx0c2V0IG9mIFwic3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb25cIlxuLy8gV2UgZXhwZWN0IHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIHRoZSBmaWVsZHMgaW4gdGhlIHJlc3VsdHNldCBpbiB0aGUgc2FtZSBvcmRlciBhcyBtZW50aW9uZWQgYmVsb3cuXG4vLyBJZiB0aGUgc2VydmVyIGNoYW5nZXMgdGhlIGJlbG93IG9yZGVyLCB0aGVuIHRyYW5zcGFyZW50IHBhcmFtZXRlciBlbmNyeXB0aW9uIHdpbGwgYnJlYWsuXG5leHBvcnQgZW51bSBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIHtcbiAgS2V5T3JkaW5hbCxcbiAgRGJJZCxcbiAgS2V5SWQsXG4gIEtleVZlcnNpb24sXG4gIEtleU1kVmVyc2lvbixcbiAgRW5jcnlwdGVkS2V5LFxuICBQcm92aWRlck5hbWUsXG4gIEtleVBhdGgsXG4gIEtleUVuY3J5cHRpb25BbGdvcml0aG1cbn1cblxuXG4vLyBGaWVsZHMgaW4gdGhlIHNlY29uZCByZXN1bHRzZXQgb2YgXCJzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvblwiXG4vLyBXZSBleHBlY3QgdGhlIHNlcnZlciB0byByZXR1cm4gdGhlIGZpZWxkcyBpbiB0aGUgcmVzdWx0c2V0IGluIHRoZSBzYW1lIG9yZGVyIGFzIG1lbnRpb25lZCBiZWxvdy5cbi8vIElmIHRoZSBzZXJ2ZXIgY2hhbmdlcyB0aGUgYmVsb3cgb3JkZXIsIHRoZW4gdHJhbnNwYXJlbnQgcGFyYW1ldGVyIGVuY3J5cHRpb24gd2lsbCBicmVhay5cbmV4cG9ydCBlbnVtIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIge1xuICBQYXJhbWV0ZXJPcmRpbmFsLFxuICBQYXJhbWV0ZXJOYW1lLFxuICBDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtLFxuICBDb2x1bW5FbmNyeXRpb25UeXBlLFxuICBDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCxcbiAgTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uXG59XG5cbmV4cG9ydCBlbnVtIFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIHtcbiAgLyoqXG4gICAqIGlmIFwiQ29sdW1uIEVuY3J5cHRpb24gU2V0dGluZz1FbmFibGVkXCIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLCB1c2UgRW5hYmxlZC4gT3RoZXJ3aXNlLCBtYXBzIHRvIERpc2FibGVkLlxuICAgKi9cbiAgVXNlQ29ubmVjdGlvblNldHRpbmcsXG4gIC8qKlxuICAgKiBFbmFibGVzIFRDRSBmb3IgdGhlIGNvbW1hbmQuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBFbmFibGVkLFxuICAvKipcbiAgICogUGFyYW1ldGVycyB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQsIG9ubHkgdGhlIFJlc3VsdFNldCB3aWxsIGJlIGRlY3J5cHRlZC4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHF1ZXJpZXMgdGhhdFxuICAgKiBkbyBub3QgcGFzcyBhbnkgZW5jcnlwdGVkIGlucHV0IHBhcmFtZXRlcnMuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBSZXN1bHRTZXRPbmx5LFxuICAvKipcbiAgICogRGlzYWJsZXMgVENFIGZvciB0aGUgY29tbWFuZC5PdmVycmlkZXMgdGhlIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZyBmb3IgdGhpcyBjb21tYW5kLlxuICAgKi9cbiAgRGlzYWJsZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQWdCWUEsdUJBQXVCLDBCQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QixDQUF2QkEsdUJBQXVCO0VBQUEsT0FBdkJBLHVCQUF1QjtBQUFBO0FBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsR0FBQUEsdUJBQUE7QUE0Qm5DO0FBQ0E7QUFDQTtBQUFBLElBQ1lFLHFDQUFxQywwQkFBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFBLE9BQXJDQSxxQ0FBcUM7QUFBQSxPQWFqRDtBQUNBO0FBQ0E7QUFBQUQsT0FBQSxDQUFBQyxxQ0FBQSxHQUFBQSxxQ0FBQTtBQUFBLElBQ1lDLHFDQUFxQywwQkFBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFBLE9BQXJDQSxxQ0FBcUM7QUFBQTtBQUFBRixPQUFBLENBQUFFLHFDQUFBLEdBQUFBLHFDQUFBO0FBQUEsSUFTckNDLHlDQUF5QywwQkFBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBekNBLHlDQUF5QyxDQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBQSxPQUF6Q0EseUNBQXlDO0FBQUE7QUFBQUgsT0FBQSxDQUFBRyx5Q0FBQSxHQUFBQSx5Q0FBQSJ9
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSIsImV4cG9ydHMiLCJEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MiIsIlNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IENFS0VudHJ5IH0gZnJvbSAnLi9jZWstZW50cnknO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25LZXlJbmZvIHtcbiAgZW5jcnlwdGVkS2V5OiBCdWZmZXI7XG4gIGRiSWQ6IG51bWJlcjtcbiAga2V5SWQ6IG51bWJlcjtcbiAga2V5VmVyc2lvbjogbnVtYmVyO1xuICBtZFZlcnNpb246IEJ1ZmZlcjtcbiAga2V5UGF0aDogc3RyaW5nO1xuICBrZXlTdG9yZU5hbWU6IHN0cmluZztcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSB7XG4gIERldGVybWluaXN0aWMgPSAxLFxuICBSYW5kb21pemVkID0gMixcbiAgUGxhaW5UZXh0ID0gMCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQWxnb3JpdGhtIHtcbiAgZW5jcnlwdERhdGE6IChwbGFpblRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xuICBkZWNyeXB0RGF0YTogKGNpcGhlclRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b01ldGFkYXRhIHtcbiAgY2VrRW50cnk/OiBDRUtFbnRyeTtcbiAgY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlcjtcbiAgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZztcbiAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXI7XG4gIGVuY3J5cHRpb25LZXlJbmZvPzogRW5jcnlwdGlvbktleUluZm87XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlO1xuICBjaXBoZXJBbGdvcml0aG0/OiBFbmNyeXB0aW9uQWxnb3JpdGhtO1xuICBiYXNlVHlwZUluZm8/OiBCYXNlTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaE1hcDxUPiB7XG4gIFtoYXNoOiBzdHJpbmddOiBUO1xufVxuXG5cbi8vIEZpZWxkcyBpbiB0aGUgZmlyc3QgcmVzdWx0c2V0IG9mIFwic3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb25cIlxuLy8gV2UgZXhwZWN0IHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIHRoZSBmaWVsZHMgaW4gdGhlIHJlc3VsdHNldCBpbiB0aGUgc2FtZSBvcmRlciBhcyBtZW50aW9uZWQgYmVsb3cuXG4vLyBJZiB0aGUgc2VydmVyIGNoYW5nZXMgdGhlIGJlbG93IG9yZGVyLCB0aGVuIHRyYW5zcGFyZW50IHBhcmFtZXRlciBlbmNyeXB0aW9uIHdpbGwgYnJlYWsuXG5leHBvcnQgZW51bSBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIHtcbiAgS2V5T3JkaW5hbCxcbiAgRGJJZCxcbiAgS2V5SWQsXG4gIEtleVZlcnNpb24sXG4gIEtleU1kVmVyc2lvbixcbiAgRW5jcnlwdGVkS2V5LFxuICBQcm92aWRlck5hbWUsXG4gIEtleVBhdGgsXG4gIEtleUVuY3J5cHRpb25BbGdvcml0aG1cbn1cblxuXG4vLyBGaWVsZHMgaW4gdGhlIHNlY29uZCByZXN1bHRzZXQgb2YgXCJzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvblwiXG4vLyBXZSBleHBlY3QgdGhlIHNlcnZlciB0byByZXR1cm4gdGhlIGZpZWxkcyBpbiB0aGUgcmVzdWx0c2V0IGluIHRoZSBzYW1lIG9yZGVyIGFzIG1lbnRpb25lZCBiZWxvdy5cbi8vIElmIHRoZSBzZXJ2ZXIgY2hhbmdlcyB0aGUgYmVsb3cgb3JkZXIsIHRoZW4gdHJhbnNwYXJlbnQgcGFyYW1ldGVyIGVuY3J5cHRpb24gd2lsbCBicmVhay5cbmV4cG9ydCBlbnVtIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIge1xuICBQYXJhbWV0ZXJPcmRpbmFsLFxuICBQYXJhbWV0ZXJOYW1lLFxuICBDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtLFxuICBDb2x1bW5FbmNyeXRpb25UeXBlLFxuICBDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCxcbiAgTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uXG59XG5cbmV4cG9ydCBlbnVtIFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIHtcbiAgLyoqXG4gICAqIGlmIFwiQ29sdW1uIEVuY3J5cHRpb24gU2V0dGluZz1FbmFibGVkXCIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLCB1c2UgRW5hYmxlZC4gT3RoZXJ3aXNlLCBtYXBzIHRvIERpc2FibGVkLlxuICAgKi9cbiAgVXNlQ29ubmVjdGlvblNldHRpbmcsXG4gIC8qKlxuICAgKiBFbmFibGVzIFRDRSBmb3IgdGhlIGNvbW1hbmQuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBFbmFibGVkLFxuICAvKipcbiAgICogUGFyYW1ldGVycyB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQsIG9ubHkgdGhlIFJlc3VsdFNldCB3aWxsIGJlIGRlY3J5cHRlZC4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHF1ZXJpZXMgdGhhdFxuICAgKiBkbyBub3QgcGFzcyBhbnkgZW5jcnlwdGVkIGlucHV0IHBhcmFtZXRlcnMuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBSZXN1bHRTZXRPbmx5LFxuICAvKipcbiAgICogRGlzYWJsZXMgVENFIGZvciB0aGUgY29tbWFuZC5PdmVycmlkZXMgdGhlIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZyBmb3IgdGhpcyBjb21tYW5kLlxuICAgKi9cbiAgRGlzYWJsZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQWdCWUEsdUJBQXVCLEdBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QixDQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBQSxPQUF2QkEsdUJBQXVCO0FBQUE7QUE0Qm5DO0FBQ0E7QUFDQTtBQUFBLElBQ1lFLHFDQUFxQyxHQUFBRCxPQUFBLENBQUFDLHFDQUFBLDBCQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQUEsT0FBckNBLHFDQUFxQztBQUFBLE9BYWpEO0FBQ0E7QUFDQTtBQUFBLElBQ1lDLHFDQUFxQyxHQUFBRixPQUFBLENBQUFFLHFDQUFBLDBCQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQUEsT0FBckNBLHFDQUFxQztBQUFBO0FBQUEsSUFTckNDLHlDQUF5QyxHQUFBSCxPQUFBLENBQUFHLHlDQUFBLDBCQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBekNBLHlDQUF5QyxDQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUFBLE9BQXpDQSx5Q0FBeUM7QUFBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["SQLServerEncryptionType","exports","DescribeParameterEncryptionResultSet1","DescribeParameterEncryptionResultSet2","SQLServerStatementColumnEncryptionSetting"],"sources":["../../src/always-encrypted/types.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { CEKEntry } from './cek-entry';\nimport { type BaseMetadata } from '../metadata-parser';\n\nexport interface EncryptionKeyInfo {\n encryptedKey: Buffer;\n dbId: number;\n keyId: number;\n keyVersion: number;\n mdVersion: Buffer;\n keyPath: string;\n keyStoreName: string;\n algorithmName: string;\n}\n\nexport enum SQLServerEncryptionType {\n Deterministic = 1,\n Randomized = 2,\n PlainText = 0,\n}\n\nexport interface EncryptionAlgorithm {\n encryptData: (plainText: Buffer) => Buffer;\n decryptData: (cipherText: Buffer) => Buffer;\n}\n\nexport interface CryptoMetadata {\n cekEntry?: CEKEntry;\n cipherAlgorithmId: number;\n cipherAlgorithmName?: string;\n normalizationRuleVersion: Buffer;\n encryptionKeyInfo?: EncryptionKeyInfo;\n ordinal: number;\n encryptionType: SQLServerEncryptionType;\n cipherAlgorithm?: EncryptionAlgorithm;\n baseTypeInfo?: BaseMetadata;\n}\n\nexport interface HashMap<T> {\n [hash: string]: T;\n}\n\n\n// Fields in the first resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet1 {\n KeyOrdinal,\n DbId,\n KeyId,\n KeyVersion,\n KeyMdVersion,\n EncryptedKey,\n ProviderName,\n KeyPath,\n KeyEncryptionAlgorithm\n}\n\n\n// Fields in the second resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet2 {\n ParameterOrdinal,\n ParameterName,\n ColumnEncryptionAlgorithm,\n ColumnEncrytionType,\n ColumnEncryptionKeyOrdinal,\n NormalizationRuleVersion\n}\n\nexport enum SQLServerStatementColumnEncryptionSetting {\n /**\n * if \"Column Encryption Setting=Enabled\" in the connection string, use Enabled. Otherwise, maps to Disabled.\n */\n UseConnectionSetting,\n /**\n * Enables TCE for the command. Overrides the connection level setting for this command.\n */\n Enabled,\n /**\n * Parameters will not be encrypted, only the ResultSet will be decrypted. This is an optimization for queries that\n * do not pass any encrypted input parameters. Overrides the connection level setting for this command.\n */\n ResultSetOnly,\n /**\n * Disables TCE for the command.Overrides the connection level setting for this command.\n */\n Disabled,\n}\n"],"mappings":";;;;;;AAAA;AACA;AAAA,IAgBYA,uBAAuB,0BAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAA,OAAvBA,uBAAuB;AAAA;AAAAC,OAAA,CAAAD,uBAAA,GAAAA,uBAAA;AA4BnC;AACA;AACA;AAAA,IACYE,qCAAqC,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA,OAajD;AACA;AACA;AAAAD,OAAA,CAAAC,qCAAA,GAAAA,qCAAA;AAAA,IACYC,qCAAqC,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA;AAAAF,OAAA,CAAAE,qCAAA,GAAAA,qCAAA;AAAA,IASrCC,yCAAyC,0BAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAA,OAAzCA,yCAAyC;AAAA;AAAAH,OAAA,CAAAG,yCAAA,GAAAA,yCAAA"}
1
+ {"version":3,"file":"types.js","names":["SQLServerEncryptionType","exports","DescribeParameterEncryptionResultSet1","DescribeParameterEncryptionResultSet2","SQLServerStatementColumnEncryptionSetting"],"sources":["../../src/always-encrypted/types.ts"],"sourcesContent":["// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\n\nimport { CEKEntry } from './cek-entry';\nimport { type BaseMetadata } from '../metadata-parser';\n\nexport interface EncryptionKeyInfo {\n encryptedKey: Buffer;\n dbId: number;\n keyId: number;\n keyVersion: number;\n mdVersion: Buffer;\n keyPath: string;\n keyStoreName: string;\n algorithmName: string;\n}\n\nexport enum SQLServerEncryptionType {\n Deterministic = 1,\n Randomized = 2,\n PlainText = 0,\n}\n\nexport interface EncryptionAlgorithm {\n encryptData: (plainText: Buffer) => Buffer;\n decryptData: (cipherText: Buffer) => Buffer;\n}\n\nexport interface CryptoMetadata {\n cekEntry?: CEKEntry;\n cipherAlgorithmId: number;\n cipherAlgorithmName?: string;\n normalizationRuleVersion: Buffer;\n encryptionKeyInfo?: EncryptionKeyInfo;\n ordinal: number;\n encryptionType: SQLServerEncryptionType;\n cipherAlgorithm?: EncryptionAlgorithm;\n baseTypeInfo?: BaseMetadata;\n}\n\nexport interface HashMap<T> {\n [hash: string]: T;\n}\n\n\n// Fields in the first resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet1 {\n KeyOrdinal,\n DbId,\n KeyId,\n KeyVersion,\n KeyMdVersion,\n EncryptedKey,\n ProviderName,\n KeyPath,\n KeyEncryptionAlgorithm\n}\n\n\n// Fields in the second resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexport enum DescribeParameterEncryptionResultSet2 {\n ParameterOrdinal,\n ParameterName,\n ColumnEncryptionAlgorithm,\n ColumnEncrytionType,\n ColumnEncryptionKeyOrdinal,\n NormalizationRuleVersion\n}\n\nexport enum SQLServerStatementColumnEncryptionSetting {\n /**\n * if \"Column Encryption Setting=Enabled\" in the connection string, use Enabled. Otherwise, maps to Disabled.\n */\n UseConnectionSetting,\n /**\n * Enables TCE for the command. Overrides the connection level setting for this command.\n */\n Enabled,\n /**\n * Parameters will not be encrypted, only the ResultSet will be decrypted. This is an optimization for queries that\n * do not pass any encrypted input parameters. Overrides the connection level setting for this command.\n */\n ResultSetOnly,\n /**\n * Disables TCE for the command.Overrides the connection level setting for this command.\n */\n Disabled,\n}\n"],"mappings":";;;;;;AAAA;AACA;AAAA,IAgBYA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,0BAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAvBA,uBAAuB,CAAvBA,uBAAuB;EAAA,OAAvBA,uBAAuB;AAAA;AA4BnC;AACA;AACA;AAAA,IACYE,qCAAqC,GAAAD,OAAA,CAAAC,qCAAA,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA,OAajD;AACA;AACA;AAAA,IACYC,qCAAqC,GAAAF,OAAA,CAAAE,qCAAA,0BAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAArCA,qCAAqC,CAArCA,qCAAqC;EAAA,OAArCA,qCAAqC;AAAA;AAAA,IASrCC,yCAAyC,GAAAH,OAAA,CAAAG,yCAAA,0BAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAzCA,yCAAyC,CAAzCA,yCAAyC;EAAA,OAAzCA,yCAAyC;AAAA"}
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import BulkLoad from './bulk-load';
3
+ export declare class BulkLoadPayload implements AsyncIterable<Buffer> {
4
+ bulkLoad: BulkLoad;
5
+ iterator: AsyncIterableIterator<Buffer>;
6
+ constructor(bulkLoad: BulkLoad);
7
+ [Symbol.asyncIterator](): AsyncIterableIterator<Buffer>;
8
+ toString(indent?: string): string;
9
+ }