{"_id":"@digitalbazaar/ecdsa-2019-cryptosuite","_rev":"2-dba30d77974e03341e3157dbf9eb040d","name":"@digitalbazaar/ecdsa-2019-cryptosuite","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@digitalbazaar/ecdsa-2019-cryptosuite","version":"1.0.0","license":"BSD-3-Clause","_id":"@digitalbazaar/ecdsa-2019-cryptosuite@1.0.0","maintainers":[{"name":"dlongley","email":"dlongley@digitalbazaar.com"},{"name":"msporny","email":"msporny@digitalbazaar.com"},{"name":"davidlehn","email":"dil@lehn.org"},{"name":"mattcollier","email":"mcollier@digitalbazaar.com"},{"name":"gannan","email":"gannan@digitalbazaar.com"}],"homepage":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite","bugs":{"url":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite/issues"},"c8":{"reporter":["lcov","text-summary","text"]},"dist":{"shasum":"8febd47a66f06f9246707fe08529c5726c2f21ca","tarball":"https://registry.npmjs.org/@digitalbazaar/ecdsa-2019-cryptosuite/-/ecdsa-2019-cryptosuite-1.0.0.tgz","fileCount":8,"integrity":"sha512-+oJQBOcNg96xv4NFNVi0BGIRzKpM8cskHQ3kXIe7inxd31GmbYE5telGUhjwJeoz9hDSkVLkKQU3PK1U0V+/kQ==","signatures":[{"sig":"MEUCIQCltmpxfHMoL3SglhcEpTkenm54TOM5CT0iG8yAy0iCegIgKW+LoPy/v2w4Vn7lIA5612N4B1Sfudq29bPv1xYXPMA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEJwZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4sQ//YOXfER7+bEd1DFHryys4UyNQtLRjLV+oSXrPmc5BU7xcAUxy\r\nv6CIH9oNBIn3tUGsKauHNwyrInDn1MMjCqWojvhC5n/BOntVuaDDPIIut28H\r\n2duSkLEPf/azAqxL27sTIhLOu+LYoh7xwSyE2+Gc8ymNUarIfupisnd6DVys\r\n4gHEKyIcS0BWzsL0ouPpLQimUSTpohH+gWU3Jr6/z55j4jueECI5WFA2T/ZE\r\nMYkajIZfoeeOYPb93VAJITMEdLHd/Qsfy/3j5DPShjgx53pSXvddrsgnZCGD\r\nmRKNBzgoivoE+SMTw9kbUQN/yRcmdfIVbNYokvePuguGqCmAnGSE85AgpcZK\r\nH1OXawg3QZpTgM2ZvQFKoQKhY56UMzo1TXnrvIRDvO02zcWYwbKIfkM8lmGs\r\n7zDc/fVvhxfZEuf2kERbaD2QViUYC3uUPX0FZLGAEIRl2n4wGv8gumQ1rK6c\r\n/bfPqv/YOUan+kYaMg07d8jbAc+4V3UFo4y0nToqwicHjRxj6jQJUsmBSw/M\r\nK/v6GMs0rzsj55mPZLjGg+42Q1JAEQ7p4FMXkWFwtI9DVPuNFHshC0DTkHYx\r\nthhvaM/ccQ+Eeb9KTIeIZopAnMzsms62GnOAkRqJll8uDG964QpKQF34vIPD\r\ng40QAsg7E4T4Z8le44SpS1eaH0cjexR/JQo=\r\n=4Mbz\r\n-----END PGP SIGNATURE-----\r\n"},"type":"module","engines":{"node":">=16"},"exports":"./lib/index.js","gitHead":"660b6a579508ae170e501e46fc9b8b4f20dcd20e","scripts":{"lint":"eslint .","test":"npm run test-node","coverage":"cross-env NODE_ENV=test c8 npm run test-node","test-node":"cross-env NODE_ENV=test mocha --preserve-symlinks -t 30000 -A -R ${REPORTER:-spec} --require test/test-mocha.js test/*.spec.js","test-karma":"karma start karma.conf.cjs","coverage-ci":"cross-env NODE_ENV=test c8 --reporter=lcovonly --reporter=text-summary --reporter=text npm run test-node","coverage-report":"c8 report"},"_npmUser":{"name":"dlongley","email":"dlongley@digitalbazaar.com"},"repository":{"url":"git+https://github.com/digitalbazaar/ecdsa-2019-cryptosuite.git","type":"git"},"_npmVersion":"8.11.0","description":"An ECDSA-2019 Data Integrity cryptosuite for use with jsonld-signatures.","directories":{},"_nodeVersion":"16.16.0","dependencies":{"jsonld":"^8.1.0","@digitalbazaar/ecdsa-multikey":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.11.3","chai":"^4.3.6","karma":"^6.3.20","mocha":"^10.0.0","eslint":"^8.17.0","webpack":"^5.73.0","cross-env":"^7.0.3","karma-chai":"^0.1.0","karma-mocha":"^2.0.1","karma-webpack":"^5.0.0","jsonld-signatures":"^11.0.0","eslint-plugin-jsdoc":"^39.3.2","mocha-lcov-reporter":"^1.3.0","karma-mocha-reporter":"^2.2.5","eslint-plugin-unicorn":"^43.0.2","karma-chrome-launcher":"^3.1.1","karma-sourcemap-loader":"^0.3.8","eslint-config-digitalbazaar":"^4.1.0","@digitalbazaar/data-integrity":"^1.0.0","@digitalbazaar/multikey-context":"^1.0.0","@digitalbazaar/data-integrity-context":"^1.0.0","@digitalbazaar/security-document-loader":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ecdsa-2019-cryptosuite_1.0.0_1678810137078_0.32709741697156347","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@digitalbazaar/ecdsa-2019-cryptosuite","version":"2.0.0","license":"BSD-3-Clause","_id":"@digitalbazaar/ecdsa-2019-cryptosuite@2.0.0","maintainers":[{"name":"dlongley","email":"dlongley@digitalbazaar.com"},{"name":"msporny","email":"msporny@digitalbazaar.com"},{"name":"davidlehn","email":"dil@lehn.org"},{"name":"mattcollier","email":"mcollier@digitalbazaar.com"},{"name":"gannan","email":"gannan@digitalbazaar.com"}],"homepage":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite","bugs":{"url":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite/issues"},"c8":{"reporter":["lcov","text-summary","text"]},"dist":{"shasum":"a0f330dca8750ab2435a77a0244310bf3876df5d","tarball":"https://registry.npmjs.org/@digitalbazaar/ecdsa-2019-cryptosuite/-/ecdsa-2019-cryptosuite-2.0.0.tgz","fileCount":8,"integrity":"sha512-XWyZGePASGJu2Md2jtRhSLDEeEc9MrmqGlATL1e/c9e+Xio/3WCo7X8ZL/2kZBLRpG6pf/1J0/3XnIr0lXXIJw==","signatures":[{"sig":"MEUCIQDjDcPXLMAb32P7itovFFnMm6xjS5fYz70EzPBrwAWEtgIgdeogXwtfjCyy3/p1r/RVe4iB9Z+XhL6Q09Yg6/2GFt8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9831},"type":"module","engines":{"node":">=16"},"exports":"./lib/index.js","gitHead":"5559960fbae9a5547f648b234e98d09d0f0bdbfb","scripts":{"lint":"eslint .","test":"npm run test-node","coverage":"cross-env NODE_ENV=test c8 npm run test-node","test-node":"cross-env NODE_ENV=test mocha --preserve-symlinks -t 30000 -A -R ${REPORTER:-spec} --require test/test-mocha.js test/*.spec.js","test-karma":"karma start karma.conf.cjs","coverage-ci":"cross-env NODE_ENV=test c8 --reporter=lcovonly --reporter=text-summary --reporter=text npm run test-node","coverage-report":"c8 report"},"_npmUser":{"name":"dlongley","email":"dlongley@digitalbazaar.com"},"repository":{"url":"git+https://github.com/digitalbazaar/ecdsa-2019-cryptosuite.git","type":"git"},"_npmVersion":"9.6.7","description":"An ECDSA-2019 Data Integrity cryptosuite for use with jsonld-signatures.","directories":{},"_nodeVersion":"20.3.1","dependencies":{"jsonld":"^8.1.0","@digitalbazaar/ecdsa-multikey":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^7.11.3","chai":"^4.3.6","karma":"^6.3.20","mocha":"^10.0.0","eslint":"^8.53.0","webpack":"^5.73.0","cross-env":"^7.0.3","karma-chai":"^0.1.0","karma-mocha":"^2.0.1","karma-webpack":"^5.0.0","jsonld-signatures":"^11.0.0","eslint-plugin-jsdoc":"^46.8.2","mocha-lcov-reporter":"^1.3.0","karma-mocha-reporter":"^2.2.5","eslint-plugin-unicorn":"^49.0.0","karma-chrome-launcher":"^3.1.1","karma-sourcemap-loader":"^0.3.8","eslint-config-digitalbazaar":"^5.0.1","@digitalbazaar/data-integrity":"^1.5.0","@digitalbazaar/multikey-context":"^1.0.0","@digitalbazaar/data-integrity-context":"^1.0.0","@digitalbazaar/security-document-loader":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ecdsa-2019-cryptosuite_2.0.0_1699286638870_0.1325135753743949","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-03-14T16:08:56.947Z","modified":"2025-02-14T21:39:54.167Z","1.0.0":"2023-03-14T16:08:57.288Z","2.0.0":"2023-11-06T16:03:59.006Z"},"bugs":{"url":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite/issues"},"license":"BSD-3-Clause","homepage":"https://github.com/digitalbazaar/ecdsa-2019-cryptosuite","repository":{"url":"git+https://github.com/digitalbazaar/ecdsa-2019-cryptosuite.git","type":"git"},"description":"An ECDSA-2019 Data Integrity cryptosuite for use with jsonld-signatures.","maintainers":[{"email":"dlongley@digitalbazaar.com","name":"dlongley"},{"email":"msporny@digitalbazaar.com","name":"msporny"},{"email":"dil@lehn.org","name":"davidlehn"},{"email":"gannan@digitalbazaar.com","name":"gannan"}],"readme":"# ECDSA 2019 Data Integrity Cryptosuite _(@digitalbazaar/ecdsa-2019-cryptosuite)_\n\n[![Build status](https://img.shields.io/github/workflow/status/digitalbazaar/ecdsa-2019-cryptosuite/Node.js%20CI)](https://github.com/digitalbazaar/ecdsa-2019-cryptosuite/actions?query=workflow%3A%22Node.js+CI%22)\n[![Coverage status](https://img.shields.io/codecov/c/github/digitalbazaar/ecdsa-2019-cryptosuite)](https://codecov.io/gh/digitalbazaar/ecdsa-2019-cryptosuite)\n[![NPM Version](https://img.shields.io/npm/v/@digitalbazaar/ecdsa-2019-cryptosuite.svg)](https://npm.im/@digitalbazaar/ecdsa-2019-cryptosuite)\n\n> ECDSA 2019 Data Integrity Cryptosuite for use with jsonld-signatures.\n\n## Table of Contents\n\n- [Background](#background)\n- [Security](#security)\n- [Install](#install)\n- [Usage](#usage)\n- [Contribute](#contribute)\n- [Commercial Support](#commercial-support)\n- [License](#license)\n\n## Background\n\nFor use with https://github.com/digitalbazaar/jsonld-signatures v11.0 and above.\n\nSee also related specs:\n\n* [Verifiable Credential Data Integrity](https://w3c.github.io/vc-data-integrity/)\n\n## Security\n\nTBD\n\n## Install\n\n- Browsers and Node.js 16+ are supported.\n\nTo install from NPM:\n\n```\nnpm install @digitalbazaar/ecdsa-2019-cryptosuite\n```\n\nTo install locally (for development):\n\n```\ngit clone https://github.com/digitalbazaar/ecdsa-2019-cryptosuite.git\ncd ecdsa-2019-cryptosuite\nnpm install\n```\n\n## Usage\n\nThe following code snippet provides a complete example of digitally signing\na verifiable credential using this library:\n\n```javascript\nimport * as EcdsaMultikey from '@digitalbazaar/ecdsa-multikey';\nimport {DataIntegrityProof} from '@digitalbazaar/data-integrity';\nimport {cryptosuite as ecdsa2019Cryptosuite} from\n  '@digitalbazaar/ecdsa-2019-cryptosuite';\nimport jsigs from 'jsonld-signatures';\nconst {purposes: {AssertionProofPurpose}} = jsigs;\n\n\n// create the unsigned credential\nconst unsignedCredential = {\n  '@context': [\n    'https://www.w3.org/2018/credentials/v1',\n    {\n      AlumniCredential: 'https://schema.org#AlumniCredential',\n      alumniOf: 'https://schema.org#alumniOf'\n    }\n  ],\n  id: 'http://example.edu/credentials/1872',\n  type: [ 'VerifiableCredential', 'AlumniCredential' ],\n  issuer: 'https://example.edu/issuers/565049',\n  issuanceDate: '2010-01-01T19:23:24Z',\n  credentialSubject: {\n    id: 'https://example.edu/students/alice',\n    alumniOf: 'Example University'\n  }\n};\n\n// create the keypair to use when signing\nconst controller = 'https://example.edu/issuers/565049';\nconst keyPair = await EcdsaMultikey.from({\n  '@context': 'https://w3id.org/security/multikey/v1',\n  id: 'https://example.edu/issuers/565049#zDnaekGZTbQBerwcehBSXLqAg6s55hVEBms1zFy89VHXtJSa9',\n  type: 'Multikey',\n  controller: 'https://example.edu/issuers/565049',\n  publicKeyMultibase: 'zDnaekGZTbQBerwcehBSXLqAg6s55hVEBms1zFy89VHXtJSa9',\n  secretKeyMultibase: 'z42tqZ5smVag3DtDhjY9YfVwTMyVHW6SCHJi2ZMrD23DGYS3'\n});\n\n// export public key and add to document loader\nconst publicKey = await keyPair.export({publicKey: true, includeContext: true});\naddDocumentToLoader({url: publicKey.id, document: publicKey});\n\n// create key's controller document\nconst controllerDoc = {\n  '@context': [\n    'https://www.w3.org/ns/did/v1',\n    'https://w3id.org/security/multikey/v1'\n  ],\n  id: controller,\n  assertionMethod: [publicKey]\n};\naddDocumentToLoader({url: controllerDoc.id, document: controllerDoc});\n\n// create suite\nconst suite = new DataIntegrityProof({\n  signer: keyPair.signer(), cryptosuite: ecdsa2019Cryptosuite\n});\n\n// create signed credential\nconst signedCredential = await jsigs.sign(unsignedCredential, {\n  suite,\n  purpose: new AssertionProofPurpose(),\n  documentLoader\n});\n\n// results in the following signed VC\n{\n  \"@context\": [\n    \"https://www.w3.org/2018/credentials/v1\",\n    {\n      \"AlumniCredential\": \"https://schema.org#AlumniCredential\",\n      \"alumniOf\": \"https://schema.org#alumniOf\"\n    },\n    \"https://w3id.org/security/data-integrity/v1\"\n  ],\n  \"id\": \"http://example.edu/credentials/1872\",\n  \"type\": [\n    \"VerifiableCredential\",\n    \"AlumniCredential\"\n  ],\n  \"issuer\": \"https://example.edu/issuers/565049\",\n  \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n  \"credentialSubject\": {\n    \"id\": \"https://example.edu/students/alice\",\n    \"alumniOf\": \"Example University\"\n  },\n  \"proof\": {\n    \"type\": \"DataIntegrityProof\",\n    \"created\": \"2023-03-01T21:29:24Z\",\n    \"verificationMethod\": \"https://example.edu/issuers/565049#zDnaekGZTbQBerwcehBSXLqAg6s55hVEBms1zFy89VHXtJSa9\",\n    \"cryptosuite\": \"ecdsa-2019\",\n    \"proofPurpose\": \"assertionMethod\",\n    \"proofValue\": \"z3MrzbvzXyBNDd9KNCJQHzHrct7LMi9Vs4TatKA81fjvVq3dbGsLE4VMyfNnx42Bdoq1ALHAXbB2fDtmioNagHbcZ\"\n  }\n}\n```\n\n## Contribute\n\nSee [the contribute file](https://github.com/digitalbazaar/bedrock/blob/master/CONTRIBUTING.md)!\n\nPRs accepted.\n\nIf editing the Readme, please conform to the\n[standard-readme](https://github.com/RichardLitt/standard-readme) specification.\n\n## Commercial Support\n\nCommercial support for this library is available upon request from\nDigital Bazaar: support@digitalbazaar.com\n\n## License\n\n[New BSD License (3-clause)](LICENSE) © 2022 Digital Bazaar\n","readmeFilename":"README.md"}