Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
e427341
Add credentials v2 context to deps.
aljones15 Jun 29, 2023
8b80e8c
Add credentials v2 context to doc loader and check for it.
aljones15 Jul 3, 2023
5b8c7cd
Add credentials context V2 to test contexts.
aljones15 Jul 3, 2023
cc6c1a8
Add invalid and valid contexts to test suite & add ed25519 context to…
aljones15 Jul 3, 2023
f671efb
Make VC v2 context default.
aljones15 Jul 4, 2023
a8f7f7f
Add issuanceDate to v1 VCs, validate issuanceDate v1, remove issuance…
aljones15 Jul 5, 2023
b2f342d
Add contexts, testLoader, & documentLoader to separate files.
aljones15 Jul 6, 2023
fbc31f5
Add v1 and v2 mock credential.
aljones15 Jul 6, 2023
3eeb1c6
Start moving test data to use both v1 and v2 credentials.
aljones15 Jul 10, 2023
7076220
Use v1 context for now > issuanceDate test.
aljones15 Jul 10, 2023
225c406
Use private variable to avoid confusion with exported contexts.
aljones15 Jul 13, 2023
a17b982
Reject is credentialSubject is empty.
aljones15 Jul 25, 2023
29d25af
Add guards against non-object and null.
aljones15 Jul 25, 2023
a879f57
Add multiple credentialSubject tests.
aljones15 Jul 25, 2023
aac7a85
Clarify logic around isObject & throw if subject not object.
aljones15 Jul 31, 2023
73572ff
Add check for objects that must have a type.
aljones15 Jul 31, 2023
ab1e3a8
Use double-quotes for properties in error messages.
aljones15 Jul 31, 2023
2e0bbee
Add @private to private methods.
aljones15 Jul 31, 2023
1949157
Add MAJOR CHANGELOG entry for vc 2.0 upgrade.
aljones15 Jul 31, 2023
dce3244
Clean up: move Data Integrity & Multikey contexts to loader helper file.
aljones15 Nov 21, 2023
6600c4c
Tests run on both v1 and v2 VCs.
aljones15 Nov 21, 2023
524cc91
Run all tests not just one failing one.
aljones15 Nov 21, 2023
f90d0fc
Adjust mandatoryPointers for v1 and v2 VCs.
aljones15 Nov 21, 2023
dfb2fb4
Correct typo in main test title.
aljones15 Nov 22, 2023
12d273a
Use jsonld.clone for consistency and to prevent test data mutation.
aljones15 Nov 22, 2023
44dd86f
Set presentation context to v1 if vcs contains a v1 context.
aljones15 Nov 23, 2023
c383d61
Pluralize VCs in test title to match spec.
aljones15 Nov 23, 2023
634b63b
Add version parameter to createPresentation.
aljones15 Nov 24, 2023
53cf03c
Use version number for key in credentials map & remove old cred mocks.
aljones15 Nov 24, 2023
763d64c
Update lib/index.js unused remove jsdoc comment.
aljones15 Dec 6, 2023
d651266
Update lib/helpers.js correct spelling in jsdoc comment.
aljones15 Dec 6, 2023
eac3e3e
Update lib/helpers.js jsdoc return to be more verbose.
aljones15 Dec 6, 2023
1ebc0e5
Update lib/index.js remove out of place jsdoc comment.
aljones15 Dec 6, 2023
92a9c4a
Update test/10-verify.spec.js remove blank line.
aljones15 Dec 6, 2023
d3fe024
Update test/10-verify.spec.js remove blank line.
aljones15 Dec 6, 2023
014f9d8
Update test/10-verify.spec.js remove blank line.
aljones15 Dec 6, 2023
f4fd22c
Update CHANGELOG.md use both Added and Changed in CHANGELOG for vc 2.…
aljones15 Dec 6, 2023
df26f76
Update lib/index.js improve jsdoc language for id is a url.
aljones15 Dec 6, 2023
2e1eb91
Update test/10-verify.spec.js consistency with spaces line 147.
aljones15 Dec 6, 2023
932c574
Update test/10-verify.spec.js remove extra blank line like 163.
aljones15 Dec 6, 2023
4128185
Move ContextOrderError inside of context check.
aljones15 Dec 6, 2023
858ae84
Improve language of CHANGELOG with full name for VC/VPs.
aljones15 Dec 7, 2023
6b2aced
Pluralize exports from credentials contexts v1-2.
aljones15 Dec 7, 2023
32b3f41
Pluralize credentialsContext in lib.
aljones15 Dec 7, 2023
45d68d3
Lint test contexts and add copyright.
aljones15 Dec 7, 2023
d0f5014
Use klona for test data & move klona to mock file.
aljones15 Dec 7, 2023
12698d1
Use klona over jsonld.clone in all test data.
aljones15 Dec 7, 2023
da8f656
Add V2 Examples Context.
aljones15 Feb 5, 2024
1bdb976
Move BBS tests over to use mockCredential.
aljones15 Apr 19, 2024
ec926eb
Add issuance test for vc with no id.
aljones15 Apr 25, 2024
a861268
Add test for VPs with mixed context VCs.
aljones15 Dec 8, 2023
96b79c0
Only test mixed VCs with VP 2.0 & improve VP test titles.
aljones15 Feb 5, 2024
bcbd675
Add initial validUntil and validFrom tests.
aljones15 Nov 24, 2023
715c787
Clarify and expand VC 2.0 validUntil & validFrom tests.
aljones15 Nov 24, 2023
cad4c60
Move 2 validFrom & 2 validUntil issuer tests to issuer section.
aljones15 Nov 27, 2023
9ffa126
Add suite & documentLoader & await issue.
aljones15 Nov 27, 2023
26ebfe1
Move issue both validFrom and validUntil to issue section of test suite.
aljones15 Nov 27, 2023
f62980e
Add checkContextVersion & replace hasV1CredentialContext.
aljones15 Nov 27, 2023
eee544c
Move dateRegex to helpers & add assertion for date times.
aljones15 Nov 27, 2023
5027caa
Fix faulty assertion in vc 2.0 time sensitive test.
aljones15 Nov 28, 2023
0f66e78
Fix test data for expired validUntil.
aljones15 Nov 28, 2023
8b0938e
Correct assertions on now between validFrom & validUntil.
aljones15 Nov 28, 2023
31288f2
Ensure validUntil in past issuer test is in the past.
aljones15 Nov 28, 2023
6e2f236
Rename verify validUntil & validAfter & add more tests for both state…
aljones15 Nov 28, 2023
ac266e5
Add CHANGELOG entry for validUntil & validAfter.
aljones15 Nov 28, 2023
bc4aa3f
Strengthen test assertions on validUntil & validAfter.
aljones15 Nov 28, 2023
4d491b0
Update test/10-verify.spec.js remove empty line.
aljones15 Nov 30, 2023
5aeae8e
Correct test titles for validFrom past & validUntil future.
aljones15 Nov 30, 2023
93eb217
Correct assertion on validUntil in the future.
aljones15 Nov 30, 2023
1f3d21a
Use xml schema datetime validator.
aljones15 Dec 1, 2023
2865337
Change test title to XML Schema Dates.
aljones15 Dec 1, 2023
2ca7db5
Expand dateTime tests for RegExp.
aljones15 Dec 1, 2023
1f6d2c1
Add 4 more XML DateTime tests.
aljones15 Dec 1, 2023
2bf64b4
Expand xml schema datetime tests w/ max and min day tests.
aljones15 Dec 1, 2023
fe48c33
Should accept 24:00 as an hour.
aljones15 Dec 1, 2023
bc6fb2d
Remove reference to a specific date time format.
aljones15 Dec 1, 2023
c79f502
Add more Datetime tests.
aljones15 Dec 1, 2023
7021caa
Add test for validFrom & validUntil same time.
aljones15 Dec 1, 2023
3e0243a
Make validFrom = validUntil = now test assertion more exact.
aljones15 Dec 1, 2023
cc6a524
Add empty string test for DateRegex.
aljones15 Dec 4, 2023
81f24be
Update test/20-dateRegex.spec.js correct false negative with correct …
aljones15 Dec 4, 2023
7e391bd
Update test/10-verify.spec.js add is to test title.
aljones15 Dec 4, 2023
275bff1
Update lib/helpers.js correct grammar in test title.
aljones15 Dec 4, 2023
d99e0c8
Make test fail description for validFrom consistent with others.
aljones15 Dec 4, 2023
965f27a
Use dynamic dates for issue tests.
aljones15 Dec 4, 2023
170a10a
Use live dates to better integration test expiration logic.
aljones15 Dec 4, 2023
5c37688
Use full ISOString for dynamic dates.
aljones15 Dec 4, 2023
a5e0f42
Drop the from validBefore and validAfter error messages.
aljones15 Dec 4, 2023
0145936
Assert on error messages for validUntil and validBefore.
aljones15 Dec 4, 2023
1e78e22
Date checks return datetime verbatim & use seconds in test data.
aljones15 Dec 4, 2023
304a4e5
Use mockCredential() in validFrom & validUntil same time test.
aljones15 Dec 8, 2023
37b8f50
Move expirationDate test to v1 tests & use mockCredential in all tests.
aljones15 Dec 8, 2023
0541875
Add issuanceDate format check under issuanceDate existence check in V…
aljones15 Dec 8, 2023
d537b0a
Check validUntil & validFrom format on issue.
aljones15 Dec 8, 2023
0cb9ef1
Update lib/index.js clarify jsdoc comments about issuanceDate.
aljones15 Jan 2, 2024
d3b5192
Update test/10-verify.spec.js remove extra blank line.
aljones15 Jan 2, 2024
8a27874
Update test/helpers.js use substring & template string for date time …
aljones15 Jan 2, 2024
99ce9c4
Remove extra semicolon from inline github code edit.
aljones15 Jan 2, 2024
e8f9ee4
Update credentialStatus checks.
davidlehn Dec 20, 2023
c5cbb8b
Fix credentialStatus id test typos.
davidlehn Jan 11, 2024
4cb4be3
Update test/10-verify.spec.js remove ref to validAfter in jsdoc comment.
aljones15 Jan 13, 2024
c38c608
Update CHANGELOG.md remove validAfter from CHANGELOG.
aljones15 Jan 13, 2024
c22021f
Import mock.data in verify & export credentials from mock.data.
aljones15 Apr 29, 2024
7ff844b
Style nit: ensure credentials includes version.
aljones15 Jul 4, 2024
1e10280
Add Credentials Contet V2 URL to test constants.
aljones15 Jul 4, 2024
617b9bd
Make more explicit context url version used in mock data.
aljones15 Jul 4, 2024
203d698
Remove unusued CREDENTIALS_CONTEXT_URL from test constants.
aljones15 Jul 4, 2024
bb8657f
Update context usage.
davidlehn Jul 31, 2024
26eedff
Remove unused import.
davidlehn Jul 31, 2024
464c051
Update changelog.
davidlehn Jul 31, 2024
90df214
Use context package `named` Map for context URLs.
davidlehn Aug 1, 2024
5bb3e76
Update dev dependencies.
davidlehn Aug 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# @digitalbazaar/vc ChangeLog

## 7.0.0 -

### Added
- Add support for VC 2.0 Verifiable Credentials issuance and verification.
- Add support for VC 2.0 Verifiable Presentations issuance and verification.
- Add support for VC 2.0 `validFrom` and `validUntil`.
- Add Test vectors for VC 2.0 VCs & VPs.

### Changed
- **BREAKING**: Default issuance now uses VC 2.0 context.
- **BREAKING**: DateTime validator is now an xml schema DateTime validator.
- Switch from `credentials-context` to `@digitalbazaar/credentials-context` for
v1 and v2 contexts.
- Simplify context packages usage by using exported `contexts` directly.
- Improve credentials context mapping to and from versions.

## 6.3.0 - 2024-05-17

### Added
Expand Down
14 changes: 6 additions & 8 deletions lib/contexts/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
/*!
* Copyright (c) 2019-2023 Digital Bazaar, Inc. All rights reserved.
* Copyright (c) 2019-2024 Digital Bazaar, Inc. All rights reserved.
*/
import {
contexts as credentialContexts
} from 'credentials-context';
contexts as credentialsContexts
} from '@digitalbazaar/credentials-context';

export const contexts = new Map();

for(const [url, context] of credentialContexts.entries()) {
contexts.set(url, context);
}
export const contexts = new Map([
...credentialsContexts
]);
103 changes: 103 additions & 0 deletions lib/helpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
/*!
* Copyright (c) 2023 Digital Bazaar, Inc. All rights reserved.
*/
import {named as vcNamedContexts} from '@digitalbazaar/credentials-context';

// Z and T must be uppercase
// xml schema date time RegExp
// @see https://www.w3.org/TR/xmlschema11-2/#dateTime
export const dateRegex = new RegExp(
'-?([1-9][0-9]{3,}|0[0-9]{3})' +
'-(0[1-9]|1[0-2])' +
'-(0[1-9]|[12][0-9]|3[01])' +
'T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))' +
'(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?');

const CREDENTIALS_CONTEXT_V1_URL = vcNamedContexts.get('v1').id;
const CREDENTIALS_CONTEXT_V2_URL = vcNamedContexts.get('v2').id;

// mappings between credentials contexts and version numbers
const credentialsContextUrlToVersion = new Map([
[CREDENTIALS_CONTEXT_V1_URL, 1.0],
[CREDENTIALS_CONTEXT_V2_URL, 2.0]
]);
const credentialsVersionToContextUrl = new Map([
[1.0, CREDENTIALS_CONTEXT_V1_URL],
[2.0, CREDENTIALS_CONTEXT_V2_URL]
]);

/**
* Asserts that a context array's first item is a credentials context.
*
* @param {object} options - Options.
* @param {Array} options.context - An array of contexts.
*
* @throws {Error} - Throws if the first context
* is not a credentials context.
*
* @returns {undefined}
*/
export function assertCredentialContext({context}) {
// ensure first context is credentials context url
if(!credentialsContextUrlToVersion.has(context[0])) {
// throw if the first context is not a credentials context
throw new Error(
`"${CREDENTIALS_CONTEXT_V1_URL}" or "${CREDENTIALS_CONTEXT_V2_URL}"` +
' needs to be first in the list of contexts.');
}
}

/**
* Throws if a Date is not in the correct format.
*
* @param {object} options - Options.
* @param {object} options.credential - A VC.
* @param {string} options.prop - A prop in the object.
*
* @throws {Error} Throws if the date is not a proper date string.
* @returns {undefined}
*/
export function assertDateString({credential, prop}) {
const value = credential[prop];
if(!dateRegex.test(value)) {
throw new Error(`"${prop}" must be a valid date: ${value}`);
}
}

/**
* Turns the first context in a VC into a numbered version.
*
* @param {object} options - Options.
* @param {object} options.credential - A VC.
*
* @returns {number} A number representing the version.
*/
function getContextVersion({credential} = {}) {
const firstContext = credential?.['@context']?.[0];
return credentialsContextUrlToVersion.get(firstContext);
}

/**
* Turns the first context in a VC into a numbered version.
*
* @param {object} options - Options.
* @param {number} options.version - A credentials context version.
*
* @returns {number} A number representing the version.
*/
export function getContextForVersion({version}) {
return credentialsVersionToContextUrl.get(version);
}

/**
* Checks if a VC is using a specific context version.
*
* @param {object} options - Options.
* @param {object} options.credential - A VC.
* @param {number} options.version - A VC Context version
*
* @returns {boolean} If the first context matches the version.
*/
export function checkContextVersion({credential, version}) {
return getContextVersion({credential}) === version;
}
Loading