{"_id":"@sphereon/ssi-sdk-ion-did-provider","_rev":"81-95058619757e0d98c1fff3c68e14e949","name":"@sphereon/ssi-sdk-ion-did-provider","dist-tags":{"next":"0.8.1-next.50","latest":"0.8.0","unstable":"0.8.1-unstable.53"},"versions":{"0.5.2-next.113":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.5.2-next.113","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"ce7be9b3403541cf714c5bdc5cd02633c9aaecb2","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.5.2-next.113","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-Q7EtOUam2VOdcUpd6J1QMJPd04Bome9xEphZ+xqGXTuSuQ6SQlBScGoOD6DVK6CU7jHxYiaC16TvkuaiE4s6Pw==","shasum":"0ba45fc6ca5ff54b54e7926d1ed32e5c898392b2","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.5.2-next.113.tgz","fileCount":18,"unpackedSize":30240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2zJSFVqrF46txIQqCQxZGiiX7NvP2zwogy+mdYPswEwIgc6Rj1CFiaw3eZTbJqKOV+udiT/8Ax7r8m3FHxnUaEKA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiv3SGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmovrxAAiDlxvZNqCh8VusIksp/5Y/mHfuLeD+gSinRM9uvh5kG4k0F9\r\niMSAgjHvLFR81IZzRVqGwTp8F1WjfJuk7mIVIkVOztmRVFBFRCrMyD8P2VQn\r\nQKw9+jBtWSATQPiOi4nMTOd09A4fXjmXybYNji43LxSWsDjmCAtp4JZLMdSF\r\nF0TUfutlMeRl8z92xH9a75tdUVzoLSejVdAeaA+s3W9bOkFqWrHjkMSGo6h3\r\nXussvT3m0xPBrnvQdyMfGo2QquUau5fq4MCVLmf+c2WB18ciD3BQeupbpfJp\r\nE2U0qH171wZHVcHSec4Iz9kIhcltrHd3Ai06YkKku5FkfhgDpkcUOYbyAd4x\r\nI/Cqk3+a58GqmVy1ycdSoMI+TjOeQgnZGkCJf5agciCN4XD4sEnzJylSiGTS\r\n5dpNeoRMjWrBI3cI1KglrPXGNSTyIwrT/BGy/ekhCfW1vkd7DXj+yxyruyi7\r\nvY/25aPxR2uOOc44kGJGHC9qADRFRXDQdjp7mhkR60rrzzoP4E18QZJRwpko\r\nDCPXYt6oyVURnsJJHbSBJA2yz3fH1dQfUOB8tYozkNpsc04yVsr3YytmpJ+a\r\njgTMT3TRCgUlWbg3xv4nDTRPI4cx3qkFezgYRQmQdl1cHc35Gf72BSpcwPI+\r\n5qgF9i/zgrso4yL083jhS+WQXUCwothvxcA=\r\n=VG4h\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.5.2-next.113_1656714374282_0.1475346625726197"},"_hasShrinkwrap":false},"0.6.0":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"36f554af6b5c0fad8a7f860b4babcdf10e4174b2","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.0","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-DO7sKsDNti3cKnUeqe+olooTQzyt+ofZBO8IsmLQJ6FYmsY+CaKYaLTJ0iCr1Cjk5LrObpX9F28xUceYw5V3oQ==","shasum":"3656935e3ec4089301737ac96adb9c8a38286e39","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.0.tgz","fileCount":18,"unpackedSize":30223,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi4nxIY5KwgY5UChriA4RqRe9KBHjDP1dsGiMwo2FPWAIhALa+46UyqIKPbuzM0W48OiIR2UW3Wz7bjsxKKLQILyoe"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiv3dNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6Rg/+IH4ZCiq2Fq5h6dIfjRkvbq7KNWMcpgx1I2AfNvWfFz0Dk56s\r\nddc5okjtK4AyjtTQ7V7VsaknQmEZdj+xNGr8R95droFMv7hDVBDEFNOoDutl\r\n7953Yw2OAI+sqGGipn82vOzQQqaq05xNx6/yGLau+trrc4vybaqjK5FSiUDm\r\n8bnCaqDl0elDg5AWcR/CV5CP/hkAttMXykzn5b7lI+ZH/2mY0rYRyaCyTk2l\r\nyiPVKraO7XFkF7yoDQT/NGC7ptMTpTQwscJrF20jug9/a7UbfROjngptAt2h\r\nhAOU4aRd7NgX+frK5VE9k1iwgrucCTzQWarFWeGsMIpGsawW7k/JOksII2Tu\r\nDnmmKl7P80FgpOR7vxNBv99yZgOQP2rqdSfXeFclT5EGLNZYMbCKqHtvyD/q\r\nOUpujRsAxCC1ChEfajQ8dlpGIWdA25CLBGYYi6oT73SjJfEKHDR1oC2Qeq2x\r\nIO0/YHiRFQsqjnGEuvoxrSYKAxzOrZUQwPtiHAVbIb/lcHk9E1EWxH1TpMi8\r\nZmIM5Z21rpGJSotNGKxeuZQ59ldSxkfWr5xGDPEU45omenpn9hz0OuJalUsl\r\nEGfAZ8x1i84/NSTJUyMm6Gli1D6eiPiMJuqww/vJazc/P8gVjEgdVSLdzkg+\r\n8oAzqL9EohrNG11zMbVF6JMlMqDM0swNcbM=\r\n=AUX+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.0_1656715085406_0.7535487653753532"},"_hasShrinkwrap":false},"0.5.2-next.116":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.5.2-next.116","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"1cf21f8a17f99d49479db556eb6dc70c30dc8cfa","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.5.2-next.116","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-WctdYZdkLjFCQAX9D9LlF3PmuZB3fot/kOvv7VU9cmpXJHiVD/Epozbq6xpc7oxJhjS+pWSnYV3KOW8FX/goGg==","shasum":"f785ff5337706e2196c618dc0aa4a993b87f4848","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.5.2-next.116.tgz","fileCount":18,"unpackedSize":30240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbp+KmkA0OWAvH74ISCb0ay1t3QtmYsib1ZQsLF0q06AiAqWgMJi5gOSy2fOTWh3M9Wj7QbUCLP+pgO23XYeWwenA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixNLUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCAQ/+I3Hpa+mOE1nitL6wZtcD6i2UFpoASEOlp6SmjU2sQoneGk3N\r\n9etQxFJ9S2cSMdlUx4PREtUFGMOhBl4G0PSxAXTnfctzB7feFtLTeyDrLQlC\r\nvV7zWwJVFEbG+X4/TjwDDk2J4xVSBqwJSEqmNMh1EUTGfXwDMAjqnmma6Frz\r\nR3g5SKXZfi0I/fPOyLQbjfK3hNbRaoMXb6ngGwbIRnyt9F7z7J/qyog7TKmt\r\nsZYZVQDT8AYJsFWWp72clOwWm1h3f4Xi95Agi1RwjieuezASui8+Rn273Aqb\r\nywiG9LDYk4IcQ/VA8vATW2Gt6LpRplTggEhbY8awuEz1mrsaEv+k3XAZxFBD\r\nB1+wDMGayTAL82bwskzt9l2pEqJJN8p+Qy3oRPUaMABsdN7EAteKM7swmDei\r\n1mNAf/NgMqpm2o9PD/vB4njUWlp8DWfopXi//jIWqKsoWWQGIls2SwZr5G4Q\r\nnAXEj3P7LdBL6K7EfrKQIyWh6skE8Qc+p0S9KQ/wKgbUWdbLUmGNa5yeMKVu\r\nKteOYNISEvL2uPee3NyB1WLeyJNJJ1piPZXXXpx5yGs/d38lOVQL5bIjFIxI\r\nVrTcNSJT5uqeivovv/c3Hwm3HHmsdvizzzKPY3f93Kse5rfGztRM9aWLcxpV\r\n7UKmECCf0SHNqs+3fsu+RISHlMDpJqmPvko=\r\n=58xP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.5.2-next.116_1657066196408_0.021173574931255823"},"_hasShrinkwrap":false},"0.6.1-next.6":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.6","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"d455c9f6b3bfdeda0a399bf183d3b29ec6b02df3","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.6","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-PAFI2I/DSJ+ATjbqr1ECa62xm2p5GvoQHcak/+pDQJFLJr3XsSLQyxKFoxfHaDe0YPcQx/noE/DZ9+dy/K2DJA==","shasum":"fe951fcba6cc8d99b1de94e8cf5047dd6787333f","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.6.tgz","fileCount":18,"unpackedSize":30238,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGLgq1wswtQYF13GBYBfW1miQAdltyRL53kEL2TYcfRAiBPQJskslK/kXlzcBP/t8tr9HoCMSlabuXiYMpAI2jG/A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixNncACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4zA//QggaZn9zyy9lFkOHvwSdISoq3FwZyTvYLEXQQ5v685uPPt63\r\n7gAGidjelo55G6YJ9Tbt1g+4bcAn/FZ3g8pvDIWoLxB9Ibs2gqZi26vWczNs\r\nm2n9ZmaIl5k333fAI69E1Oj8Y9/HhBsGhIsmtrd/GrVGgQRHyX1fPrNI7/ID\r\nnPpbHb+FqJnetrsqBw19OqkVtjzEvmXxhrNXL6ePg/nJVG9nGISKJtt4ui6J\r\nsAFf8Ocx78oH1jAMzfeSYWWAuHgovWcdLcddASlA5Xv2p0lZzZX5wM9lTOmV\r\ncW67N/WAaRA4FnuxAuymrcLYcyw9KHEsWc7j0BAKsqkqs/yw2mM3sENZ8FEf\r\nqXOyMebEZdCdvXfZ9+HX6wEyI8YzquSsgWbMPp8K+tpXIwH3CiDkmlrxl88a\r\n63myjZQXLNn2qLlwHZG1E0lQhZYxAhDt3Cj22Pxa8N85nyI4C94FgoGzR0Yc\r\n3CUcJAcJBgG29xfNyWrKPrmAa3LGTVH19Eutd3vDwJ4C8//MRslAGeGvcCyB\r\nwklkqKzlSRPofKFx7OU9rI9vAHkahrGObc624iSnrTfMi9PmHWv9ovAmn3c+\r\nO8yngH9RoJqXYTh3VR7KkfBLU90wzLVrt7+kMaEnsSDwT2uS5klI2Twyvv1J\r\n1sABWw2NhlWcsW3LEoswfhHbevdcHZ2bLls=\r\n=HJg5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.6_1657067996169_0.3370584813869939"},"_hasShrinkwrap":false},"0.6.1-next.8":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.8","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"873e8b12f9c20604eaca3f12fd439eaf10a7d68f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.8","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-yhmF0geHcnFgMkQsexa+naTDr/2ZqSJ7YuwQn7OiQ9IVTRo4kQUVnrcTfz0uSYh65HqpdF4eGyzFAOFoKQrF0A==","shasum":"ae7fffc4eae95d64b06405edbe78b86e2c8327e6","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.8.tgz","fileCount":18,"unpackedSize":30238,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9urZe3rkt9R0TX7nUI4wxq8w7VLuaFA4bIiHIVYqsLQIhAIyVWNaaaRMr1Br5hyaEeyYGHolBa/aqvsGjphuvCeKy"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixgIbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDCQ//WeB8SAsJD6ovphjl/aBkaNl03V8pXSeMU1Lz2fCs1XrUlvT5\r\nLiAJHBMkHUx+Svb6MteWMYITRG/4svsxP4LC18dE52PegnYZuuwJS9Ex67c1\r\nCa4BYcZbZgoSE5UL5KCntc/MPsufX9r5st7t4ZVH/IKyh8FaMZ+rYhzOS5iF\r\nR7mvmwKFZ0C3pMuzam7q7eYEfl2D31cor+EjkBvamiYgB3jVVztjb5QC5NKm\r\nkFuJNfUPLkS+a+gO4cxPA9Rb70FuoLJ/vlsdQuvX9a2EgDeDeskPuqnp3RtF\r\nMS27HqvKsqfSBMHz4bVnEEvmD0BKtyXrfnx7IzyWZ9FfjJmiGEs1++a50eQ9\r\nMgYYvIiEDSpgo5CJFGpJDnIdzQHm1hbpDLLUXdeEk2bE/pxsp+Uogo8gb7lK\r\nz8uWCybngUzBcvekT0pmnLoPMk0xZyky19Thkv8JREwCNO4Yvh1Wn9FSU5DE\r\nj2BNDYInVGSch/q/FzcKids6XtoSGYNLMsKe6N1Yd3oZzwF93BxPozlB1GDG\r\nUqzxcH0bjHHsYQBzWEDFZGlLuLMVapdAx794rA3T1KCu/O9z5H5Q5xD7dFYy\r\nbg9MgdBimZieWrt7FT5Ci7UgG36OMA58o+Pfg79GRIYMYfvRD4/6a4V55Sjd\r\njDqfrol+EJr1uPHQ8GS0o8VQ5ecCxCDKs10=\r\n=3dim\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.8_1657143835419_0.17290808136582148"},"_hasShrinkwrap":false},"0.6.1-next.9":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.9","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"ca83b932ac3a56e223cb63f8dbdefdc0ae3f0d62","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.9","_nodeVersion":"14.19.3","_npmVersion":"lerna/4.0.0/node@v14.19.3+x64 (linux)","dist":{"integrity":"sha512-a9cEDnrrR/3+LW8gm5BLnKLGqE2zK+TX5r/oeuQyRNeFEcrngss8JqQCVbZcshS07sIp0DI/WK5chVRf76s6ww==","shasum":"d294bab89a4263edfb931941eb6c1ac3da080567","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.9.tgz","fileCount":18,"unpackedSize":30238,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFb0508ow4VmQTF5Z0foI2A7ktGnY69ASYGBstVzDmEaAiAVIrndEmMzbcwjR9v5zlBOCn1JIFb1mYycX7Dla129kw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixgoEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4rA/+PmcPsol68P8AzCmM2YjyX4B1Wbs5x4MwSJwZvRXlN8Gpw8e5\r\nN1UY4nmp/uQ5pxZWkjvoFTL5BI7DhQTgmh0q0d2IF0eIbCiFNFBI67s/ifL0\r\na2JNzBkzbhS3HCxxngPhTL2EAQGfi1fIfo+nZMai4a/lX5j4bSk7PLlWRja/\r\nYvbPnJ4J7kD7upmfnUCMrQo5T5oHjv26fk7KvscBTruCpGHcqrl2VremIIpL\r\n7fS/u87TwJwqTWzF18UdL8gmEcBT16zkkI1UZwQJ6v/fU8feFHO486uwBxz1\r\nI9CzDhoAVV2AMQYxa1HmtMaFX4XXyjUMk7Zq5WWeEkING8yTMphXkjl2H/8C\r\ne9v6w4vhvRvYLs5vwI1MCOPeNFqTJ1eSiU5iGf9cIWmOv46iiZOKv7enysww\r\n1KU4o2g677EZ/pff/tnsHikpSrs+FiEme+6m2VivL9bvc8rWdbvlw3QOJFOB\r\nDkuel/u+cqO1yY/o6hlIdstDVjIy1KttZjK26mdNhta03QkQ/LumildiEbFA\r\ncqHZYJkwbFBoPRCE7H+GwSYMSfjiQDdzUg10WyaIXiX+G6RJ9vsZmArSN51R\r\nxKFIUWdfwI29OT+gGb0BE8DfmuMXdfU+MPuifJ9fhlTGcAj+gWmLUTGJyc/d\r\nIDVmN5/OYlXZzmrb1538U4mmCjUkA5MQB4I=\r\n=V7cQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.9_1657145860496_0.2551547912950234"},"_hasShrinkwrap":false},"0.6.1-unstable.49":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.49","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"251ed60ebd6984d5fe494a764d8cd662dd0eba6d","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.49","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-pHnc6wmO0V20CGfsfWX4+asSQLUjO1tfkVJ12zBcw7LyLaFh1RCzVsNPFjl5lYV/tu+jFbl56wcZYtQ49Z4WbA==","shasum":"372599dc145102ace1ae2a2e58d329a74ebaf225","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.49.tgz","fileCount":18,"unpackedSize":30243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCU7EtGDBL8ZS4vQjWbXhjhExRGwFVps+8FthS2YDOFDwIhAP1xzMiB/40sdVM3VodjQeVBd2YlIO47cAWGoIX88rZd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizfmSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6dQ/9GKoQUIEWpQ5OWYhgl0ZXJdTvKrFH1JZkViJUIBGn0oWNeWh7\r\nfkgAxHNPfzbMa+lxOettlOoNl4EwWeG+bgziZCfUSRfRtPvP2JyQbVs+6/dR\r\nKqz5/OG5hRlYQDgYULMGaeTzWJe3xj+MTW7bSgby2tos9jSd5/CnEidJwD9X\r\nHOerTMLjQuiKrOJnFri7PEzuGRk5fynUHdAMUzUnYqvagFalIZKAYQdOExla\r\nYMCsP4EYg39x1IpXRhpw5JerRVl2T+tyyi3nYKbtRMuRc1H4gOU0Jco5OknB\r\ns1DzYCQs6tn7JSvKUv0Cf9wXjtENBHDA8rzjyPmkWQhAbo9paXkxUmX6uOKS\r\nGRtVfxdlj3usQQJ2czbgM5zYxyd192IeWMRxo36SwVlDH9SfZGhEXSdyyrkt\r\njPhCilu2nX8FV+cy1OEZ57oPa0ehkm2cn/ehjdEKyfocs4Oo7YfsSRLXMpda\r\nC9c6jZ0GwI4ocwmcdDtdmSMqvbJelXry0KhsZY1GFs9zDLN54eSnO1q8z2mW\r\nvvv5e81XgEMvBbcvaSCg//pPmqWSGL6Wp9TtfJUmTTA6WrvO9Sd91tUTcQiI\r\nabNcNYfybfZGEFujaKdjAFG5bn2hJwRR15JnbS6TfSgpgnBwNIpnjpDtG2Yy\r\ndNz0xDUwJnXQDcog7Ye1+fU/0AXwv6MIUQ8=\r\n=a1lp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.49_1657665937853_0.6833923639837369"},"_hasShrinkwrap":false},"0.6.1-next.50":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.50","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"5ae3140c252b6a3d90194fc3c57c00d2494cbd9c","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.50","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-VROxM9QAVo7z+dvgKkIoy4sDhvZioTgoh6jWob7HYBhSvSgHCr1S+jbrrGuiwKq9sK6nH85lgHqzm9jYDspuqQ==","shasum":"652fa03fdc3730fcd3b30ea90fe9f61fefea026d","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.50.tgz","fileCount":18,"unpackedSize":30239,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDRfXQtNqRcIrdY2l/MVU0KzrBvdJOKXS+jkiZ5lVHnfAiEAiJYg63fP44osb66XCqk+vQA8XvpAkOVXy6w7PzLRNh4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizfyVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpfjw//SSD3wZl1wgwzkLYbXrVg0G6EYmRNFqsAHEcV8zs8/ZU5im0F\r\nMMULRZcUQnwGZe1ShHvi15VS7E5Y+VMSWJpNDvPZu5Pqh9sbUhI3cpldz1/Y\r\njmj0TH1LKrarswaPQ4xcSdsxFhs0E2oao+6vGxxIuGjAEqgjGUobyt6HploR\r\n7gc9Lqhkna65y1SnR+KWd/mKX6KJsWKhStAv5zP+CUQOaCcFzcjuMkfU8jnN\r\nZpewiCEqCyRplMzPw0s4bBqBL3CXcJ/ruCkBxCeHoKO2VMGBkNTgiwrK4fAY\r\n8InntWDECLNPB3NaV5CNII2dytTr78QURyoWG+Hd+uBqOp4qz/7mijVkfbGc\r\nugrz0CWCPW6Hqct3pzgeP/lmSNCnuBzA7YlpKi5hoNrH36blGUAOw09Yd1gC\r\njCMHOTnIa06E1JWeYsL5cUxSCNhGQrczqvXrwEhlkOOQ4vRskPvaYQwqgiWl\r\nHVMMRCtcfn44dMMsFqucnb+IwZDRAMzcNnwh5GOanRjndAWjkosA3Fpy4TfA\r\nLJXxHcBxaWqqihvk5jPddagopCkH15xmFct0Pr2VsRAK6YpgeiPZDmAA2Zzo\r\nJ8vfXQ5++S+c5UYtt5CXvZezPpc0Rc++TPGj50n7vkfBUsJZ8aJIN1oxLl9c\r\nJuCEs1Bj8qIMwfRo9GPFCqnGLgzVI0zn4rQ=\r\n=levP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.50_1657666709239_0.8402275289236993"},"_hasShrinkwrap":false},"0.6.1-unstable.63":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.63","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"a709ce639056f768745bf9faf7388f348cfa4a62","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.63","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-+V9PDSRtmaBV/0ExsH/4Zk3QkZTIIjxPLbIasoq+E/TppFHxFQ4QtPm9BWxjgqPfyPf9vFJ4SGL4T/42+MeJXw==","shasum":"f192f913e9d973698da35c3aab5acfe67a9b6e96","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.63.tgz","fileCount":18,"unpackedSize":30243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCVNdRwyPxResskGVHYh1bLjIkKylc34bx/tdBwprTkgIgFSYVWkFO0nof5JilWH436CYaU46+cZwmSfByvSO4/jM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizoLPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXzxAAgAdbjWVX9fRCjqbShUlB9ag0UTHxi3zHKhim+9k/J5U80e16\r\nrIul4rmmtVHfH9wDHAvPkRgzPpjonPNcBQGzIPeLq733psMsVqhCCwcKOiIa\r\nV5xe3/Tb9+dvI3mW81fcDA1CVDarbuHYaTplfU1ugSsZEjl1lRzduA9m9exn\r\nu6n6pxwPxATFEvgsaV18UnraZPHRFgYRpjx1eTn2YRzKu8JAc6H1pKoI/Z+t\r\n3nYcQeqR+Ady9TPL2VBZIxg8RGX+5ULzigqdF0ieKb/qpcZZp9BrU3TMheSa\r\nxlrw5quqWwFueUbNt28D7+1GkxfZpaz9ja6Bl8FHzemEUM7bAZKMBrlKGiGh\r\nZn7MEU77PtVOHgb/LUX5D8C0GDmAVYlUJh+O3/n+aD03JxoNODYq9jqIsEFa\r\nz0T/vuEt4ekkQOqsue0xJqizJ6prFZDxTjA5Ihm0JddknGMG7tkDIfHq2skN\r\nWHS1vkqadKK8IM4Z4QONvQdQm2l2IWUTP20kQp5ts70rHGcg5Ic0fr2dKJOa\r\ndbla/epsaj9TczRBhRIgUzBfuPh74cJtSagR0uTH48L3D438xkdVlIFhYZox\r\nleoBHp1zQyLrerHYgIWGl7WGj7j5sohaCR5e9RC7R+zmFws14kh8s+O+7rYW\r\nvDkfYAp5lrYwAZ/fOZbec12t+qvyXpbOubM=\r\n=FZBW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.63_1657701071383_0.18418940700515596"},"_hasShrinkwrap":false},"0.6.1-unstable.64":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.64","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"8b69827a11b02c26a1aab59cf8e37ed50c6b59ff","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.64","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-SjCLXwnXVNsj5oA5lFTUFr7praBPtdd72jId1lPcm9bOVstMUpDTlLxJA0uRlTQgziFM+ZZ+N+d6kHK7mvmnVA==","shasum":"96ee30ace082baec09c10e2d5be969e24065b55a","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.64.tgz","fileCount":18,"unpackedSize":30243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEL5bWJezL+ZUi5m1JyarVg/AeSssNXfNbA/QEp+4EMPAiBZVjFIMshUIoJSY8Vqc2bhy9gieXAm197KloZNmbzVzA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizqeuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5hw//Zn7CAjlI0wCmoRvHxlJaOkPf/u+lC+YUXgu0Qop7hrYx/iHp\r\nHEufGJPIHvLr5SL8uaMhFHI5ZdiljjCLmUwcDnVDplQsu0A7frtdGErKA+jp\r\nvHjf+59X9zsONG6ejTCOeOgXjAJy9JFENAKMNWdKigth1WOUYMQNp326k9yr\r\nyGy+vqKotKs1aatgSEW19qul0dyn2bi84cCYBWw80Gb4ia389wynJK3g8dU0\r\nEp3KybnHKeLxFeAyynpJ0LF2jEQoEXpXWePgo1hV6j8TpFmCZfCVFKYFIkBS\r\n9gEx0UygvHLpYEAa/yTcKRQM7dlbbm3+NigLRw+2V0iIIMpqvV0vEzg5gqSa\r\nk+1fkC+RQC/GlbycfDKROSDnlloMo5gy9ANXen9yohmhRPviPnlqgwynu4mh\r\nFN18KMheBWtzQk106StGZS8pHSTd1FxpwRw4nWCXhFgIdF5ZALN7rSjsfVrW\r\n41m/sFoC0iI4rQf/2+kMLInZCGXAk3gRtQtZA0TTQf22mzbvLBOxafgdRtGs\r\nCJGp5LnK+aJErh/zyJEdQFwSUpLWyAewhTyDmCFkrjLEDymiQyWDUx7WN3OD\r\nkVh9sMdAB9Fj951+8wGEUIGacb7U48/6BIO8uGJeCB5A+cmLb/xN1z8txvYT\r\n6zSGRf4bc2tJA0xMsebOgpMGYZcLvfL1nWE=\r\n=Oxe9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.64_1657710509692_0.9187016017017537"},"_hasShrinkwrap":false},"0.6.1-unstable.65":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.65","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"a52501731e5fe58bf890234cfb9c671c3cb08aa4","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.65","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-NoDJMT7f2fQDxFomBBSmP39TlI3FzZeHKPwGq+87lRRzUiBc4aD3nCvjxQHXVWJS52sarTW2mIB0gy4zIobyew==","shasum":"0b5860aa3281e11607f305a865615f75cee4f2f4","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.65.tgz","fileCount":18,"unpackedSize":30243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlwYwbDoKxjhilQZ+B9eML/cGCDvo2G2UW6DZ6PyriCAiBtbl1EUNqdjpgey09OwjXpi0ojBGemIeCy8Ku5eHJb3g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizqjyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8VA/+LQrJw3IiJkLQq5mRGFaq52C9rZq27pnSoC9hyP8l+Ix7WSuh\r\nHT9vBOMZtnHxmXjdSuKd0IdcHfxhEtS4m3qlZrBXU1OoMqHSkWFOWLK5pXIP\r\nNLhmexkT1+d2AtF1rc1oFgd5xEjC45wEeE2TGq8PepJnaRBG5WqWpZJDvrQ2\r\nnsZaNAteICTB1LfSbitKdcPDwATT5yTQAZVqcggUWB4bcp7nvA4V2gy2iB4x\r\nc6cYXLU/JOdAiMazlOK30NV4COhuSLUYXZlsiOl1+equzbJh8Hoy0x53mo9/\r\ndRH3igh8S9lrden2Ar7v/HH0EE/bUDwjXkgiwYJEm+Nb4Uo1a/P0Das+6RyP\r\nnGzKPCAZLtbD5MWXnVWuudS+yI0H8NrnTEWs8FPauvs/Z+PHI+PgAop0c2p8\r\nwGwXuz3sxSBCefd8WsGL5fc/V4duSl9wucyyNCvD4jH58le8aTqUnJVRg4p7\r\n/lj+M7KN0fLGffjGK40yLSQdVfxP0kT9aJUMg/Fd0SyqMEyv9OkZsyLXvxb8\r\n6SsuzdTa+ADcQ+TqYBvARvjCMZL62c5eBQ8k1Dw/IXkG91VQvVW5UWGAiCB3\r\nLLlC5tuxBI/cfUzBU8cxXwrIwhwUGcUT0LP8SWoSSD1kSJIdWEg1dl8tdaHd\r\nVwxGPQa1e4K6AElf0LyX9PpTixWS1mnYGKE=\r\n=GLkZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.65_1657710833802_0.8073154489018741"},"_hasShrinkwrap":false},"0.6.1-next.66":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.66","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"^0.1.5","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"cff4c2f3e71a6943d384dafc659deb3bd69ab805","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.66","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ChprkDdVUY5jSmHb92x9tcMp2w23LMUmn5wq9HztDyu7+K8xZEKKYk3uqRwkxNZV1yfArPNPQpe8ulss0i5SfQ==","shasum":"83cb9215f82ef1a969df8a0fee6e062ba1a95a84","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.66.tgz","fileCount":18,"unpackedSize":30239,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBc38XoXMF6hJpwuGVngEcH0PNKF8CzeP0qfgYUhqY9zAiAn/KLqQ33hfi+GdtVhpdwi2Tb+ZnjQNPx6IS4wNRybEA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizq5BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoPA//fn3RaN15EYtvY1AZtSshHGbmMUgd0JrgkOU1LzdaFAmMgX/N\r\nWv0v13PsYwkHSyazITqCSeiKwbbaHlgTrsxhgEf17wgsGh54DDeRfCxoJMWX\r\nNd8cqmXekdnDdsRZ5DaO1pxBvZTu/vsHUqVD+pqrBELzywHwadr1iVbbZ4rE\r\nevLJAT+5gXYGpoAmlcoOenWU9EZwmFRspItG2s69aff/hcUBnCT3rj9fUtwC\r\nuHfvbcsLHx4s6IEUMpk8ysL7tVrYWBIEBnf0S4hUVscIOZSn4UJcBYXs08f8\r\nfdSCaS+SqmUfhxi4Fj6qiqwRMi6LJ059NfNlumK4BdxNMWVzOcuHiT2cvJqJ\r\n8gNupGg7RPSEwTfDyZcA7fqXinx2BjKgxs2/iaqCSLLV7z8xp2C5nKDTSLrz\r\nBEHDNQ3A3OJ/7R171r2nTJwdwKRZQ//KOi1e965t097PeoO7msaOdQx7cror\r\ncVRUqbEYNSN2wNAuDGNLp6gKr4In+Vy/zwl1FR5nBYbjooOjzy0jijmannGK\r\n1NNNvA60g7S84GB7bArQ4uX8WfvKUGJ/0jcj9x405ofna/mu9O3wdxlcdBzm\r\nGN73bSHjn2qLztircoHBS270hBsabZIOqJZVKXTXJJyAKsGPUFNAY/o4PO7G\r\nibnoa0rH/j+i5luZ2l9S/LTBSg/mHhHmqO8=\r\n=imu4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.66_1657712193073_0.808435033411649"},"_hasShrinkwrap":false},"0.6.1-next.67":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.67","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"386efc71b18195004773fc74eb51b62cd3f5dd76","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.67","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ZAxfHvJgw2LALS0Z76fADM6IOTsjilp6BrbQXc/VbkPMz7HLMRBwzmEymL9XjGaFl0VYoGrYArNTodVXWJfd/w==","shasum":"b86ba9acde8f94fbab9153d3445c1eb944715904","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.67.tgz","fileCount":18,"unpackedSize":30249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1guLhAyXbnq+HNRjTWb5y+P+2cLvetnx8kjePI6KfUgIhANiBJp6JaF2Hht8kinSg40BLT8nWfT5aZbuj6MZxVsAG"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4wFHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmWQ/9H3lE5d+lGGAtPDc1vX+9g0b0MfNsj9H3Cj8uRX0wfv5ATXN1\r\n8SEVryjMES9BzNKuykPJCVIYhKzyAiKPGsxyCbbrDZtz9KLu9GBygawPUZeL\r\nal1vfnOHZuCovfMbchB4ibRqy122av16j5qgJgfiihmBTbHZIKVWiVaZDdbe\r\n/LAuXLdfSqAOmUO/JlEwughgzGUNDTh4V0q772zkOtA31bxb8H8D4sWe4VSt\r\nGhJWEoW9tE/uAmGQoNxkSzrm6d9UXQdCXfVLmWIraKV5Q2QzVWNiv0GCCBif\r\n4zTUuvwEWM1YKTR7DzGpC8azJPSAkP9ZZRdvbwT9wBGmW/TeNlZNA0rpeDhX\r\nB2ft23DBnAu/CqjzQcRiX13pOa0gRwcMFWps8ScQMHnBrJZmcpXZ+pzTxrTw\r\nzNzp5yRmhAJCpM7N6HuTDbUCQz1gSBasFEAgzd8RemWR9BA+5jGk9UYs6W8a\r\n8pDn9nnsAbou7W6S9G8cXnoUKj48xwpRMkCXDAVS2ExLCODg9b97k3NIJ1+4\r\n8thur+CqvejU5AuVaZvejJ/omTFsN8vRGtywQb/Cxxi9DjBMOR1W3pi+wkPa\r\nWh3ploiIWYsSnUguvesG+MAY3kH77oMhjD519daeFsp50Fk43hO6NYWVGE5Y\r\nPixtR5uD8l0h+21Mj/S+Nb9JuNeoZ0JpFHw=\r\n=xt7w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.67_1659044167679_0.703089828470757"},"_hasShrinkwrap":false},"0.6.1-unstable.74":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.74","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"1462b74119f7a73f43ce3f0d4717e01b60a5ac1a","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.74","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-52Dw/4GyrucpuJYMQBa+H+kwPEizD4lG+k/JWSHkJNBAMAWhCSoRvTmhueN7a02cPo3JOg50dv0YDzO+2zr+rA==","shasum":"52ec6edf792187dbad3514013938758060885b01","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.74.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnPYElwWCiu2t5q1fEnQYxlKx8A5hHfX9ypFhheMYn7AIhAMaWp83T9IP7bm03wGtpDnBYUqKNDFbYp5t2Fgg9zMj4"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6X0vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpisw/5AGQpEvOYqfLQCRNad7Uzvy9cM8GM4Bwa5GpJFYlSpGCCWyHO\r\nwXJTd4g3Fo0riSiOFrEDGs/pNuM/PAd+G70z6sw8ZgN0bSDaYOA/v5fhUb8B\r\nXWEhTmIXkyt8c9TrLXHTPGsML/waH+Y2oOZpp4BeD7lUiFC8XgIbPYvHrBOx\r\ngDM2ca3FLiuIMG8Ycx+ls8iSc2wY6g7Uda48zwpIhOL1daTX06PV/jSlVFTJ\r\n9BBgPgxohh5ikDFSKc3ETXNYEGSYYPHUWZEnLIiMXFhUcqF/H/yySOnNyQjs\r\nWBoowaeEAOCi4fxEqouL4mDS5mtR+BLs5QHAd4T9+legzZQ5tC9+kP1jP74r\r\nSn1S3knxv70audWw44bRX3TIxsviwlsQAT0oo8TTXbqzOz8TQhQyumSQctti\r\nq0/P4SxJVmap1LAfMSA5bl6smd9zLd5GhlA2RJ+fQcuTTTuJ0SmDy7jBbRhk\r\nFSjT9zEHz7Gg7Zm1oCeDJPP72naU187QtHmqYI8tF//3nQpC5yMzQaHnq/Ok\r\nj7CAqGKjM4tB1aeajOvb7lAajDviZrivZmoBcjQzPA+SjqsCtMsN2BGe9sEs\r\n0rtr50XG70u9HbLVSDg8WlmVAP9WRt591hVtTLDF72EI0Oo/vn5dZMiEixP/\r\n7B7zBPKEi3W/wVBXUH7W3TY8gqh4dAmEYVA=\r\n=ba/6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.74_1659469103151_0.44767190419883485"},"_hasShrinkwrap":false},"0.6.1-unstable.75":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.75","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"a0af1670692eed24d0ae9f5721a68d0340173f19","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.75","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-bLv/7e9oSnk42C/XnFMorJ424qF40D4kdRDD6hVxg3/hSq+ElwkuUuyvj35LSawwk/mxje3yIm5Ytf+HT9fS/g==","shasum":"c045a9be0c8b48a46a0cd4fde0e25bb8866434ed","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.75.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjEp1LCCAr97vPbBoorldSgcOe56RslfxwcZdPSJcFpQIgcEVymDu7LALEFsUypN50QRQ5OJXMJYWZ6bq3mekPBd0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6Z3yACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmryeA//WRqbFD5x3OTXtOSXM5/QUa4qw4nlNN3sR1spV/p558+aasIM\r\nTCDEbfomA7bnajmvycNkvGdHvs364iTkTQvbsno9R9OTARzxjsIcQ6CSKZfU\r\nJD08zwU5IyHAnuGhm5NfrSZmYP4BO80ZfmSMMmiqN9wT2r8fJ74BYucgAVmW\r\nJDyTSw/u0EH/UwDKZD43uY4fQKzPliUkxJaD93lEGlpkbMmg0+Xb/ImAxjYr\r\n6kNGZFJlhUrZ3xBp3RtljvMOwTqqblDAl8TOOyfsgF6WZDda7TdmvPKvrMEv\r\n3t4god1Rqk24Qt86BFmq8d5Ips5HVEbAykPiSZ0N+imgd594pF7lQRbahDod\r\n8MMgYlLmbejf6VA6bjkVIy4xS7MSsjDzcYJpy59PA/xYpQEvEvlpKGKZpNPT\r\n1i12LD92F3ZhxFlwus+gIh/liBPyuT5frZP7Fv/536i28JsmTeSv/nnl262Z\r\nlHLtd+TERAuEQuEE4xdDybBUihUvOx3Bl0aTMb2Tvgz45tqZA2udMJmkCh2A\r\ndZYvm/GaLQOGDQd8RSy/CG4wJG/iXJLdxrSVxmF6CMS6fIvhxYOv1y+UpmVt\r\nSTsHnT2fOxFq3rVuzeFkWGl8vGbHnCMQSIHA42p/2HXVMgWqEWmeUrYEzoqA\r\nLoubLmEJ0JkQA29aGNP/U9kQwRV44Thp5ic=\r\n=TxaK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.75_1659477490114_0.39885765463923284"},"_hasShrinkwrap":false},"0.6.1-unstable.76":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.76","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"527741dfdfa81336210fadbe66fbcf475de98cb6","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.76","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-Cp30gckCz+bwLYtVOXO1BBdCcrVdxWFJX2UjCeDM5AkpmAdZ2iYQCFp5xpCtBqckVsuuLupkevbb0NlXUzUeRw==","shasum":"3ec22035a2bb9863c8fc7804300143865d1c9703","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.76.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJRH6TsRHBs7yaeFimVrrjK195nG9Umv4S7J5WhOLOWgIgdktVB8SY4iCM2kGbIDGy7Oj+UBmcmyjH8fXZMbiFzrI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6aiEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6rA//eHdztK4hglLPCA9c6aSxQIGafVf/sSRy+04Cn3lWZSDTE+X5\r\nJ9FYXR2oea4CeomxVHgoOG0I9sc82fXx7mzgRCqs3KW72u/MLxCWlC9rWrqp\r\nOvqTsic18CaF27VHObVE72kva44X7AhnQkPt7Dlkgs1s+DiC7bwSaqDthAYz\r\nhjAyO36zUINwfq7fi8vDGdJtw2XcMIfrXYXjogoBX/vqzskaVcdBAAy4Fe0y\r\nMUPlFP/q4oyR50+6U2LhJO+kcEtIwcTCTUKbcLNPLRxKvpO3oMJWX0tZKcHd\r\nOgv28cKTCM+nJxKOWv4goXI12cqzsNa1FueoWF0K3dnF2yzqggbmp33uUaf8\r\nRw6OfZS2W9SOYYEtJNyj05bAUAtifgY3HyevOEzZrDfxI2Khhc+AF5fmw/Jd\r\nzM0eiEk91ph2JVtoSy0PyHWlte1Io+2xWLRonwwpZmHC33hK/UNTreALQXOj\r\nWmBCInhpYL6grjt0QJxp2Z2VoZnoGNvx87YyikkGKNsGrwMkupksO0r7AnRJ\r\n3clVL8OiGxRN6k3aJqU/1xDwZKo6xFOKAlvLHppTtP3ddDjVQf2fgPhAUOyz\r\nJ+XbSoFFqFE+aa5Nq8CgsrDZYS0+rUeoR5Y2JdcYvTMi8enAJpglQsIUF8Va\r\ncbm+NyYktzBUjHOqdEnZj7qK1W+c0aObEKs=\r\n=SO8+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.76_1659480196063_0.4734193593207956"},"_hasShrinkwrap":false},"0.6.1-unstable.77":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.77","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0ca5117be012752ea88fc437e88378393d7c905a","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.77","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-MskO04jbsc5wSkDCpvZT0E2xI1numwgPmg9ksBTgp1wZPfJovJrnZpgzcYorriNvlswsMuOMYY0bEtqT4LbRig==","shasum":"dca9759a1eefa810db59e4832b89336434c3ef3f","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.77.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMJh29lGP7m6crGHeZSaQrqr4P13zea10hKE8Xpg2OowIhAJ+TWdTvyKvC4qB9JOgdoI0fkeS2Z+qWvJ1yRpGgA9fh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6bSqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmtQ//RPRhrNP69/tVg0DuSpqXcOMu19H5WLCcxWLTt0oT8vRdDpyK\r\nElfyVx3hg98w8afNfxBZKjZolkbi5pvdNXUpeaW5hsT80BBpxMHu+HbQFTxX\r\n1pPvpu6aFY3qsIOkn/nBLk062Q2aR+niuF2xAyNM6IFa8j6ee/Xoamyb0a9h\r\n16dnhApPyVHDB9JvCsHO7/zuD0l4q6trXX/2MhslHOmtZmP6yZiwqDy4sgDO\r\nfmNrMw5eUqQdNON6vyBTruJuytjvjEAUDBiExDO23Vqee0x+5Y/9s0upmAhN\r\ncO1sPXkOO4MY54rlsvzqYLngwUOLiIFCUocHJgdvmM8zV5DoDG/9PNLukfnJ\r\n6ewWx615mfUv6iDCCcANZWYLo1uUypvfGepWGtVe67PDVHlQ/w93wPvYUmfk\r\niUkspC9WqXgFjyedETwUBLFKpCThUk1hIpuj9OlqRvcAEBeglOkSCTzUbuNd\r\n9jNH7TrYBZIYemxb4N9wASGgJhpxiR7+9lqCKFo1QBHSgLB5FQTw/tF8J9nn\r\nnP6dqXwD/AWesmOmh4aHipQMlCZBmD0EBR9rW7lbY7FczvgguAihamDyKE05\r\nT8EArNldYEkUB8K1ATleTQ2Dxn55Jk1P+CnBFrsHXYnv2iU/GofJTqV+tfsZ\r\nU6JFGt8atXWviHBM6zFtRmZkVrLNJDEESyU=\r\n=RO+y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.77_1659483306272_0.5663906692246949"},"_hasShrinkwrap":false},"0.6.1-unstable.78":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.78","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"689ad12d9dfb15b8471e7b4ea4bd777493ff5bd0","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.78","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-rb3RLAIbxy9BU4xtIahkArLgaUIvgi0rgV/wfjexuDSANTELAuL7IhVNU0knLsOl+rJSbfx9sI9Q2PZWS90ctg==","shasum":"abf9aa336ef8cc60e4b35fdbb1253191e588709b","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.78.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmtOrQNdeuJjUi4xUYRecqq1GIaa614QdGgRCENfBeiAiBJXxQS+GqcjdTLNG90e5kNdIv3MEHWplX7jkqUgvhzOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6bs3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHYxAAn9Gtl7UdgmA2QjftynHLDu7bcWufkLxrPswRXlhtjFS/easg\r\nNRMTCIDToo7OAUhQ88LH++CoOmJDlyS0A9WISUGRGD89GABUirdp/oh2ejgR\r\nASnLmdiFS3+VcKHknlVBInwfE7SveGA4ZfS9WfXrASZoCKL3WkysjbxjxvqJ\r\n78FxNz1XzQAgIvf24V1MZ/zA+qqdiTiONqgBxGq5v741HMTgbFWN3hMzund7\r\nj66l0qVNF9bOCEUNRr768qy39tMPDvvZoAD9sS09ywBqSPI8DUBsSVetJnO6\r\ngZ8NINae5bWeIgOn02bud8E3YEO12nv4AAOXKoMxiFZsYpD00Z+VwTCecINv\r\ne8EPlH1DtwoVu8Wppb0KXZLIgLg6c+PKaExqbwz33rkbL5Jjcc+aJYyuu0xq\r\nF8ADxZ/LLaU3wBpiYy3vnM3GF62XD1UWk8LvfvhQnxyk4x700Ew5C6ZaevMJ\r\nWgwaPSttIeGPAwFaxjxgik81x6CNxh7LWa4IQCSqf3XGnJu+RKp2GRFc6bJL\r\nT3dMnjOB7c3+sGX7suBjSHveeLktzWKIGgY5/CEvkMb2p12HcIGbik5+DJEi\r\nxCyWeBdAZHVyLYu3u4zUAF5vYMDu+zsCnbY8GMR4r5yeC4nOPwhWb4Azjrz8\r\npssa30YpGsZiEDF30sRmJRA+gZ8/P82cOts=\r\n=E+Ma\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.78_1659484983305_0.11573230334156448"},"_hasShrinkwrap":false},"0.6.1-unstable.79":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.79","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"ed4dca756a3a1575a13a10dd5ca757676a7aa438","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.79","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-skVrGkL0Z3omTRQL/3byp9eFVwFIpzzOcLiI1V34fSR/nlnjFx6Ov0fFjyWdvyVs5/AG6j7W2N/3rJj93hk4FQ==","shasum":"5eea6b0f59bb96a92a0b5a77a778edfe6c513706","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.79.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnTYiNK8RTWP1mK1CxOmDEUgUp3FiCV6ptPueJw01VaAiEA7jMblx3WjS5HrI3WSjY10/qF+GEQMS1QoYovWgeynuI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6cCXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqciA//U6vELG7iCaQGukbdMky7vGjjIzYWSPDmEExPQIalTS4yHjh8\r\nxd7UzbzJDRPuyp+RXn7rfYpneVB7E082nT04Y+XB4/5XNZy6rvc2xPlZNuP/\r\nGPE5pXt1Bnh+IivV+PZWgTXEjp0nQcbA7kVA9q3ZRFHUFfHVUIaqDoLCRz+j\r\n1sjMF8tJ9ffpTD1OjZSmGAMhlwuA+4Z2B+UsCYQOlGmBv710x0DsjWYXKS9K\r\nUhA47g7nPLIFS832wBUR2+LukC0Ut9cwOSOwjyRTUYBrq9iEO4XxmoPT2OG+\r\n3PxCjgSWHFNCX2v14x+k9VvuGoyYb+j0FF+ALFgD8nVbT08BaKYkC40bZdZG\r\ngaY2CAm6wn5qRADv1XlAOsC1CzrQvZu0SpqzJtva1yi7CJSjVrWVM/ENlr3w\r\nPBeLpFhzkubIBppFYe+FCK1IHosLQuj9VYo/FUf5AU1pWhElWIlqri1Gagqh\r\noDyg0VF9tPO/E0FwsjXno3fSj0AZ4Vf82Y/5mzUHdaqKvEqO0WMa2q8ozvx6\r\nP2B5fjJCrCKMA0BbV2WUb43zRikiysqFR7vig7o2cIe4rTsNQ2znqwf1Kchj\r\nqGzYw0+fz7x3rRLddiWA+ii6SjP/2FYc1pvu6MHy/FIJO9CFQfns1SIV+VaS\r\nWJzpTLvQ1dl+xPcfLxCk+POQ2MaKBfzAvOk=\r\n=l7C4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.79_1659486359413_0.7744237091085344"},"_hasShrinkwrap":false},"0.6.1-unstable.80":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.80","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"35f316eefab395c1ae2c1a279dc43cd8de6cdbae","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.80","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-kAgXZ5v0s61BUIXig6EfBSGJ4n2lAMlEsgnCSie7GBNHq6DzXgKlmxtH6lKnFmty3VaMlQ3C7w38AoSwLUSItg==","shasum":"7cc65ac7fd7cc27a5549f4a3387cca6e39be2161","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.80.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7OVomg62QCimNf4JU9T7E3EUFVUOaMQUnqT7dyWK14QIhAKmLmts6FLapor/EQ60nRH/ytxL6Jut+1qCGr1GmB6IF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6igPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmov8A//d/8OLsXIB29ZfnQTh0Q8W3jCYO4jv1ZLRxS0p0vqwT2URpIv\r\nh9p2uNZhCZrFhwOAlJPUOGZu6fjdeVNJKbFQbi+E7mCcSAWAdrdoVGfQz3GM\r\nCsex6zoZoDXSy/uytK1L989T3QodLUQWFeI3v7mnln8Z2OMPp5hb4sCHXcTN\r\n6alkKfIGVBl2mpw7q8Lg0nzZhfTg2s+vb7TwTFrDL0S5O0m5O0WPGlpiUqGC\r\ni8RK0RIDboicCuAkyzNNaF4mHe9C2IMgvSd7jD5ViDnYLzYFgxYLPTfx5hLO\r\niORFVFXwFpLAdNFROfdujQjZ7fHaTHqrjgev3KXFVENzF/XbwmMaZK5v1ldt\r\nNmm/LiaylhRShnL9DYFeMRFu5UKUfXuk1l/7HFQxun9fRVVotVIM4a/NPgNl\r\nhHRvrRcveajTdLzD/q5WoaeNJyDhxPT+zaRUvUIL8GslrFbY2zWunysapMlr\r\nFuF33QVkZ5bGS9p+sc3mrOP0BFbxC5uDoex0WuGFyUGgdxJcBn8bmb+BzGlJ\r\nDJDSoxoakiB8h1pog2xnczlbXwvnWPoj78UR0r848AMDBfUEawn7IWQBLCUl\r\nm9Yk1Oe3pMFEkD7UU5uIM4PC2EKSjacG+f4hMJEG9NC8KzPY7qNBJVCPfHD7\r\nN7+pO6+VuBruJwSWAShR4jHNFV/rbLOEIt0=\r\n=GuUK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.80_1659512847457_0.9012958666900508"},"_hasShrinkwrap":false},"0.6.1-unstable.82":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.82","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0148dea6b2a782c547e3e453bb933b300216ffe0","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.82","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-iky+Efdc0HaF19NF0jOztl3oR6GGHSc+PB21xXqmlKejExPT0QoSD0N9Ytf/fuA9LmI4jvlRzJkey4p4SfE3Fg==","shasum":"813ad0fd8966c3a5afa459db8870324c0f332f66","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.82.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9y1Pl5sykQn6KnzoVoEXwbvdLtBZPAY0gpHgc/tDIzAiBno4wc0EX7JiLf8eSXBisgt9Wsjz28XKJKBYuqSHf/Ug=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6k1gACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/ZxAAg4IUVDAFanDnyv6/VYkP/8yxawvubAykUGl0cly3HCSxyi9r\r\n0M0hbXJqn/6TIn/8UbwuK2osh0t81t/DTYZubkxj/lP+4xKtl50J0xnZo/V4\r\nw+wv/rYs4Bt8FRs/kvfdVibr1/qknQTgMubzwFmiuVfbkXrVFcK2WtJO3G8L\r\nNbGo1on1rJUgfzLCK5ygtw9uv3WgA5QSR/hR1WDL1NOit9SzCRpvS5KF9sz7\r\nQTpyn/xhLGElSK49xlqntcyh4mfHmcHkdDbYF7ZNtx3/HDNIqsFQJl3aqqku\r\njHxBDlkl0Hn1RRYJhX25bhra7ha9KY2u/oBbOM9GpOFggXDru65FhxecHdq/\r\n8p7o+YGUVsfORgdsGI7qTclusjSaPJdwQG5iEF1lrOsIUcrSInXFpEgiJI5w\r\n36REgeliceAnSAiWQdr1jTWPIcnzWzNoQQwuoPXfTfCEdwSUjarxt9plQfer\r\ny9VaVoUnGmOgvf8Kg6qtTZbJumCdErYk0pn2ylit099XYI3EgkntL/0eF4tV\r\n/lPNfp6mz6EQuVymnob5v3ebEQTncK+RIFgcGq8iq1VThP7hIq0/wVlPFTcH\r\nzitT1mYGa5J1W61rVDItHOHbGJxjJheeDOXoeDDB5qtl6fVJeZyi+bnrb8KP\r\n7N0Nl8JX5VMKBlkTcf2ydcLVZRZHnkxpujM=\r\n=F5DS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.82_1659522400525_0.871519717771162"},"_hasShrinkwrap":false},"0.6.1-unstable.83":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.83","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"996ed7bcf5955afedc71fe6bdde1fb32200aba3b","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.83","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-W/bH9zpiGqNHFS4/JMMdWLeNifb8tCRwur9UcQhvUFP+Mg1rQBLImhTujF3zvGcGlAoBcaeR+vtNPTIhOg0iAQ==","shasum":"08f69fe2bf01490c8de96680462134c0d9e0f948","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.83.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4vKO1g17E/u7aiSZFD+ga+DeV9tTm+CbV/zxFTEEZtwIhAObmfuXe1CW+8j04SRMXpr/oSeesTeP4964HqCYitouv"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6ntBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoT6g/+KWZyLdeGSDzBzKEfWSy7AfBT00nsv0jUfSSOP4WNTRooeXQC\r\naIkABD2NHTSSeWp2yPi4Z+tJMjm7pLUNr/BdbacjOyTOuTtAC2M/H/Dg1EyX\r\nc7EXnQff13svFOFTg6oL7Fe35QkGyq1DcVnMswHhjZuo9nUh6lPGYBDWHw+Y\r\nOdh+VKi2yGx7ntHdORHTTAwc59O6rQhh8Vi/TYFT8OI/BN4iuCpQyPJWmnXg\r\nhEEuZbX0wm6XNvDjHD96mv0EOg/rthZZhTTQlqqj2YfjUreRVXqCVrt6TwIZ\r\noV1PwbWu1UZFt3C5+VS8Yl3N16mIBmPJmNq889DIt8AqA74eAYyu+itj4wao\r\nhnCK+NI2+yty9+/z/tM5W3BaOU0XCKARlQR0jOZrf83c54JuSTdGfm1z95UO\r\nr7SWh0Q7GIPNnNmIMFKd4OiHt47sudBd4HKsQEtoufkPTItx+1OTI0YCVB79\r\nG1E76QAq6pnVsYz0BtTUzjdDkC1404iV4QhKHg8Y7a/jwjRbXuOfJlzprFSP\r\nz9tkIZM/81gJg7Ky0oJ5wV/jarbdUS+A4EtwgTLgOFmF/OGHqbPlPhIJ0jrm\r\njqxcCO2sr4tYjF70BZvN1PQ6Dlayc9XOfDZOP3jNXRKEA7xZK/CvTrUb/dU6\r\n2Nubc0xJa73Wtv/4of10IUk/RJmhJ7q2AKY=\r\n=ewFk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.83_1659534145552_0.6492291712663016"},"_hasShrinkwrap":false},"0.6.1-unstable.84":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.84","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"d4b7207bc5a97e97841c9236b8dad1b6cb6bfafb","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.84","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-gL8PiXrWbS7553IkI7gQ3/DjX19pUdboWd5YDhR+opnks/7TECiyIC9JIPlY1bY0slswk9dq1MTgj1o4CE65Nw==","shasum":"2d32e85ed09657001b92986b996f71874ddf664e","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.84.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICOlLfSlqGok4rZgU0pRnEK8yptyMoCaPjAFMLay7+N0AiEA5tLRC3U8wwsBNShpRRjFW4cjvxwY7wbfhyZ1KewbbZo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6sGWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqhEg//Y+Kjt88X7dUNcOmY8RLiJcrlezlUeys9HqcNBrSclJFxz0c1\r\ncW0XQ4ablXVUVEu0HrGyDc4NzZ7CexlCRj5xAcGbtJtQ9Ole/vzWpBDOzZ0J\r\n/+F/xmWMsstAqcy4BfAXPpGp2MBLBR5eeY7AodLJy7+eG3XVrelFfLJMV4z0\r\nXtn7o6s7589EERX69fIbRfGJC6QAt8+GbQDQB/N5KBT2Lq4dt2r+3al50TA/\r\nwfQqMWkboDtg7ij21jVEyDLSbtuYJ6HuTlhISjN0F0yA1SLufwBRwD+5yBs5\r\n0l1gT2oPsyEwfTXBzoDn6DA6qLmK/ZeYpOTpN39nH2kUNqI/Bk6DIDIpTLGS\r\nzDV6JGYP/bs3IYrooZyP4tzlGwiQt7rP1iuK/Z3Km3CtRLaEb7eTxUyv49FM\r\nj+Pakt8x2vuWw23zHHGesFx/AJ215v/baG7MULFhQQffILnehI/iX1D+UDKH\r\nSu6rYT6NxAJ94sF+Ih91ttNO8hapLFqUwF0kzChLyMyaD4qlfklUCHvJsTSa\r\nKfSa4wBVDRHXpBYPeWGsR3AGEJZg7GLVvK0LXl3qW/Qd5NxfAqF6wBGvKsKM\r\niyMoTvGnZ+6u7xVMqfSPIY0KZ5FqSwZiUwXmrwpkyM4BNR07svzt1wGMHMUj\r\n+7aRkrlZTl1MAsN36m/9F8mFnVSbycqZEvM=\r\n=woHq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.84_1659552150012_0.5093179026648278"},"_hasShrinkwrap":false},"0.6.1-unstable.86":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.86","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"974e8371a30483c7496bde1acc3346bd8f86661f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.86","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-9prj3tEqDPCgqM0OSKgShnCBRKMWgTi99iqE2LY1p/QEcnjOcrPkE3RUK6YlWoC7Boqy4ndm1nsXw1FHeEIzNA==","shasum":"fabc3a72aacce472ad0c8bebe270c48a832885cb","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.86.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOCWZuMGD9JaLs6EZLhKUkX/anSjmF314eijELezUEcwIgCkz/3E/lxva+oDGJN0LVWH2Zs1kHn0WOoUSPNXWtTeQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6sQ3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrsSg/9FrjXOVHvYcQb5t6H1luafb1y9XY0ULR1s5rtl1R+bGnvKtey\r\n4dtAZxEcAKBOW5Dp9MCTh7U+fcTBroHEAE6K7JPjEjZ8562i3Fid7eDssgEX\r\n8+Cdmo703DzbWkfLijIesr9xefmb+0B+tQNt8cOYAADRL/lH6tpyVMmsNcmO\r\nxGYglVcCp5V2YIJpC6haXlbBcTqzuSuz6dmkA2YLsptvG8zqpryVF2VgcF7k\r\nf5EMuR8rhoQxklXil6O5C+SOFJ+CWXaTLvBaVbGYB73w8NtibX6NCG0Tol+q\r\n+Dhh+lijhsW8uJX4aJ7pROXbcALlPpeCKmWpQvs+pTGSUtK7kCZjpeaaOqzH\r\nhJs9hC5DQdML/0XTVMgtkhLZIXakOqeHPsyOK29ckRyp6houC17/jAn0JONm\r\n1HzNlvX4RhGVq+fxDacezwOZcps+rY5infWJ7AXMii3pf0ddD2yUa8viTB09\r\nHT/JDtK5jbhgWi4kvT+2TPACMBwWsCAhCkRODRma3pZ5IUdVXPjr01DZS21X\r\nM9sru/J2sH6dQ5LpoTlmsoqUrZgiVJ3MLrNgnwVE/avlLJpRS098znebr3xs\r\nxa7RAM9l99RgGJCU4WIrJpcBejQ2/ELemI6pWNugpmmJivfsdc/t62wRLAWr\r\nXG8qrLn4LHrDSTUrRQaLmZKVClbAjyE4RCA=\r\n=5Qzu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.86_1659552823360_0.5195873042585375"},"_hasShrinkwrap":false},"0.6.1-unstable.87":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.87","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"86e6aa3b5d64eee0765b6b0d8a049dd3f2b5d4fc","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.87","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ya7c+LUcram5IpBA8w7ICh1GqLEMMxDOutyaDhWhK6Qt50v+QNClFvMKvrpo3wFTodi7nRKpIogxRCDv3+N8JQ==","shasum":"0a8d35e7d41533aeaf8e6e22f1d1ddc52fa2bf59","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.87.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFGkwuyN83e3YMygFhhGN6hLVA6+6f5PoBPMXcmH7PeCAiBH0X3zeuGIIwg5czantDrAKxoBE7DTh3kTjI9Jt9or3Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6tVLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTUg//SL1Ww3z0iyR8hEUCG/MgVuGnS19px6bSX6rXFvvNgjZv3V76\r\nVco6sLM8JPCUkiuEcEuXz7WWDEGAjo8WLADkiFlApyYQ6K39MgvPb1IV/BOZ\r\nR7EN+IsEhzCBTmECuwzCELeSaSNTO9+oKCONl0xPaQMxshEsrUY1ihj1Qw3N\r\n8B04MLi8MoituVUf8QaP9dLxHf9Qkplspg9uAJJTak1A93ew0AcMl/OkmSgg\r\nDqT65/Z81E35seC8NaNHN2TaCQhLjAJdGDaiLUj07ah2KL0IlYxQwYal90Mw\r\n1UV9R7R1Wud+rHRX9dAyawrmVElILlOmZxYRvYzC8lzO5Df0XEYrkxYMWrpm\r\nK7JGV4nih7G6LCL65JWfT8v07RksSKBeudiQO/ZfGbqI61rb2PjwYhaZ3ud7\r\n1MRvPwroS8NQbrkp5ixdc0KuKF5X98+Cn0iClszm8Axjo13zVsIhNn0UPUEY\r\n1lsbus2EFNgarsWjCByifbZiU9FyQYziYMRznRlADnNoRmiBmQgtV/LJiuY3\r\ns+Tb7kVqmTjiVu5vK0n7fu/Smte5RKAv45fZS4M7SJqu/fwQHJtIAEgbBOTZ\r\nydoOClLPbBpH+qQCUAbTRg2PgR5kep5JBQ34wC2YLm3dGxS7GaAYfHWZd/2h\r\n4OuZlV080+Ci6oZmXV0EG/jOaPfvOhiniEE=\r\n=fXHc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.87_1659557194971_0.01367149857593808"},"_hasShrinkwrap":false},"0.6.1-unstable.88":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.88","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"5367e3400bab10edefedb6bbe710089e85303e7b","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.88","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-KXjozvF1B4CCRX0FTdVeHIOI4cq5S6KM0JILEBYtbRlF7itPF/TIKKJIVhcgfjfU2r8QM6Bqe2oHIyI831KRRg==","shasum":"08e164a0bfb2cbd47bd79213ca9eb91908dcf3bd","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.88.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx4xZJv0PlKUuNQOMKiTbBD7fJROWC2GQdYVZjN+8LKQIgPJfnUZz2NKbtIiYihVXDZ6SFl3X+PpmkKjcjNLCOKNM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6u4HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoZA//YLV8ESOQcvFIs/G04P9aTIv3Skg2AYFfDm1CCiFuv4Ek5lOU\r\njSlGcbm1QiCSaFkI+xS930b8c3EZotNp5yqRcCOlPWhMfLiwL9n9CxUVpV4Z\r\n25TmH4MPJtdpJ29r95L9sHIp6Cg1RMlgwg/lLTZVbHOaORiHUMxp0Rv8paXJ\r\nogIo4OZ6hB1gg6yW1K9371Q1hOBNlUN4iLIMIOM2tSW00e7stVHrCFh51+3b\r\nLcvZfh9jEgBWhiaOa9TwEoKVdF2gxYUNIbwjVLpowdcr7B3t2GFCdUQ+ft3h\r\ntrwpfbx3Q2IuY7BchE78HDrsu9ZRbSujn7QlC/oGAU0JoPOJVvwSNH+UsINL\r\nBIDbivdpkwfsCOc2hrLeW7fjn7dIMawjJOP+KkBrAlh4zTMmicCQpA5Sx9oZ\r\nccEOwLDmUc9oR1IjcMc0lf6u931LxVuQi19xEcCra300KOnV1/Pa704twzhv\r\nLM87i+bNpaeJ1ZQ4tNfxPwUeCXZC+vr88VX8EFMjBEdS1thQr1JeI2klN1Zz\r\nozasbQ8lB6D7xJM/1WtpuEBK6/Etf74tPl+hP/EWa4FgM8epi3yeJWcBbMlL\r\nbgerUgdGMvA3JMp4VRPY0avYZ7BYPpbcvlSERKP9f1g7AOEzVTLswk6m+rEg\r\nuX6bDuigHSjeUojn4MZzICAY30LrcVolTV0=\r\n=0jya\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.88_1659563527354_0.3538215056959184"},"_hasShrinkwrap":false},"0.6.1-unstable.89":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.89","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"9acad48023206ed51a8e82f414ea5dc7892884a0","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.89","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-LH6qpQEQjPebahhzIpnd+blHlb79+6c4Dofoia3ocd8NhAxU6bEkrnAUxUzYMUJIxTdcPuCteOVRySKfTJ6DUw==","shasum":"8c9b9604ae8ce0f0cbb955af1b5243411bf00079","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.89.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9rnAVxVL2DLjW4Bl8E3O/IUeFxvaJJa3LfqOPUvGcawIhAMjzgyt7xD/p4YxBuhpHU5m2fQNzbPE96WL3xTGAzg0J"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6u7hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVRA//UC48YFViLBA0D0O5RIZ35LxDrom0iY7yzcm3RCIuizGyMfIS\r\nLVMjxdPY3Oy9P5RuJ2V3JImtpkmy6QF6s159+XHrSTHiCR+LuNSnYt6t2iW4\r\n6n/z1s1Ok8e2nJLOREozSPQix2diR1XqWW+126wv+zYvv+qhWVcSlRseoQuv\r\n857/ZYj9X/hopdLdevMFJ/qYECEnUssJYWPvF1V8asIPEKhCE24i3VDEUJTj\r\nlq13daieozzTHOpNAar/Jb9q/zidBzUcHjNEJnI1Ky/BoY6yLOMfpNML/chY\r\nyTOb0aV2/ORHWOjK3Wt3lhmv8advA1TGSaTA55iMThTslR08eCvB5NBxn6zz\r\nQqoGmUmBTWU/kcbwZmQ8U49yHmc3++SmI3ZL0H85C1vrQD/0970Knw1mClgm\r\n4T/v6lMA5MBjjSd69fMLFNZFQY0tqXpgY/+QPFE1anHaxtq3CpKukLgNK1Vm\r\n1+EwaK641U6UGBO0vYR/tqVfs5IClweo3zjJV/47pOJqN2lEqo7ObYUp3UGW\r\nmLJh6PKpYcMyc++nQ1g9yy8zjo23BO/n7ODZcBtRChf39EdV/xVSbestL553\r\nyKllDkuCdrDvZIOjMMl8rMq8N0rh/C15dTOwFWpuPuIB5lhMgFIOrGmgZ+Bb\r\nj1A9reuoEtUko2hLiz2FSgFoHjaiVk5tgz0=\r\n=Aed+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.89_1659563745608_0.17623652808328694"},"_hasShrinkwrap":false},"0.6.1-unstable.90":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.90","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"13f402a7a6a0b7820c7961c83460e77920950b23","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.90","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-yuyoafnNbtMO93mrZf/RiVkyTP66BDuhAK5dSVjoidmFXDM4YgbUWPmxcBzO3ZBg6C9kQFo6VGGVryon1KyvjQ==","shasum":"296f2e5a37f3b67c5dc1293e18c2f0da5ed3c902","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.90.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcQO7k/8tame0FmPQhrAVrmEzbsdBhBEq1jv0LrJBr4QIgTL26TdEQJQfkkB+6FCHmaEDIJcBRdBdL0Ywx1EOZ8/I="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6vIZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpWCA/8CmSv7FUzs5Gi/coqKyza1S3kmSIWkwjdntlclFtL1S0NRbve\r\noTyzSnkHAsr6nyBZ8jJ0PcHZw5bIePnVvVBTb+eq1iyEGe/Lb6OdKUXwrmFo\r\nEUkDILMQHPTREkayClpvT8faI4pQcT756wXg8uJjegyryQtLUBMPxZmuDuyr\r\npgG7LecBghziLwwwYepALI+TlR/0Sc7E/EKEdxwIVvxMt6eEReHSoCJqqUJr\r\nXi4PMjrmAT7h/YFT2a9A2fOKfxsE6bQ9B7iqdVV1cVaszjCFQavDGQC6/HwQ\r\nyEeiUvurLydrAn9bx7AFS3YvE5RFk8wNPoKnsdXEI/67Kkomws0VDB8201cz\r\nRuev+pm8E181oD41t1DRPIy3yI9s6BOqiAs3S+FGwLP0sMDoh+ADDH10LNlx\r\nVyxCo8Z2PBgA0HNxhgJRb3J85o9KpyATpJbtKFqOyTDdujBDz4AxWu1dGbmr\r\nT/s1OCvMGBrW8X3iKXLl9Sd+0WHdUmSbXAPH19MpTxjnXOvUb8mHMDtm9oaT\r\n/NcyoqV/8UbzxBdjWh50kSMfSSxeKl5Qab/4VqnBFm8C0Qq5v2/yu2iFkFPj\r\nOk7uPkFbzqjLbT0if3UUThmaRo8BtSrkB4XY1ijeA2Wc+R9rPKvU9f1IXD5Y\r\nyeJzI9waB+p0V6Q+xg8Nco90IGHfA3k7wmk=\r\n=A4Cf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.90_1659564569368_0.09536395620820759"},"_hasShrinkwrap":false},"0.6.1-unstable.92":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.92","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"a0b2849209ca15de97eceb0ebee53c21f20bff80","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.92","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-0l7qJ47zcNN2pijQ5AFvs3scjR6C4x+SsjbTUt5riHqiTovNhU7cIwqGPebPizdR//xx91CD8l2x6EO8hlGUDw==","shasum":"5e6b5e7059089ca42d8f45397da800775ed1ff04","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.92.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+aBsNykRhkpuoBhBvh8DRPfl0QOBt9LP50Uybr9WWrQIhAKCU8De/kcmc9I5o4Uu2xHmJdv8nfWsZh07tA78+dhP1"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6vXuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYVQ//bNleinmvZxGjzghJ2JhPz4+G/17y3kBVcVueMlApHqhWAo8O\r\nd+9b2tRhu4Xy9KOSJUWy6ffoZGp7JnHhPmQzEg4p5mISb5Xg2bV5mS8t/wm+\r\niRYDOWA6XLhwaEcqGzIA+6LVE7pJAI8HFbtWufnu+u19watGEuy2dnnyP4OC\r\nJQB8YBbztij2o/GWVK+kf7Juor55lwoehouMmbmCJyeV+X4yCgvWHz1h00Fw\r\n7cjW9pa483lDwdvUYlwL/l1g27hXhFIlxvPYi69zHMaKHxzr7D5gmWoZ9l0P\r\nP89bZ63Zcj0GF1o7+CVqLj3bYpekbeIKuY7Wh6hW7Fwr5pjDs6kUbuC0oRda\r\nUfjxcbNyP4ODpD2+KBVqHmI5xIHAnTSJClo/IXlzeMLvaPho1FYeVsgq7rm3\r\nhFRKc3DSdPIXuHl/9Pd77kBzIQYvyk/2ve0hRdP0ElAqPaH4JveQzv4V2ziE\r\nhiC9McKsh5/1bfSS0+dwezb5jMwJDYdFFtjwGu4pYouXzWDGY0Iw+6uu/fCR\r\no42GhFzt0ZS7vt0P9r20onAeq361RdGOfPi71I+RU/xiQ6h3CPIIxHhSZvSP\r\nPAsJUaz+J9JWVrY22MuR+9gFJagKlciqZOcm0mEAvi6Tnc9E8m5UwaOIdDCX\r\nO46CbEAr4QWmog+TyzkGJDS/RREZd9g9b5s=\r\n=Tl3v\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.92_1659565550070_0.15348721506130159"},"_hasShrinkwrap":false},"0.6.1-unstable.68":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.68","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"347272ddc49d8bb065597a9f5bf789227fa5051c","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.68","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-sFafjXAdMPwLMRy1t1YKy0RjuaE00Z93uouCxaEMF3olOgJc+eL6hZ/EX98KS5ys73oHpHyMmUIIe1pbXHzY4w==","shasum":"ef801ae973e9ff681e5d6a7963af65e5011553f5","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.68.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUFX3v2Lu/bIzQR76tsz2Dg2Hq9o5Cu5KyqBsTVKOXWAiEApkWTsRuVtNhl4cGNUU6XO46msY3vg9fGbeiItMdLl8U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6vZhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk9Q/5AD96f1RZjI5SRuSmdLx3ihN95TuRZWBQp4lDW6/11r0Vj2VA\r\nUBc4UEKMEaJdrsqAHQ2jlqYt3E7uXAvhlSqCRTLDbJ4Gv9lLp3I2SWLjuUrz\r\ncMeryXBVrPE/UFADjCQAoDJusg1tmI2LP3BVgOOpPYvD1TeJLuJ1aB6FsPer\r\nT8pFN8dQnoFKLOMVzhiLlIvB+idAUB7k+JFVc8Cd/0gEEZgucIuA1D0iM9ng\r\nTiNaVa1GYtEBOax0LRrxy/2J+hQ19e7HGg+aFZtoHNGNJjKyDh8aAJ/m4srq\r\nSRtcNOs3Xx0Aj2F2xqfgZb1Fijjjoh3H/N/NwTKgkL1ePFupM4Ntek9jZiKQ\r\n66gj+GB+BQXN6qx4jvT7+oR7HRlSQ9OfFnnwWmkSw8OkGIzQR1YkzF3w2MEJ\r\ny2SU/OT4F01dAfMi8lOdHl+C1im1yxt29wraPz1n/6NCIrQs5AitFjMuTNq9\r\nzlOMWGdV6JuyASY5yqEuECVQtbDYK6+YXBA6vgY/EKNFLXa8BGcXX0opvxnj\r\nA3BWp/ufum38SFDPnRVqm/X18DRU9q/T1rz4mztJrGxZkM9CSyezbjzb58Wk\r\nhzSPO6cZ6QbUIHvfKY4Udf4nA5T647Xv886vbMdomfkjZDwtXEaVp5i9qoDu\r\nsjiMY5lVKUtP2StOWyjgds+VVDj5jsfikvY=\r\n=Ax4t\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.68_1659565665621_0.966728864804572"},"_hasShrinkwrap":false},"0.6.1-unstable.70":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.70","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0d608edd8a515687ecd4dc1cb612cd8a08474429","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.70","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-gm19BhIzaGPmOdA6YGIDvjinPc0NvoRViUTQSh+n02rxunzz+RVAd03pbc8wuFXuU0QEAoAPDZGaw0WWG2rzdA==","shasum":"b170c9d1ef2b88020e94f92fa38628271a98a6f8","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.70.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUA2RamBYFM+EnKr2FcsAE9mWNeBFKcowqEoGFlEtO/AiAajViP61a9ZdTGSruDVauX0Uc4zmhNWUu4MZNi8vGL3A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6wcnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpfgQ/5Ad+BXRmPZTFFfCzyjHeJbVVJ2KDg6sBxBOyQmHUc0znh/0sJ\r\nSsv7L+T9IYv7FBFzWY/JdQEDfTTbowJP5+w+VJNkihSqMKseO8RcF/dh1nTh\r\nw78+GmIKL2WvJ5Y3SA7pB4p+iwDLvIBC8mbshz2kQyoMdP/rTGsIYLbnj9L6\r\nOXMijvjNIE4egK0dZBVfXT3pplXVYEjwKiB1ss9T4SAbfEOkmTPvxgw3Jgj2\r\nahVaMGx7xrp+7koHHwXx6GhmIyuNqh+M7Gt60XsTZQ+NgEanr5XHH4EGLl59\r\nJRkafP5urQtXqt56oNq4fl56kOLrRwaWt6qyfFvQ1kd8m/C0/ZFznQmj1UdH\r\nfwrBLFWnTFZt2087AAYFgrSVC4XAsmXSmmh8Ol/NExcn8AcKkB13Lwvo9UFU\r\n6tJhV0qoi84w17WkLq4aj82qLeahYzRrqDlnma202BAZe1P2SUKz0fEm+vNg\r\npfJ9U3HfSRWo+mqnwwVU0dMqmWeTndNqNGXyuY3FAeqqy0K+2mBW6tkMw0E8\r\ncRhfIlFMFcaTW0BOH2djO6GRPoYNMI5e/ibQGjBjZm6b0y+LW2ujFJNxSBhF\r\ny5NW5VtbLS3qhp9sWBjO3qayJzBIzCuorj7us/njTZKVnxJNqO8/yY85QgVj\r\nyMgUjrl+w4lHy3GP0HvdJ2mq6+i8RSj5BYM=\r\n=77Cm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.70_1659569959674_0.3737753852467425"},"_hasShrinkwrap":false},"0.6.1-unstable.71":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.71","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"ed779574438feb5fd4c1927ca19c6fe41366e71c","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.71","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-dswBL+jiRim+tCsgwkHhGxbEb8XiwQQP1W6vUxZPYvK64S/v+ZjAx/xVGczJSKl9Rwvt1GvaNNuODo2imSbTZA==","shasum":"325cc53ce528c4c15101ac20219d5b9ffa3d3776","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.71.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcgDN5ig4gmxrRscY+8XqbLuhj7Gat6UCFi6xhgfKEiAIhAOw0gdmFjurzfbL4MgH9feFyjryGDBVK4qlURM1oIoYy"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi655uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuWg//Qv7X7N6vtFcs62XsLftmjAEVXodXXpKbOpwzdEPJpbKZimIn\r\n+69f9GtprHrD29ADtVmOsFz4DUmEaSHHx9LqH1APgUhTURoNTFdye2NRyu8P\r\naWd7tdjr2tTxHLP90Gej2XlMgmzNdKMnjoOWB8xRu2SUe2ugvLSYn09LV8kK\r\nXBlIpjDI/0Y9sdnS+5pc6QjhQjNX4nBFs1a1vSLDHjjlb2HThoOLIFor4ZpZ\r\n4DXTKZ4qb02p1RUPP/VVun3m/olUMW2TAnGb12QM6H275RO2A7VllnKZNYjB\r\nBwwVe2qIQxZInvQXWJFo/855B+k7SgPiOlG18DHXMkqSnNFRItQaTvr34Y8m\r\nYJgC5MaBopbjqO771rE2g66p3qel9UFtaZIVypSZhu8MS8hfce21wYwwTYa9\r\nJaRxJQK5u7K7VKGnJqWrr+6Vzenbw/JVkqypxZmaA8LhmxVl93poRfNQz9Ep\r\nN48hqcvz9/txM/+hT9cMnkhHCAW9PW8nXcDvyEDR4Pxx2iCGp4Cmb+1+z4cx\r\nVG5d1d3ejDT1abQ20nST4sTMQGQwR2hFZIgDEMOFWtz3D0zD0neGavQOe2dt\r\nkUyUPqvotTaIef+qUVgrOUsRTN43IIU3BOSUhBaNo7pmExMib1zyaClPq1mi\r\n5tyKSNrlFu/0mq3ZmQW3jRdI34zneHG/FLk=\r\n=qolw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.71_1659608686591_0.13068120055856447"},"_hasShrinkwrap":false},"0.6.1-unstable.72":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.72","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"f1bda5b441d8b27fb883359124dc4f68748c6e81","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.72","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ANUAe/csM9ETmuG4wPOK4qUvnNha8+XWtu15SXSxEXekFzEZnPRwQ1aTtvY+nquG0fhxApR8EvOT22zp0dRv/w==","shasum":"fdab0de36dd2d22ff70c05e2edf0175a329da364","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.72.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSdeRU+CWR8ehg43RnaFrQARmO24otQ0rUHjRcespz+gIgEULKYWqqkG1U5Fdq5irao0BOWsSwy025m8gW4AV6EN0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi657UACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQIQ/9FZXV9mTmaxE45Mq4HwIHIm7wxjRufLe08oEwI+a9PjM7Fd0x\r\nNMptCXEYEkDPbuEeZDC3hEp0ZHymSbK4NxIT8GMlCVQ/RuwZCOKXFX5LAJx6\r\n+S/1pcblRpUR5bjK0J0TiCkBt4xrfu/n4RfjLtyeRC1vO1VYbsDLclfrSeVn\r\nnGfbINiQOYS4GnmeQTPAoEB2iqWPRPc7Ja1NNl1q9XjJR1hn9gDxcjG2hgff\r\nwlTMDbvRTFl90v3ACeFia70xHEPjYPq85/ix0FhAuemeNrJJhTRxEvc+84uR\r\n0v9JhqsBakVzfQc1CoKGsVKA62Fc5A5oh7129CRp01Gm1rKiHPWWTOpKnrt6\r\nrVdJjDeSvjxb7ri/wYKlxYwb9sRCLylYBHybslWt7459Rfbde+ERnVg3l2xl\r\nWKUQEUrCggsnRmmQwMgKSkAaFqPt2bUVDPkTLIdyQBh/AJeiqPKsHRFiRmH3\r\nsQuZ/+Ylzh+l1/nPf06M7MRBdeA4wDszBDpPnOccsybXucMH7TUIOkS2bKh/\r\nc+5mSKVqtBDyn2u44jOxA60UPy4Lz3RfZmKOHqEWWHMVKwR2QhxeVu9bPBQZ\r\nUyEPUv9vrLQmHMR0T7YXpzJq7gEkxFuDmpLr8iQgu9XxgQK2yJK4DbeNzCio\r\n60cV464dOU85MIC6hMI/lEa39lTg1rRshHs=\r\n=0qdr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.72_1659608788554_0.14845686063444496"},"_hasShrinkwrap":false},"0.6.1-unstable.73":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-unstable.73","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0b4514625e2771a407dca9a5083d18eeabedf33f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-unstable.73","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-erMErWcn1JOjxDXYwxcIs46tq1i56IQiw857caQsb4wBFucCvLq9c0lG5c1KSrGlxMu2x1rtK32QbVmWBygctw==","shasum":"9c1f55b5a92e6ad1322b122c281f44c09c07c431","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-unstable.73.tgz","fileCount":18,"unpackedSize":30253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBySATidiE/ht3U3NpKR8SzNrkhx4W0YTzU8dTTocBz1AiEAjJBtrlzbcyq2Lebxc7bY8X60Zkx8kcdxulPO4ymmoFM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi659CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVFg//aF6MexNZjmTYlOUyPk3wDb5TIpWAeOLN693ZyMa5aiq779+L\r\n4Esq4dkzBog9qV24G/BnJQqN1mxKTBZsPhJIHCbvk4xq6I/alHTOKed4kfza\r\nSk9NeYDHGBpk/4zinMm8v0UGWBVCwIFVI/5JVcRdPf5knxGmN0kOedK8Ts5Z\r\n35AQCJ6xFkie4+q3WmZEnlPedwd1e+RTZJNJLg327mduev6pYLpat529sHPN\r\nIjPr/u6940yGwWYvSZbfLOxqYD4nuIYLj9pluTLf9MnldOcJFVomfIo9dKmH\r\nnvsu7rU7YuE3gEJ+x3Ih9Y+KLUlmubKBaaCjEL59tf67ENnsZ/Nf2oNyowN4\r\nnWHAw8M+MmUH1ISjtk6UIx9bxfUq97q1hJ3v0yJvSGLZjX8hEcszD3hEZ0uR\r\n7Lu63d1bfmD6eVATjqt0IzAh7ILKPi/PgM3pjHprOZY6IT4T4EwcxfTnd7Gs\r\nBJGW/bmX0k9+Xlr5mqP6SfliCaImNODekTzkpptdEXO7na4995pzoLJIUpgY\r\nQnQ7QY37MUNpmrvqMBji7cve7/HiNP2Vjpt8RlYGkDDlKZ718gblZxlHn1aq\r\nrZL3ZaKoDQqfgzDMho0IC366rxokV4YBceakuocF+pnDt9desU4DiWY9ZIgW\r\nzZ+PXRe0BEdltviawgVyebPZqjJlhkQV+XQ=\r\n=FnG2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-unstable.73_1659608898376_0.7883001556247795"},"_hasShrinkwrap":false},"0.6.1-next.76":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.76","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"d3987b64fba3d460639893ff6664fa6e15178458","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.76","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-6bC7c9XIdnSMHJJImZc6w+oq20YbihlnbGk3SnSZzygcNSzIzTM4Zegu7Eb+CkoWsOMGV72gf5A2ilSIp7Vi4Q==","shasum":"0c3fac9d2903181f4ac242dcfe12324b13b7ed93","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.76.tgz","fileCount":18,"unpackedSize":30249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/tclbr1ry/xOJ9WbqxoQsoW2xnc0aYZ01gS6pur1vmwIhAKaYFajtDi/Ct/XU4M0Zo4sXwyCZMNscmnNsHZm1FPnh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi67CRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFdw//aI5F3A9GFQPmUGUnzx/Vfm/6Z+olYxpK0V6QA5LVFPEdeR2C\r\n0OEDrzerFlXDnpiTF1ch4UhQEI2R2ZjWxKi4iYrKwNfZWk661B/PFrbAuy4R\r\nIxkTg9tCaDwWU10mEuNbnT20oiq0b8FpqSxQ8pBpl4Vd5BYmoMDlEsrRvYV8\r\nR9UOJ1dCAOgALYt8Qpo1iYMb1VTfcnF5pPBuB9lwwj+LWbgrNtm/K1hlSD1O\r\n/UoZ8mLbUi7WSZnB76Q/kBbs2Cd93/QiauxJq+4lZeWIwu2ADoUyhfZQiu0l\r\n0Gg67y3F0xHFs1Q895EAR5CRJOPvFSBimTxHDyWuIdQDBQ3MtxEDRD//NqCo\r\nrL/lZLFpBSpQDWwNpqz/wsL47HM97kQCr7cSPGTZHAdrlGSDdUBWTc6TvmY1\r\n+/s5V4D4RAKWDheeCJtWthf7AQwcl6EHU/aXgHWuPSlgks8ORwEY94oih6dc\r\nTyGDcAKW8TPnpD1wPRBd8jHkx5t7U228CR2g6kEh1x8QDsGPFeg9o0e1NWJ3\r\n3Ubr2ILTr8Zye4rwOBXoqOY6ReMBHaoorR44Xge86zZsueaq4KaEov5UF/UE\r\n2glG9sLU5OcA+vNA8Nuc348Hd591SZ1eXQsrZFwnyLf+uCLEoWrEIO776aOM\r\nq94/OZr3ovIr99wVpBkqxJEwfS/wZZEpH9o=\r\n=wRP0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.76_1659613329336_0.7059002424791401"},"_hasShrinkwrap":false},"0.6.1-next.78":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.78","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"1583f2e5a7807247270b60a7e551f2fd2f8d8030","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.78","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-jrxiYCEWpCrjHrVlRRibonEyNTOjuBbyy2p3MzjLBvFs8z3EcGZSlhtod30Pa8q1jJWMXHSE9VTkHO33TL0BXA==","shasum":"7a33b46e854359ba39201f41c8ac1bed5a2c5940","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.78.tgz","fileCount":18,"unpackedSize":30249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSI2aiwqLTXkI0C8oXVzq0wc3Lqs68nSSWVACWeRUI4AiEA/CkKyDHLt7UNpOprBM6f8qFvA2IQS+FpKG8L6bdLqxE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7UAYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmosVw//Q12qR965X7K2/Vt4Mp5gH6o0w9Mgdb9O3rotkdydaP+IWM1t\r\n8WVhXaQ+WJMDN9QWGlTgts+5gfPklZe+Ex+1tLfWrKPA/MO9qn6hACHiy0G+\r\n+JsKHFbXwqJZ7KLi+AYSAf7rqLBu80LzxIQAoLkdvaW7rJv/0pFtxb26c12X\r\nDLrasAW3gVIroNejPi2YLAvwIuN4jpt7LqWOmXF7mqh1oLKNrUr2YM/lSuZW\r\niPHGhtd2bdyycqt/sfQTt/ZKexxGcE5preX6OqBXWLNkjKgg87yrFExt8JMh\r\nDjfp1I77TBNlwUY7M51H4ik8VLpXOouR2U7TUpG3gVFOi/OMODal5KfrlJGr\r\nJdcVJhRc62/zRbb+jenXi4OmAkK2phnk794yIbwRFIrYxN2tZ9izIktq1Riv\r\nxIJTa5rdFBWQ+7hfm7BcD8d7Tm2MZt+qVacROe+MN8nxZPVOUt34t1OkzAcA\r\nfousfnxHWe+fbN7Domb5LE5zN2L15Sj9WENqqFyZrkALHQ6jU4tiqTgiWccj\r\nESltpyYAcB5jvJrf3ZEeTT1yEKWwS+852LJ2d3Wt/yXgaSWzk49Fs2lGU9qH\r\nKQYJhnCgZU+8l5LESjkTJWOKWaS3esXzikHRe/WnzGfBCBlnU7CNDgfkXOoI\r\nI8VB5iy5juNVlpqm5gHCEWU/l5x+SL+v5vQ=\r\n=OEoY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.78_1659715608369_0.3433867408064184"},"_hasShrinkwrap":false},"0.6.1-next.79":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.6.1-next.79","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"69825d9f539bbad080d96e0f2d1601d04d583bde","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.6.1-next.79","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-6z0qAkF1fc7lzYC+v5vqsUMaVdRcwks1hF+YDqGBu6yZ1ttjSvo7n5DcasnWWqzfxeL+VGSdHxYhS3JYnm/UDg==","shasum":"b5d8defe7135f98f6f7494051347324207e2b7e1","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.6.1-next.79.tgz","fileCount":18,"unpackedSize":30249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDA3x46lhEuVnwLWn5PdeM1ky8rOttP3zn74qEqGF1J6AIgMt1LdDlJmsXA2nKDcoCYg4dFTfiH9VsKC8ElPNHMtsA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7UGcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqcIw//ffLp5dXWXSWo1LcXOHkKZQdx1vn3aMJJtG+KjwAVS8sjcU2b\r\n1zrfyRguBxf+msGg06DyzKgDW9ngQklzSnNRuLbludGfxaEchBUTJqpSmkVy\r\nyg4rh4h0nWwth3ZpyKuy2VvIlzW53PHjz0L3dRu49Qc/5ZqfycF0wA2X9HSx\r\n7dCXeRkjUFWK0REiUm3NmWu4YzRjRcDezAjS6C03ErfJK+CgyPnuKDBxH4VE\r\nTXdA87YqUxz6e8fAAomVuh4jKwNJGawIMBFJi/FaebtqTdNM7y+UN92UXXCg\r\nGTc6+dyWWLwe33ynXaH7GtlTEu4ae/ttDTvShEGhNqHuNPQFQyQYk9Mh5eiA\r\n/FAj4ZWjLcEvk3tuWQaCvCOdCzYVMnRpJ43l83qjFvmrCM/u0xjSZJQyacm4\r\nrVceIAbR3dwvAjQvvLGblbqBlkLVggtI08oAGm14rxGW6gIUZ3e5pJSbAKaM\r\nBwcr4M9MLxd39gPSi92+bMsFv0G/LRYO8Mi2fTQ1JirwNCRkeJA+1Sw8FWSn\r\nfgCyocl0rG82iwRyLkJxC+rjYZnrsYOsijWQ6UDHTnitY8si0QAtmMQfZuNW\r\nUfO1F3TXynYhytTcg/UYTeuYhq454xjlbFvR19MRaLYT3muCKsGkvvJHxnR5\r\ngtNNGL+6HN5xvAAFeIFgAzemSJubXZnzqqA=\r\n=OkcD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.6.1-next.79_1659715995803_0.9665215648743664"},"_hasShrinkwrap":false},"0.7.0":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"c7b02995ab00955811f9069296fefb492ed64e4d","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.0","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-OIGlz4/PK1yxHOlRpieePOHOryFz4HYQj0uKtWEAf+LruZnoPmJ5a6Qho4sXT64am/aoZLFk3QNoaRNXyA/xXw==","shasum":"a69d6e8ef4cac2ea740267ebed9e34af03da98ef","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.0.tgz","fileCount":18,"unpackedSize":30233,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/Qv3yxG8JS6uNEwR8cF3nWO9yyx2NMvNz/x/m+ts6sAIhAO3uu8xDTxEsYmuzgtonGOG3WW5YKGQEvQvwX0AiTY4V"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7XUJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqaDw//W9SWon3OTSiwXtXnVTKUDZ5g5Hb4/zEXCsV1sxUJ7Em5qtDy\r\nSEejit6DiM8xVW5pAM2Mz9N4QiOrqgKMUJ3wixW5vMJGKSA861WkUqBu+CgU\r\nOhdZfM2BMJIs1sY2KOmiNGErsu7FzHKc+NS8XQUpF/Smw+pxV7IDcXVK+Z2V\r\nLU3dWin2IAU8MCWzFH5DLuZkx6Z6IrdCeTk5duVXYnL+y7VocSGNZhs1HseR\r\nloNsHXPd4vFs4yCBCh6Nz7ESg7YZ6pRAgtj/6oMPXXZVQfgzc1QHkhANmMzr\r\nxxU1rtN3L03Zc+D3aKZxF6rhKx0CU63c0djcEsFJzy2Y6P2N+atyfbAvbpsr\r\ncNfanryBrADz/+uWED0VlYcbfsUR8ft6guq7aHN1BWAEYv1fx55DuG5RESMH\r\n+6cpVg5UW1dvTvolJPNCoMuJ7Gl/oBhxtN1bgO4ETBc8cS/erZw2fzegjebF\r\nugx1wcuvWplEVSt96OdBHq8k2mPzL9l66u79/Z0Dd3pEgLG23uvx+PdSkXFs\r\nPAXyvyQXEkDhJUm0fLiksltuucvnvXqceBg8Pmi+AbuOJOD27F7fOtj+JCPw\r\nLWfZI7nh/A9wkBlq4swjWKagv30w8o4scq4UlGgXeSA8eDwW93U3HoJhZVer\r\nM8RSAbzcEfgNbc5NvtOZzCqbw31rUTpia2o=\r\n=ZOlA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.0_1659729161553_0.8639735906752037"},"_hasShrinkwrap":false},"0.7.1-unstable.9":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.9","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-tools":"0.1.1","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"760f456453494b824c2d7a95fe2b7c06494f01c8","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.9","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-QMezwyVyUpCWc0Qa7DF17fcXCVXT2S7TVDkfq9SJVIHFRKRnIFqM4Rz9b95EmAORPitk643u+GmD0hhWqigw2w==","shasum":"d3ec84e6a0885cee4ed64cae8257269b961b68cc","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.9.tgz","fileCount":24,"unpackedSize":54532,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDu9TRJfGa63I17uJsP6MYs5Ivo7Y3wC2dwHL28okWvggIgUUHN/aJVTEcT0Zgk9/UIy/jSOMu+ucZx16ANxFGX39E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7bV+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqkyRAAoVIVNUSSCD6Z8rodbt3uT8nQg4oYkBEfHnVBqJ7lbydglCOX\r\nOlioL/a82q6b+zaN/WELXDX2t/ZqFKdah3P5EUDDGavLTOibI2PzDBnmhvVn\r\nJX/bcWErbtx5xSnQeYuMDisiiIa/qHXR6msBeYDXbsdS0wzi8Q3SH4ssm4nK\r\nyNSHJgcZiSejJINwYqeycjk+gmEUqOttCx3docaKGE6SJEacJlkYK85ybeiH\r\niPJL9jIRZmaYaLgxRETUKmyY4xZCCXL0gq4MBG0ijJUKm1kiEoTR0zQI2Qtn\r\noJnKtVBuX3Gy67uMsH7ffN5Cr+rmFVixPdTG8NrQWGMYeYOSR6aq7YRDfCKa\r\nnK2KEuM5DSi0y2rvUDaKYaBYu4vbE7gTfPzD1TW52kSil2Gi+dpQXP+VKlU0\r\nfW4R7Q/X+mKOTdpYfFDEEd6p/40XXFFgG33E4/FRWV64C//gioXrPQWaI2Th\r\nG6e1z3yf6xVzXOSE+HJqECd1rnZUUZ9Y480STg74imbsR3WI0yPc3LWUDsRk\r\n7v2O7rbONsh/NcCGfCP3Y6LWaGB4weXdGXoHtpAYLdFCWTw5l9PpKOQsNdij\r\nV4FeQEONmlsIh0X3q7oV2V+W7XbiUBiDc0sAPL9YwjFTfUCnimP4DM2z0Rks\r\nSjeX6Cwdh2yLer94R9nlM4/gvuAev/WifP0=\r\n=BCC8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.9_1659745662676_0.7517730426172542"},"_hasShrinkwrap":false},"0.7.1-unstable.11":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.11","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-tools":"0.1.1","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"c3ec119dd8eff1aa095807a90ee5a4b87c624098","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.11","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-F6woP84gK66p7bcIunZjN1Y8fDB+/F7Ejbklt3JSevNkFgwtopLs0CjAfoTau5wL0aMR/AuPsrAVsbvgaFP/Vw==","shasum":"e19bfd4c056fd451d6156f74cc0bc6d42d847959","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.11.tgz","fileCount":24,"unpackedSize":63145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzIcY6pxnLzTv9dvoKZGmYkRrkG+W3r8uvu7H3Ps+3HQIgZXMSu/7S9dtAc76uADQWkQZQ6APnviw04vdoDrmxF5Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7lYUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpn7g/+M+56iVzrNDFCJGHiL+1swm6p72oaULsqms/JTgK+FNiyzkzu\r\nmban6aByCfTINJraZhm49+jnrODq2UdAJSsPxmtuzAj2pVcHfEmL1EihbFs1\r\nIjn6f6UNIWHOQq1VlsdqAVp9a2GYtinXcOXzrlblfD8Ix2kjyxX6jJ1PnAPm\r\ngk7emHWKUUiQCGTgsEPp/eIquHQN6RRhx3NVhPMQV1hcSBgYIJvKFny3G26U\r\nVT0rsLnsQOivIC7hUlyUMn0urRJyZjHLAOuxG0Mj9XYtbITWYs4taXaX1ywr\r\nhO6C33h5+/TRZAtpGimsCO+T80H93woAwE2vnlaq7B4S9GG2x5HoaklYo3K9\r\nKjDNsMe5brC6esfAPqcgccTwQvBGTLVkG7fCYk9omMK9/LQF9YlZ8I6NriIu\r\nZfRsJbLy+pmbQse6/+N+4LVLSU/2yLT+GdcISjA8hJARIMwcHut8OdM+WWWK\r\nTr8tXrKTiP5QUqBTu43RvP0v9A6eLaJ+QX22O9/66tai4sryYLQgquVoLhih\r\nuJgPdQy2qqgDtgX7y0axO3kLEkp1I1MDtM95+TrcnUGAPzeyd1M4Q+CBSLfy\r\nG7M4TB7WFL+t87XhVeNEsMFdsTmV5lbCRpI1cgEjmxd6zCv9QqKjopRIEYWK\r\n4Htv/UEsg0xswLau7qWFV+nwvMXSQmfFoZk=\r\n=Q84u\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.11_1659786772641_0.13472638222806488"},"_hasShrinkwrap":false},"0.7.1-unstable.13":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.13","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"c74fb251cc3afc16bcac92731eb0fad114c6bf0d","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.13","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-BFhjO56R9656ZSAVPns0SGqim87Nj+lEevxI6qTG8cLCfIIC5C9DiKymwOR6L0jxEd8BW6K/zBKjuV6u0YTJhw==","shasum":"ccaa091660eb0fa6ea0d1199d940659a08a4bd6c","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.13.tgz","fileCount":44,"unpackedSize":112190,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3PXxD75jGtUXZGXW3KY6Q0ZixP/0Mkl9wzdnjbJi/dAIhAPT8XTCYEii63i+Ifo3zOHB0Lx7svIGWgwGO8nMrKpW/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8FTTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnjBAAlIvOuz8WfEDZUtb0x0lk0iZihvtvcdHt+9BwLHUyRtfEXlnK\r\n9iKGIuEcdFTVz+XvNa+pWhQkNAVJeRJWqJaeRSEKCqxt6IKkTUV6ctoDuh5o\r\nL/k7gPb+YL0YnbXKb+rpTySqZtlXCT+MKx4t5M0mApVey/HXVVVeJz0/0vxN\r\n3CZPDUhHsISg4186BZyJwdIBl9iY1wUkFEc67WPqedbjrLLlsZESC8bgO6mT\r\nRuu6t2r+WtywaS2wsYhUETR+5i9M8FyiZzpRSfQpBzcpTh+eA4rAvJJM0mrf\r\nivMKZ3nYUFWRCaPocTOKWi8b3vi5DbM0sAnUUaZa6Vi/giBYRbWjVWJUAEgx\r\n1fZLslcMOS6WarJgbAl8S+/GbiQg7CeBplttYvVFTLBkQWgmsf07twHTX+0I\r\nbc3LOmDeJ1PDxfjdsJTaGrWu6DFVEds0zvHcgcYEke0ultxOav8Q2kYjlHep\r\n19Kw+RrhvjOryWeNJJK8uZHwPxqHcgh/QC1hCG/UA05MqkOET5Nko5/nndbh\r\nBdLG+l2lFclx4mrdXvhQU5CTDleTUVqVZWnVEZZrlmenlyJkD0dJm6A3r7QG\r\nQPzcAyFzVi/p/6/3YBEEJF4TarC3wniKuUPYDACAVJmzgsJRSn6tOG+IpBsk\r\nO8HX++rHbqdptuX3N4RIwczO9grGsBGFVuM=\r\n=0TEt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.13_1659917523153_0.13021694114257865"},"_hasShrinkwrap":false},"0.7.1-unstable.15":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.15","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"3d615acba0695472d9581a04966057bf0f78206a","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.15","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ns/1bxY83kaZHxtUErRCLmC+/VGkW78QIYo57WY9qMfPoT6rzgo5h69ffM1ktGDVgkwnphr9kJBYM+uFHqXSDQ==","shasum":"5b106bb9e90444757fcc3bb42d6f379415073108","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.15.tgz","fileCount":44,"unpackedSize":146237,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsNUho+NrU2kULVB/U+95dn4rTRP7ZP1iCIr0atc40XgIgCkCivuDau4y3vuCCmo5We6yr436u8+ijPDzwqGKm6xc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi85dOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoz7hAAowQWfmxbpLIkiNsjYGVP4HHWi99AanFhD19JW2AaBlORuZTj\r\nPJorK1ucIVX7soel9yIDEcvpm1lTaOvDokxI6QCcqk3Lo5Md0M6aYuti+kzN\r\n3JHmp24UckYdtWHoQPtczf2kKTWnRAOAVv7wYNzhe7A3q0uVf9VY7ao0jz5u\r\npEkXCAq7zl8jgNOliFNonvETYFoh/arI4IWNFNNJ3eHo0WDrAAaWnUrxu+2I\r\n3fo2H7ZWSDzQNEKfnxt0nMrgLW4MMsyfQP0vSHULn+oOM0tu68+lTsjCWe4R\r\noKV/JPeSaeE0IC88bwRWqDQtCQwmyhcjtlozee9DzdwVhJ2tit4adTALdl8j\r\nie0PWzwlSgtv30twWkKShhIO5iSr/ZsWyx/7pJ0X7iXfip3RRHc5nKxtEsvP\r\nyoSkuG238fpdg9rt7a/jgHDsftNLFlOAiUkenr/WdrEK12IiajP/jJGDlEsn\r\n3wwk7sVeIIjdvf3B+1S/qxEgXcomQ5YR+AnxM0meNj5TR9Aq+kKi2QIepf+b\r\nE+6haqQ0C7Pf3dZQmNlzgkQyA2sClYgvCibGKvNHeYSt4E0pT7GKiOy/DKse\r\n59RsynhmRUroiAKWLJ3lYA+dIBAQWJrKUOUgJdpis/0SXfaS8vGcKJePeJZA\r\nJwjPm5AKGcjDNdJ2x5Dnrn6p0/vg2WOZ1Uo=\r\n=U5aV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.15_1660131150220_0.09580349434244351"},"_hasShrinkwrap":false},"0.7.1-unstable.16":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.16","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"e2ec3e9bb69c59f9546b3eb874ffafe425268261","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.16","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-KWN24HSxMUgNOJ7md9/yxvassT8hLxC4sp9/c2TTJGIUOEibuj3YoSLVZbzQe/PsRLPeQ92xQ/v48vDFkO9DYA==","shasum":"94e3e695d5055d8f14711732ad2654bde62378e8","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.16.tgz","fileCount":44,"unpackedSize":145127,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDR43spP/DrHPgjgSvkWEUuRsKXi1S1URch9pkm/NF1gIhAOFfnyoNzF3YR94Q38zoy91SjjIkx3/vpqYQTCHXNw5H"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8549ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrlERAAmJl7huIHPYjPaOhvg/5ra3euGup34GlmNiBa8sMIqpV/tL3Q\r\nXv6VD4BebBNJJjESw+Gw+D+0MqMhAaY12GyioAiOQUcsYWnZZbaHdGkoeMpq\r\nwjcjLSSv60+zIR1LXEnCcldRyoj5vuDHxSyrbwx7iKNTEKetVtcAaPxGaZZI\r\nxfMczTM3A+rIkOj1LK+qwTI8SRo27pygyaGf1+jrNIbDzgY0s7h/cgn4ThyI\r\nme8wNNNP5hIRQ/bWJ1eB2JVaQsa/E4fOmiWxBzgDYPbAggIhs6rz2qA9qKNZ\r\nE7ly/5E3DiY0UxsMdeqZdZf2DHYRIeEaGEPbnZ1L/y+3WQRnWZeT3O6Okw7z\r\no+dDySQ6ysYtvguV4JnjKJiyJ80h2Q5mBw3daFAtUdRDF9f4mXxn/Y3nK0Jb\r\nhFqMqdEYQeH8yhMBs7nLU2hmUxTzfm2KU5Qp7qQ/B+TVwswoTKWP5NPVmyxw\r\nvCP8/r+PQhW2DrnwKBqoAYLEl9MMI4YtduOJKWlXKoRuOJ07eMgyjOHF53Br\r\nz4b9JFQYlUYHKd9EowprMYkuRGjST7WXfP6w/bPlRaa/szDq4wzzxT7nIzcn\r\n/tgZxW3M6JOnGPNF+56EJ/x+CmpcYE1JmiaFoDjNUYdzy8bFCGqBvWsZuby1\r\nkE5TF+o0QFFelwGUqA8tYe8RVWwSd8rKcE4=\r\n=o3IE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.16_1660132925299_0.08722195159745838"},"_hasShrinkwrap":false},"0.7.1-unstable.17":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.17","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"904646897b11b117e143a4da57fcafe2e0fd76f9","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.17","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-IRngcyFITK3lbowuHZxqElpJtrZXLQxlnJv9jS+CKLQWuG8g1xOKSTtIL0MH4RJZVgO34n6GbM92N6MaY3hfug==","shasum":"036437f3ad7511d2d77f54f6caf80ca3474f6c5d","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.17.tgz","fileCount":44,"unpackedSize":155019,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgVZDZQvZajKv9lFeyvLdSP3c9q6B/wooGkZ0Z8JoXCAiA6dwapMKpB1l+x4g23SjiwBU6cVHroyUzUmbNkEbhieQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi86ywACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJeQ/7BxKEStwHIHXFeBlWnnJxKAFu5JHv32AgNDx76ppauiKb2d23\r\n7vg6W/6DGlrV1hZxlt+YPqdYmUDbxL3VhsNxQkE0PvxBI6NKJ4aaFmaS3fMr\r\n8fb7UFzUFVF5GzhKOfM8m7oXuGY1pMUJPphaaf6VH7PGENZu/TslY7cvVWai\r\ndwzFneJrG8ffG5eqmbzafBy5imodkxTDxNZLJO0B3Ka6NT2l2x1ETtNpys3y\r\nUA19D5e4KOxVbsJ6QIpMJpaB+NvGB+S9qN7YkHXsW40K1PLmqZZL3vYEG8w4\r\n4XkS/ioRvRBAWDFUPYlmqqHrnmaW47zDpCmgWdJT6vz6ZTA9NDcCfYbXptbl\r\nIdjCpCqUakNKaHi6fJ9apX8b/8/ntALVhzRRrsHHOc53yZRFo2iRWHMRoaeC\r\nx1XnwRTIiy32eOKh3F4G2IRpDn+yD/a8n0+w91FpKU3GYmkIH/S/zdG7GAJv\r\nuVWF8wTO4ldEQxTUksqsLjRydqt4hizcJXbPY25Ji95FglCJGE82qF1tyHeK\r\nmIred/UXc8pDeuFn8fQoXqkG7mx0JqfxPM5xwnQSWeK8zDs+qt0wSPFC/O7e\r\n6tbckBc9+Nwz411AzI4/jbfIEDE1W4PoCB0CfMjkvtGcLORDDtNR3gwZXJ5h\r\n0pW66tFuhp6aLxiKxuJjx5Wxrq2tBqcMLMc=\r\n=+HON\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.17_1660136624129_0.23417417355212344"},"_hasShrinkwrap":false},"0.7.1-unstable.18":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.18","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"db658c83320480a98f29310b5289a5cb53030e07","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.18","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-SrCXHWdnTLSWJCQ/02nN1wegNVwDu0KgFjU8ajAWydeyuaP5409XxT0Pmk4hun4MP5XYdekyGCa65cCQFiCgLg==","shasum":"aac170829c1e964934fac7c979377b81261f4798","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.18.tgz","fileCount":39,"unpackedSize":142545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC7cs6s8cRtDEwRNWODgOYM10synlmNJTChuyAWuFFxgIgeT6lNlBO1sZac4j5pyDP8E2IVQ/61/YTyrK5+8z3C4M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9Ao3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrDzg//ba+z7Gzm0QoNuY2oxZHMMiqZ6oIuMDx/T64j0zLoaRKMI/s1\r\nVqPKbkXp9F5kkWtgeZB1KL23g8NZxrG91mEwvUVuRtrmUZ7iS7dSHHEg8mNI\r\nzU4a7uI28HrPy2PlD6M1nBbGeHu3CGUjTySxEkbsABhOXvnOSDf83JBhGnGx\r\nyG9TeSE5OcJpOZPSKDsvWpI2MsvQ34bZcuUCvT7VJMDhvekKJa2P2y1yY+gq\r\n1zby71p2U+WA4tNn2cL7RMy7+mQPctJioZFZpGM4n9u2sPNgjLRJvXxAPhqX\r\nRDNkP1pfCykrKUoObxrxgeHpCJCNuNtWB0CSLwom528aUfL4Vg2dtXrwH9LF\r\nAdBGgKbmSU7Tiqz4E6e9lqYKewP6q/wvmeWQ1VJzUHS0PkXRKu8/uzlDpW2S\r\nwnyDNoE1WXn7o9gl1iGipMHBEBc+ssuEMfmsI+pWotFbnY95t8oQoKPFxXGf\r\n3bHnpknE5lc5WQnL/OfAROa8nv74zUL5A0qOgJx5JiZEyucxZuBDk0buKFF7\r\n/B5jYZnEQ7B4PoFnP8WcQHePPK56STzilOUQMRJQ5DcRNkeJYrbTvKTJ1XlD\r\nT9PfehqkMD3T+c7FXjrBmehlZ/l8LBGBnLJ42PK5X2u4rgO77L7mUYHcEDkO\r\nuuhU84oVIjQbLRnHkgbpTRfwnxYsj2VRWxo=\r\n=973V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.18_1660160567080_0.963782010541697"},"_hasShrinkwrap":false},"0.7.1-next.18":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.18","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@sphereon/ion-tools":"0.1.0-sphereon.1","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","debug":"^4.1.1"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"26f3edef541a35242769a076a8d630e15bd2e03b","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of `AbstractIdentifierProvider` for the `did:ion` method.\nThis enables creation and control of `did:ion` entities.\n\nNote:  \nFor installing also add @sphereon/react-native-argon2\n\n```shell\nyarn add @sphereon/react-native-argon2\n```\n\nAnd add the following to the podfile\n\n```shell\npod 'CatCrypto', :path => 'https://github.com/Sphereon-Opensource/CatCrypto'\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.18","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-g4/Y7fMLp0KAhFqGUWw84U3JPPmRIncP6KDkZc+xSMtucUl9GAxOaCyCxEXgbmuacpViqzStLaq83SZ+lwUd7A==","shasum":"a365181c2a864617af814f54e0cd6efbfcfce07d","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.18.tgz","fileCount":18,"unpackedSize":30249,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTGHZ7b+HxWumeunzuu+nkFIo3LQiWxe2CxSsApBDEWgIgEybcRA2I1tsK+MDOKmshVvohjaUAz/sTeQSdvOUFGwo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9hFPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoC3hAAg4vqvHSGQHNTvNwkJMGkmLsj8SuJ7HuEvrM5IB3zvllBvOI6\r\nUZ6n65mtC2U5MEJWCclji72bn8kS2ey2Qwr4nLq648pJVvx/BpyuIzB37JLS\r\nE2ZtOgtQIrnUOr1i+8rzV3gPsl7uBKH6YVvGNv/X0prdquZ6jb7H4cqUQFCu\r\nscRTw0RxTR5lYA8WU4oKpVEM4LU9MgRRxTA6ImYVKR9tht+iIlJMjsixqqDw\r\nbGn5TFpFQqyKkTcYNgv4YpHo4zaYabA4BI7tl3HJZj938Z5Db6JzEyQeTfwP\r\nLrMd0A7lLl46bvUZSzRG7UggWAA96KlvksepyNs2RJqzcKpG4dm1QFL0Eh+c\r\nAk2O/pUUEjMlP88bMLubSAeHokn21Vdinmp1Fysp5Bkp+2SGJxwH96gZ9rjy\r\nyOjXEgUd5qsYSGiuEvA4tipBlEyvN6AxjZPXYAtIV7+RA+9rBU5B8/W/SYbv\r\nJ970cUGr/7HvcXNuGtiS09DF6JCb/nUhfNryBAB4ySW8bqQImUn5eZ5raJks\r\n4HxxTAsuCbfEya654heQWsAEbs57xOREVe4elRHZGpRUZVgOOJ13d0Q4ez5p\r\nu2Rd65em4mrmVxIoPdkjwys4QrpilVOMPgm8ysPt2eonvceEBmgG2yACPgKa\r\neN/wiBR+K8py0aov6PYdY+Gkc3gD+cC1GAM=\r\n=o2Eo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.18_1660293454870_0.8858316313714898"},"_hasShrinkwrap":false},"0.7.1-unstable.67":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.67","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"4f3798bc8314b8a08760a15fff94d3f9b050d72f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.67","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.4.1/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-yd/mo4zn/pVc0+OpbVjEu/DTydDUrlKO0HaaNQm3lW6xNrwkgPdwLsdGlSzSioCPUPrssM7I0MA7ew/vO0VlAw==","shasum":"38c0b1656d17176bf42f06ab7b9f482ebd7414e4","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.67.tgz","fileCount":39,"unpackedSize":142545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdvo04T6CeseQ3qdvHbQBmoTx0sh7ZnzdAyzS0dUvaQwIhAIMaGz0ZQIhnk2P3Cdq7TBPDkoszhHt8F/RiSZy+ENFq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9oUgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpp+g//UjQieUZfuHEtknlviYJE2TPdBtfStgEgQKArDwBVp3bwnsbT\r\nXkM79UPvLK564r3bVgm7jcS3sPQnt3GXHmlFBmmFUcB3qtNvUOXgIPGjw/IO\r\nOyv6tsuMdDaudJXXYTZPK/FdzVc5O3S3S6TSVUfmQsgSaircPrT2UCVCHaGT\r\nblbFCjUBWN2MRPoU4jX3N1uQr3UqA1d3Kf/WZaDzBDlqB7DpW/SN4uC6lgm5\r\nfY1r0n1K53MTrSEfR2q2Yd7tor4I+lx0ffRz+Zpm9n1ZGaUrSSpJOAXYk3IS\r\nH8xWwBTegdrKTz6I8bUfvqQVjQ5PRAcSe2uP8g1UVqJViH+pFibPGgI1ACxO\r\nyyVY30TCc8eHyM8MUTuloOLGTFnBoxoialudRg6f144C1HSK48qT1yJfeQko\r\nWp6DoySBVI7siLmlc5jiIJT1nZ7j19K8N2IVi9E+BZrsvDyD6R23zIq/hUv8\r\n/2OrBBm9TlL0rqifQeJcyzHvy/AQHj/a1Bbpn/roF/r9ROG4WIa2535zxfC/\r\nzEo/q0TFPomAkTMc3XM6UumXoIjc/smEZ+6wjKIh8aDDbo7UPwSGnDE/Fker\r\nQ0xo/S0bOKI8sGOXGE8pVryy/9FIWTjZiWDyn/JomZ2H5wUb2OjP44z6VFsh\r\nN9K7iAbJCn1eWEotlNoZPCCcbOcMIA/cy+8=\r\n=uFpc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.67_1660323104040_0.38894549235568965"},"_hasShrinkwrap":false},"0.7.1-unstable.39":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.39","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"dee730b73e2c451da459e244190a87a6442a83bc","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.39","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.4.1/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-CYDcWXlZ3V6OHg7UFnWKYejya+vuvI9SRZ0IxxwhFmtDbCP6zDZXa4zur0fn8otl3osOwnmOfJnm9XXxPGp14w==","shasum":"778793914045ced91db7f1d3913a7c218513c6f5","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.39.tgz","fileCount":39,"unpackedSize":142545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIA5BOqryF13uGMfapolpz3FhnyJedDlmL1TM7ZXxFdAiEAkxd95UN23j3aGWHjz+3QXerXLzYNAT2fiE7OZMTs2Ho="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9ovsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEHg//ZoLzBS7ZK+DIv8lylt/mIm6uk2Oa2e6C9c5cJSmGnIPi+ghZ\r\nGFpm53jM4JvCpH8o6Bx2rUi48pN32jcYsG19caUVYf7xdUs9avbeyqiX9l8o\r\nZQbPyajrSN5gYeDUMjeleaJIIMlNSX/f3xfFBpfFEHAIOU7AWEQFtl8sCHWt\r\nBWVNcCF/A+LnP/ge0rKkVhs/y5cUWzhQMMCtLn2FW2PqZlklniC4w39EIzPA\r\nnRD3SXVYzbb5ypJcGhTg+PPiTmwPGU+m8bzRexaHRCxN+sVJ75hHfoBv2vSZ\r\nVS4395OqqxP/8i/sSn53OQrkhmKCT93Mkjd2F7O7TEOV1BoeEN63Tobg/beb\r\nT1b38nafUJ58D8mt4d6FpoZrKuNi1nvchgLhvcmeL86B4RTtNzCW19VzLaJC\r\nEM0QdLSWqrmwUDlALdBE5qNfICB/W3JoGHAcQnDL5ApA/FiYtexDhnlou/IP\r\niU0hJHSFwKOZ8yFnVPU9gmJkPz4ScZ5QQ4dpbPoeRn7lWWoSX9WUSHgG88Rd\r\nA+vgaeAY6VbrAp+3pgw9yAanpczxKwKSQSe3ZgNft/aJdnbXANiE2LgSWgN+\r\nQTW1Po+AFz2qU1DiWf9O7sZKyCMosgvYCisUYwq8p8jCW7P6dj/h5OMVhoAu\r\nCsEuSisN/tj0GR9g3lXh2zkGo5/g8531wP4=\r\n=onmQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.39_1660324844289_0.15257141482311432"},"_hasShrinkwrap":false},"0.7.1-next.38":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.38","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"e6783a19e978e7a14225987522ada3e88bd61c40","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.38","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ppazHBgUhORnJEMG4IPzwq0LBwUXPAIWLgv0dEZkGK5ka5isN6VQ1KAEomhERoZgDypQpicul5Ot+ax1J0B7Eg==","shasum":"37a2ed052b902cd96481de20f3eb6cd86bc863c0","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.38.tgz","fileCount":39,"unpackedSize":142541,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIpUJPSZNCnJOMZplr3LDRX0nHpAJ745Sh3qcE+kgsmAiATUC+8fN3k1MTlwNDwJwpXczF+oa28e0Fx5AkHsIxa8A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9ox8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrkmA/8Diz/mVzKrmVneH/WHyXf6CpqRlIQ6+9VVv/VpYmCuHUKE8Nr\r\nAlWO4v/SZ1TnD73qPaJJLi7DbGsLWFlldgCwZ1MVmK2dNBQJL4lCof9SenaO\r\ncKsZ2KYrNSV88txoJ6OgELdcjzKRa56krpZ3hRoI5e0sGhQfcv8cZtUkCo41\r\nGeJ7UmjXyrPjQp/TYCL/u1CVZC5kxEuGK8Hi7yAdmDFrYsSvI8lo6kGECgnq\r\nNzf5LYfLIRkjgFcywIGxwUA6GluZz1AVdMvFqpav3yiyCQ6WuGtgr0xE3PPA\r\nykEbpgWQo8PVqb/QtnjN9zCRwbj6FZLH4O6G8Go9dtKTxBuvZu1J8l1JYxdU\r\n17IbaTDDq2DKdyZhBXQKrtyPPoC/2I4fon5kOOUGmWxPICUjCB3baW88VInn\r\nE7EB8yyAYYCKcARbgmXKXLapLZDEKf2neKS2+DBHMhpwMIiAa6ud6/9VMbAm\r\nKL8ZSAKkNfYi3FPqYfgdgR0RgOXT4dX4REaln7nNc/MAc7hib46k98UPMI7C\r\nYgnGm+Gyw5AuminWnpbGVmCoaj+6SXEK6uV2l+zutJ4RHis9XejOW95N0eG+\r\nburr8zjkc8oOV0ptz7lACNl+xp4xLjftBp6qZgaYKuxf9mFkAUnKLHSIKxwB\r\n0VL8QcAcjafonpFgU9Kr9JXfVAoyOXzMXYU=\r\n=9krM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.38_1660324988506_0.9436267207054434"},"_hasShrinkwrap":false},"0.7.1-unstable.40":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.40","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0b9a628b4e313eaaf767154f862cd88c58b31073","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.40","_nodeVersion":"14.20.0","_npmVersion":"lerna/5.4.1/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-ncIIJF9VRS7sgjGKv9iPCOJrlH61eNR6x6I0NgsEUZOVAlYWmg6x/VXtKE0yw7bqgbn3RoKA2q9FU60bfVhCHA==","shasum":"495d4e8ac551477d0856e7c666c9c260309b125e","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.40.tgz","fileCount":39,"unpackedSize":142545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCh+hshLPVNHyXKyufG68MYIaajs5LhTp4k+HW7FtXhPQIgLGAdQ1aUzUv2wQMN/2HcJ7MB5oURbiO7n5WgYLG/zRM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+muyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFCg//QwxLQ0S3AndhU/K66U7Ltkfpf179Avj/q7hPS5c5zQdRd3q/\r\nPeVe7LygG/VEHKe2PM+HDMeDp/CZvD6nFNsMrkNDNJGf2RUpYJki1BcA0MGK\r\noi0sOwkdgRIhuDuHA2u08ZxTPuQo42FQIs4XjtFfiDBakdSyPQ2UCbgDhQab\r\n/9u6KxjCqjOOAAupITUR72/9mjqQUiE48xqLQYD2E8z0WgrYWlcAHBbe65rP\r\nsrxE+yUgxsLBDtMGVEjNJMFbYCfQ+9kFXe5VMETIrk9Sog3+H1Bd10nvCd60\r\n+8UQEbcEWsdTux74wP7yCrgIeXVSZORYNk72bmRDCfa3veF2dZsd07tk1nrb\r\n6E+ZFYDfpq5x66pXOfM2nVsDe8eKsJQWhnyu7OHw4p1u7BnAjnPnBy/I0StP\r\n69YR46GGNTYy6jWxFvLkYyKjhcq6E4yAFGC2BxDfA0qNExpSA4rkft1yBJB5\r\nTU2nuhyYlm61s2s2KZex2hpaCv1m02ya1TY0wUzjFEECraY96zikWIBZKyUG\r\n7AK3H6fyRpTQ69AyXs7q8dmwW33VcYNeOYzf3EJXj4MWwVAguqbLr0KzvSdV\r\nC1eU5rH7dtAtgitXhst0qWPMmJyFwi2UxMm+0VNGHH3eYFBQ6xbC8kGC/kFN\r\nUoMspWlRWpKBsNRZw2hIGMWZk9CXRf9Iyas=\r\n=3juy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.40_1660578738591_0.22240626046328416"},"_hasShrinkwrap":false},"0.7.1-next.39":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.39","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"2aa71696258eff9e8dd07217a6ed7b8c8198a63f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.39","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-1X+z/gyPKhcQElxsQebAp3ytNF3UFtOb8leF1kyNj9ECKlLXkI1wIMhHz2iFLeTm6tsN39ciP5QYogBeo7ROrQ==","shasum":"c06b4edcf2acce46596831af1dd64b9db744a90c","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.39.tgz","fileCount":39,"unpackedSize":142541,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEWytVhUlc1rB5G9DtBsp9r3KHgtCPD41TF4sDVK4urwIhAKJH20t+zWYJ4UKMWNGB7nkkRHeltkEogI1ra4T0cKCB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+m3AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWChAAnAfzUesUrFp9Xu78y8kuArs9pYnMDLNX4B58S1Nl2dlvjs9Y\r\nGFr5XGQ0Yna94KsGYuNpa1KAKwC/FfE4+oZt8MKxW5zm4b2BA8ggm2aqY+B/\r\n3Z1VK231LihB9jDrpRNdCGoIjk71of61scy2MucgqTJMsmt4UExeEbg3bgr3\r\nU1eZ7oSf4XxbxDf5gmwAhksu7SabJdFCpu5Rn9CEXOxwNss3YxoRD6Jc9E15\r\nAJ5ZYa/5ZLguoRczwGBUp+LZdk807TWTPNDsef6N/FxiQAnD3E2W9se4YoP9\r\n/eY3fXE5ZBPg/bjas3vbW/cZ//zbaMcMIbbpGMDjXcOLmimVGW1hVo6eo2YX\r\nfZR8bEvKWJ2W+iNWgfpODl6SgXR2W+lUA+S2tav+VybaVQ/7GqtaEo+ztsYM\r\nnroCLGKiHjFkaPGvQ7bZdjaiBkf11RBhJv3RcDj9QqZ9eEjntGk2C9MoQMyW\r\njD84aktrufi9dfYA6bQj+OWujwgBmUNHTjkqDrNROf5D1R8yKRuexE9RKYJf\r\n9UltK3F0UxKxd57AuhX7/BX5qVxRvEZVU4zI8NXfLq6CBCSa3WGWdKwLP81K\r\nizl6+kZW7AcO8YCxR4YmmA1M2nEUxpkDzKo27Zbwc/344oabEG/9KJwSryPE\r\nr/cTk/KZOVokr153q80wNJNZYRIgi8kOTZc=\r\n=e5la\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.39_1660579263993_0.4600940165562668"},"_hasShrinkwrap":false},"0.7.1-next.40":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.40","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"b9a4b4320113c013f37e7a6d7304e461fa69e12f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.40","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-sjCmM0nmqEq5Topw9HsMmvECMuFDAVaSkbO9sSgq6AwLb737jGrF0iEUCT0riz2JXoOmWPC05hv0oPmcAvp8+A==","shasum":"2ee82a38dd95b110061cd100bf7b91043af93174","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.40.tgz","fileCount":39,"unpackedSize":142552,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMmSWjWSvSveDTUFJrPnBe8kJRs+JuI32maPOZ6892rwIhAPY/imvDUjQUN69rvuIxkCF6WzRV51Bhq0XzBn04+0O3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/Y/IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjbhAAlbK4rtvfIIsrxPdRymZfSs+viySz2g+KSuLMQresBF22SLD8\r\nzHXzGXcn/N2AfX7dvSBsdo6E+UzPp2Mv6xFQKLj3an/m4l/5DZntNAd6cGuA\r\nJa+CAB9wphkTwbdP9VkHJ0EkTaKOFKPAAnE+DfrFLs00FK4HM71MFDjbeLOP\r\nD7NdOonUczwXjcQM20F33TpwgGCnTijsCR1wz0/d8KDLTqkWWeCopZfYYG3/\r\nbNwlFw4RFQ7+9ibNSk4ufpQLPfCAr491QJf24O/ZWeyYxP7ciT5rqBpLf1g8\r\nXTCdkyH+21C7ifOsTjEoRJZEGP3X2Ye/vWfg7r1MI6OO00yYABnw6Gu0ftez\r\nSn1q4uCsPltMjoueiI9Vq8Vi8g2s/J1H64u68kiJq3Zou1r5vYfk0A+/uDR0\r\nhLNpvdehwqhOm/bkLv6wqBTAnIUjQxLJTT3qizUeiofAJw6K15tLtgQwDJ0V\r\nsNJuVI9wTzCy2sY8jX7pzlyOrglFb8XA2xpr5iANKCwQcM/EnMg3UmprEnKe\r\ncIsmJl0nzMs35Hu/m09lEEEpnj3uvC79L1YebqU0av0ZkRP3c8S8yKjg6vNf\r\nlUUFo1HAvWLxGzGwQhZQDo+AZeYP3B1UMSpQxE+43GLMBsWP7O7k9pl5/7pk\r\nY+HOUj+kTVw5SiYT+W1YDKmBDmKZdXADZp4=\r\n=NMfL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.40_1660784584621_0.23797231261726703"},"_hasShrinkwrap":false},"0.7.1-next.43":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.43","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"6389a80e4d589b359af61cd1759cb0c38c5047e9","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.43","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-Mms45cllwFmfokl2d6w7xNQ05/0676hZ+qJXyGbB3jYWXlCw9alvMkwc46Jc13cGm6PaxgtsNRjnXLriS6gPBA==","shasum":"046d0ce225e92e8540f5c50f2a226f5bf5850a97","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.43.tgz","fileCount":39,"unpackedSize":142552,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMPXBqQ6eWO4o0R5va5SWhEXZPqGJkTLVaDjAg5gceAQIgVanLeMY/ZiCZENKEzeYOAosOOT38XFiBvq7104VNa9c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjAXk0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpiaw//Su34BROBRNC2HV9KyUd514MVJmkn1q3g1ebQvUTouPB6UfIa\r\nC5/XgxCp4xkFGE3K+8y67ki9TftE3Y7mUUK2fZQwkqBHVr59+ZNJSiM7QdlQ\r\nqnak0OWFkpHNP3muIwGV1bwl9iuSLm+OUP8OCUCXA1w/pqCy96IYf5wuQfVq\r\nrAWB7IAZ4s/nOuPnegCta/1Kr+aGjEkf48ScRq3TI4lOQyUzhBGvwjYY+0Hm\r\nu28RJrkF9r7diY6j15Xbc5Yn5lzZNfYk9bAsTTOmN6P7KZhROpYSS+al+z4w\r\nsIfQiv6EeiW/CdQD7webtxTGFb3W0pa6tr6kf297PBcsbgGz/+JXpUyOqWUD\r\nobwJGo8ctU2/rO0DdBJSREtpgMpJoiN+97EECpItMBmO7eb5Lgcz+0RfKK5t\r\nYdJqCeoTE5ok7MXADSyHeUTi0twD+UJd4ESOnnzJxSrc2qzLm85GhF7EURdr\r\nNkiKnMbwzipreB83ng86U/Xh0x4DHP/ZFD7HEqwx9pXuzxeImaN12uPnDPGj\r\nLACDgV1Yn89iHXO1sxuuktZvuyxvCwXViK6aNV2/dGDsDN6xjIpkaFQdDsmk\r\nJku/u1jcfSaULyzu5zqK4Zy0nfq6lnJQl86+E1EaV+rospMCOWg/uPKf+uDO\r\ndnv9ygRLdpJptWTCdf8h9DPkP7LqnjO+dEg=\r\n=nDDA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.43_1661040948384_0.8266660026668282"},"_hasShrinkwrap":false},"0.7.1-unstable.43":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.43","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"6389a80e4d589b359af61cd1759cb0c38c5047e9","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.43","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-MqShXevCKBdiF4LyerhHo55nNwPvfhGohxCbzAnDmVG7ipROfoEGPr9JXHr5rUx3ThxdSgNvcdix4hJKl4P6DQ==","shasum":"347991f2b888ea15cd3690e04a9172af88766bcb","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.43.tgz","fileCount":39,"unpackedSize":142556,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXHv3tooawrg/UFyimn7Gt0d9QXcYuNT5o1GpZtf5GTAiEArZx1feH9FWIEjt8LXVnlL56imFoAaBEtxrORa7pS1IA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA72QACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHaQ/8D/EpPHd5knkJ5IdFsPCoDj6mAoTGjjUvkONoik9XqbGV2rAT\r\n8NIlLFzo8xK0d0S2ZaaGu8gTvwsaOV3tj3nxcbMg1WrFYxcJG6fZFr3PSwjK\r\nEMosje6xy8MZnuF1AEdCMmoSIruEQIXGan8ZBNDGIRSG9jam0fIDvycIIvvs\r\nahniRuH8autMErZT/6Orm0jEoe5aVg0alea3C6TFNZjNLP6HRU16csb6L0kY\r\njc3ngLAnmOnUkvjKvKf+XHqBSCDt8czYCNoTUl06FAh2Fq8c114ULNWQ/aw+\r\nCQBah1lTtGGZ6406kkRXYElr5ohx1WM5AaM4523wXUniw9jVyLTY6R+HiuBN\r\n4GTlx2Ud9RkdBUZlSkqCRHnscdNVmYMHB5pcElUQBxeGUATKG8J/bS9w1y/y\r\nsykKC2QQ0yo2u4so35xiHAJaD2FcRLjqvihTa+Oq9UgRDtb80s/mdOHMWx5T\r\n2LdTr1lsRMQoiGrKXlNSYz7Fpz+VtsGfH+QmJIIFNMqhmqo/2ej4gmiz2CS8\r\nGSC4OWCiun4HhnsP+YYvHBNsMNbqnFkFDKSCZ/JfF7OONYj4rfId3VL111Dk\r\nJgES1fVeEftSIYv+/ssTCwQ4ooJFOGoV5aIWIp8h7jp/efGQTvxOCXGSMsYb\r\nynasyokHxE9EBKDpiZM8W2kAm1x1qVSme9c=\r\n=RMnA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.43_1661189520305_0.7638080607158655"},"_hasShrinkwrap":false},"0.7.1-unstable.44":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.44","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.9-unstable.5","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"8c1bcf68b3592c1e26e5c4ffcc7725da5b42d736","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.44","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-L+3C7hJsuh1OA2d3Ih1juSCHQFoxjq5cD5B13VLTqk1UQG7ZT5XOpS1u9eaMrbZzMhjTAIFBJ6bbZ1JtzrvBTQ==","shasum":"6cae32cad41eee18932bb11a3a92c7821c010af6","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.44.tgz","fileCount":39,"unpackedSize":142556,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvFZp7cgBjUqStVpez8dv7ZQRaQmjb/GBsDLo3yKQjiAiEAtLd80TGrgNxpMCIaCDkZl6MyFuKC4MCtmxhxu0lb84g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBPSVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxVw/8D3vzdK6NT9xMYb8I5nvFYAlyfC85s1df2lCvs8U2kvtj1hhG\r\n30IsonT+/HOKzAQPk7ylA1wK2NmX7AS+hjHz90z1n9EmG1ZlAeIvJjIrvIuw\r\nAqxJsEuaaZd4DCh6OxdX2TM1gg3jyY0/jadQK5vFXjFoBCNstCDsRHBkUrm4\r\n0RGWkROakZzvKI4vHLzpec15ulmSSdSZWEwuAXryfKq6r9FOB403V4GyFkEw\r\nNh0nOrwQMx+HApGLOxJc6KTcXAnz+4UZHR6zZqvDAkqHW8XyUgl8dSG/h6NM\r\n7aVbBs82iw94yAYopdv2nRM75ZI6hRJ5jKljTIuyn5yRx975fVGjpyMK59Wg\r\n9vrfPK/GDZDDQuqvn9SPzy77m55Ux+VMHwFrAV04bfdjyzARZQASnmrqW/tT\r\nTj5bMIgCZ6bzDdxpbqz1IkCyFB5upCdCQGaFO5aiV2yLTltMny4P6gndk6Dq\r\nDUahFMKtWrYIKoqAuRdryWAHLH9drsXtZYEkcTQj+E5ve5BoH1RpbFXTLT+8\r\niJbUNzE4BHQRGfw0iLgGUo39GZJztTxjEyA8iWM0x4evTMsSwP1HcnmPAI8r\r\nYeGoIP1DsoDM64/SoLsq9L/2yFFNMxbx+4fF+yrw/MshOsxd6OGDJJPWdmQQ\r\njZD11PyHgLQoLOpvnWDlS+Y/2w7RUqDybjQ=\r\n=ITGk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.44_1661269140945_0.49129721645801183"},"_hasShrinkwrap":false},"0.7.1-unstable.45":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-unstable.45","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.2.0","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"080808c185ae370102187781106cacaa422e7c87","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-unstable.45","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-HbR2kTcCxzRs5/V1Z7N7lZO7qaJ4Krbd4I7cZk1zKdfwcpIK+0xGbjDHoh1jnUulxwfxL6h0TGUqJ2ow5KzV1A==","shasum":"39780ad89708590b129958ae3e5522619c9db7e4","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-unstable.45.tgz","fileCount":39,"unpackedSize":142545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID3I3MNUx/iVyPkjmYCr6QrRv4TZFPXvkkEyq2MHcv3TAiEAjhowQecBcSoL+I15P3mfQSDiaRi6HIBiJIlHooALne0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBQdKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKjxAAnd0774jtKlFh/uCDc+U7BkqK/K0ualtNBCa0HzKENCBegcCb\r\ngVJKCF+3LWSr97JwczwUSHiqh/Tqox/PIYnxWGvGWOu23NAoJfYa2j/uPNoi\r\nKA39DhyB8W4BCsFyjFSKxdUAucG1wuiVkKmGldnSvOsw4IQx+e+u1lvsSkb5\r\nMojMLyZuGf2l6s/P3CqgVWwbCFOY7c1VdtshGymL14OG7NUPyMzwrsMeKgEx\r\nIzNrQZnS+ugMnokpDat3XrWQbJTQKgOHKFme1GDUaWrfjkpDgO9K4cr68J6i\r\njn+xqT39r/QWHHA4LNqrY0hCvWzbdjF1H5CI7P6cACebFlrEYjzhXXSzraFM\r\nLuNeoSEgTc4T0ugdkfu3/GLCRgfCZX2fjGHJb/srrPP7ELql02Z7hRXoeRTy\r\na6Pmi8LqVMu15EDrSumjWCoAGeWqAUD2qHxzGKU4omMmUi9+5RPjjAaFmxJ/\r\nHWlQIZFqQl7LFb6pHp9l4wwO3dStIFtBg+Ay/HJUcxGXkK+/bWpU+vnfmYJN\r\nUlcBwDBGRaR86i+n3QhMT3o8Y4JRevx6pb7pJd4zxWkMMDkwDHheljz49XRM\r\nTdbg7DjEJA0tFi+Y/v4DIf67IRh3g2UPtgjJEwGUtenrrv+nvr79mLGeMv3S\r\nwYLbA63YrXXMEdWmfZu8nlodFF6c0PoWNsM=\r\n=Yoeq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-unstable.45_1661273930331_0.7534856326515651"},"_hasShrinkwrap":false},"0.7.1-next.54":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.54","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"a9ccba1270296fb1e8e74e1be73f0d2a49ae6969","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.54","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-gxjUT89bNBFX6GwNrTT9BsBnTFBDWNQwpgFge/ZPhrHOknzS/dREF19z28I1/dP2lj31OrQU1SrVb4WKX/yidQ==","shasum":"6fce01bbd7a578c52c28966ed1890929b2b4346a","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.54.tgz","fileCount":39,"unpackedSize":142552,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD27TVtQUM5wGf9hetytruI1213+1vm/HFUTacc4uHU5QIhAIvtr0rTMKNLdOIgnh52od9iU/nlq7uMzNeJPjFaLrkn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjB2N7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZSxAAoV0G+SAdYQLV70p+1/4SAVk6LFAIWuBjME8FWQIa1FncQkzo\r\n2/RtiV3I/CzBn49h488BnFBcW5mWCKAYuIl7v2PFGbhHPw+ZbLLv2znqAjjD\r\nE/74SYPvzRF6tAV9qpe++Uc7TMvOaVS9DEG1l5PWPxp9gQtnTTG93DFNrZrs\r\nvvCavJ1ba+/ydepJTzkgMtHZSpz10oPqieXxd7p5C45R7pJJhvj59SJEog8l\r\nahRJ/qE/BPKnbEqALreWYfLRSX0Wln/zf0Lg8yFsmvZdoex4aLWILC3xhAYu\r\nwmbyjqc0HTjCFxDecsChUJ0VJZlvrKiDTw6zacGZwbnWg+miRFYcJLP5h9dJ\r\nI2aDB8otEUCu3g8OTSVwHQd0esfkmjTjwruVeWOfhBeolgLsS5ukLcTOZ801\r\n9AugmcLioY1YdanvFeIyZPBsjFWqjv23GK8ccJKue9/B2JrE9l9y3LA6qnPq\r\nZBpljgIw2W1p+d1382Wj2pExoirf3NbGYHq6FTziSBFsbfT5TWEVuE6DqyA4\r\nDClKVFaydV43j5J1kI2LH9boOIHLsWap05ZcHnykXIPM4Q9ylgoWTSjzAjEe\r\nHmxP0gokiiTCzEbMR+EkzNKknvlsTN1lmGQje/esLmp69C+A8EaKc8Msh28k\r\nBNrOL6EgP4pOWIXey0XKPJ6ZR0Y4Tp5YWWs=\r\n=2j8j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.54_1661428602963_0.2600486425226336"},"_hasShrinkwrap":false},"0.7.1-next.66":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.66","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"b4151a9cde3e5e5dcabb32367e7a6b6ab99cb6cd","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.66","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-VeTlnTpUO67cwIwz0lxNP5nYgsGi5j/qiHv/d74kcERMPFC4zhX/oIWESbQNYOf3zLTR/hEDoNrucFNo0yO5dQ==","shasum":"a26257d9f06eb4d4bc2ee42f02bf94868cc408ed","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.66.tgz","fileCount":39,"unpackedSize":142552,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLVkPZs6KlXjgnzz17ypC0sohyHhCa1M64HtK6nlnuNwIgG3U0DZrWu2xxq0hRCjiLPhWG+YiwihYU+ViJ/kssa30="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEoXSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqafg/+JsFC+aQGKcO5LIVa5RsBezJlJLUMUlSBUsiSGXGyZvNRHE0w\r\nknl7w5ESFSdf8aNjtTcF8pGC7J7LN0n6zmYUo8No7yKCPdR3zgLW8zLWs0+9\r\nx5aM+DB18tn28CMlqtSzpXxEfVHeyBCb4nzOID7AIhCC4DWjNN7l/Fe3+d/T\r\n3PmcZoMIp7UrY441k+1dMDiLlcHfhVS7i6ypawe7QtIrfRnNoCiaX4gF//Ua\r\nYt/epzonLOKq4iYBj9/I47/KwKoR7IllkRA28PLS8aTtjgDds/zbbtubM7A0\r\n5DEtXKUWxkgsHFmXW0lvsReQ7YJol0fxfdZrHiAffZuunsMFBohusaaCwjNb\r\nr5mHNUB2Lodmh5EnHdmHYdP+MyZPhlXZJMSR6tDVQNpayiOClH80KTi3ZC/o\r\nmreWw9MIRcR3ziA5QcpNB11fy6q6pe7gXU2JyDifCWMXKJPT2agvbC/xSsAs\r\nVILx2Hc+rasobKQRHguA6Escbh6W2HxaoaZGi6XUS7SU1gmqBQNng8CVuK91\r\nkJVHWebP2y3cyp8rSBSzmjg2qlCqDnY7rUz6Cms1u2YxlKo+Fbznrc+OQ5Zg\r\n/ZUPkUxbv49HiMXMyBPmIFv8VjLncFH6zVMbDKO3NK9Ppv1HyHxrNmlU/Vyb\r\nqouDQT39uga85KOYWIJGrRqyz/TQhLimv6E=\r\n=14i5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.66_1662158289822_0.1050372283330594"},"_hasShrinkwrap":false},"0.7.1-next.68":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.7.1-next.68","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"00c9747efd89f125fc77330af0fc6ca6accdab74","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.7.1-next.68","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-R/cgqe0SoRdEaKC6KLwvjg8BrFDY79tE7Whg79JIUyVHZKZd/jJg3ExKvzgLVfXNBDhv/c+HFBVoEpo7FILEEA==","shasum":"bc553051034a63d2ad147453c7ec347718d51c2a","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.7.1-next.68.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpSCtSGdJmxayGrG0UD+jCPpnaC4MZujd30oOwTRz10AiAYpXEfSCWcLpKn8kLMgpcFQ/A93mALV/RLPMy+QInKiA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEpdTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9Vw//bpz+zLov0Qv3JusY48WNi4a7k5ug8aFwIUW8PmZCKFAgk7wG\r\nTJFAFzhTv4jCMR/vi93RZBw4qbZgU8GE5fSBoD1nubPBZdotS5GOsubjcMf0\r\nsfpxDPm5WOxWkcmuDUDlkItt1ySVVezY5vDOf0hks8dwaIOVpt2Qmjnj+0SS\r\nPB62gTLYEvLNQHYrQ8jyM3Otu8Rz697vLT/cu9EqI7INYQUdB9PYE8wGP3kc\r\nLY6sfOXCJ/3JnMNnwq1DhJGlyZiFbiHq+21L4GGFjP4F/pF1hQTgTCR/F/Wu\r\nKL97uS0yjRma0KENXMG+GPXCgrzFdiCxzbpllYjG7Cwl0RejLi//peXdR31j\r\nGzSnAOrXKZBkUsEcOv5n3DU4DkqvhNFfZZfNbQ1+qfgtbELPcsxRvdkOFcMx\r\n0efJz+GhM0d6K+Ugzfc0p72BIw4dnVEkzdsuGnWV0znrIt1UmVSvv5Kf+BQ+\r\n0QPwdlENCYFZ9yS9dCx6sfGBhis1qHrZjg89MzR8r3JKc9SpGaWlJmNLnkK/\r\nXijvCueByeLTijp9ioRiczilw/BzaY07hqAYCNeKXiXbB/w2W0TtOL+ybGuZ\r\nGz1ZFjnHVe+oJS1vUmYoxML2QhKzQoLAe4Z1ieXODC33dlck+Omf2BXH2o+t\r\n9154+c9BuD7xo+6VGbPTH2Ak8AK/cgy5O2g=\r\n=TibD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.7.1-next.68_1662162770867_0.6155772060700875"},"_hasShrinkwrap":false},"0.8.0":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.0","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"1032feb5588568edfbca0110f3ff9e6c38894135","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.0","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-VSfLFF34oUW0F3VO4q6Q/tqbzEK/WwPJTSMe8pisvgWyd3k7/c4I6EPwLav44iHTrfANpcsH12FPZLlDkhRESw==","shasum":"7762ecdd2e9ce8af8f2b5fcf4fc8e963f68af5f8","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.0.tgz","fileCount":39,"unpackedSize":143243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyusa4ScMIAgsiU/LkfF8v7Qm2RP+hQ0zNdn42WobaTgIhAOGdXzEX5yaWIFdsz+M6h8z1b1gkpFvKOrqWwuxo6OWB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEpsjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQERAAm5vhLsXpAyTVE4eMC1o+CpD+RE6AySsrXtiW7O04Nv6OidAu\r\n6cfXFSgwl4qGFWktfR9iPyX1izLh6UfpPN1qsIhzO5cQ01JVe/5FpEYlLj/1\r\n83LMTGhrZkPTiObLrhSHhKOwCHgTVZjfnZ8Bv2Le/MkctcORf36VB20vqzBg\r\ni5GiN4Jq8C92ww/mO/zAnLVCZNwOHwhZ9YbmcMo5sMSRpNsKb8x82P51wKcI\r\nSV+V20tDJ+NY2AtugzIb9vp0Nug/poV+yBOMlOdyb116BDqYtR4eSgACQlle\r\nMpQOGvxIrhLWoMelDMaqFBonTwqOZ71DI7QItoFOX/hfeCfOSP4WbaoOAXqS\r\nPYdNhxijVfjSRLgddiLIAPHsDLbW3/YCKOqNAhID+EI7joXDOKdoMQalpjRg\r\nvZbD0cdnI+Bbm24gHuwlDko0v2bFcXCJepe71bItEDKTBf8F587RadJ3mWOc\r\no0fGhc6kRpOm6VD09xfYNDFrXspJLFxwN7M9oioeR0VKu6Mr1cHSQuiBAKWD\r\nGISRZBdfspzPh7KqFitAub07gh+CTytIkIdY05QUQcNT9vnFNHV1t0f65F5q\r\nRBXXrarR3EVkKBhucaAPPFSvKpUEmMjV9NDV6Saqbo4CGoDOFt8dLVU/QvRY\r\nrVxKX1PszancZOmaiGM9RX9BgG3mJ5fcPJ4=\r\n=S8ZU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.0_1662163747204_0.5667545668143359"},"_hasShrinkwrap":false},"0.8.1-next.2":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.2","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0b28de3de21afd0a224d3d174103e072162231ed","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.2","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-6oCRtQO5B63O497pkfkkK44wI2UkYdn0cZaW0WyNIVVa437oyZVZFna+qn76GfU7q3Z/cvp+Bb9ISMxqquW1MQ==","shasum":"b06681c019aaae656b67a4c06a646f5f6c21196f","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.2.tgz","fileCount":39,"unpackedSize":143258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKQ7ULjlett6xzf0QvKrmYBpSgNVvTRwfIbAjTJEEmiwIgQ2KPQ9W81wgBObUUQYuGvmevXp7Vx1OOhu9LY11E6uo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEqZRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoh9Q/+LdZ7p8vtVUFLov3g2hxmvbFda9z3YyvADsQQGLnj6SzvFqJo\r\nUEEaLplVy8jFYHeUhcUGQrxaxw45eiljh+aNYhji3hqe+J6jxPI5O24YIAvo\r\nBjiIJZAGaa4JqmMUoVA9fWXc6YJQlbxNgpy/7+n4kCM1q0+Zu7oAw2tfQtZe\r\nydEKsXv5T5uvW4Cea0KoJjoU+TN7J3HOPsiAEk+ql9+gvAqkc+d7JM4Ccwii\r\nVl/3QTkEDAlQjC1/NUXxuLz+1afBqNv21JaexyxkpB/HOekaPXKUZ5qSRxK2\r\nSSHKGzYzQRQAuwSX9dM88DvZX1tTOQsXWs1Ja7T4mrpiLuTAC6kfpQYkzPW+\r\nTF8uWgbNNApjJMPuG1Jbj74hB74hkWBhOhWaaNvTza1JDgJRsG3WBijhclHV\r\nAijpCnCzdgJkdRXeICuJRrvr+Ra0DJS/y0tEHdpAnYgabIrWH0SoJ1qnS+0r\r\nvC+9zpEnHyVbaAfOKw675dJriDXn5L3mp3GKRBTY1WuBUqjbhdNS2fe0om3o\r\nVmHiKOXMPRhQST0/PhB/4cJQHW5LonGDB0wXBrombTdTk57GEEfwjEbBoRUF\r\n3Py8AdekBbgIaCRJKQHsq5rCM4DsbL+ko98aRN3m4HgCnbzxuF2a0oGPwThd\r\nHyX1u+NRt5MlhPYt432t10DT/OAhGjkeyQo=\r\n=yKe3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.2_1662166609113_0.4012919545267255"},"_hasShrinkwrap":false},"0.8.1-next.3":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.3","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"0c75aaa73635bb037c226183071e10a184dfe549","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.3","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-vWHY4rC+PN1EpsOkpl5D6NMdOJ9CIumQ5/pyzXz53Kh1OJ2epEQvcS7JbvzprA13JLDyTFQ7RNeIL+G63J0KCw==","shasum":"4e0c318480a188c1754e3217474d87dc9803953c","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.3.tgz","fileCount":39,"unpackedSize":143258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdgJFFfBah6OyA3ETKx1eQFkSDfpG5ln7RpxMPs46cbAiAck8nxWYQvkEbJRVGN7l1X/Bhj/7GDe3q6XSs3uVLY1g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEqlYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpW8A/8CsocW+QRqXhCtX6pXn8xgybVMP8IKegz2sOro/ojN8Xz9RYp\r\nEmEFMZNB/8x5nbcCTYBuhf7vvj03zKeHqYZii81muLFo0goRRrSxcnylfXsa\r\nx6gO3XznvgyAeFr1HqcXSU3J/LHn6p1WpQxrgbaphKhR73xAVvGb9ligBJQO\r\n3Cr/NCXQ7a8l+nIY7GohdFBuN28A4dK/7DOG8k0Ypq8aSe4k1MHrcNI1NCC/\r\npk57H76Q3ZWjpWkpaaHvvZ9oHHFuWnLpQG7JFFiuJDecTWKt36B0qgNeJ0vl\r\nEi9laJ5XYmiGTU6soleNgsAMxZVBOeaU89O1RknBU99X/vjAq24Xr4ygrFuD\r\nmVWRaRacqZtQsuHMfO/jur+2k7MIP44U1tFyoKutrH9uxcucHPx7PKeFeEfC\r\nAzfJq+FShOVr5fiTzSrrNy/Rq2IXpVp6HqoL+KmePnIMGSjVU0mkN0nfZlm5\r\nsIfP0m/WPyAR/pDgxrcpOPBllO1FY2jAGQV8gQf4dsvLcybqRVtoEyM0tn/D\r\nMwOG+A8gzIDqJxTicm8xta2mcx09bPc3drrMb7AeZrCyswYyUv2O2oeFH6fc\r\n2p4keB/tvs2IQIfs/ynwZs7oniv0fW3qf8pSC6QXcBZuhOzmUe8AN4pQhd4i\r\nvmixv8IJ6SMTfApPd7GpSE0AXgAS0EfNdO4=\r\n=3Xss\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.3_1662167384342_0.3941823825609003"},"_hasShrinkwrap":false},"0.8.1-unstable.4":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.4","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"e8c9e783b4a8b61a176213a8e465cf18db2f63d6","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.4","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-tsnzNDYmp8DfCBzskYfuHgG3UQXtlx5GImtHuUWl0+kSi6hH2qbeyMJpwJw+pJna3n2w4DtxdmT+v3F8Jjdq+g==","shasum":"31a95948783a37088c365348491976f85233f1fc","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.4.tgz","fileCount":39,"unpackedSize":143262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6V2jFciNdbIMtBqwmJFl9gnE8nic6y2VSPHxmQLIpPAiBK7d2dQ5vdEf42lBimQg7Xr0BTOKk1v8iYoC8n2bU1MA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIumvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrj6g//ZcihfjXrDJTtPDPuDuZ9XW7qghXzhcMAp1qphJ7Q1g6k55eg\r\nNS1L7N8lJZOT+uu5vMogANJo0WEa3doVzrJbNfC5BM6KrgPoAj/CyQD2mwwl\r\n676anJrVsrAOeHtMmQobBAb5mENlK1XSsRyIsuvDfpnud6a8aBimfYGbUJCr\r\nuxCwPMw4y9FddEFoJURToDPceHnZSfkItSpuFCONOYhl73iIVXcMiZatDAkG\r\nOv7rfks1hbbkNzZEpRuwZ/m8HdfsmfJ6qhfuZltsvq5aRYErZAIscIMBNYu8\r\nu8BuJejyRd9iEpEVRvnUdZQiUr46dMfnt17ECN6lWTDYnE3RljqeuUTZ1l8L\r\n35XECC6DwdB3/bau1ipxBRbTMJcz6tyOLEgKEd3elj7ZSdVp1EdjMTi/PmhZ\r\n2aaZjBITqPnl3NPW+6IhDv9wcYvy4qY0CfXNqXEmah2K+6tT39a2HKmv9roc\r\n1qhsan1R29MNFpfNY81YUkkWMa24nBiaSq2BRDKA2lFWVulP9EgtSJQdu9Zu\r\nTjv3SXX75l3cWHs53Yjq2FIlZmBL8Jke72JnInLGG9Ejq100Wnl2jIYVbBz4\r\n/P4y1cPQyaub4Ai9d/lY+5/xxcJiW7eeySZPk/wmG4Qhy6YvZEde+PnyNQsI\r\n8bVjMMMSW6Mgaslyr8krnOlesumIBdf7oK0=\r\n=bsf3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.4_1663232431387_0.30350660701666654"},"_hasShrinkwrap":false},"0.8.1-unstable.5":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.5","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"ed329f67a9fa92473dbbb1e42b23e7a7452f8686","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.5","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-3QrYz//jKQIf2iGptyUrtbqN4HuZ2icLeYRhpmaFpNRsk8+Osxf4GcwQDFp2M3/zlz4PY5dpXVgMNN6w+tcjmw==","shasum":"9ef0c071550ae1624642c18669609497aa1741f9","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.5.tgz","fileCount":39,"unpackedSize":143262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYtAkf0NwtLYYTvk55hMD8LcfOj6708szVFGyI18w4PwIgKLk2nurcmBwPuK+L7P1MAefdj6VqHQhXT0TAyN+Gykk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIu2jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2Wg//ZLZW48JAO9s+Dn6OYILjjnwmVSEP/nISG1wOVvvaZhY3QD7G\r\nYb+N22Rs6UYLR880BPKI1WFm2qH7wOAdY+MCXbr6mTEQHyq7qXxxoxLCOyOj\r\nsXe2JYeXBLlfRtf9e1H04tCC4mI/+avUAkDSkFpO6mXSyefwLrSDXRDKJgT2\r\nNndRz5LvZgAPjrcU7JdDbvSw7Pm+wjWP/sosQg0k0lhLjXWGxIPWjOBP/P+E\r\nOLWcQiLA54jsd+WQIdNmF6eg5wc8jaw+6xHMiAC3diwlOGWeGd/VGrUI1RKJ\r\nBvAgbKhtkoLGsW5yhsD/fGqeCM9nkczl4GRLoaEpjieK0YQ2ycHP+aBcxnSF\r\nT3Pnq1Q0yzNgWG5thcbq8ux86TNoZK0xyLTN43IK1DHB5+S0t5jwGfL01kRJ\r\nTtLycQG1S80QHi6+41goawValqBtZTZ6bCuMq+ClfuzgzHnqgB6q8dBE1DJq\r\nZZB/7uPWlGdgyLtfiY/np12cVjKNRidQijcAYJvMpRChvi07Sac2hH7iZwHS\r\nSDe1PnUqmIaz96kWyoReygOoEXGDHV1MROsti80CQK0TuRRGYMZPq3RC1HDQ\r\nfjMH189ajx9ryktNzA0Xm3J2ERcfvWgmTWqCodSw1js/FNTM5Wh3rFC8ihp3\r\n1imi/Zuj3AlljCNuyHiytcyqeIzCL5C/l/4=\r\n=Q/uu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.5_1663233443064_0.13337359973248364"},"_hasShrinkwrap":false},"0.8.1-next.6":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.6","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"27069f85062685aa678ccb7846cefb84b253990f","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.6","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-qw84BW61010mYXE0N7k0jyAOVatdI6Xr0RQLeUb/gPeYOgAsQ0tOVblzft7BlBO6ZWe7wK5ywIfPZxqW4z3kCQ==","shasum":"37c89b72a42ba14e1721bd4062a03e3d05968f6f","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.6.tgz","fileCount":39,"unpackedSize":143258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGAbLn8ZUgqj5I3vc+IHuwU2OxWYN8Udkp4WWucaweEAIhANRTlgBs4OPWRYAtpJuwqn0+HPdRBc2KpeXNNVnTTvtA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIvEJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrAsg//bozt6fFQEHFwqXop21tjroKZ2jGFAv217y+wH1QBPCDnBDmo\r\nFAKTkv5tWFat1lbNAHD5fUg2eLLS9PBOsj5/qqH3kkRSbTxXT58uNXYKv5Fd\r\n0I3H6ttx/UyvB+advYAltK1MCWhVsIbNj+dK7AglwuVM8T9gbDL7h1HPEYPV\r\ntfGM+aYIy2L3Xi94zgFFfMgzVQfN9l6oXuxlg7UFnEkHeRsa5nC0V+wy+G74\r\n56xbjnV8Yc24l2I/7/Ku9SkRoXVmrY5TM4cgxFAuaLXOV7vRsdrSlVqPEhOz\r\npq3PAIutg33/gpxfGJkLjSJ6eA/Oo8qq41D1pLS2lX5AYoFcl8FB+tLBidBR\r\nm3kdIFQoROwyDlRujigYQ/Iff5Ir6I1UdT/W4UC1qkB7xibeZZ2xNQ8pfbA6\r\ngKxTDLZb3EgQXkbxrrWX0sKhgRHBn06CC9jrfer7Zxbq8lW/Mb6PgUMpXO5Q\r\nVii1Ei1Axt2W45aO9j1Z3h1mxGkFVh4ByMyj2UwoPT/cDjKP0McWTG5JIZKJ\r\n3RqqeTsvmRXVDg6K/nGK4Jfm3bLWVEfByo+ydu2HofYHZzdMSL1j2z9AHTqy\r\n3Ynb7xXdOICYNWD/4N7alX1zHwyBhf0C4aXhsFYcDFweQ5Yu0nwIiFbKNbaJ\r\nNR60WhYbuzS2SGQgq/XYaFNAVeMJZKkFHss=\r\n=BBLU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.6_1663234312870_0.4639243472791448"},"_hasShrinkwrap":false},"0.8.1-unstable.9":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.9","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"af7f5324bc1718f724e3258c3f218eb85e4199cd","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.9","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-c7EWm9zpQ8V0A4C0uMI+HEQYwrDXGceEHHT1pIsECUepcjzfjpxTFSpntrhKV7dNcmPGp0jCw8K5vaipPPdGDw==","shasum":"bb61919ed4db8ccfffc243004e09a44ea3967e6e","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.9.tgz","fileCount":39,"unpackedSize":143262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYbSC3nCqsEFJCnNhOW9ExTEyiZtAxAYInrGpUZ3L6TAiAyZIzJ5gAbapIjuCsSqC5Ua+fVV4e25giWOUfr3U4e/g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJl7KACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmuA/+OjHR7mvl4Z55eSm35PrKKD9ZQLSgPSk30lbfCcHuAGK7mURY\r\ng0tUtRGi4UX18pyzXVbel/0jPfuECRHIX1Qxur+L+8W1PJh5gaFKSPBoJrwH\r\nQOTeh6LimoD2gSyG852vUIhEYa3OTbzNwbfoZBngJw77oLdLQ/O+VQQ/nJby\r\n8tgAn0zgmwSK8TolBeAnqBXCwEBJaiNvFdxOCQLgG+oRFHnWZMUd8vcfNttW\r\nLaGjnURIbWZmS7OSNKvp71fyUPH/ZGBrUdodHYMRMVJMAN/Qu+/OeIUZGcQI\r\nxnQQv2HHAHNQy7IKa+hbdGWPbsbjM9705vvwXfVKdNzIfqHpKHVwjA8mBt8i\r\nMj2sc1AKlL/GUkj+9VRAEqNn1lTIRNrG53e2608mlXSU7S1FD1cDeXOyylwK\r\nRWuPpYpkBv15yLeqrK4qEr0jVk2MfPTf3yUJDaOEuGt9hf0F6McbYTasTR/7\r\nX357h3TgoPjnEx/cV8yaiAOP4BWmsxJbyT61XAwY+wZBREAk36LMFLvqKdnV\r\nkSFuPblU3f7U2dLu5WMuI+bNSTGmnmoM7LmHWLFghUMZJ8A0aPGODeyHx64v\r\nnZTdk0uPrRiAWjWdKJsjYuJ1fEQVeikx6tiV76bvI9wPTOsZpGlyGAehJuFt\r\nrO/B0Ptqxlqq2uWGg0OGFaaumNLsnEgxGM0=\r\n=R4IR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.9_1663459018643_0.7400862053852786"},"_hasShrinkwrap":false},"0.8.1-unstable.11":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.11","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"e5fd396f0430a594fd72f590136d281355f61408","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.11","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-l4jODIDAKUo6HILDWbIdt/p0xL1xVu6Qyx6pfA1FiI9MxQrzCnRSpIk+xpd2PBX95TPi+URdrMcdRwKECIWXkQ==","shasum":"adde2ad4853aa89b970622fc0d906295bcbb6859","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.11.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRnJ8TEXJAb0UUOLUL33hWkgiVS5dVLs4FGwWLMFdMwwIhAL4Wf0seLz7mwGhyL22kMSTJoq5O9pKHzvNLrsBLXeGn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKHZZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmondw//Vg4jtGIHavgkR5WGdnv2XvmyiQwkagbZFECfvgX8FSGtTstH\r\nt8EY4DEorJj6XH1BxdAjGcCJSG5MBGb9AEfOgUOSW8hz0JQyji0umr7SIcaP\r\nUkM6Pp9j8kFnI/Q/x1hWa7mYh5GK7Ut8vJaeHB5fM0wYFO5XmLrbBLir8M1B\r\nhuss3l7mchKdWKxIBHSOy+aubIEHQgiheRiDBq9Bv8iG1MQWk+5TvjIYQyrh\r\na/Xxhp0QaWgFARUAWSov7JO9FqEX6vnApFnPQuPVPOVPJZ1HaylgiPk6NrBK\r\n1BhjAdFq+mqm5rVmMF8IInEAam4MqMLOKmnq6cAhzBlu/xvVIVgsfISJuscr\r\n5ey6IPp7G9FJi/jc1jOU85SiOOABKTzea2+BbscigFlG1cc0t27VFNbzkqtj\r\nzM641zfIufEPdbLiJpiDPxINBz2BPB13dyJiphK0z90OSa0l7OoEY/BSHMOx\r\nBuoNk8d7JmW5K2JIH3bQ9CfGi2OGTi5pRJadf8X04wqsSt5wg0mqw5l+GN5E\r\nKkqrgkQQM9B2E1uqYtspQ4Gw9cgTmTcqWEKyMQZmCvrT+hLkzJ7SjtagPOsm\r\nAdI6/Fw+248tzloc52OEaRsQ9/RhQs6jtopbF7/gQhjfXGaYtK51eINIBI7i\r\nGvfgujbyNj/uBCHCFqqZA0hAnwZ6nw7wBLE=\r\n=mPPS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.11_1663596119828_0.8374504447567237"},"_hasShrinkwrap":false},"0.8.1-next.12":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.12","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"84fb570f29ecd7a4fbd6477fd22284f47e814ab8","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.12","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-C9Mtu3b2NnXzkydTrZQnyToM4twjqGbI6JWkPnqOOQNzhs7XWJO3Bi5OUErOr9oGxwfJfyERhUnUcWaEh3jKBQ==","shasum":"405adee7a8dca2b535f13be6abbcb368179326a3","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.12.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvFbhz1yhuvEzeZk/khX1y2IWG8TiVKDbMUhbnnsRIPwIhAMzXl/hu0//w6gHveVxaQZvhgG4dSdR2oRvSbuW09VxE"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKIafACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrTvg//SvR92HKKn7qFGLT0jXuH4HstEF4CfLylcIiyMsDrHkKLLDbs\r\nIkFZ+vGpJ5oyKw/2vn89+pVCBDKxSWttfr43kqRgaJ78us/Khtn/KApKtEts\r\nmm7hsj9QjvkxKBeB3Pcwo2xZEMTw5HHwB8oh8Wf+5tagSOvr87KLc2DxZuof\r\n9sgkGGT/e9/099VMT7BNI8Kn1OWzrWGa6qx3sTtayqDMNCX8H4A0PSf7UOj0\r\nomCDVt76z5rZba2yVyPwu+f8K+eQ4sxtj8mwlnFaJZvfU+abWo0NH2z0hADU\r\nyue89kywuSRYImEUbQJ8+z/f7pib/J4ueccTPpI7vX7t8bBDJ3Tc1dMfk5ix\r\nXpkrnL1YHz6ORTtBfo9zSHIQ0Jn90MrJhkdtxgjK0rg9AHw5hERpksqAfKIn\r\nXFp46GeUrZ6mT/aIuUmHCgmMUvyHlDjRJX5LJZNLSrtCkA2ocQ8FqorDTr2p\r\nR5VgSYBJZ8ZjiBKmusNPcWI26A9AYjGvHoC1RaP/D0YECgh+r9l3Zc7zCqqR\r\nyIjH8eNpZ1H+lGPy/E6YrAOtDwHuyvDjtETmOFYXJBfSemuYhkRVeqekUmag\r\nG+flyTtgqWahAydGVysd+YICsLpQAAlLiYZM4rcCS3VQP/gdo7HM3u9BrJdT\r\n7OvukFzZUv3zYrQn4QFMsZnaNpwfXLOg20g=\r\n=CNNt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.12_1663600287042_0.12594620273335266"},"_hasShrinkwrap":false},"0.8.1-next.18":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.18","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"71e09b8e8cfa8237d8e3d0a6b0be0ed4f3beff48","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.18","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-NHdoHvaal4KJH7mHwqC1l9c4GdAnbtxvACfKGpj0/6z7I+bh/71oi+1B1Owa76XvIgbvaFWbyTh0EvKTeznQnA==","shasum":"77a846aef9379787dd73f9003f2b560766311112","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.18.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJ0Ann36NbWmsWuj62q0lwd90vNekSclgldN1L9jqCVAiEAx6WMOvaEqkVXtagJ1BGDCQPSosvJYzxFj9zY+DXGYEI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLHtWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGVg/+Ik3N7QmMkbfvvom/uoLYhLg++PoEfg49IrjKlMVL/UvAQQdL\r\nGqcnKrG7qnCHCZR8BTjHDQ0/3USIeNGEzjU2fTON2Mc9ocm4G8woMsPmF3Bc\r\n7wDNjFFpb+bzxgdSSaqAu0l8Kuht/pSiZAPEhunLjTTTuc5440yob6JfY3Hz\r\nLrAtgMSvSqFATWnVV1mhKmZgXcfpwms1EP7HMxPdenizT8rm/5SYPcblzflV\r\nTSgLAGyZFE1283jl3lhSoDtALc0z5PVCpCbQBCAvvbJ++mjNN0APAA+5IpHr\r\nc5jQdmKDFCo/LGQwMYKjOfAn/I+tr7uDghb9CFGmRb9pyCsoCrzwZQheJlj+\r\n4o065OSItMC3hUY96wrGUaMZhIuNg1whL5HRXyyWhLuxaaSkOmfq5rRWLzqM\r\namCziUWJxugjTmrHqDO5/vEiWj5F7mo3fQrQ/3O6hWhvX/H28p4mzHl/OgFt\r\ns0qX8W79uV+RmkFRfYUPHqFqhzRT4ZvpQyovTL5qEfNpB+F7wNTKO88CJDgI\r\nocRgRLxCdTy6ED2OeTVG6vQbqCGBEJAnJyb7ifi7+DuDM+Uftrt2v5kN7ui8\r\nQKsLfFRVg1lcDd2ukfe1jRWPY2CUv75zEqWL4ENj+BfFRDm5qnYNWjJygrTm\r\nUshY8veR9RNL8+sphqVsdk+ZPyMDz8yj6io=\r\n=qFfD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.18_1663859542305_0.6312154431362533"},"_hasShrinkwrap":false},"0.8.1-next.20":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.20","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"5f951d8bf776fb33efc6102b61f452b66a8563a6","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.20","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-93M9XCsEtnNbkHNxYkN6IbQ1HrLYRfhh/TJVwV20K7s5IHWT6f9MpfKXJQG+417wEk9KhHE2Hu55BvuF8yH8Fw==","shasum":"86246aaba1680230399396613b36083b119f72df","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.20.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9ts3n22XWzbP+h7KBNs/sOFYfkzv0XTpa1uCUqLFcrQIhAO7fUWJYLpZHS3jWwaRGGt3ESx6IOp3LU+ZjWl3Uut91"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLNdRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmou7w/9FGPGX6lM8A4rBAH4+dHalQzGRqVhA9OhfEFkX3mVhhtwHmGv\r\nVN/35znOn17n8rN2A2fzR+E4J3oICMSK9Ub2iv9lJrjaYKj4VDwguMt330ap\r\ntjoPo7CfVnY3Ui3LmSofjQOWXwY+NNMkFqQBFviy73O3X+Axqv5wXfnqhFPv\r\nnufl27yBrEHxfzdGuQFfWa3ghCRlgEWVq+a94k0vsb+K29Vjm3nvvn9ZzBJS\r\nup93yMlFPAamgazz3pgYvTqKWCXtkn7t04etIyyOrNqHNHOnCW46G/iY1HMQ\r\n4OBww7JhyyiX32ZDCWviGuxwkrZAKVFw+sz/YVAT8FIoeYk6PQUC/keWVYgv\r\njJzt0L+En33ooZ3bxUqTkmPoU1rYL9P644nKEdqp5hOVzFX+zfy7QbWL48Rd\r\n3uJwIn4nCnJ0Knze6eJPkQp4NH99TEu+LuDMutzby6PqkzzoQHY73elVL5J0\r\n5QMvToFJrQm8XpcP5HMcwTVRIzeoWxZIjy1upheLkvoBckcPWJnl6cjPoj/b\r\nn1EOUFyJPiT+s7A60dH5TP832Z8YmlV/VLv+N7g2Nj57MhaBbP8vYjzbiesS\r\nBVc8d4fpnyylqMcETwu8r2IaqwByY8SbtBi5Hzm8HFc1Z7ZtgNIGYIXPx+01\r\nCWc3neGLUNzbuLg2w8xSQnD8TqZBECfROis=\r\n=Y4Vj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.20_1663883088918_0.9242706402846503"},"_hasShrinkwrap":false},"0.8.1-unstable.24":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.24","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"5e407accd822ccb099677876df192e850b17ccd1","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.24","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-te1r3OyFkmhTZ9EUGJimcsRqxdfu/rDnsDPLO5uhqre72TIVtiBBsporQWzfc1LvrB7CMHC1JLVwOlbCTYNbJw==","shasum":"3233b51c75dd288efe632042b76bb5ae1d9e1927","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.24.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsIlcy+1FRryfd0vF1pXyMPD0VNDCsmIM6fcG7tB1i6AiEA6+uQLSHbOi34ZZxtjdtsYkieRW6ggcJZjQVEanRDWXo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNgjhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoktw//SYg4m7PsUyAInvPzVfLB6D92XrNf4aZGuEb/z/gqVf8CovHD\r\nuN+P1FsqJCjpLUWQCFLgWAVzg6HRodPouxlw+qggAHzadcIuEbQj96haUJ0+\r\n9ntIz4UP2VEBHy97PB6jwuorbbeTkD8apZUezKLnCdM0Qbh38ualRnMIi7aU\r\nGLwUDWIFsVpOHzGv6L9SKxnWMzFOYIfYk1trTUHXSgoJt2tNTLu05CZa3sJU\r\nzpiLxvKC8SQLyWbiCwCIvrrWUK7OcmHlBO1z9UVJoFKhY8+PkDG7BOCpk/9F\r\nl4tBxKtzFleG8dbBGJrznt1ia/Bzm1ay27QpupHDh1+cuKSRl3ztLZZ2SN1g\r\nmHXVEEOcRMwOSFSOMFx2tH8PtOR4kfmb6aQgas5bJoc+E/ihMw8qJNQe4V3L\r\nO1KeeuQrwrC8Q6igqx0mv4vOP/VJKnDAnTpcrX6SBisssXl2w1sr9KEbx8dv\r\nnf8gJ5ko1rXfPrO9+OFmAEgZJSmP+qDQ1rPoEFyPq+rxA6p2D9PvCGLlkSKy\r\neY3jpij9wg2ovpVyafVRO4uY57qRc1eibHEF3yukf0W89mbJPX5cEYx/mDdn\r\nllDitIj6nk4zw7L7oiDcmW+9GiUo3DEZXFe0QdMAWeaxwhvZW7cp/+hNRjQZ\r\ncS+31NqMSVuCaZISrZnJEwYqb/W/l08Esyg=\r\n=iFmu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.24_1664485600887_0.5523842256075651"},"_hasShrinkwrap":false},"0.8.1-unstable.25":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.25","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"8c8420a269feeb27374aa810986b4400d2a6c6d6","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.25","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-BybsNPURkh2Ek/wYZ6nT5LhthyL/T4ThC8lkfj5Os7PX7RqD/bI/aSxpqHP8eCUJV6puadLFQHZQJFDhiSCzhg==","shasum":"4126afb7014e2e3e2ad9d35f578b6c22105e8706","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.25.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/1OluOA4yrYISV0r9H8PSGfGp0WM+0bk6vf7X95JYZQIhANSqCBXG2DdLZNU5AjfkUajqCpQV3VNLpA1lgRUUvGn+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPJUBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzUQ/8DxRI3THwhoVW1hqK2E6wNC3UdUjNGrh1F3cV2SIiw2RO0wRS\r\nrFONev4ffPG2yAUYWlh4EHiP+ff0/6hp9rMxbKVxb+wmvLjaKvLoweSxjYaS\r\n6+2eJ9lcMTc305wcmwuH+tYeM8b+ckopCFpObNe7SkcTXRYh7HWrQ88wI9Kt\r\nPCpiLBzMrw6cYdfRVPFvThR/iBFcS2f7Vr7eH1NyNLMMlBsWlTth2STBf7vH\r\n+a9qadNu/dzEH6ZXSn4N+4LzoX5VbdQUDJhW4d/L50KbAWD4MzmQb2F/Bvuj\r\ntL5hmMkR9VwC66kMF2XKvKfO5Z3miXFyyfRAClycSOjv0nt14iSu82FbLL4t\r\nFKvZIME0rZ6vXqov1+ue8b0J4z26Cbl69fmLhY9yj18toWaAIexYPMWKdLNF\r\nE/ae8uflCzdtRHCMDJMJ4VjVsI+0iE4WL+vQSuItmDNPiz/z4ThOj9yM9QJW\r\n2ng8NDdYTzoGMOswt47NB/t5uQblSKW1l/141WPwrD+r7TksmrX9UHXYFIzj\r\nQ10+JZ6wd1FW2k8gfO9mnwqlkLFAN4kiW7VZbNg7pN6RETVbVaFyiVlfdYjp\r\nW55keLYusXg8r5IYLaq2fw3mJJgPuwvM5SDBKps6HywqqcD+KM5x5/Wms1VT\r\nu7EDJ+IGf2Vpd5QVs6tqt1F3xweh3pwfNbs=\r\n=yBht\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.25_1664914689699_0.06598311746052343"},"_hasShrinkwrap":false},"0.8.1-next.26":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.26","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"4dc8dea175ff9eb8526ce6f1abb4b72ffbb58128","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.26","_nodeVersion":"14.20.0","_npmVersion":"lerna/4.0.0/node@v14.20.0+x64 (linux)","dist":{"integrity":"sha512-EcQ7PGd6cqVQ9pmtA0OKLgqH2Ok5wXR3JQTT1RkbWccxAItVVDOj4cdF3PK/1TDCbu1So2b4JclUvdnAj0T2jg==","shasum":"24ff94c43b79e53c2f2f675fb01dd3294e9385ee","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.26.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFAuww5H4FZ6tKm6+qzqjhTlReLrbPQYX/f23OtZ2IZAIgTufa8ZgBtggd0i0jJYObeD2IUkMUevcUrOlDBiuKn54="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPJx5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpT7Q//bC8QFAI4Z7CJ5NkFm/9BjJV5jDlFsgEdgxxT4vkHrEmkOEZI\r\nyCYn3N7VXG27fO52i+Rr2T+ugH4hKAU5Y5c/dYO+qf6/G1xOafNOtCnOYbBG\r\njBXwFYQZUHfVvZfMbqcb69jn6gwT4ijQ7YfX943KZ0oBAEbmn71Vp3UxtLb1\r\nObVHtwlpU5LYyg3FknSfmggemiuohjVwZh0oN8u1VWNADXptGj+6Z2bJYWQm\r\nry0u7tY99JIibrTELtI318c5d4lUhj5ZhTQfGbaj9hXuMeYfcr8+fhZkyOQI\r\naqfh7Uj2/hz5irmiXPo08VnWMto9VdM2ch8Unc0qTJ1OCxD/tbdq6UPajGOs\r\nM0VqzkmeqFE+7ql94ytV6pGQbMZUVjq4gItvZPRlW2MJw9HJpaWM36AfdX7B\r\nkXunjHnj/JvE2gOleXh/R23uNDc6OpTpa8e5YhvXCjqgoh7/CT/AkEfdMidR\r\nhpbEaVIy0qgmt3YBk7/57xbVpHunltnsuvFfIHIBivMyBbXGbBlay4mUa2IV\r\n4v+R28Q3QZklekjGWHA4KLf/FfWFjsxsBOXBNjm2lip7XVEOL8NzFUIT/8Vq\r\nxKsBodgYTNXV51+wKy1eH6tqSjfD14vS8vHtO1TLR0d9KihVRN3hLkC2k8w1\r\nB2hcDdhuWOcz0TJfXaxr2WtyFxWqXg2pb98=\r\n=X/h8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.26_1664916601446_0.8796868229702559"},"_hasShrinkwrap":false},"0.8.1-unstable.27":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.27","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"b3caacb4d7850e5ac9ff2cc6b17b203871d2af12","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.27","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-XStz1uLtGrGzd9hpHR2J4Vs1Ilytk2QNcO8B7Cqqdj36RZ6eQoenRr/M1xxXTJraVd3n6QDUeqEPCxlIl6QRZA==","shasum":"a8834555e2b134f5e05a6f4ae235d655da9301c1","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.27.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzBxi+3I7xk9kM+iNS7mE602T+a5aNSF5cl/47CKfHggIhAPuOb85iZb3ucWuejrmmZCFPGxoFVHgevSk2RFZja3Rw"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRpwNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoh2w//VIxpj6xjdhHxvsc+tTN+hAlkOfY9JC+WqL+btS+pZJaS17/4\r\nrqxWFhb0fZXiBAOXkdwOe8eAkd5VCLEpQc+pykC6fp4PVL60VZJH0wwvD+Ca\r\nQ/GS8cCugRDEwtuHG9uGe/KV5NZ+1a8WHep4lDAGvRGgWbynU2V9Ywut3zA/\r\npelVB5EUMAU1QWscd094hz83OY/Tt5j29UeryF4RtVFbjMhkp+khYOneaHhl\r\nLPMe9PZbniJtQvcaEZu8HOt8yA8A22IJPkyGQ/d3GVuQosXjP90uwUsABPTN\r\nPHr0J45C02pZT5ZrGB7cQmRCTCKZH8dLsLhetdtrCfZ9vH2eUhYkGL9N73cH\r\nNMjk/mmRvcx4FnYCVirswg/6ncb4dik4/6mA//F4lLZ/NiJJAZVXrkfDcgUH\r\nqr2cYgru5g9nn3FRvc00ufIBCaheSxpU6sDf8JyrZ9LtipjnSWrmvYebMKIm\r\n2yrkNprTaRghbL1pAv5xQ/HVB2dm0j+DC3pX6Cqr/rsiMdxAsJzdMiP882aV\r\ncAPoxYt4yZvlqQqiUKnMBAv25paDjzqt0XRmtMgJdLa8z544aILvQ3mlwu8j\r\nS+UVDPozGyqryKc/hK/d29/4jU5DPKF3j7vAcn5JsXdEo4agrrZV+YjEH3qR\r\nqNVzp748/x/UcveRImtnpZCxAUxS6onoBJM=\r\n=YLoN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.27_1665571853711_0.21138494812849196"},"_hasShrinkwrap":false},"0.8.1-unstable.29":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.29","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"f5e1817d3a1e1abcf902b9a9760c76e5ccb990bc","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.29","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-uasZCmld6aezRM1UMBf/IEfbL95pBRxhV2OtrS0D4DQUJR+tzzoRhoqsPxeBHnVCAyzooV7zaPug8IVqrySxZg==","shasum":"1d377909a705cddec172dd8467c0fee0b5cf1613","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.29.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMk1vGDhvNRi9Mh2a9Rjwi8XdLOLvLuz8Eu2ks5lbTSgIhALSugicPDljgrGtkzOMqbT3kj7kautNX9jVygPCt7tSQ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR7o3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHmw/9Fg+vf5QedYtLgZczlGK2SNyI+P65ZM2dAbyNEsGp24MdVFxL\r\nybYKgrCD3Hreye/vOL6afTf9kdNE+E5VvykuOqH2Mtd0e56NFRYT6/GE33pL\r\nGcAp4omCZ8lKSJS6ysxCHAXWze43VMFTgoOsgf5sI9h3WkBLcH2OYP0kePFb\r\nt5S6s1+Ry/FywaFY22ar9m37X5IkU/wfmCOqxSCF89+LdtIkjTudl4lH/kD6\r\nO/d5Q2oV5hrMX8JYYGvq+lhMk7Kl6cisi4Al7zFsUekRVBAsoWN10JChRiZ+\r\n5lGEEzS/43ifG2S5NVbfK1NHV3nWcOgXSMEz1G/xa4XCr2KHysjQY5tNnLHb\r\nYtQ2rVwX+2btqL9xiffAuBBJHmwnNOFjne+MSJRSAQu5Eo3LSHkz5zUPPHbJ\r\nRTLOLhqxy8b4AraFn2DmxM3kiN9o83FK8sXaDvYs/az0DCTPUdWagfLJjusP\r\nAyn1ManfT1ScqEPirF8ugsgHYD7iYjFQcFl/jaRGKlbVIRP8ylcsw7h7cpwC\r\nZp8HbG3bbtYwJiBadZZzfkchkp3sZPHjVfYy8wyfwKeUd3usQHX/naLkk8FK\r\niU7Gdd6RL3jrENiVhvy7GT+lmO+H+GvPe+rd9xa8wLWGGdBgXWHWxdc3029n\r\nwMwVFOwtCtipvTZLuoRrUAMbGE5IMsXwFQU=\r\n=xl9n\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.29_1665645110995_0.2600196151911034"},"_hasShrinkwrap":false},"0.8.1-unstable.28":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.28","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"3f6cc47892b065522be088d72bcf4d0c5042d17d","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.28","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-EmwGmwRELBmm/GWw+Wy0Em/L3Jwes64G8KgSoqh0ZJ+XzEBXIywCfY6lhK1Z39xI3THBB46gRqseC/36gto33w==","shasum":"523ccd32b7f43df9d9dd5d8954eb68f1ced56574","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.28.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCao7VpX596U+iwiFDTwCiP6v8m/37xwhVQwGiv8+933AIgGKL2BMIGeWMvwSzd+uDB7PYVGFSbOaaF6DLuKEVRGW0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR7qHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqvzg//dGDDeB/ZyPWC5xSjTlqQuMf8AJCR2V/YFR1EANNHLoBUg1NJ\r\nE0AA1055RSVMpnP5HEjy30BaaNYnrGKzlgwVfZcWQ649vzbezAl7/uUSEUo4\r\n9NNErUAO81hEsd81n2DWDmLPGV65Qw/pPDNZ7RSseHuc7XH7aH1/HW32Y9yQ\r\n6T2OzqXhWBwzZ3drPGHaGinz/bK+u5NizEY9nR898GsA6XB2eHiH+L7n9tBQ\r\nNPJ4xSDqfQYROGsFISqMlocQzXZU4u867j8TLXx7kb93jHgVXXQARgsjLy4d\r\nxBw+5N5i8PnGsajQiCs387ivZLl2JFyca0yqrjiDI0CVkMT/t7BPlZWnRO4e\r\nnmYU64EopW4uy6FMc/+C7EHElBhsx8S66dGStKCnKyQiEJ3IG5auVsaqYzAg\r\nQP1AfNkz9FAecK95G2drF3LsG4Iyrj54UX8fhjRj8RE9pc2g4+oZjlW70R62\r\n9KVjA04Nw6lNFcaS3AiLJ4WnMPAT/vVlURK8+gXdSGUywS0oNTArV3hxbWuD\r\n4RIMhOxesDpAmZmsILw2X8gqWLRY1gnO8bhGTz8BmwCtlnbg0zIbQTLjdBdL\r\n8cVvNrlEDqISh7qW5V5wENEtrNRvz9eGve/tq21CNmE1wHiunLch0cHT6z2K\r\nEvhpO00iODIJm7lBM1RVzLZnfA+cofiG2dA=\r\n=IjLm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.28_1665645190848_0.8017246793788382"},"_hasShrinkwrap":false},"0.8.1-unstable.30":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.30","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"54625bc582f8c51b1823f097fadb6a4f6947e974","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.30","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-PPxfaguyRNwSx4QmfVvqkREBnQkiwXAWno8P2fWdL76Mn5MJQ8itwAG1grRXvmRIAw3Bz2jDP+0AqzQGyVQYNQ==","shasum":"84725b9b2d714c52b9ff0c2c109227fb71a2ca23","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.30.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtBY48wI4k26e9sXOdZYFAObIenEg0Nu177WWs58qatAiEAob4upbHMaZkXX5uA+4cDehC4zpC3rQ4ZXEiF6u4rWz8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR7uQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQrQ/8CZw026lUKL38P2HWwbCo2K6OY1OI0Y98jXFSL3JZciQoH1uu\r\n4gVScZmwTPVdIjvFIhTtXj6bdxrSq3hBJEikXhTp8pgftegT1xlvhGPbRcPp\r\ncmg9fz4yGMivKLfxyPTVRZtkT5hF/6JtnGE5g4vw0spgkkhnHChpGsZ9sND5\r\nFrfxGpKoi+htzbfeYCxQRSMqFDiIK+Syticpn5C1ND4b6zFmdcis92NG2Pp4\r\n2nt7hBPS9wMrDvoB4ShZ7mCHussM+y1vR94x43LfmspmwqhEUiBNNjbd+EaL\r\nZ8pwlEhpGelLXUiUjFz05GcOzYzkILJhvevjBYcjGeeuZhZdgWvnWa3wFGiT\r\nf7Zf+Ujp3s/B+2XB6VXXi1oOs7SnnMiczjIjx3TgcKZ3Y+GocbtXJre9Z9MU\r\np4yn8MLc6vHgo/JTA7HPHWne1elTIphEbM0kCy8VqEMNDas8yOZhQs5UbCJy\r\nIMZA5NT77QXQ8Tw8VlkC6i+8qoY+gUQl7y74zqtHjl1N8tdBJCA/e6VkBiuF\r\no527GQ3aMVQ4Gqt0idzfGxXXwQNPMcWc/4/L4RYZ9465/zIPbEnTPQehsiqm\r\nPaFwLPnv2bopLo53M2+IcZ8LtljH43l2k7767QDKbshOqotF2si67l1BQ2K6\r\nTZgcoQpJjgZjQxsGqCfTTduUZJxLnX+wH7k=\r\n=S/4O\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.30_1665645455895_0.1909369497595581"},"_hasShrinkwrap":false},"0.8.1-next.31":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.31","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"fe90ad0ac1fc1f401075310cae842a1e2136a361","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.31","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-lsW5pS5Kg0pk4JnImvrqPRgdPG7SfGrZ/NZsgfQ3B2LtFbRlVJXl4y0ggToxaEaMex16jMaLbR/9wMHoyXUdeg==","shasum":"81e8259b9e1bb4b2ad347b388bbb77a363cf1161","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.31.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRewqMVwJks91xGBQgCABCc3JfNgaSI9onTUmMrLfwMAiASi7FEbnDu2BZc45R8N+IoGuRBEu9NzACQUTrKC2Qvmg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR8N+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKRA/9EddxinTwYoyfYeEwL9aa2/z1RqLIOYdK2St9ms3jdP9TOnDR\r\nE6soRcJ7eYXCydIOORFMac+bPbij/wC31iObWGUMmponn/2g2O4y3f0Wks1W\r\nT1qJuTSC0PpvEbBwLiTEbMQvW3Hp9eS02V2+el80KL62bxAxhwplUT9npO48\r\n2QHUMy080AvqBkqgPMf3Y2w8Ru/qkiThXJ7vnEBgapXqF0S14Mr/KmcJZbQb\r\nKdRzpfvN/W6Bml7b9yxkW//aoYwxixARJEZQED1j/aolr+oNl+iqLaaS1lBu\r\nHOGkn9tPSyz1qU64jVjDbcnRiMHAuhaOF0MhqAwGDcVt3STDqI3NpoIXBWLf\r\nzqnktJwPyrZm5n0YBHCiuFmD8CLDsjleMG7XJ5FvNQcRTPiMzvFGQdA1E8tf\r\n3jem8t/tSvgUN9jTNBK01LYvUeBAaLD4WWpCg5wT0Lg0wA/fhm/4lr++PtOl\r\nkdfvh5Y9huLV8tyn+XWjogBmgV2lGl0nDpzoBBdJjMbSsHrMAQQrCB84BEkf\r\nJvi0kzadDPSe/DCCJcdFfXhfaouSjP5KfEC3mujNFMAHErP4GFHRdFBos/ap\r\njffkZ1esRebETDYumkS+2UJFgSuCo/MqZuPxHJd5kb8CqMpiGWQ038Af+5Ua\r\n4AC4EZChjSIYRt8QVeUmxXzA7OxI5OB5NRs=\r\n=KTXS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.31_1665647486579_0.06223713190372204"},"_hasShrinkwrap":false},"0.8.1-next.42":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.42","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"5ee80bf59c72b012736e5a1f5bd1cf57e7264150","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.42","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-N/UycJS6d9aALKdnasVVPEGBRhTMjNmjhFXv2CVi1eyI3StFp+sNpLPtromOgG4cybi7nqGK7T2IbrumYYLq5g==","shasum":"523dc2474789162e526eba7cba5fe0fc1c0b5d37","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.42.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuutj0ugmDO7lyMZfgGWKeb2+YbPFjXM1eONy+H5VFVwIgBl6txgfZ38UpRHxsOizMe4WyNm43tw9XBRF2FYmsvg0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTonnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGBA//cmQ3UqqdbUwF5zhZhjDnKcXdvLDwR+93luJzHUU+bjXIwyBf\r\nrNlAZmB8wh+brQEtUgclB/O912A5tlExl8kHgzKJisaysLpuyG95eKMlR3MH\r\n8ksr2DHT7gkyYzZw4W7HqekJ6wr6ECAehw5SxbKmIAtWXmXMV9kWAloCywMN\r\nIT6pcUux/wqgueXWwS0rtOVcHFlDQvLA0L9/mWAITarW8fe5ZGgE7RFZiS23\r\nOQcBQEyaAyqBBx39P8G/pCz0R+pfIh7XgLQY3uCUz7TdwFTfzvGK83A7hdG0\r\nzVyKJ9LPAw2Se7RBda8mZOMnxwQt/VBBfFBIrimW/FfMrqd8uGp+ycYa2LiB\r\nXwwdYL+czGtCgQImoY1NY9LXK31kx7neAttxpehEFd+kZGvvbyVkRfsDbLye\r\n770VwovsIr3bj06bFTvB3j9F15/tRuc5jAtvz7k3aB39waMur29Na88LQvZr\r\nVXokpb/rTz94g6XCc1trgauoEOpM5M7Ejk0Un0WuN2NGrPp06uKbxJmiLS21\r\nNOxdbrrAgi8dSFZcBzB8f0GvJQel7GqXg17XxGXbp9MLxtImb8jb8/7WEc/Z\r\nuk/vB7n/b1dLUm78jTWB9lwriCEQ3k/CWG0CdAvu+XZR13NOSpI10nk9r3I6\r\naSnD3+rBvMIG5PizJdhPs7UZVvUg51YO7/g=\r\n=ofrg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.42_1666091495593_0.32101341168768527"},"_hasShrinkwrap":false},"0.8.1-next.50":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-next.50","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"9c2d649295ab8802118f6216b882de6f86ea06dd","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-next.50","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-5BnYNfjaAuJDjhAGrZw8Dam+aI1c/3h7pxrt7JgKGdpd8CndAaOWCoTmPXx+Azf1ZmawJQ+e4YnJ9PRcAN8a2w==","shasum":"e3483437ebd29049d3b32c1fed611ca8bb5ee872","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-next.50.tgz","fileCount":39,"unpackedSize":143259,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZit0G2j1KrgPSDIvm9wqJ19lB1C6nxTdKobV2XZ6MngIgdk5IFuAKAAEofafpugiq3USvqfxJGXZ8S99DPCVMXSI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjToo6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrsdw/+NUvrNYmsMoKDLVLuUimFCGdDFT8i/Ob2hWVUvgcvCpkLqIU8\r\ntAqeFAKcikaGFybCQAqHshPblCra2Cu7rHm0FXZfkLLw9xuZctcscZsvz/be\r\nwqDuJUrl1JRG+ACpqpUMZ2N3dvrN3KorJ9rucFOdSSSucLSnLwwYcVZJDpgU\r\n7kKymuFcBARn6s1kJZt9oks9QJlOJz1V07ealWZsnCxwGbaflVDfOvJLoIRf\r\nmlGLUcS4ne3Oq2Jlox3OE5HSQIB1p2geWQXDO8ss6AGvuXJMRhMYFwY/wax9\r\nLkHLC0uPrYYw5IkOWs0YiecWqy9Z/F5X3ow+iwRuW66JAnMomQId+dMgx9az\r\nxfHDmrzGynHjkOqOigQOBotONH+IO4YAza3AYnLBkKCzQDCnJfXIyS271U04\r\nxwpdNgdcr9SF4mpv036GAKspuTtd83KxkHS25Y+iqjUIsVIiAedquJWW7CdK\r\nkpiUMeUL/L369tagnL1mtLUcyo8FVjdjxito1+LZHkWQlzTUP4GByvHZaYki\r\nBgkxSMnYiuQorhXiwSFgloHfrbVqZsd4/g1bG3LVbXcMyYYMPF8iCWnmq5CC\r\nHSulnowknRga76uL1gv+nPKMxKgIdJ6WiliFZdJzueOzM2NoYWmnGkX5TXy6\r\n/M6m4Jp0/I320R3lk/nx5hMfVY38lNRky/s=\r\n=yIE+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-next.50_1666091577968_0.7940162701322033"},"_hasShrinkwrap":false},"0.8.1-unstable.50":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.50","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"9c2d649295ab8802118f6216b882de6f86ea06dd","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.50","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-uhvQLRh0HX0zQJe+e1yUXBV2LRgAgJEC1VtIatZ1HOelxXyGdeveOzLvGBK1P35o0bc9DBJhTqhr1LTsKD+ENQ==","shasum":"57cc818c647e326c5161295162b31615291f5c39","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.50.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZRa+kvU1G1Tlu4Dmsimiv9BdE/rUhKpnuSL5xRTOaGAIgNuhIXqjVZslA2xchGP6cf2fNqX2FHU+S16gvakqSVbU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWILlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrq0BAAntMq3gh1RXOJf7xyu2Of7O+pbH4gps7ov3gnWGlb4aiFjDbB\r\noLwht/i3B65NHUS/rY1QYWC2qM/09p6sbMppXHY3IBQxAMCfgF9L/VaB0dXc\r\nAXAEhfTWHFghwDiuJUEDQsTDKUZNSuQz8sPXSKldnnfw5B26Yli/a9bcZn7e\r\n8ILoSim+NU/QsZvrEreNt8fJazTrB13OT7HKRbHX+1A/hfDv7O8IxWF1LR6C\r\nT90AhgB6w9K9vVZhWF8M5ZEjav6L5N5skhOA2rr8+wTWQTncpTY2FkKWkv9d\r\nlEQTUWsiC5vW+dRy1BFRrCTamiAY0LSAs5AcrOuFJXTNREO130E0+MF88C7/\r\nrSwPKi5rTLkfcz/AFSUe9QwycQehK4K6k/Jw0nu1zgD/9+inP4Ha8DLjkmY/\r\nkmIoqfy/chJlVpju9QKX79LLg1QY0AQgIIykLhpKLQalZer9bm4cEDCd0sX6\r\nCB9AciRiHOlADuZnOrll4mM8GIfxgNpYN+220Zmzsrw+emM51AqWM19RWR/0\r\ny99+myZAScDvatxzQrCKYu4B9REqzUX/qVP36pBynh9PotroTRkhduHGvY4T\r\nnTOV5VL+ePV1R4QOboViAV07GXAMzOulPK2RpAq5QU84KE75dI8uxrXXDwxA\r\nEKgxLtlU36QIABoYAenL14Dfwxd0K+AQw9A=\r\n=QaE0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.50_1666745060759_0.03175254282127371"},"_hasShrinkwrap":false},"0.8.1-unstable.53":{"name":"@sphereon/ssi-sdk-ion-did-provider","description":"Veramo ion-did based identity controller plugin.","version":"0.8.1-unstable.53","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc"},"dependencies":{"@decentralized-identity/ion-sdk":"^0.5.0","@ethersproject/random":"^5.6.1","@sphereon/ion-pow":"^0.1.1-unstable.3","@stablelib/ed25519":"^1.0.2","@transmute/did-key-secp256k1":"0.2.1-unstable.42","@veramo/core":"3.1.2-next.84","@veramo/did-manager":"3.1.2-next.84","@veramo/key-manager":"3.1.2-next.84","@veramo/kms-local":"3.1.2-next.84","base64url":"^3.0.1","debug":"^4.1.1","hash-wasm":"^4.9.0","uint8arrays":"^3.1.0"},"devDependencies":{"@types/debug":"4.1.7","typescript":"4.4.3"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"license":"Apache-2.0","keywords":[],"gitHead":"25b005d39c3f06c1fe3db9def63cb6642e774f75","readme":"# Veramo did:ion provider\n\nThis package contains an implementation of the `AbstractIdentifierProvider` for the `did:ion` method.\nEnabling creating, updating, deactivating and resolving of `did:ion` entities. The ION Network is an implementation of\nthe\n[Sidetree](https://identity.foundation/sidetree/spec/) protocol\nand [specification](https://identity.foundation/sidetree/spec/) using the Bitcoin blockchain.\nAn explorer can be found [here](https://identity.foundation/ion/explorer/).\n\n_WARNING: Although the update and removal functions for Keys and Services seem to yield a request with a valid response\nfrom the ION\nnode, right now these update and delete operations are not reflected in the eventual DID Document after the anchor time\nhas passed. We\nare actively looking to solve this issue_\n\n## Long form and short form ION DIDs\n\nION has the concept of short form DIDs. a Short form DID is a DID, you also typically encounter when using other DID\nmethods. They are resolved using a resolver, as long as the DID is anchored or stored.\n\nSince ION uses the Bitcoin network it takes time to propagate changes (see next chapter). To ensure that ION DIDs can\nalready be resolved directly after creation a long form DID is available. The long form DID starts with the short form\nDID and then a signed string is appended after a colon. This means that a long form DID is self certifying as it is\nsigned. It basically is a representation of the DID Document directly within the DID, similar to for instance did:key.\nLong form DIDs are resolvable immediately.\nMore info about long and short form ION DIDs can be found in\nthe [Sidetree specification](https://identity.foundation/sidetree/spec/#did-uri-composition)\n\nThis ION Provider creates Veramo Identifiers using Long form as the identifier's 'did' value, whilst using the short\nform as it's 'alias' value.\n\n## Timing and limitations of current ION Network\n\nION uses the Bitcoin network to anchor DIDs. As a result it typically also takes at least 10 minutes before requests are\nactually reflected in the ION Network.\nThe net result is that you will not see your updates reflected in for instance\nthe [ION Explorer](https://identity.foundation/ion/explorer/) or when resolving the DID, until this time has passed.\n\nCurrently you can only use one operation for the same Identifier in between anchoring on the network. This typically is\nroughly 10-15 minutes.\nThe net-result is that you will receive an error in case you are trying to add or remove keys and services for the same\nidentifier within this period.\n\n## Update key(s) and rotation\n\nThe ION DID provider uses Update keys when updating the DID document. The provider creates new update keys internally\nfor every update. These are stored ordered by timestamp. When updating the DID Document if first resolves the current\nDID document to look at the ION/Sidetree update commitment value. It then looks up the local key with the same\ncommitment value. The update request will be signed using the matched update key. At the same time a new update key is\ngenerated, and the new key's update commitment will also be part of the update request, so that this new key needs to be used\nnext time. The provider takes care of both the rotation as well as the selection of the correct update key.\n\n## Recovery key(s) and rotation\n\nRecovery Keys are needed for deleting the Identifier and deactivating the DID. It uses a similar mechanism as described\nabove for the update keys.\nThe ION update keys could also be used in case of loss of update keys. Currently this provider does not expose methods\nto do this, although most of the methods and infra to do so should be present.\n\n## Creating an identifier\n\nWhen creating a new Veramo Identifier you can choose to import your own keys or have them generated for you. You can\nalso choose to use specific Key IDs for your key, regardless of generation or import.\nThe options object when creating an identifier is as follows:\n\n```typescript\nexport interface ICreateIdentifierOpts {\n  verificationMethods?: VerificationMethod[] // The Verification method to add\n  recoveryKey?: KeyOpts // Recovery key options\n  updateKey?: KeyOpts // Update key options\n  services?: IService[] // Service(s) to add\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Creating an Identifier using auto-generated keys\n\nThe example below generates an update key, a recover key and creates one DID Verification Method as part of the DID\nDocument with id `did-generated`, with accompanying key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    recoveryKey: {\n      kid: 'recovery-generated',\n    },\n    updateKey: {\n      kid: 'update-generated',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-generated',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n### Creating an Identifier using imported keys\n\nThe example below generates an update key with random Key ID. Notice the absence of the recoveryKey property. It imports\nan existing recovery key and creates one DID Verification Method as part of the DID Document with id `did-imported1`,\nusing an imported key.\nThe `anchor: true`, means to propagate the anchor to the ION Network. You typically want to use `true`, unless you are\nimporting keys for an existing DID.\nThe purposes are the Verification Method Relationships in the DID Document. ION/Sidetree calls these purposes.\n\n```typescript\nconst identifier: IIdentifier = await agent.didManagerCreate({\n  options: {\n    anchor: true,\n    updateKey: {\n      kid: 'update-imported',\n    },\n    verificationMethods: [\n      {\n        kid: 'did-imported1',\n        purposes: [IonPublicKeyPurpose.Authentication, IonPublicKeyPurpose.AssertionMethod],\n      },\n    ],\n  },\n})\n```\n\n## Adding and removing Keys\n\nAdding and removing keys typically use the below options:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface KeyOpts {\n  kid?: string // Key ID to assign in case we are importing or creating a key\n  key?: MinimalImportableKey // Optional key to import. If not specified a key with random kid will be created\n  type?: KeyType // The key type. Defaults to Secp256k1\n}\n```\n\n### Adding a Key\n\nAdding a key always has to happen using a previously created or imported key in Veramo. Unlike the create Identifier\nfunction we do not support generating the key on the fly. This has to do with the interface of Veramo requiring a key.\n\n```typescript\nconst key = await agent.keyManagerCreate({ kms: 'mem', type: 'Secp256k1' })\nconst result = agent.didManagerAddKey({\n  did: identifier.did,\n  key,\n  kid: 'my-newly-added-key',\n  options: {\n    purposes: [IonPublicKeyPurpose.AssertionMethod],\n    anchor: true,\n  },\n})\n```\n\n### Removing a Key\n\nRemoving a key always has to happen using a previously created or imported key in Veramo.\n\n```typescript\nconst result = await agent.didManagerRemoveKey({\n  did: identifier.did,\n  kid: 'my-newly-added-key',\n  options: { anchor: true },\n})\n```\n\n## Adding and removing Services\n\nAdding and removing DID Document Services involves the below interfaces:\n\n```typescript\nexport interface IUpdateOpts {\n  actionTimestamp?: number // Unique number denoting the action. Used for ordering internally. Suggested to use current timestamp\n  anchor?: boolean // Whether the DID should be anchored on ION or not. Handy for testing or importing an ID\n}\n\nexport interface VerificationMethod extends KeyOpts {\n  purposes: IonPublicKeyPurpose[] // In sidetree these are called purposes, but in DID-Core Verification Relationships\n}\n\nexport interface IService {\n  id: string // ID\n  type: string // Service type\n  serviceEndpoint: string // Endpoint URL\n  description?: string //Optional description\n}\n```\n\n### Adding a service\n\nAdding a service is straightforward. It requires a Service object which will end up in the DID Document and it needs the\nDID value.\n\n```typescript\nconst service: IService = {\n  type: 'LinkedDomains',\n  id: 'example-domain',\n  serviceEndpoint: 'https://test-example.com',\n}\n\nconst result = await agent.didManagerAddService({\n  did: identifier.did,\n  service,\n  options: { anchor: true },\n})\n```\n\n### Removing a service\n\nRemoving a service is straightforward. The example has no options, which equates to anchor being true.\n\n```typescript\nconst result = await agent.didManagerRemoveService({\n  did: identifier.did,\n  id: 'example-domain',\n})\n```\n\n## Removing the Identifier and DID\n\n_WARNING: Currently deleting the identifier will always be propagated to the ION Network. Reason is that Veramo doesn't\nexpose an options parameter for deleting an identifier._\n\nDeleting an identifier is straightforward:\n\n```typescript\nconst deleted = await agent.didManagerDelete({ did: identifier.did })\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","_id":"@sphereon/ssi-sdk-ion-did-provider@0.8.1-unstable.53","_nodeVersion":"14.20.1","_npmVersion":"lerna/4.0.0/node@v14.20.1+x64 (linux)","dist":{"integrity":"sha512-Ky8WNY2NBWIHscYGrZ69ukL5UnpjdaTb7Opn1dGmraHmCFrgEDO5AwEYAIylKNB37stkFa4PK0bsnThB1kN0nw==","shasum":"e7a61599d8bb27dea9722b2b2882d6214d06230d","tarball":"https://registry.npmjs.org/@sphereon/ssi-sdk-ion-did-provider/-/ssi-sdk-ion-did-provider-0.8.1-unstable.53.tgz","fileCount":39,"unpackedSize":143263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHR9l6W4/uve2CicX/e0VRzCRoOoDRhk9OifSKfOZymuAiEA0CHfH5JOLM10KKpZOVc7MPizSEbnlTpotIGxLxlCX8E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWb9bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUFw//VlR5L3oCklY5qYR0ntS8+/DTEUMb3kO8o4GPX4AxcSz98/68\r\nRa5yI40g67iUOiRGpXF/VuSlMO5N7H1tuGZcBNaOejpWqzNz0MZnAhwh9SDw\r\nzatDHmFB6VOpjQwBV/+XrXddY9jokCkmRYQkeTxUCRfNvS6HBKHCoz/RFNe3\r\n2rjQ8OgseEJ3CoZoGgeMfqq802Z4JfV81+W+3OFKSI50LCUod083/IwxPO0+\r\nVE95J1CCSTTAk3EHc623g/RZ+rS6c5ntNhKNEhPEcHucfJvGp2GvkRBFv8Cs\r\nirLK2RjXjGJfk26cYeVEMxaFmUOCez2S4GPGBxZK54ikwti0dO5OQB47twVd\r\nHAUNyW6kE+ihsxSlclXI4pUUuo5U7oxxtL5YkCZePP0NoWbGAoM30F4CIe9A\r\nA1ECH+hz3cgyJFHbkA2Qs+9xWK5HLGF8KglUcg0LnZMlp8KhtaOhH8Ogu7jY\r\n+QZuilaZiioGGFN6g49Ds3yneciepPSAUHD97WeUbBWtgtOhgG3g0GjBb+oD\r\nqO0tvno2Bd8cErFswY4Wn2XfOmxjOwPVY0g1ajvH8QyJVzZp+Cb/ek6YyZ5f\r\nEdEy0a95bQ0ueQXWuHMlPKpldl4JQSc1tHCYsjnlY7eU+yfZs1Uw/bpyXC7u\r\njZlT5SEwJom3LYSLWcguBSOIT6TvVz3vdK4=\r\n=cQaz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nklomp78","email":"dev@sphereon.com"},"directories":{},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ssi-sdk-ion-did-provider_0.8.1-unstable.53_1666826074885_0.4225305573498077"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-01T22:26:14.230Z","0.5.2-next.113":"2022-07-01T22:26:14.479Z","modified":"2022-10-26T23:14:35.257Z","0.6.0":"2022-07-01T22:38:05.612Z","0.5.2-next.116":"2022-07-06T00:09:56.600Z","0.6.1-next.6":"2022-07-06T00:39:56.310Z","0.6.1-next.8":"2022-07-06T21:43:55.598Z","0.6.1-next.9":"2022-07-06T22:17:40.711Z","0.6.1-unstable.49":"2022-07-12T22:45:38.068Z","0.6.1-next.50":"2022-07-12T22:58:29.482Z","0.6.1-unstable.63":"2022-07-13T08:31:11.694Z","0.6.1-unstable.64":"2022-07-13T11:08:30.343Z","0.6.1-unstable.65":"2022-07-13T11:13:54.175Z","0.6.1-next.66":"2022-07-13T11:36:33.302Z","0.6.1-next.67":"2022-07-28T21:36:07.857Z","0.6.1-unstable.74":"2022-08-02T19:38:23.304Z","0.6.1-unstable.75":"2022-08-02T21:58:10.285Z","0.6.1-unstable.76":"2022-08-02T22:43:16.247Z","0.6.1-unstable.77":"2022-08-02T23:35:06.430Z","0.6.1-unstable.78":"2022-08-03T00:03:03.481Z","0.6.1-unstable.79":"2022-08-03T00:25:59.651Z","0.6.1-unstable.80":"2022-08-03T07:47:27.686Z","0.6.1-unstable.82":"2022-08-03T10:26:40.753Z","0.6.1-unstable.83":"2022-08-03T13:42:25.705Z","0.6.1-unstable.84":"2022-08-03T18:42:30.195Z","0.6.1-unstable.86":"2022-08-03T18:53:43.545Z","0.6.1-unstable.87":"2022-08-03T20:06:35.134Z","0.6.1-unstable.88":"2022-08-03T21:52:07.542Z","0.6.1-unstable.89":"2022-08-03T21:55:45.756Z","0.6.1-unstable.90":"2022-08-03T22:09:29.570Z","0.6.1-unstable.92":"2022-08-03T22:25:50.269Z","0.6.1-unstable.68":"2022-08-03T22:27:45.795Z","0.6.1-unstable.70":"2022-08-03T23:39:19.872Z","0.6.1-unstable.71":"2022-08-04T10:24:46.822Z","0.6.1-unstable.72":"2022-08-04T10:26:28.809Z","0.6.1-unstable.73":"2022-08-04T10:28:18.555Z","0.6.1-next.76":"2022-08-04T11:42:09.515Z","0.6.1-next.78":"2022-08-05T16:06:48.674Z","0.6.1-next.79":"2022-08-05T16:13:16.022Z","0.7.0":"2022-08-05T19:52:41.715Z","0.7.1-unstable.9":"2022-08-06T00:27:42.861Z","0.7.1-unstable.11":"2022-08-06T11:52:52.816Z","0.7.1-unstable.13":"2022-08-08T00:12:03.375Z","0.7.1-unstable.15":"2022-08-10T11:32:30.365Z","0.7.1-unstable.16":"2022-08-10T12:02:05.469Z","0.7.1-unstable.17":"2022-08-10T13:03:44.337Z","0.7.1-unstable.18":"2022-08-10T19:42:47.243Z","0.7.1-next.18":"2022-08-12T08:37:35.115Z","0.7.1-unstable.67":"2022-08-12T16:51:44.153Z","0.7.1-unstable.39":"2022-08-12T17:20:44.477Z","0.7.1-next.38":"2022-08-12T17:23:08.791Z","0.7.1-unstable.40":"2022-08-15T15:52:18.839Z","0.7.1-next.39":"2022-08-15T16:01:04.124Z","0.7.1-next.40":"2022-08-18T01:03:04.792Z","0.7.1-next.43":"2022-08-21T00:15:48.604Z","0.7.1-unstable.43":"2022-08-22T17:32:00.574Z","0.7.1-unstable.44":"2022-08-23T15:39:01.100Z","0.7.1-unstable.45":"2022-08-23T16:58:50.559Z","0.7.1-next.54":"2022-08-25T11:56:43.121Z","0.7.1-next.66":"2022-09-02T22:38:10.036Z","0.7.1-next.68":"2022-09-02T23:52:51.037Z","0.8.0":"2022-09-03T00:09:07.359Z","0.8.1-next.2":"2022-09-03T00:56:49.281Z","0.8.1-next.3":"2022-09-03T01:09:44.561Z","0.8.1-unstable.4":"2022-09-15T09:00:31.561Z","0.8.1-unstable.5":"2022-09-15T09:17:23.270Z","0.8.1-next.6":"2022-09-15T09:31:53.102Z","0.8.1-unstable.9":"2022-09-17T23:56:58.810Z","0.8.1-unstable.11":"2022-09-19T14:02:01.089Z","0.8.1-next.12":"2022-09-19T15:11:27.254Z","0.8.1-next.18":"2022-09-22T15:12:22.577Z","0.8.1-next.20":"2022-09-22T21:44:49.101Z","0.8.1-unstable.24":"2022-09-29T21:06:41.065Z","0.8.1-unstable.25":"2022-10-04T20:18:09.958Z","0.8.1-next.26":"2022-10-04T20:50:01.659Z","0.8.1-unstable.27":"2022-10-12T10:50:53.875Z","0.8.1-unstable.29":"2022-10-13T07:11:51.225Z","0.8.1-unstable.28":"2022-10-13T07:13:11.043Z","0.8.1-unstable.30":"2022-10-13T07:17:36.134Z","0.8.1-next.31":"2022-10-13T07:51:26.831Z","0.8.1-next.42":"2022-10-18T11:11:35.807Z","0.8.1-next.50":"2022-10-18T11:12:58.147Z","0.8.1-unstable.50":"2022-10-26T00:44:21.035Z","0.8.1-unstable.53":"2022-10-26T23:14:35.153Z"},"maintainers":[{"name":"nklomp78","email":"dev@sphereon.com"},{"name":"nklomp","email":"nklomp@sphereon.com"},{"name":"spostma","email":"spostma@sphereon.com"},{"name":"bramtencate","email":"btencate@sphereon.com"}],"description":"Veramo ion-did based identity controller plugin.","homepage":"https://github.com/Sphereon-OpenSource/ssi-sdk#readme","keywords":[],"repository":{"type":"git","url":"git+ssh://git@github.com/Sphereon-OpenSource/ssi-sdk.git"},"author":{"name":"Sphereon","email":"dev@sphereon.com"},"bugs":{"url":"https://github.com/Sphereon-OpenSource/ssi-sdk/issues"},"license":"Apache-2.0","readme":"","readmeFilename":""}