@originals/sdk 1.2.0 → 1.4.3

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 (401) hide show
  1. package/package.json +4 -1
  2. package/.eslintrc.json +0 -33
  3. package/.turbo/turbo-build.log +0 -1
  4. package/dist/adapters/FeeOracleMock.d.ts +0 -6
  5. package/dist/adapters/FeeOracleMock.js +0 -8
  6. package/dist/adapters/index.d.ts +0 -4
  7. package/dist/adapters/index.js +0 -4
  8. package/dist/adapters/providers/OrdHttpProvider.d.ts +0 -56
  9. package/dist/adapters/providers/OrdHttpProvider.js +0 -110
  10. package/dist/adapters/providers/OrdMockProvider.d.ts +0 -70
  11. package/dist/adapters/providers/OrdMockProvider.js +0 -75
  12. package/dist/adapters/types.d.ts +0 -71
  13. package/dist/adapters/types.js +0 -1
  14. package/dist/bitcoin/BitcoinManager.d.ts +0 -15
  15. package/dist/bitcoin/BitcoinManager.js +0 -262
  16. package/dist/bitcoin/BroadcastClient.d.ts +0 -30
  17. package/dist/bitcoin/BroadcastClient.js +0 -35
  18. package/dist/bitcoin/OrdinalsClient.d.ts +0 -21
  19. package/dist/bitcoin/OrdinalsClient.js +0 -105
  20. package/dist/bitcoin/PSBTBuilder.d.ts +0 -24
  21. package/dist/bitcoin/PSBTBuilder.js +0 -80
  22. package/dist/bitcoin/fee-calculation.d.ts +0 -14
  23. package/dist/bitcoin/fee-calculation.js +0 -31
  24. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +0 -38
  25. package/dist/bitcoin/providers/OrdNodeProvider.js +0 -67
  26. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +0 -33
  27. package/dist/bitcoin/providers/OrdinalsProvider.js +0 -50
  28. package/dist/bitcoin/providers/types.d.ts +0 -63
  29. package/dist/bitcoin/providers/types.js +0 -1
  30. package/dist/bitcoin/transactions/commit.d.ts +0 -89
  31. package/dist/bitcoin/transactions/commit.js +0 -311
  32. package/dist/bitcoin/transactions/index.d.ts +0 -7
  33. package/dist/bitcoin/transactions/index.js +0 -8
  34. package/dist/bitcoin/transfer.d.ts +0 -9
  35. package/dist/bitcoin/transfer.js +0 -26
  36. package/dist/bitcoin/utxo-selection.d.ts +0 -78
  37. package/dist/bitcoin/utxo-selection.js +0 -237
  38. package/dist/bitcoin/utxo.d.ts +0 -26
  39. package/dist/bitcoin/utxo.js +0 -78
  40. package/dist/contexts/credentials-v1.json +0 -195
  41. package/dist/contexts/credentials-v2-examples.json +0 -5
  42. package/dist/contexts/credentials-v2.json +0 -301
  43. package/dist/contexts/credentials.json +0 -195
  44. package/dist/contexts/data-integrity-v2.json +0 -81
  45. package/dist/contexts/dids.json +0 -57
  46. package/dist/contexts/ed255192020.json +0 -93
  47. package/dist/contexts/ordinals-plus.json +0 -23
  48. package/dist/contexts/originals.json +0 -22
  49. package/dist/core/OriginalsSDK.d.ts +0 -158
  50. package/dist/core/OriginalsSDK.js +0 -274
  51. package/dist/crypto/Multikey.d.ts +0 -30
  52. package/dist/crypto/Multikey.js +0 -149
  53. package/dist/crypto/Signer.d.ts +0 -21
  54. package/dist/crypto/Signer.js +0 -196
  55. package/dist/crypto/noble-init.d.ts +0 -18
  56. package/dist/crypto/noble-init.js +0 -106
  57. package/dist/did/BtcoDidResolver.d.ts +0 -57
  58. package/dist/did/BtcoDidResolver.js +0 -166
  59. package/dist/did/DIDManager.d.ts +0 -101
  60. package/dist/did/DIDManager.js +0 -493
  61. package/dist/did/Ed25519Verifier.d.ts +0 -30
  62. package/dist/did/Ed25519Verifier.js +0 -59
  63. package/dist/did/KeyManager.d.ts +0 -17
  64. package/dist/did/KeyManager.js +0 -207
  65. package/dist/did/WebVHManager.d.ts +0 -100
  66. package/dist/did/WebVHManager.js +0 -304
  67. package/dist/did/createBtcoDidDocument.d.ts +0 -10
  68. package/dist/did/createBtcoDidDocument.js +0 -42
  69. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +0 -23
  70. package/dist/did/providers/OrdinalsClientProviderAdapter.js +0 -51
  71. package/dist/events/EventEmitter.d.ts +0 -115
  72. package/dist/events/EventEmitter.js +0 -198
  73. package/dist/events/index.d.ts +0 -7
  74. package/dist/events/index.js +0 -6
  75. package/dist/events/types.d.ts +0 -286
  76. package/dist/events/types.js +0 -9
  77. package/dist/examples/basic-usage.d.ts +0 -3
  78. package/dist/examples/basic-usage.js +0 -62
  79. package/dist/examples/run.d.ts +0 -1
  80. package/dist/examples/run.js +0 -4
  81. package/dist/index.d.ts +0 -39
  82. package/dist/index.js +0 -47
  83. package/dist/lifecycle/BatchOperations.d.ts +0 -147
  84. package/dist/lifecycle/BatchOperations.js +0 -251
  85. package/dist/lifecycle/LifecycleManager.d.ts +0 -116
  86. package/dist/lifecycle/LifecycleManager.js +0 -971
  87. package/dist/lifecycle/OriginalsAsset.d.ts +0 -164
  88. package/dist/lifecycle/OriginalsAsset.js +0 -380
  89. package/dist/lifecycle/ProvenanceQuery.d.ts +0 -126
  90. package/dist/lifecycle/ProvenanceQuery.js +0 -220
  91. package/dist/lifecycle/ResourceVersioning.d.ts +0 -73
  92. package/dist/lifecycle/ResourceVersioning.js +0 -127
  93. package/dist/migration/MigrationManager.d.ts +0 -86
  94. package/dist/migration/MigrationManager.js +0 -412
  95. package/dist/migration/audit/AuditLogger.d.ts +0 -51
  96. package/dist/migration/audit/AuditLogger.js +0 -156
  97. package/dist/migration/checkpoint/CheckpointManager.d.ts +0 -31
  98. package/dist/migration/checkpoint/CheckpointManager.js +0 -96
  99. package/dist/migration/checkpoint/CheckpointStorage.d.ts +0 -26
  100. package/dist/migration/checkpoint/CheckpointStorage.js +0 -89
  101. package/dist/migration/index.d.ts +0 -22
  102. package/dist/migration/index.js +0 -27
  103. package/dist/migration/operations/BaseMigration.d.ts +0 -48
  104. package/dist/migration/operations/BaseMigration.js +0 -83
  105. package/dist/migration/operations/PeerToBtcoMigration.d.ts +0 -25
  106. package/dist/migration/operations/PeerToBtcoMigration.js +0 -67
  107. package/dist/migration/operations/PeerToWebvhMigration.d.ts +0 -19
  108. package/dist/migration/operations/PeerToWebvhMigration.js +0 -46
  109. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +0 -25
  110. package/dist/migration/operations/WebvhToBtcoMigration.js +0 -67
  111. package/dist/migration/rollback/RollbackManager.d.ts +0 -29
  112. package/dist/migration/rollback/RollbackManager.js +0 -146
  113. package/dist/migration/state/StateMachine.d.ts +0 -25
  114. package/dist/migration/state/StateMachine.js +0 -76
  115. package/dist/migration/state/StateTracker.d.ts +0 -36
  116. package/dist/migration/state/StateTracker.js +0 -123
  117. package/dist/migration/types.d.ts +0 -306
  118. package/dist/migration/types.js +0 -33
  119. package/dist/migration/validation/BitcoinValidator.d.ts +0 -13
  120. package/dist/migration/validation/BitcoinValidator.js +0 -83
  121. package/dist/migration/validation/CredentialValidator.d.ts +0 -13
  122. package/dist/migration/validation/CredentialValidator.js +0 -46
  123. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +0 -16
  124. package/dist/migration/validation/DIDCompatibilityValidator.js +0 -127
  125. package/dist/migration/validation/LifecycleValidator.d.ts +0 -10
  126. package/dist/migration/validation/LifecycleValidator.js +0 -52
  127. package/dist/migration/validation/StorageValidator.d.ts +0 -10
  128. package/dist/migration/validation/StorageValidator.js +0 -65
  129. package/dist/migration/validation/ValidationPipeline.d.ts +0 -29
  130. package/dist/migration/validation/ValidationPipeline.js +0 -180
  131. package/dist/storage/LocalStorageAdapter.d.ts +0 -11
  132. package/dist/storage/LocalStorageAdapter.js +0 -53
  133. package/dist/storage/MemoryStorageAdapter.d.ts +0 -6
  134. package/dist/storage/MemoryStorageAdapter.js +0 -21
  135. package/dist/storage/StorageAdapter.d.ts +0 -16
  136. package/dist/storage/StorageAdapter.js +0 -1
  137. package/dist/storage/index.d.ts +0 -2
  138. package/dist/storage/index.js +0 -2
  139. package/dist/types/bitcoin.d.ts +0 -84
  140. package/dist/types/bitcoin.js +0 -1
  141. package/dist/types/common.d.ts +0 -82
  142. package/dist/types/common.js +0 -1
  143. package/dist/types/credentials.d.ts +0 -75
  144. package/dist/types/credentials.js +0 -1
  145. package/dist/types/did.d.ts +0 -26
  146. package/dist/types/did.js +0 -1
  147. package/dist/types/index.d.ts +0 -5
  148. package/dist/types/index.js +0 -5
  149. package/dist/types/network.d.ts +0 -78
  150. package/dist/types/network.js +0 -145
  151. package/dist/utils/EventLogger.d.ts +0 -71
  152. package/dist/utils/EventLogger.js +0 -232
  153. package/dist/utils/Logger.d.ts +0 -106
  154. package/dist/utils/Logger.js +0 -257
  155. package/dist/utils/MetricsCollector.d.ts +0 -110
  156. package/dist/utils/MetricsCollector.js +0 -264
  157. package/dist/utils/bitcoin-address.d.ts +0 -38
  158. package/dist/utils/bitcoin-address.js +0 -113
  159. package/dist/utils/cbor.d.ts +0 -2
  160. package/dist/utils/cbor.js +0 -9
  161. package/dist/utils/encoding.d.ts +0 -37
  162. package/dist/utils/encoding.js +0 -120
  163. package/dist/utils/hash.d.ts +0 -1
  164. package/dist/utils/hash.js +0 -5
  165. package/dist/utils/retry.d.ts +0 -10
  166. package/dist/utils/retry.js +0 -35
  167. package/dist/utils/satoshi-validation.d.ts +0 -60
  168. package/dist/utils/satoshi-validation.js +0 -156
  169. package/dist/utils/serialization.d.ts +0 -14
  170. package/dist/utils/serialization.js +0 -76
  171. package/dist/utils/telemetry.d.ts +0 -17
  172. package/dist/utils/telemetry.js +0 -24
  173. package/dist/utils/validation.d.ts +0 -5
  174. package/dist/utils/validation.js +0 -98
  175. package/dist/vc/CredentialManager.d.ts +0 -22
  176. package/dist/vc/CredentialManager.js +0 -227
  177. package/dist/vc/Issuer.d.ts +0 -27
  178. package/dist/vc/Issuer.js +0 -70
  179. package/dist/vc/Verifier.d.ts +0 -16
  180. package/dist/vc/Verifier.js +0 -50
  181. package/dist/vc/cryptosuites/bbs.d.ts +0 -44
  182. package/dist/vc/cryptosuites/bbs.js +0 -213
  183. package/dist/vc/cryptosuites/bbsSimple.d.ts +0 -9
  184. package/dist/vc/cryptosuites/bbsSimple.js +0 -12
  185. package/dist/vc/cryptosuites/eddsa.d.ts +0 -30
  186. package/dist/vc/cryptosuites/eddsa.js +0 -81
  187. package/dist/vc/documentLoader.d.ts +0 -16
  188. package/dist/vc/documentLoader.js +0 -59
  189. package/dist/vc/proofs/data-integrity.d.ts +0 -21
  190. package/dist/vc/proofs/data-integrity.js +0 -15
  191. package/dist/vc/utils/jsonld.d.ts +0 -2
  192. package/dist/vc/utils/jsonld.js +0 -15
  193. package/src/adapters/FeeOracleMock.ts +0 -9
  194. package/src/adapters/index.ts +0 -5
  195. package/src/adapters/providers/OrdHttpProvider.ts +0 -126
  196. package/src/adapters/providers/OrdMockProvider.ts +0 -101
  197. package/src/adapters/types.ts +0 -66
  198. package/src/bitcoin/BitcoinManager.ts +0 -330
  199. package/src/bitcoin/BroadcastClient.ts +0 -54
  200. package/src/bitcoin/OrdinalsClient.ts +0 -119
  201. package/src/bitcoin/PSBTBuilder.ts +0 -106
  202. package/src/bitcoin/fee-calculation.ts +0 -38
  203. package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
  204. package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
  205. package/src/bitcoin/providers/types.ts +0 -59
  206. package/src/bitcoin/transactions/commit.ts +0 -465
  207. package/src/bitcoin/transactions/index.ts +0 -13
  208. package/src/bitcoin/transfer.ts +0 -43
  209. package/src/bitcoin/utxo-selection.ts +0 -322
  210. package/src/bitcoin/utxo.ts +0 -113
  211. package/src/contexts/credentials-v1.json +0 -237
  212. package/src/contexts/credentials-v2-examples.json +0 -5
  213. package/src/contexts/credentials-v2.json +0 -340
  214. package/src/contexts/credentials.json +0 -237
  215. package/src/contexts/data-integrity-v2.json +0 -81
  216. package/src/contexts/dids.json +0 -58
  217. package/src/contexts/ed255192020.json +0 -93
  218. package/src/contexts/ordinals-plus.json +0 -23
  219. package/src/contexts/originals.json +0 -22
  220. package/src/core/OriginalsSDK.ts +0 -416
  221. package/src/crypto/Multikey.ts +0 -194
  222. package/src/crypto/Signer.ts +0 -254
  223. package/src/crypto/noble-init.ts +0 -121
  224. package/src/did/BtcoDidResolver.ts +0 -227
  225. package/src/did/DIDManager.ts +0 -694
  226. package/src/did/Ed25519Verifier.ts +0 -68
  227. package/src/did/KeyManager.ts +0 -236
  228. package/src/did/WebVHManager.ts +0 -489
  229. package/src/did/createBtcoDidDocument.ts +0 -59
  230. package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
  231. package/src/events/EventEmitter.ts +0 -222
  232. package/src/events/index.ts +0 -19
  233. package/src/events/types.ts +0 -331
  234. package/src/examples/basic-usage.ts +0 -78
  235. package/src/examples/run.ts +0 -5
  236. package/src/index.ts +0 -84
  237. package/src/lifecycle/BatchOperations.ts +0 -373
  238. package/src/lifecycle/LifecycleManager.ts +0 -1218
  239. package/src/lifecycle/OriginalsAsset.ts +0 -524
  240. package/src/lifecycle/ProvenanceQuery.ts +0 -280
  241. package/src/lifecycle/ResourceVersioning.ts +0 -163
  242. package/src/migration/MigrationManager.ts +0 -527
  243. package/src/migration/audit/AuditLogger.ts +0 -176
  244. package/src/migration/checkpoint/CheckpointManager.ts +0 -112
  245. package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
  246. package/src/migration/index.ts +0 -33
  247. package/src/migration/operations/BaseMigration.ts +0 -126
  248. package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
  249. package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
  250. package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
  251. package/src/migration/rollback/RollbackManager.ts +0 -170
  252. package/src/migration/state/StateMachine.ts +0 -92
  253. package/src/migration/state/StateTracker.ts +0 -156
  254. package/src/migration/types.ts +0 -344
  255. package/src/migration/validation/BitcoinValidator.ts +0 -107
  256. package/src/migration/validation/CredentialValidator.ts +0 -62
  257. package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
  258. package/src/migration/validation/LifecycleValidator.ts +0 -64
  259. package/src/migration/validation/StorageValidator.ts +0 -79
  260. package/src/migration/validation/ValidationPipeline.ts +0 -213
  261. package/src/storage/LocalStorageAdapter.ts +0 -61
  262. package/src/storage/MemoryStorageAdapter.ts +0 -29
  263. package/src/storage/StorageAdapter.ts +0 -25
  264. package/src/storage/index.ts +0 -3
  265. package/src/types/bitcoin.ts +0 -98
  266. package/src/types/common.ts +0 -92
  267. package/src/types/credentials.ts +0 -88
  268. package/src/types/did.ts +0 -31
  269. package/src/types/external-shims.d.ts +0 -53
  270. package/src/types/index.ts +0 -7
  271. package/src/types/network.ts +0 -175
  272. package/src/utils/EventLogger.ts +0 -298
  273. package/src/utils/Logger.ts +0 -322
  274. package/src/utils/MetricsCollector.ts +0 -358
  275. package/src/utils/bitcoin-address.ts +0 -130
  276. package/src/utils/cbor.ts +0 -12
  277. package/src/utils/encoding.ts +0 -127
  278. package/src/utils/hash.ts +0 -6
  279. package/src/utils/retry.ts +0 -46
  280. package/src/utils/satoshi-validation.ts +0 -196
  281. package/src/utils/serialization.ts +0 -96
  282. package/src/utils/telemetry.ts +0 -40
  283. package/src/utils/validation.ts +0 -119
  284. package/src/vc/CredentialManager.ts +0 -273
  285. package/src/vc/Issuer.ts +0 -100
  286. package/src/vc/Verifier.ts +0 -47
  287. package/src/vc/cryptosuites/bbs.ts +0 -253
  288. package/src/vc/cryptosuites/bbsSimple.ts +0 -21
  289. package/src/vc/cryptosuites/eddsa.ts +0 -99
  290. package/src/vc/documentLoader.ts +0 -67
  291. package/src/vc/proofs/data-integrity.ts +0 -33
  292. package/src/vc/utils/jsonld.ts +0 -18
  293. package/test/logs/did_webvh_QmNTn9Kkp8dQ75WrF9xqJ2kuDp9QhKc3aPiERRMj8XoTBN_example_com.jsonl +0 -1
  294. package/test/logs/did_webvh_QmNu4MNr8Lr5txx5gYNhuhZDchXsZEu3hJXKYuphpWTPDp_example_com_users_etc_passwd.jsonl +0 -1
  295. package/test/logs/did_webvh_QmR9MrGZACzjKETA8SBRNCKG11HxU85c4bVR2qN5eDCfsD_example_com.jsonl +0 -1
  296. package/test/logs/did_webvh_QmUc5suaqRM2P4nrXxZwqYMfqzhdMqjuL7oJaJbEpCQVCd_example_com_users_etc_passwd.jsonl +0 -1
  297. package/test/logs/did_webvh_QmUkiB2RCV2VZ1RTXsCebWN25Eiy9TLvpzDWAJNjhgvB4X_example_com_etc_passwd.jsonl +0 -1
  298. package/test/logs/did_webvh_QmUoRTe8UMwpAQXZSAW7pjAgZK1tq2X3C6Kfxq3UXGcaGy_example_com_secret.jsonl +0 -1
  299. package/test/logs/did_webvh_QmWWot3chx1t6KwTmcE5i2FeDZ5JMkQw3qXycsKDVmJ9Be_example_com_users_alice.jsonl +0 -1
  300. package/test/logs/did_webvh_QmWvVgALL5kjZdpgR7KZay7J8UiiUr834kkRmWeFAxjAuC_example_com_users_etc_passwd.jsonl +0 -1
  301. package/test/logs/did_webvh_QmWwaRQHUZAFcKihFC6xR6tRTTrQhHPTku6azf1egWbpy1_example_com_users_alice.jsonl +0 -1
  302. package/test/logs/did_webvh_QmXJLtkz23r7AozbtXsZMKWnVU6rd38CkVtjdWuATU3Yp6_example_com_users_alice123_profile.jsonl +0 -1
  303. package/test/logs/did_webvh_QmYsce448po14oDE1wXbyaP6wY9HQgHSKLwdezn1k577SF_example_com_my_org_user_name_test_123.jsonl +0 -1
  304. package/test/logs/did_webvh_QmZBeNzzqajxdfwcDUPZ4P8C5YSXyRztrAwmPiKuKUxmAK_example_com.jsonl +0 -1
  305. package/test/logs/did_webvh_QmZhJsqxizwVbRtqCUkmE6XQunSxtxMt3gbTYadVBNAaEq_example_com.jsonl +0 -1
  306. package/test/logs/did_webvh_QmZk7NHU2D57RzzbMq4tWW9gBa9AqtVTWfiRM6RFdwGVj2_example_com.jsonl +0 -1
  307. package/test/logs/did_webvh_QmZshSXp9w8ovH62zGGBS1b5pGGPsuYiu1VQ935sga2hWF_example_com_level1_level2.jsonl +0 -1
  308. package/test/logs/did_webvh_QmbWAmw7HQL7vKJyCsctZihXf1rmT4sGvggKCPKWcUWjw1_example_com.jsonl +0 -1
  309. package/test/logs/did_webvh_QmbdLUMbYs3juR39TLB6hhrFWLcNg45ybUzeBJCS1MhCh1_example_com_C_Windows_System32.jsonl +0 -1
  310. package/test/logs/did_webvh_QmcaQ1Ma4gkSbae85aCm8Mv4rvdT2Sb2RR3JzYwrm5XBq8_example_com_etc_passwd.jsonl +0 -1
  311. package/test/logs/did_webvh_QmcbA7WQhsBqZSoDpKJHjV8Q5o53h8vmgJhQfo6rqTY5ho_example_com.jsonl +0 -1
  312. package/test/logs/did_webvh_Qmdy8uWr2gkUJrXsThynAug3DASTWwb3onEj89LKmMGZYB_example_com.jsonl +0 -1
  313. package/tests/__mocks__/bbs-signatures.js +0 -17
  314. package/tests/__mocks__/mf-base58.js +0 -24
  315. package/tests/e2e/README.md +0 -97
  316. package/tests/e2e/example.spec.ts +0 -78
  317. package/tests/fixtures/did-documents.ts +0 -247
  318. package/tests/index.test.ts +0 -21
  319. package/tests/integration/BatchOperations.test.ts +0 -531
  320. package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
  321. package/tests/integration/CredentialManager.test.ts +0 -42
  322. package/tests/integration/DIDManager.test.ts +0 -41
  323. package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
  324. package/tests/integration/Events.test.ts +0 -435
  325. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
  326. package/tests/integration/LifecycleManager.test.ts +0 -21
  327. package/tests/integration/MultikeyFlow.test.ts +0 -52
  328. package/tests/integration/TelemetryIntegration.test.ts +0 -395
  329. package/tests/integration/WebVhPublish.test.ts +0 -48
  330. package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
  331. package/tests/manual/test-commit-creation.ts +0 -323
  332. package/tests/mocks/MockKeyStore.ts +0 -38
  333. package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
  334. package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
  335. package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
  336. package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
  337. package/tests/mocks/adapters/index.ts +0 -6
  338. package/tests/performance/BatchOperations.perf.test.ts +0 -403
  339. package/tests/performance/logging.perf.test.ts +0 -336
  340. package/tests/sdk.test.ts +0 -43
  341. package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
  342. package/tests/setup.bun.ts +0 -69
  343. package/tests/setup.jest.ts +0 -23
  344. package/tests/stress/batch-operations-stress.test.ts +0 -571
  345. package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
  346. package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
  347. package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
  348. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
  349. package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
  350. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
  351. package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
  352. package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
  353. package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
  354. package/tests/unit/bitcoin/transfer.test.ts +0 -31
  355. package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
  356. package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
  357. package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
  358. package/tests/unit/core/OriginalsSDK.test.ts +0 -152
  359. package/tests/unit/crypto/Multikey.test.ts +0 -206
  360. package/tests/unit/crypto/Signer.test.ts +0 -408
  361. package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
  362. package/tests/unit/did/DIDManager.more.test.ts +0 -43
  363. package/tests/unit/did/DIDManager.test.ts +0 -185
  364. package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
  365. package/tests/unit/did/KeyManager.test.ts +0 -452
  366. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
  367. package/tests/unit/did/WebVHManager.test.ts +0 -435
  368. package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
  369. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
  370. package/tests/unit/events/EventEmitter.test.ts +0 -407
  371. package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
  372. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
  373. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
  374. package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
  375. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
  376. package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
  377. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
  378. package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
  379. package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
  380. package/tests/unit/types/network.test.ts +0 -255
  381. package/tests/unit/utils/EventIntegration.test.ts +0 -384
  382. package/tests/unit/utils/Logger.test.ts +0 -473
  383. package/tests/unit/utils/MetricsCollector.test.ts +0 -358
  384. package/tests/unit/utils/bitcoin-address.test.ts +0 -250
  385. package/tests/unit/utils/cbor.test.ts +0 -35
  386. package/tests/unit/utils/encoding.test.ts +0 -318
  387. package/tests/unit/utils/hash.test.ts +0 -12
  388. package/tests/unit/utils/retry.test.ts +0 -100
  389. package/tests/unit/utils/satoshi-validation.test.ts +0 -354
  390. package/tests/unit/utils/serialization.test.ts +0 -124
  391. package/tests/unit/utils/telemetry.test.ts +0 -52
  392. package/tests/unit/utils/validation.test.ts +0 -141
  393. package/tests/unit/vc/CredentialManager.test.ts +0 -487
  394. package/tests/unit/vc/Issuer.test.ts +0 -107
  395. package/tests/unit/vc/Verifier.test.ts +0 -525
  396. package/tests/unit/vc/bbs.test.ts +0 -282
  397. package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
  398. package/tests/unit/vc/documentLoader.test.ts +0 -121
  399. package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
  400. package/tsconfig.json +0 -31
  401. package/tsconfig.test.json +0 -15
@@ -1,493 +0,0 @@
1
- import { getNetworkDomain, DEFAULT_WEBVH_NETWORK, getBitcoinNetworkForWebVH } from '../types/network';
2
- import { BtcoDidResolver } from './BtcoDidResolver';
3
- import { OrdinalsClient } from '../bitcoin/OrdinalsClient';
4
- import { createBtcoDidDocument } from './createBtcoDidDocument';
5
- import { OrdinalsClientProviderAdapter } from './providers/OrdinalsClientProviderAdapter';
6
- import { multikey } from '../crypto/Multikey';
7
- import { KeyManager } from './KeyManager';
8
- import { Ed25519Signer } from '../crypto/Signer';
9
- import { validateSatoshiNumber, MAX_SATOSHI_SUPPLY } from '../utils/satoshi-validation';
10
- import * as fs from 'fs';
11
- import * as path from 'path';
12
- export class DIDManager {
13
- constructor(config) {
14
- this.config = config;
15
- }
16
- async createDIDPeer(resources, returnKeyPair) {
17
- // Generate a multikey keypair according to configured defaultKeyType
18
- const keyManager = new KeyManager();
19
- const desiredType = this.config.defaultKeyType || 'ES256K';
20
- const keyPair = await keyManager.generateKeyPair(desiredType);
21
- // Use @aviarytech/did-peer to create a did:peer (variant 4 long-form for full VM+context)
22
- const didPeerMod = await import('@aviarytech/did-peer');
23
- const did = await didPeerMod.createNumAlgo4([
24
- {
25
- // type validated by the library; controller/id not required
26
- type: 'Multikey',
27
- publicKeyMultibase: keyPair.publicKey
28
- }
29
- ], undefined, undefined);
30
- // Resolve to DID Document using the same library
31
- const resolved = await didPeerMod.resolve(did);
32
- // Ensure controller is set on VM entries for compatibility
33
- if (resolved && Array.isArray(resolved.verificationMethod)) {
34
- resolved.verificationMethod = resolved.verificationMethod.map((vm) => ({
35
- controller: did,
36
- ...vm
37
- }));
38
- }
39
- // Ensure relationships exist and reference a VM
40
- const vmIds = Array.isArray(resolved?.verificationMethod)
41
- ? resolved.verificationMethod.map((vm) => vm.id).filter(Boolean)
42
- : [];
43
- if (!resolved.authentication || resolved.authentication.length === 0) {
44
- if (vmIds.length > 0)
45
- resolved.authentication = [vmIds[0]];
46
- }
47
- if (!resolved.assertionMethod || resolved.assertionMethod.length === 0) {
48
- resolved.assertionMethod = resolved.authentication || (vmIds.length > 0 ? [vmIds[0]] : []);
49
- }
50
- if (returnKeyPair) {
51
- return { didDocument: resolved, keyPair };
52
- }
53
- return resolved;
54
- }
55
- async migrateToDIDWebVH(didDoc, domain) {
56
- // Use provided domain or get default from configured network
57
- const network = this.config.webvhNetwork || DEFAULT_WEBVH_NETWORK;
58
- const targetDomain = domain || getNetworkDomain(network);
59
- // Flexible domain validation - allow development domains with ports
60
- const normalized = String(targetDomain || '').trim().toLowerCase();
61
- // Split domain and port if present
62
- const [domainPart, portPart] = normalized.split(':');
63
- // Validate port if present
64
- if (portPart && (!/^\d+$/.test(portPart) || parseInt(portPart) < 1 || parseInt(portPart) > 65535)) {
65
- throw new Error(`Invalid domain: ${domain} - invalid port`);
66
- }
67
- // Allow localhost and IP addresses for development
68
- const isLocalhost = domainPart === 'localhost';
69
- const isIP = /^(\d{1,3}\.){3}\d{1,3}$/.test(domainPart);
70
- if (!isLocalhost && !isIP) {
71
- // For non-localhost domains, require proper domain format
72
- const label = '[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?';
73
- const domainRegex = new RegExp(`^(?=.{1,253}$)(?:${label})(?:\\.(?:${label}))+?$`, 'i');
74
- if (!domainRegex.test(domainPart)) {
75
- throw new Error('Invalid domain');
76
- }
77
- }
78
- // Stable slug derived from original peer DID suffix (or last segment)
79
- const parts = (didDoc.id || '').split(':');
80
- const method = parts.slice(0, 2).join(':');
81
- const originalSuffix = method === 'did:peer' ? parts.slice(2).join(':') : parts[parts.length - 1];
82
- const slug = (originalSuffix || '')
83
- .toString()
84
- .trim()
85
- .replace(/[^a-zA-Z0-9._-]/g, '-')
86
- .toLowerCase();
87
- const migrated = {
88
- ...didDoc,
89
- id: `did:webvh:${normalized}:${slug}`
90
- };
91
- return migrated;
92
- }
93
- async migrateToDIDBTCO(didDoc, satoshi) {
94
- // Validate satoshi parameter
95
- const validation = validateSatoshiNumber(satoshi);
96
- if (!validation.valid) {
97
- throw new Error(`Invalid satoshi identifier: ${validation.error}`);
98
- }
99
- // Additional range validation for positive values within Bitcoin supply
100
- const satoshiNum = Number(satoshi);
101
- if (satoshiNum < 0) {
102
- throw new Error('Satoshi identifier must be positive (>= 0)');
103
- }
104
- if (satoshiNum > MAX_SATOSHI_SUPPLY) {
105
- throw new Error(`Satoshi identifier must be within Bitcoin's total supply (0 to ${MAX_SATOSHI_SUPPLY.toLocaleString()})`);
106
- }
107
- // Determine Bitcoin network from WebVH network configuration if available
108
- // This ensures consistent environment mapping: magby→regtest, cleffa→signet, pichu→mainnet
109
- let network;
110
- if (this.config.webvhNetwork) {
111
- network = getBitcoinNetworkForWebVH(this.config.webvhNetwork);
112
- }
113
- else {
114
- // Fall back to explicit network config
115
- network = this.config.network || 'mainnet';
116
- }
117
- // Try to carry over the first multikey VM if present
118
- const firstVm = (didDoc.verificationMethod && didDoc.verificationMethod[0]);
119
- let publicKey;
120
- let keyType;
121
- try {
122
- if (firstVm && firstVm.publicKeyMultibase) {
123
- const decoded = multikey.decodePublicKey(firstVm.publicKeyMultibase);
124
- publicKey = decoded.key;
125
- keyType = decoded.type;
126
- }
127
- }
128
- catch (err) {
129
- // Unable to decode public key from verification method; will proceed without key material
130
- if (this.config.enableLogging) {
131
- console.warn('Failed to decode verification method public key:', err);
132
- }
133
- }
134
- // If no key material is available, generate a minimal btco DID doc without keys
135
- let btcoDoc;
136
- if (publicKey && keyType) {
137
- btcoDoc = createBtcoDidDocument(satoshi, network, { publicKey, keyType });
138
- }
139
- else {
140
- const prefix = network === 'mainnet' ? 'did:btco:' : network === 'regtest' ? 'did:btco:reg:' : 'did:btco:sig:';
141
- btcoDoc = {
142
- '@context': ['https://www.w3.org/ns/did/v1'],
143
- id: prefix + String(satoshi)
144
- };
145
- }
146
- // Carry over service endpoints if present
147
- if (didDoc.service && didDoc.service.length > 0) {
148
- btcoDoc.service = didDoc.service;
149
- }
150
- return btcoDoc;
151
- }
152
- async resolveDID(did) {
153
- try {
154
- if (did.startsWith('did:peer:')) {
155
- try {
156
- const mod = await import('@aviarytech/did-peer');
157
- const doc = await mod.resolve(did);
158
- return doc;
159
- }
160
- catch (err) {
161
- // Failed to resolve did:peer; returning minimal document
162
- if (this.config.enableLogging) {
163
- console.warn('Failed to resolve did:peer:', err);
164
- }
165
- }
166
- return { '@context': ['https://www.w3.org/ns/did/v1'], id: did };
167
- }
168
- if (did.startsWith('did:btco:') || did.startsWith('did:btco:test:') || did.startsWith('did:btco:sig:')) {
169
- const rpcUrl = this.config.bitcoinRpcUrl || 'http://localhost:3000';
170
- const network = this.config.network || 'mainnet';
171
- const client = new OrdinalsClient(rpcUrl, network);
172
- const adapter = new OrdinalsClientProviderAdapter(client, rpcUrl);
173
- const resolver = new BtcoDidResolver({ provider: adapter });
174
- const result = await resolver.resolve(did);
175
- return result.didDocument || null;
176
- }
177
- if (did.startsWith('did:webvh:')) {
178
- try {
179
- const mod = await import('didwebvh-ts');
180
- if (mod && typeof mod.resolveDID === 'function') {
181
- const result = await mod.resolveDID(did);
182
- if (result && result.doc)
183
- return result.doc;
184
- }
185
- }
186
- catch (err) {
187
- // Failed to resolve did:webvh; returning minimal document
188
- if (this.config.enableLogging) {
189
- console.warn('Failed to resolve did:webvh:', err);
190
- }
191
- }
192
- return { '@context': ['https://www.w3.org/ns/did/v1'], id: did };
193
- }
194
- return { '@context': ['https://www.w3.org/ns/did/v1'], id: did };
195
- }
196
- catch (err) {
197
- // DID resolution failed
198
- if (this.config.enableLogging) {
199
- console.error('Failed to resolve DID:', err);
200
- }
201
- return null;
202
- }
203
- }
204
- validateDIDDocument(didDoc) {
205
- return !!didDoc.id && Array.isArray(didDoc['@context']);
206
- }
207
- getLayerFromDID(did) {
208
- if (did.startsWith('did:peer:'))
209
- return 'did:peer';
210
- if (did.startsWith('did:webvh:'))
211
- return 'did:webvh';
212
- if (did.startsWith('did:btco:'))
213
- return 'did:btco';
214
- throw new Error('Unsupported DID method');
215
- }
216
- createBtcoDidDocument(satNumber, network, options) {
217
- return createBtcoDidDocument(satNumber, network, options);
218
- }
219
- // ========================================================================
220
- // DID:WebVH Methods
221
- // ========================================================================
222
- /**
223
- * Creates a new did:webvh DID with proper cryptographic signing
224
- * @param options - Creation options including domain and optional key pair or external signer
225
- * @returns The created DID, document, log, and key pair (if generated)
226
- */
227
- async createDIDWebVH(options) {
228
- const { domain: providedDomain, keyPair: providedKeyPair, paths = [], portable = false, outputDir, externalSigner, externalVerifier, verificationMethods: providedVerificationMethods, updateKeys: providedUpdateKeys } = options;
229
- // Use provided domain or get default from configured network
230
- const network = this.config.webvhNetwork || DEFAULT_WEBVH_NETWORK;
231
- const domain = providedDomain || getNetworkDomain(network);
232
- // Dynamically import didwebvh-ts to avoid module resolution issues
233
- const mod = await import('didwebvh-ts');
234
- const { createDID, prepareDataForSigning } = mod;
235
- // Runtime validation of imported module
236
- if (typeof createDID !== 'function' || typeof prepareDataForSigning !== 'function') {
237
- throw new Error('Failed to load didwebvh-ts: invalid module exports');
238
- }
239
- let signer;
240
- let verifier;
241
- let keyPair;
242
- let verificationMethods;
243
- let updateKeys;
244
- // Use external signer if provided (e.g., Privy integration)
245
- if (externalSigner) {
246
- if (!providedVerificationMethods || providedVerificationMethods.length === 0) {
247
- throw new Error('verificationMethods are required when using externalSigner');
248
- }
249
- if (!providedUpdateKeys || providedUpdateKeys.length === 0) {
250
- throw new Error('updateKeys are required when using externalSigner');
251
- }
252
- signer = externalSigner;
253
- verifier = externalVerifier || externalSigner; // Use signer as verifier if not provided
254
- verificationMethods = providedVerificationMethods;
255
- updateKeys = providedUpdateKeys;
256
- keyPair = undefined; // No key pair when using external signer
257
- }
258
- else {
259
- // Generate or use provided key pair (Ed25519 for did:webvh)
260
- const keyManager = new KeyManager();
261
- keyPair = providedKeyPair || await keyManager.generateKeyPair('Ed25519');
262
- // Create verification methods
263
- verificationMethods = [
264
- {
265
- type: 'Multikey',
266
- publicKeyMultibase: keyPair.publicKey,
267
- }
268
- ];
269
- // Create signer using our adapter
270
- const internalSigner = new OriginalsWebVHSigner(keyPair.privateKey, verificationMethods[0], prepareDataForSigning, { verificationMethod: verificationMethods[0] });
271
- signer = internalSigner;
272
- verifier = internalSigner; // Use the same signer as verifier
273
- updateKeys = [`did:key:${keyPair.publicKey}`]; // Use did:key format for authorization
274
- }
275
- // Create the DID using didwebvh-ts
276
- const result = await createDID({
277
- domain,
278
- signer,
279
- verifier,
280
- updateKeys,
281
- verificationMethods,
282
- context: [
283
- 'https://www.w3.org/ns/did/v1',
284
- 'https://w3id.org/security/multikey/v1'
285
- ],
286
- paths,
287
- portable,
288
- authentication: ['#key-0'],
289
- assertionMethod: ['#key-0'],
290
- });
291
- // Validate the returned DID document
292
- if (!this.validateDIDDocument(result.doc)) {
293
- throw new Error('Invalid DID document returned from createDID');
294
- }
295
- // Save the log to did.jsonl if output directory is provided
296
- let logPath;
297
- if (outputDir) {
298
- logPath = await this.saveDIDLog(result.did, result.log, outputDir);
299
- }
300
- return {
301
- did: result.did,
302
- didDocument: result.doc,
303
- log: result.log,
304
- keyPair: keyPair || { publicKey: '', privateKey: '' }, // Return empty keypair if using external signer
305
- logPath,
306
- };
307
- }
308
- /**
309
- * Updates a DID:WebVH document
310
- * @param options - Update options
311
- * @returns Updated DID document and log
312
- */
313
- async updateDIDWebVH(options) {
314
- const { did, currentLog, updates, signer: providedSigner, verifier: providedVerifier, outputDir } = options;
315
- // Dynamically import didwebvh-ts
316
- const mod = await import('didwebvh-ts');
317
- const { updateDID, prepareDataForSigning } = mod;
318
- if (typeof updateDID !== 'function') {
319
- throw new Error('Failed to load didwebvh-ts: invalid module exports');
320
- }
321
- let signer;
322
- let verifier;
323
- // Check if using external signer or internal keypair
324
- if ('sign' in providedSigner && 'getVerificationMethodId' in providedSigner) {
325
- // External signer
326
- signer = providedSigner;
327
- verifier = providedVerifier;
328
- }
329
- else {
330
- // Internal signer with keypair
331
- const keyPair = providedSigner;
332
- const verificationMethod = {
333
- type: 'Multikey',
334
- publicKeyMultibase: keyPair.publicKey,
335
- };
336
- const internalSigner = new OriginalsWebVHSigner(keyPair.privateKey, verificationMethod, prepareDataForSigning, { verificationMethod });
337
- signer = internalSigner;
338
- verifier = internalSigner;
339
- }
340
- // Get the current document from the log
341
- const currentEntry = currentLog[currentLog.length - 1];
342
- const currentDoc = currentEntry.state;
343
- // Merge updates with current document
344
- const updatedDoc = {
345
- ...currentDoc,
346
- ...updates,
347
- id: did, // Ensure ID doesn't change
348
- };
349
- // Update the DID using didwebvh-ts
350
- const result = await updateDID({
351
- log: currentLog,
352
- doc: updatedDoc,
353
- signer,
354
- verifier,
355
- });
356
- // Validate the returned DID document
357
- if (!this.validateDIDDocument(result.doc)) {
358
- throw new Error('Invalid DID document returned from updateDID');
359
- }
360
- // Save the updated log if output directory is provided
361
- let logPath;
362
- if (outputDir) {
363
- logPath = await this.saveDIDLog(did, result.log, outputDir);
364
- }
365
- return {
366
- didDocument: result.doc,
367
- log: result.log,
368
- logPath,
369
- };
370
- }
371
- /**
372
- * Saves the DID log to the appropriate did.jsonl path
373
- * @param did - The DID identifier
374
- * @param log - The DID log to save
375
- * @param baseDir - Base directory for saving (e.g., public/.well-known)
376
- * @returns The full path where the log was saved
377
- */
378
- async saveDIDLog(did, log, baseDir) {
379
- // Parse the DID to extract domain and path components
380
- // Format: did:webvh:domain[:port]:path1:path2...
381
- const didParts = did.split(':');
382
- if (didParts.length < 3 || didParts[0] !== 'did' || didParts[1] !== 'webvh') {
383
- throw new Error('Invalid did:webvh format');
384
- }
385
- // Extract path parts (everything after domain)
386
- const pathParts = didParts.slice(3);
387
- // Validate all path segments to prevent directory traversal
388
- for (const segment of pathParts) {
389
- if (!this.isValidPathSegment(segment)) {
390
- throw new Error(`Invalid path segment in DID: "${segment}". Path segments cannot contain '.', '..', path separators, or be absolute paths.`);
391
- }
392
- }
393
- // Extract and sanitize domain for filesystem safety
394
- const rawDomain = decodeURIComponent(didParts[2]);
395
- // Normalize: lowercase and replace any characters not in [a-z0-9._-] with '_'
396
- const safeDomain = rawDomain
397
- .toLowerCase()
398
- .replace(/[^a-z0-9._-]/g, '_');
399
- // Validate the sanitized domain (reject '..' and other dangerous patterns)
400
- if (!this.isValidPathSegment(safeDomain)) {
401
- throw new Error(`Invalid domain segment in DID: "${rawDomain}"`);
402
- }
403
- // Construct the file path with domain isolation
404
- // For did:webvh:example.com:user:alice -> baseDir/did/example.com/user/alice/did.jsonl
405
- // For did:webvh:example.com:alice -> baseDir/did/example.com/alice/did.jsonl
406
- const segments = [safeDomain, ...pathParts];
407
- const didPath = path.join(baseDir, 'did', ...segments, 'did.jsonl');
408
- // Verify the resolved path is still within baseDir (defense in depth)
409
- const resolvedBaseDir = path.resolve(baseDir);
410
- const resolvedPath = path.resolve(didPath);
411
- const relativePath = path.relative(resolvedBaseDir, resolvedPath);
412
- if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
413
- throw new Error('Invalid DID path: resolved path is outside base directory');
414
- }
415
- // Create directories if they don't exist
416
- const dirPath = path.dirname(didPath);
417
- await fs.promises.mkdir(dirPath, { recursive: true });
418
- // Convert log to JSONL format (one JSON object per line)
419
- const jsonlContent = log.map((entry) => JSON.stringify(entry)).join('\n');
420
- // Write the log file
421
- await fs.promises.writeFile(didPath, jsonlContent, 'utf8');
422
- return didPath;
423
- }
424
- /**
425
- * Loads a DID log from a did.jsonl file
426
- * @param logPath - Path to the did.jsonl file
427
- * @returns The loaded DID log
428
- */
429
- async loadDIDLog(logPath) {
430
- const content = await fs.promises.readFile(logPath, 'utf8');
431
- const lines = content.trim().split('\n');
432
- return lines.map(line => JSON.parse(line));
433
- }
434
- /**
435
- * Validates a path segment to prevent directory traversal attacks
436
- * @param segment - Path segment to validate
437
- * @returns true if valid, false otherwise
438
- */
439
- isValidPathSegment(segment) {
440
- // Reject empty segments, dots, or segments with path separators
441
- if (!segment || segment === '.' || segment === '..') {
442
- return false;
443
- }
444
- // Reject segments containing path separators or other dangerous characters
445
- if (segment.includes('/') || segment.includes('\\') || segment.includes('\0')) {
446
- return false;
447
- }
448
- // Reject absolute paths (starting with / or drive letter on Windows)
449
- if (path.isAbsolute(segment)) {
450
- return false;
451
- }
452
- return true;
453
- }
454
- }
455
- /**
456
- * Adapter to use Originals SDK signers with didwebvh-ts
457
- */
458
- class OriginalsWebVHSigner {
459
- constructor(privateKeyMultibase, verificationMethod, prepareDataForSigning, options = {}) {
460
- this.privateKeyMultibase = privateKeyMultibase;
461
- this.verificationMethod = options.verificationMethod || verificationMethod;
462
- this.useStaticId = options.useStaticId || false;
463
- this.signer = new Ed25519Signer();
464
- this.prepareDataForSigning = prepareDataForSigning;
465
- }
466
- async sign(input) {
467
- // Prepare the data for signing using didwebvh-ts's canonical approach
468
- const dataToSign = await this.prepareDataForSigning(input.document, input.proof);
469
- // Sign using our Ed25519 signer
470
- const signature = await this.signer.sign(Buffer.from(dataToSign), this.privateKeyMultibase);
471
- // Encode signature as multibase
472
- const proofValue = multikey.encodeMultibase(signature);
473
- return { proofValue };
474
- }
475
- async verify(signature, message, publicKey) {
476
- // Decode the public key to multibase format
477
- const publicKeyMultibase = multikey.encodePublicKey(publicKey, 'Ed25519');
478
- // Verify using our Ed25519 signer
479
- const messageBuffer = Buffer.from(message);
480
- const signatureBuffer = Buffer.from(signature);
481
- return this.signer.verify(messageBuffer, signatureBuffer, publicKeyMultibase);
482
- }
483
- getVerificationMethodId() {
484
- // didwebvh-ts requires verification method to be a did:key: identifier
485
- // Extract the multibase key from the verification method
486
- const publicKeyMultibase = this.verificationMethod?.publicKeyMultibase;
487
- if (!publicKeyMultibase) {
488
- throw new Error('Verification method must have publicKeyMultibase');
489
- }
490
- // Return as did:key format which didwebvh-ts expects
491
- return `did:key:${publicKeyMultibase}`;
492
- }
493
- }
@@ -1,30 +0,0 @@
1
- import type { ExternalVerifier } from '../types/common.js';
2
- /**
3
- * Ed25519Verifier - A simple Ed25519 verifier for DID operations
4
- * Compatible with didwebvh-ts resolveDIDFromLog
5
- */
6
- export declare class Ed25519Verifier implements ExternalVerifier {
7
- private verificationMethodId?;
8
- private publicKey?;
9
- constructor(verificationMethodId?: string, publicKey?: Uint8Array);
10
- /**
11
- * Verify a signature using Ed25519
12
- * @param signature - The signature bytes
13
- * @param message - The message bytes that were signed
14
- * @param publicKey - The public key bytes (can be different from constructor publicKey)
15
- * @returns True if the signature is valid
16
- */
17
- verify(signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array): Promise<boolean>;
18
- /**
19
- * Get the verification method ID associated with this verifier
20
- */
21
- getVerificationMethodId(): string | undefined;
22
- /**
23
- * Get the public key as Uint8Array
24
- */
25
- getPublicKey(): Uint8Array | undefined;
26
- /**
27
- * Get the public key in multibase format (base64url with 'z' prefix)
28
- */
29
- getPublicKeyMultibase(): string | undefined;
30
- }
@@ -1,59 +0,0 @@
1
- import { verifyAsync } from '@noble/ed25519';
2
- /**
3
- * Ed25519Verifier - A simple Ed25519 verifier for DID operations
4
- * Compatible with didwebvh-ts resolveDIDFromLog
5
- */
6
- export class Ed25519Verifier {
7
- constructor(verificationMethodId, publicKey) {
8
- this.verificationMethodId = verificationMethodId;
9
- this.publicKey = publicKey;
10
- }
11
- /**
12
- * Verify a signature using Ed25519
13
- * @param signature - The signature bytes
14
- * @param message - The message bytes that were signed
15
- * @param publicKey - The public key bytes (can be different from constructor publicKey)
16
- * @returns True if the signature is valid
17
- */
18
- async verify(signature, message, publicKey) {
19
- try {
20
- // Ed25519 public keys must be exactly 32 bytes
21
- // Some keys may have a version byte prefix, so remove it if present
22
- let ed25519PublicKey = publicKey;
23
- if (publicKey.length === 33) {
24
- ed25519PublicKey = publicKey.slice(1);
25
- }
26
- else if (publicKey.length !== 32) {
27
- console.error(`[Ed25519Verifier] Invalid public key length: ${publicKey.length} (expected 32 bytes)`);
28
- return false;
29
- }
30
- // Correct parameter order: verifyAsync(signature, message, publicKey)
31
- return await verifyAsync(signature, message, ed25519PublicKey);
32
- }
33
- catch (error) {
34
- console.error('[Ed25519Verifier] Verification error:', error);
35
- return false;
36
- }
37
- }
38
- /**
39
- * Get the verification method ID associated with this verifier
40
- */
41
- getVerificationMethodId() {
42
- return this.verificationMethodId;
43
- }
44
- /**
45
- * Get the public key as Uint8Array
46
- */
47
- getPublicKey() {
48
- return this.publicKey;
49
- }
50
- /**
51
- * Get the public key in multibase format (base64url with 'z' prefix)
52
- */
53
- getPublicKeyMultibase() {
54
- if (!this.publicKey) {
55
- return undefined;
56
- }
57
- return `z${Buffer.from(this.publicKey).toString('base64')}`;
58
- }
59
- }
@@ -1,17 +0,0 @@
1
- import '../crypto/noble-init.js';
2
- import { DIDDocument, KeyPair, KeyType, KeyRecoveryCredential } from '../types';
3
- export declare class KeyManager {
4
- constructor();
5
- generateKeyPair(type: KeyType): Promise<KeyPair>;
6
- rotateKeys(didDoc: DIDDocument, newKeyPair: KeyPair): Promise<DIDDocument>;
7
- recoverFromCompromise(didDoc: DIDDocument): Promise<{
8
- didDocument: DIDDocument;
9
- recoveryCredential: KeyRecoveryCredential;
10
- newKeyPair: KeyPair;
11
- }>;
12
- encodePublicKeyMultibase(publicKey: Buffer, type: KeyType): string;
13
- decodePublicKeyMultibase(encoded: string): {
14
- key: Buffer;
15
- type: KeyType;
16
- };
17
- }