@keetanetwork/keetanet-client 0.16.0 → 0.16.2

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 (210) hide show
  1. package/client/builder.d.ts +3 -3
  2. package/client/client_common_tests.d.ts +23 -4
  3. package/client/index-browser.d.ts +15 -13
  4. package/client/index-browser.js +878 -351
  5. package/client/index.d.ts +15 -13
  6. package/client/index.js +737 -253
  7. package/docs/assets/hierarchy.js +1 -1
  8. package/docs/assets/search.js +1 -1
  9. package/docs/classes/KeetaNetSDK.Client.html +10 -10
  10. package/docs/classes/KeetaNetSDK.Referenced.Account.html +34 -31
  11. package/docs/classes/KeetaNetSDK.Referenced.BaseSet.html +1 -1
  12. package/docs/classes/KeetaNetSDK.Referenced.BaseVoteBuilder.html +2 -2
  13. package/docs/classes/KeetaNetSDK.Referenced.Block.html +3 -3
  14. package/docs/classes/KeetaNetSDK.Referenced.BlockBuilder.html +1 -1
  15. package/docs/classes/KeetaNetSDK.Referenced.BlockHash.html +1 -1
  16. package/docs/classes/KeetaNetSDK.Referenced.BlockOperation.html +1 -1
  17. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationCREATE_IDENTIFIER.html +2 -2
  18. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMANAGE_CERTIFICATE.html +2 -2
  19. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMODIFY_PERMISSIONS.html +2 -2
  20. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationRECEIVE.html +2 -2
  21. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSEND.html +2 -2
  22. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_INFO.html +2 -2
  23. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_REP.html +2 -2
  24. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_MODIFY_BALANCE.html +2 -2
  25. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_SUPPLY.html +2 -2
  26. package/docs/classes/KeetaNetSDK.Referenced.Certificate.html +7 -7
  27. package/docs/classes/KeetaNetSDK.Referenced.CertificateBundle.html +1 -1
  28. package/docs/classes/KeetaNetSDK.Referenced.CertificateHash.html +1 -1
  29. package/docs/classes/KeetaNetSDK.Referenced.ECDSAKeyPair.html +1 -1
  30. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1KeyPair.html +1 -1
  31. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PrivateKey.html +1 -1
  32. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PublicKey.html +1 -1
  33. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1Signature.html +1 -1
  34. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1KeyPair.html +1 -1
  35. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PrivateKey.html +1 -1
  36. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PublicKey.html +1 -1
  37. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1Signature.html +1 -1
  38. package/docs/classes/KeetaNetSDK.Referenced.ED25519KeyPair.html +1 -1
  39. package/docs/classes/KeetaNetSDK.Referenced.ED25519PrivateKey.html +1 -1
  40. package/docs/classes/KeetaNetSDK.Referenced.ED25519PublicKey.html +1 -1
  41. package/docs/classes/KeetaNetSDK.Referenced.ED25519Signature.html +1 -1
  42. package/docs/classes/KeetaNetSDK.Referenced.ExternalKeyPair.html +1 -1
  43. package/docs/classes/KeetaNetSDK.Referenced.ExternalSet.html +1 -1
  44. package/docs/classes/KeetaNetSDK.Referenced.IdempotentKey.html +1 -1
  45. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKey.html +1 -1
  46. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKeyPair.html +4 -4
  47. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetError.html +2 -2
  48. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetErrorBase.html +1 -1
  49. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerError.html +1 -1
  50. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerIdempotentKeyError.html +1 -1
  51. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerVoteError.html +1 -1
  52. package/docs/classes/KeetaNetSDK.Referenced.KeyInterface.html +1 -1
  53. package/docs/classes/KeetaNetSDK.Referenced.KeyStorage.html +1 -1
  54. package/docs/classes/KeetaNetSDK.Referenced.Ledger.html +2 -2
  55. package/docs/classes/KeetaNetSDK.Referenced.LedgerAtomicInterface.html +1 -1
  56. package/docs/classes/KeetaNetSDK.Referenced.P2PSwitch.html +2 -2
  57. package/docs/classes/KeetaNetSDK.Referenced.PermissionSetHolder.html +1 -1
  58. package/docs/classes/KeetaNetSDK.Referenced.PossiblyExpiredVote.html +2 -2
  59. package/docs/classes/KeetaNetSDK.Referenced.PossiblyUnsignedBlock.html +3 -3
  60. package/docs/classes/KeetaNetSDK.Referenced.SignatureStorage.html +1 -1
  61. package/docs/classes/KeetaNetSDK.Referenced.Stats.html +1 -1
  62. package/docs/classes/KeetaNetSDK.Referenced.StatsPending.html +1 -1
  63. package/docs/classes/KeetaNetSDK.Referenced.UnsignedBlock.html +3 -3
  64. package/docs/classes/KeetaNetSDK.Referenced.UserClientBuilder.html +11 -11
  65. package/docs/classes/KeetaNetSDK.Referenced.Vote.html +2 -2
  66. package/docs/classes/KeetaNetSDK.Referenced.VoteBlockBundle.html +4 -4
  67. package/docs/classes/KeetaNetSDK.Referenced.VoteBlockHash.html +1 -1
  68. package/docs/classes/KeetaNetSDK.Referenced.VoteBuilder.html +2 -2
  69. package/docs/classes/KeetaNetSDK.Referenced.VoteHash.html +1 -1
  70. package/docs/classes/KeetaNetSDK.Referenced.VoteLikeBase.html +2 -2
  71. package/docs/classes/KeetaNetSDK.Referenced.VoteQuote.html +2 -2
  72. package/docs/classes/KeetaNetSDK.Referenced.VoteQuoteBuilder.html +2 -2
  73. package/docs/classes/KeetaNetSDK.Referenced.VoteStaple.html +4 -4
  74. package/docs/classes/KeetaNetSDK.Referenced.VoteStapleHash.html +1 -1
  75. package/docs/classes/KeetaNetSDK.Referenced.src_lib_utils_buffer.BufferStorage.html +1 -1
  76. package/docs/classes/KeetaNetSDK.UserClient.html +20 -20
  77. package/docs/documents/GETTING-STARTED.html +1 -1
  78. package/docs/enums/KeetaNetSDK.Referenced.AccountKeyAlgorithm.html +8 -8
  79. package/docs/functions/KeetaNetSDK.Referenced.src_lib_utils_domain-separation.applyNamespace.html +5 -0
  80. package/docs/functions/KeetaNetSDK.Referenced.src_lib_utils_helper.getTypedObjectEntries.html +1 -0
  81. package/docs/hierarchy.html +1 -1
  82. package/docs/interfaces/KeetaNetSDK.Referenced.ACLEntry.html +1 -1
  83. package/docs/interfaces/KeetaNetSDK.Referenced.ACLUpdate.html +1 -1
  84. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ExplicitContextTag.html +1 -1
  85. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ImplicitContextTag.html +1 -1
  86. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1Object.html +1 -1
  87. package/docs/interfaces/KeetaNetSDK.Referenced.BaseAccountInfo.html +10 -0
  88. package/docs/interfaces/KeetaNetSDK.Referenced.BaseExternalKeyPairFunctions.html +1 -1
  89. package/docs/interfaces/KeetaNetSDK.Referenced.BaseGenerationConfig.html +2 -2
  90. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierAccountInfo.html +12 -0
  91. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierCreateArguments.html +1 -1
  92. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperation.html +1 -1
  93. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationCREATE_IDENTIFIER.html +2 -2
  94. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMANAGE_CERTIFICATE.html +2 -2
  95. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMODIFY_PERMISSIONS.html +1 -1
  96. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationRECEIVE.html +1 -1
  97. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSEND.html +1 -1
  98. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_INFO.html +1 -1
  99. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_REP.html +1 -1
  100. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_MODIFY_BALANCE.html +1 -1
  101. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_SUPPLY.html +1 -1
  102. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV1Canonical.html +1 -1
  103. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV1JSON.html +2 -2
  104. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV2Canonical.html +1 -1
  105. package/docs/interfaces/KeetaNetSDK.Referenced.BuilderBlockOptions.html +2 -2
  106. package/docs/interfaces/KeetaNetSDK.Referenced.Constructor.html +1 -1
  107. package/docs/interfaces/KeetaNetSDK.Referenced.DisposableTimingHandle.html +1 -1
  108. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256K1AccountInfo.html +10 -0
  109. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256R1AccountInfo.html +10 -0
  110. package/docs/interfaces/KeetaNetSDK.Referenced.ED25519AccountInfo.html +10 -0
  111. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsNoEncryption.html +1 -1
  112. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsSupportsEncryption.html +1 -1
  113. package/docs/interfaces/KeetaNetSDK.Referenced.FeeAmountAndToken.html +2 -2
  114. package/docs/interfaces/KeetaNetSDK.Referenced.FeeAmountAndTokenJSON.html +2 -2
  115. package/docs/interfaces/KeetaNetSDK.Referenced.IdentifierCreateRequest.html +2 -2
  116. package/docs/interfaces/KeetaNetSDK.Referenced.InitialConfigSupply.html +2 -2
  117. package/docs/interfaces/KeetaNetSDK.Referenced.InstanceSet.html +1 -1
  118. package/docs/interfaces/KeetaNetSDK.Referenced.KVGenericOptionsType.html +1 -1
  119. package/docs/interfaces/KeetaNetSDK.Referenced.KVSetOptionsType.html +1 -1
  120. package/docs/interfaces/KeetaNetSDK.Referenced.LedgerConfig.html +4 -4
  121. package/docs/interfaces/KeetaNetSDK.Referenced.LedgerStorageAPI.html +5 -5
  122. package/docs/interfaces/KeetaNetSDK.Referenced.ModifyTokenBalanceEntry.html +1 -1
  123. package/docs/interfaces/KeetaNetSDK.Referenced.MultiSigIdentifierCreateArguments.html +2 -2
  124. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigAccountInfo.html +14 -0
  125. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigConfig.html +2 -2
  126. package/docs/interfaces/KeetaNetSDK.Referenced.NetworkAccountInfo.html +12 -0
  127. package/docs/interfaces/KeetaNetSDK.Referenced.NodeConfig.html +4 -4
  128. package/docs/interfaces/KeetaNetSDK.Referenced.NumericValueEntry.html +1 -1
  129. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerBase.html +1 -1
  130. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerListener.html +1 -1
  131. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerRepBase.html +1 -1
  132. package/docs/interfaces/KeetaNetSDK.Referenced.PendingOperations.html +2 -2
  133. package/docs/interfaces/KeetaNetSDK.Referenced.PendingOperationsJSON.html +2 -2
  134. package/docs/interfaces/KeetaNetSDK.Referenced.PrincipalACLWithInfoParsed.html +3 -10
  135. package/docs/interfaces/KeetaNetSDK.Referenced.PublicKeyStorage.html +1 -1
  136. package/docs/interfaces/KeetaNetSDK.Referenced.PublishOptions.html +1 -1
  137. package/docs/interfaces/KeetaNetSDK.Referenced.RequestTokenReceiveEntry.html +1 -1
  138. package/docs/interfaces/KeetaNetSDK.Referenced.StorageAccountInfo.html +12 -0
  139. package/docs/interfaces/KeetaNetSDK.Referenced.TokenAccountInfo.html +14 -0
  140. package/docs/interfaces/KeetaNetSDK.Referenced.TokenNumericEntry.html +1 -1
  141. package/docs/interfaces/KeetaNetSDK.Referenced.UserClientConfig.html +2 -2
  142. package/docs/interfaces/KeetaNetSDK.Referenced.UserClientOptions.html +1 -1
  143. package/docs/interfaces/KeetaNetSDK.Referenced.VoteJSON.html +2 -2
  144. package/docs/interfaces/KeetaNetSDK.Referenced.VoteStapleJSON.html +2 -2
  145. package/docs/interfaces/KeetaNetSDK.Referenced.WithIsInstance.html +1 -1
  146. package/docs/interfaces/KeetaNetSDK.Referenced.signOptionsType.html +16 -3
  147. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1BitString.html +1 -1
  148. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Date.html +1 -1
  149. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1OID.html +1 -1
  150. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Set.html +1 -1
  151. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1String.html +1 -1
  152. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Struct.html +1 -1
  153. package/docs/modules/KeetaNetSDK.Referenced.html +1 -1
  154. package/docs/modules/KeetaNetSDK.Referenced.src_lib_utils_domain-separation.html +1 -0
  155. package/docs/modules/KeetaNetSDK.Referenced.src_lib_utils_helper.html +1 -1
  156. package/docs/types/KeetaNetSDK.Referenced.AccountInfo.html +1 -0
  157. package/docs/types/KeetaNetSDK.Referenced.AccountInfoForType.html +1 -0
  158. package/docs/types/KeetaNetSDK.Referenced.AccountInfoResponse.html +2 -2
  159. package/docs/types/KeetaNetSDK.Referenced.AccountInfoWithoutAccount.html +1 -0
  160. package/docs/types/{KeetaNetSDK.Referenced.src_lib_utils_helper.DistributiveOmit.html → KeetaNetSDK.Referenced.DistributiveOmit.html} +1 -1
  161. package/docs/types/KeetaNetSDK.Referenced.GetAccountStateAPIResponseFormatted.html +5 -12
  162. package/docs/types/KeetaNetSDK.Referenced.KeyPairAccountInfo.html +1 -0
  163. package/docs/types/KeetaNetSDK.Referenced.KeyPairKeyAlgorithm.html +1 -0
  164. package/docs/types/KeetaNetSDK.Referenced.NetworkAddress.html +1 -1
  165. package/docs/types/KeetaNetSDK.Referenced.StorageAddress.html +1 -1
  166. package/docs/types/KeetaNetSDK.Referenced.TokenAddress.html +1 -1
  167. package/docs/types/KeetaNetSDK.Referenced.TokenOrPending.html +1 -1
  168. package/docs/types/KeetaNetSDK.Referenced.UserEditableAccountInfo.html +1 -1
  169. package/docs/types/KeetaNetSDK.Referenced.VoteBuilderOptions.html +2 -2
  170. package/docs/types/KeetaNetSDK.Referenced.src_lib_utils_conversion.ToJSONSerializable.html +1 -1
  171. package/docs/types/KeetaNetSDK.Referenced.src_lib_utils_initial.BaseNetworkInfo.html +1 -1
  172. package/docs/variables/KeetaNetSDK.Referenced.allFullErrorCodes.html +1 -1
  173. package/docs/variables/KeetaNetSDK.Referenced.identifierKeyTypes.html +1 -1
  174. package/docs/variables/KeetaNetSDK.Referenced.src_lib_utils_domain-separation.KeetaNamespaceVersion.html +3 -0
  175. package/docs/variables/KeetaNetSDK.Referenced.src_lib_utils_domain-separation.MaxNamespaceLength.html +3 -0
  176. package/docs/variables/KeetaNetSDK.Referenced.src_lib_utils_domain-separation.namespacePrefixSchema.html +9 -0
  177. package/docs/variables/KeetaNetSDK.lib.html +2 -2
  178. package/lib/account.d.ts +39 -1
  179. package/lib/block/index.d.ts +126 -108
  180. package/lib/block/operations.d.ts +11 -0
  181. package/lib/error/account.d.ts +2 -2
  182. package/lib/error/index.d.ts +1 -1
  183. package/lib/error/vote.d.ts +2 -2
  184. package/lib/index.d.ts +4 -2
  185. package/lib/ledger/common.d.ts +15 -3
  186. package/lib/ledger/db_dynamodb.d.ts +6 -6
  187. package/lib/ledger/db_postgres.d.ts +3 -3
  188. package/lib/ledger/db_spanner.d.ts +4 -4
  189. package/lib/ledger/db_spanner_helper.d.ts +2 -2
  190. package/lib/ledger/db_sqlite.d.ts +3 -3
  191. package/lib/ledger/effects.d.ts +3 -1
  192. package/lib/ledger/index.d.ts +9 -9
  193. package/lib/ledger/types.d.ts +43 -9
  194. package/lib/log/target_gcp.js +3 -0
  195. package/lib/log/target_https.js +7 -0
  196. package/lib/utils/certificate.d.ts +13 -12
  197. package/lib/utils/conversion.d.ts +12 -3
  198. package/lib/utils/domain-separation.d.ts +31 -0
  199. package/lib/utils/external-keys/gcp-kms.d.ts +53 -0
  200. package/lib/utils/external-keys/gcp-kms.js +328 -0
  201. package/lib/utils/external-keys/passkey-prf.d.ts +1 -3
  202. package/lib/utils/external-keys/passkey-prf.js +6 -0
  203. package/lib/utils/helper.d.ts +1 -0
  204. package/lib/utils/initial.d.ts +3 -2
  205. package/lib/utils/never.d.ts +4 -0
  206. package/lib/vote.d.ts +96 -89
  207. package/npm-shrinkwrap.json +30 -12
  208. package/package.json +2 -2
  209. package/version.d.ts +1 -1
  210. package/docs/interfaces/KeetaNetSDK.Referenced.AccountInfo.html +0 -14
@@ -0,0 +1,328 @@
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ // The require scope
4
+ /******/ var __webpack_require__ = {};
5
+ /******/
6
+ /************************************************************************/
7
+ /******/ /* webpack/runtime/define property getters */
8
+ /******/ (() => {
9
+ /******/ // define getter functions for harmony exports
10
+ /******/ __webpack_require__.d = (exports, definition) => {
11
+ /******/ for(var key in definition) {
12
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
13
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
14
+ /******/ }
15
+ /******/ }
16
+ /******/ };
17
+ /******/ })();
18
+ /******/
19
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
20
+ /******/ (() => {
21
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
22
+ /******/ })();
23
+ /******/
24
+ /******/ /* webpack/runtime/make namespace object */
25
+ /******/ (() => {
26
+ /******/ // define __esModule on exports
27
+ /******/ __webpack_require__.r = (exports) => {
28
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
29
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
30
+ /******/ }
31
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
32
+ /******/ };
33
+ /******/ })();
34
+ /******/
35
+ /************************************************************************/
36
+ var __webpack_exports__ = {};
37
+ __webpack_require__.r(__webpack_exports__);
38
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
39
+ /* harmony export */ KeetaGCPKMSKeyPairFactory: () => (/* binding */ KeetaGCPKMSKeyPairFactory)
40
+ /* harmony export */ });
41
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
42
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
43
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
44
+ /**
45
+ * ExternalKeyPair for the Keeta Network which uses Google Cloud KMS
46
+ * for signing operations. This implementation supports ECDSA keys on
47
+ * both SECP256K1 and SECP256R1 curves, with potential for ED25519
48
+ * support in the future.
49
+ */
50
+
51
+ /**
52
+ * Parse a full KMS key name into its components.
53
+ * Example: projects/<project_name>/locations/<location>/keyRings/<keyRingName>/cryptoKeys/<keyName>
54
+ */
55
+ function parseGCPKMSKeyName(fullName) {
56
+ const pattern = /^projects\/([^/]+)\/locations\/([^/]+)\/keyRings\/([^/]+)\/cryptoKeys\/([^/]+)(?:\/cryptoKeyVersions\/(\d+))?$/;
57
+ const match = fullName.match(pattern);
58
+ if (!match) {
59
+ throw new Error(`Invalid KMS key name format: ${fullName}`);
60
+ }
61
+ const projectId = match[1];
62
+ const locationId = match[2];
63
+ const keyRingId = match[3];
64
+ const keyId = match[4];
65
+ const versionId = match[5];
66
+ if (!projectId || !locationId || !keyRingId || !keyId) {
67
+ throw new Error(`Invalid KMS key name format: ${fullName}`);
68
+ }
69
+ return {
70
+ projectId,
71
+ locationId,
72
+ keyRingId,
73
+ keyId,
74
+ versionId
75
+ };
76
+ }
77
+
78
+ /** @internal */
79
+
80
+ /** @internal */
81
+
82
+ /** @internal */
83
+
84
+ function KeetaGCPKMSKeyPairFactory(packages) {
85
+ let includeTesting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
86
+ if (!packages.KeyManagementServiceClient || !packages.KeetaNet || !packages.crypto) {
87
+ throw new Error('Missing required packages for KeetaGCPKMSKeyPairFactory');
88
+ }
89
+ const KeetaNet = Object.freeze({
90
+ lib: Object.freeze({
91
+ Account: packages.KeetaNet.lib.Account,
92
+ Utils: Object.freeze({
93
+ Helper: Object.freeze({
94
+ bufferToArrayBuffer: packages.KeetaNet.lib.Utils.Helper.bufferToArrayBuffer
95
+ }),
96
+ Buffer: packages.KeetaNet.lib.Utils.Buffer,
97
+ ASN1: packages.KeetaNet.lib.Utils.ASN1
98
+ })
99
+ })
100
+ });
101
+ const crypto = packages.crypto;
102
+ const bufferToArrayBuffer = KeetaNet.lib.Utils.Helper.bufferToArrayBuffer;
103
+ const Buffer = KeetaNet.lib.Utils.Buffer.Buffer;
104
+ const BufferStorage = KeetaNet.lib.Utils.Buffer.BufferStorage;
105
+
106
+ /**
107
+ * Build a full KMS key resource name from components.
108
+ */
109
+ async function buildGCPKMSKeyName(config) {
110
+ var _cryptoKey$primary$na, _cryptoKey$primary;
111
+ let lookupVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
112
+ const base = `projects/${config.projectId}/locations/${config.locationId}/keyRings/${config.keyRingId}/cryptoKeys/${config.keyId}`;
113
+ if (config.versionId) {
114
+ return `${base}/cryptoKeyVersions/${config.versionId}`;
115
+ }
116
+
117
+ /*
118
+ * Just omit the version if it's not requested
119
+ */
120
+ if (!lookupVersion) {
121
+ return base;
122
+ }
123
+
124
+ /*
125
+ * If the versionID is missing, get the latest
126
+ * version from KMS.
127
+ */
128
+ const client = new packages.KeyManagementServiceClient({
129
+ projectId: config.projectId
130
+ });
131
+ const [cryptoKey] = await client.getCryptoKey({
132
+ name: base
133
+ });
134
+ const latestVersionNumber = (_cryptoKey$primary$na = (_cryptoKey$primary = cryptoKey.primary) === null || _cryptoKey$primary === void 0 || (_cryptoKey$primary = _cryptoKey$primary.name) === null || _cryptoKey$primary === void 0 ? void 0 : _cryptoKey$primary.split('/').at(-1)) !== null && _cryptoKey$primary$na !== void 0 ? _cryptoKey$primary$na : '1';
135
+ return `${base}/cryptoKeyVersions/${latestVersionNumber}`;
136
+ }
137
+
138
+ /**
139
+ * Extract raw EC public key bytes from PEM format.
140
+ */
141
+ function extractPublicKeyFromPem(pem, cryptoPkg) {
142
+ const publicKey = cryptoPkg.createPublicKey(pem);
143
+ const jwk = publicKey.export({
144
+ format: "jwk"
145
+ });
146
+ if (typeof jwk !== 'object' || jwk === null) {
147
+ throw new Error("Invalid JWK format");
148
+ }
149
+ if (!('x' in jwk) || !('y' in jwk) || typeof jwk.x !== 'string' || typeof jwk.y !== 'string') {
150
+ throw new Error("Invalid EC public key in JWK format");
151
+ }
152
+ const xBuf = Buffer.from(jwk.x, "base64url");
153
+ const yBuf = Buffer.from(jwk.y, "base64url");
154
+ const uncompressed = new Uint8Array(65);
155
+ uncompressed[0] = 0x04;
156
+ uncompressed.set(xBuf, 1);
157
+ uncompressed.set(yBuf, 33);
158
+ return uncompressed;
159
+ }
160
+
161
+ /**
162
+ * Convert uncompressed public key to compressed format.
163
+ */
164
+ function compressPublicKey(uncompressed) {
165
+ if (uncompressed.length !== 65 || uncompressed[0] !== 0x04) {
166
+ throw new Error("Invalid uncompressed public key format");
167
+ }
168
+ const x = uncompressed.slice(1, 33);
169
+ const y = uncompressed.slice(33, 65);
170
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
171
+ const prefix = (y[31] & 1) === 0 ? 0x02 : 0x03;
172
+ const compressed = new Uint8Array(33);
173
+ compressed[0] = prefix;
174
+ compressed.set(x, 1);
175
+ return compressed;
176
+ }
177
+
178
+ /**
179
+ * Convert DER-encoded ECDSA signature to raw R||S format (64 bytes).
180
+ */
181
+ function derSignatureToRaw(derSig, pkgs) {
182
+ const ValidateASN1 = pkgs.KeetaNet.lib.Utils.ASN1.ValidateASN1;
183
+ const bufferToArrayBufferLocal = pkgs.KeetaNet.lib.Utils.Helper.bufferToArrayBuffer;
184
+ const BufferLocal = pkgs.KeetaNet.lib.Utils.Buffer.Buffer;
185
+ const BufferStorageLocal = pkgs.KeetaNet.lib.Utils.Buffer.BufferStorage;
186
+ const validator = new ValidateASN1({
187
+ type: 'struct',
188
+ fieldNames: ['r', 's'],
189
+ contains: {
190
+ r: ValidateASN1.IsInteger,
191
+ s: ValidateASN1.IsInteger
192
+ }
193
+ });
194
+ const parts = validator.validate(pkgs.KeetaNet.lib.Utils.ASN1.ASN1toJS(bufferToArrayBufferLocal(BufferLocal.from(derSig))));
195
+ const rBuffer = new BufferStorageLocal(parts.contains.r, 32);
196
+ const sBuffer = new BufferStorageLocal(parts.contains.s, 32);
197
+ const r = new Uint8Array(rBuffer.get());
198
+ const s = new Uint8Array(sBuffer.get());
199
+ const rawSig = new Uint8Array(64);
200
+ rawSig.set(r, 0);
201
+ rawSig.set(s, 32);
202
+ return rawSig;
203
+ }
204
+
205
+ /**
206
+ * Detect the key algorithm from the algorithm name or curve name.
207
+ */
208
+ function detectKeyAlgorithm(algorithmOrCurve) {
209
+ if (typeof algorithmOrCurve !== 'string' && algorithmOrCurve !== null && algorithmOrCurve !== undefined) {
210
+ algorithmOrCurve = String(algorithmOrCurve);
211
+ }
212
+ const algoStr = algorithmOrCurve;
213
+ switch (algoStr) {
214
+ case 'EC_SIGN_SECP256K1_SHA256':
215
+ case 'secp256k1':
216
+ return KeetaNet.lib.Account.AccountKeyAlgorithm.ECDSA_SECP256K1;
217
+ case 'EC_SIGN_P256_SHA256':
218
+ case 'prime256v1':
219
+ case 'P-256':
220
+ return KeetaNet.lib.Account.AccountKeyAlgorithm.ECDSA_SECP256R1;
221
+ default:
222
+ throw new Error(`Unsupported algorithm or curve: ${String(algoStr)}`);
223
+ }
224
+ }
225
+
226
+ /**
227
+ * A KeetaNet ExternalKeyPair implementation backed by Google Cloud KMS.
228
+ */
229
+ class KeetaGCPKMSKeyPair extends KeetaNet.lib.Account.ExternalKeyPair {
230
+ /**
231
+ * Creates a new KeetaGCPKMSKeyPair instance with the given
232
+ * parameters. Generally this constructor should not be called
233
+ * directly, as the preferred way to access a key is through
234
+ * the static @see KeetaGCPKMSKeyPair.lookup method.
235
+ */
236
+ constructor(client, keyVersionName, rawPublicKey, keyType) {
237
+ super({
238
+ sign: async (data, options) => {
239
+ // data is already hashed by the SDK (since rawSignatures = false)
240
+ const digest = {
241
+ sha256: Buffer.from(data)
242
+ };
243
+ const [signResponse] = await client.asymmetricSign({
244
+ name: keyVersionName,
245
+ digest: digest
246
+ });
247
+ if (!signResponse.signature) {
248
+ throw new Error("No signature returned from KMS");
249
+ }
250
+ const derSigBuffer = Buffer.from(signResponse.signature);
251
+ if (options !== null && options !== void 0 && options.forCert) {
252
+ return new BufferStorage(derSigBuffer, derSigBuffer.byteLength);
253
+ }
254
+ const derSig = new Uint8Array(derSigBuffer);
255
+ let signature;
256
+ switch (keyType) {
257
+ case KeetaNet.lib.Account.AccountKeyAlgorithm.ECDSA_SECP256K1:
258
+ case KeetaNet.lib.Account.AccountKeyAlgorithm.ECDSA_SECP256R1:
259
+ signature = KeetaNet.lib.Account.KeyPairs[keyType].signatureFromDER([...derSig]);
260
+ break;
261
+ default:
262
+ throw new Error(`Unsupported key type for signature conversion: ${keyType}`);
263
+ }
264
+ return signature;
265
+ },
266
+ supportsEncryption: false
267
+ }, rawPublicKey, keyType, false);
268
+ this.keyName = keyVersionName;
269
+ Object.freeze(this);
270
+ }
271
+
272
+ /**
273
+ * Lookup (or open) an existing GCP KMS key and create a
274
+ * KeetaGCPKMSKeyPair instance for it.
275
+ */
276
+ static async lookup(options) {
277
+ var _options$keyType;
278
+ let keyConfig;
279
+ if (typeof options.key === 'string') {
280
+ keyConfig = parseGCPKMSKeyName(options.key);
281
+ } else {
282
+ keyConfig = options.key;
283
+ }
284
+ const client = new packages.KeyManagementServiceClient({
285
+ projectId: keyConfig.projectId
286
+ });
287
+ const keyVersionName = await buildGCPKMSKeyName(keyConfig);
288
+ const [publicKeyResponse] = await client.getPublicKey({
289
+ name: keyVersionName
290
+ });
291
+ const detectedKeyType = detectKeyAlgorithm(publicKeyResponse.algorithm);
292
+ const keyType = (_options$keyType = options.keyType) !== null && _options$keyType !== void 0 ? _options$keyType : detectedKeyType;
293
+ if (options.keyType !== undefined && options.keyType !== detectedKeyType) {
294
+ throw new Error(`Key type mismatch: expected ${options.keyType}, but KMS key has ${detectedKeyType}`);
295
+ }
296
+ if (!publicKeyResponse.pem) {
297
+ throw new Error("No public key PEM data available from KMS");
298
+ }
299
+ const uncompressedPublicKey = extractPublicKeyFromPem(publicKeyResponse.pem, crypto);
300
+ const compressedPublicKey = compressPublicKey(uncompressedPublicKey);
301
+ return new KeetaGCPKMSKeyPair(client, keyVersionName, bufferToArrayBuffer(Buffer.from(compressedPublicKey)), keyType);
302
+ }
303
+ }
304
+ /** @internal */
305
+ _defineProperty(KeetaGCPKMSKeyPair, "_Testing", {
306
+ parseKeyName: parseGCPKMSKeyName,
307
+ buildKeyName: buildGCPKMSKeyName,
308
+ extractPublicKeyFromPem: extractPublicKeyFromPem,
309
+ derSignatureToRaw: derSignatureToRaw
310
+ });
311
+ if (!includeTesting) {
312
+ /**
313
+ * The _Testing property is only included for testing
314
+ * so remove it if we're not including testing.
315
+ */
316
+ // @ts-ignore
317
+ delete KeetaGCPKMSKeyPair._Testing;
318
+ }
319
+ Object.freeze(KeetaGCPKMSKeyPair);
320
+ Object.freeze(KeetaGCPKMSKeyPair.prototype);
321
+ return KeetaGCPKMSKeyPair;
322
+ }
323
+ Object.freeze(KeetaGCPKMSKeyPairFactory);
324
+ var __webpack_export_target__ = exports;
325
+ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
326
+ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
327
+ /******/ })()
328
+ ;
@@ -150,7 +150,5 @@ interface KeetaPasskeyPRFKeyPairClass {
150
150
  lookup: (options?: KeetaPasskeyPRFKeyPairLookupOptions) => Promise<KeetaPasskeyPRFKeyPair>;
151
151
  generate: (options: KeetaPasskeyPRFKeyPairGenerateOptions) => Promise<KeetaPasskeyPRFKeyPair>;
152
152
  }
153
- export declare function KeetaPasskeyPRFKeyPairFactory(packages: KeetaPasskeyPRFKeyPairPackages, includeTesting: true): Required<KeetaPasskeyPRFKeyPairClass>;
154
- export declare function KeetaPasskeyPRFKeyPairFactory(packages: KeetaPasskeyPRFKeyPairPackages, includeTesting?: false): Omit<KeetaPasskeyPRFKeyPairClass, '_Testing'>;
155
- export declare function KeetaPasskeyPRFKeyPairFactory(packages: KeetaPasskeyPRFKeyPairPackages, includeTesting?: boolean): KeetaPasskeyPRFKeyPairClass;
153
+ export declare function KeetaPasskeyPRFKeyPairFactory(packages: KeetaPasskeyPRFKeyPairPackages): Omit<KeetaPasskeyPRFKeyPairClass, '_Testing'>;
156
154
  export {};
@@ -64,6 +64,12 @@ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.h
64
64
  * credential.
65
65
  */
66
66
 
67
+ /** @internal */
68
+
69
+ /** @internal */
70
+
71
+ /** @internal */
72
+
67
73
  function KeetaPasskeyPRFKeyPairFactory(packages) {
68
74
  var _KeetaPasskeyPRFKeyPair;
69
75
  let includeTesting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -1,6 +1,7 @@
1
1
  import _crypto from 'crypto';
2
2
  import { inspect as nodeUtilsInspect, types as nodeUtilsTypes } from 'util';
3
3
  import type { JSONSerializable } from './conversion';
4
+ export declare function getTypedObjectEntries<T extends object>(obj: T): Array<[keyof T, T[keyof T]]>;
4
5
  export type DistributiveOmit<T, P extends PropertyKey> = T extends T ? Omit<T, P> : never;
5
6
  export declare function validateBase64ToBuffer(input: string): Buffer;
6
7
  export declare function bufferToArrayBuffer(input: Buffer): ArrayBuffer;
@@ -1,6 +1,7 @@
1
+ import type { AccountKeyAlgorithm } from '../account';
1
2
  import Account from '../account';
2
3
  import Block from '../block';
3
- import type { AccountInfo } from '../ledger/types';
4
+ import type { AccountInfoForType } from '../ledger/types';
4
5
  import { Permissions } from '../permissions';
5
6
  import type { VoteStaple } from '../vote';
6
7
  export interface BaseTokenInfo {
@@ -9,7 +10,7 @@ export interface BaseTokenInfo {
9
10
  decimalPlaces: number;
10
11
  defaultPermission?: Permissions;
11
12
  }
12
- export type BaseNetworkInfo = Partial<Pick<AccountInfo, 'name' | 'description' | 'metadata' | 'defaultPermission'>>;
13
+ export type BaseNetworkInfo = Partial<Pick<AccountInfoForType<AccountKeyAlgorithm.NETWORK>, 'name' | 'description' | 'metadata' | 'defaultPermission'>>;
13
14
  interface BaseGenerationConfig {
14
15
  network: bigint;
15
16
  initialTrustedAccount: Account;
@@ -5,3 +5,7 @@
5
5
  * are handled.
6
6
  */
7
7
  export declare function assertNever(value: never): never;
8
+ /**
9
+ * Asserts that the provided type is never.
10
+ */
11
+ export type AssertNever<T extends never> = T;