Update ob30 samples
@ -66,7 +66,7 @@ public class EmbeddedProofProbe extends Probe<Credential> {
|
|||||||
if (didScheme.startsWith("key:")) {
|
if (didScheme.startsWith("key:")) {
|
||||||
publicKeyMultibase = didScheme.substring(4);
|
publicKeyMultibase = didScheme.substring(4);
|
||||||
} else {
|
} else {
|
||||||
return fatal("Unknown verification method: " + method.toString(), ctx);
|
return error("Unknown verification method: " + method.toString(), ctx);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
publicKeyMultibase = method.toString();
|
publicKeyMultibase = method.toString();
|
||||||
@ -74,9 +74,14 @@ public class EmbeddedProofProbe extends Probe<Credential> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Decode the Multibase to Multicodec and check that it is an Ed25519 public key
|
// Decode the Multibase to Multicodec and check that it is an Ed25519 public key
|
||||||
byte[] publicKeyMulticodec = Multibase.decode(publicKeyMultibase);
|
byte[] publicKeyMulticodec;
|
||||||
if (publicKeyMulticodec[0] != -19 || publicKeyMulticodec[1] != 1) {
|
try {
|
||||||
return fatal("Verification method does not contain an Ed25519 public key", ctx);
|
publicKeyMulticodec = Multibase.decode(publicKeyMultibase);
|
||||||
|
if (publicKeyMulticodec[0] != -19 || publicKeyMulticodec[1] != 1) {
|
||||||
|
return error("Verification method does not contain an Ed25519 public key", ctx);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
return error("Verification method is invalid: " + e.getMessage(), ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract the publicKey bytes from the Multicodec
|
// Extract the publicKey bytes from the Multicodec
|
||||||
@ -90,7 +95,10 @@ public class EmbeddedProofProbe extends Probe<Credential> {
|
|||||||
// if [publicKeyMultibase] -- don't check issuer ID. Maybe we should warn about this syntax.
|
// if [publicKeyMultibase] -- don't check issuer ID. Maybe we should warn about this syntax.
|
||||||
|
|
||||||
try {
|
try {
|
||||||
verifier.verify(vc);
|
boolean verify = verifier.verify(vc);
|
||||||
|
if (!verify) {
|
||||||
|
return error("Embedded proof verification failed.", ctx);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return fatal("Embedded proof verification failed:" + e.getMessage(), ctx);
|
return fatal("Embedded proof verification failed:" + e.getMessage(), ctx);
|
||||||
}
|
}
|
||||||
|
@ -89,10 +89,22 @@ public class OB30Tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testSimpleJsonInvalidProof() {
|
void testSimpleJsonInvalidProofMethod() {
|
||||||
//add some garbage chars to proofValue
|
//add some garbage chars to proofValue
|
||||||
assertDoesNotThrow(()->{
|
assertDoesNotThrow(()->{
|
||||||
Report report = validator.run(Samples.OB30.JSON.SIMPLE_JSON_PROOF_ERROR.asFileResource());
|
Report report = validator.run(Samples.OB30.JSON.SIMPLE_JSON_PROOF_METHOD_ERROR.asFileResource());
|
||||||
|
if(verbose) PrintHelper.print(report, true);
|
||||||
|
assertInvalid(report);
|
||||||
|
assertErrorCount(report, 1);
|
||||||
|
assertHasProbeID(report, EmbeddedProofProbe.ID, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSimpleJsonInvalidProofValue() {
|
||||||
|
//add some garbage chars to proofValue
|
||||||
|
assertDoesNotThrow(()->{
|
||||||
|
Report report = validator.run(Samples.OB30.JSON.SIMPLE_JSON_PROOF_VALUE_ERROR.asFileResource());
|
||||||
if(verbose) PrintHelper.print(report, true);
|
if(verbose) PrintHelper.print(report, true);
|
||||||
assertInvalid(report);
|
assertInvalid(report);
|
||||||
assertErrorCount(report, 1);
|
assertErrorCount(report, 1);
|
||||||
|
@ -13,7 +13,8 @@ public class Samples {
|
|||||||
public final static Sample SIMPLE_JSON = new Sample("ob30/simple.json", true);
|
public final static Sample SIMPLE_JSON = new Sample("ob30/simple.json", true);
|
||||||
public final static Sample SIMPLE_JSON_NOPROOF = new Sample("ob30/simple-noproof.json", false);
|
public final static Sample SIMPLE_JSON_NOPROOF = new Sample("ob30/simple-noproof.json", false);
|
||||||
public final static Sample SIMPLE_JSON_UNKNOWN_TYPE = new Sample("ob30/simple-err-type.json", false);
|
public final static Sample SIMPLE_JSON_UNKNOWN_TYPE = new Sample("ob30/simple-err-type.json", false);
|
||||||
public final static Sample SIMPLE_JSON_PROOF_ERROR = new Sample("ob30/simple-err-proof.json", false);
|
public final static Sample SIMPLE_JSON_PROOF_METHOD_ERROR = new Sample("ob30/simple-err-proof-method.json", false);
|
||||||
|
public final static Sample SIMPLE_JSON_PROOF_VALUE_ERROR = new Sample("ob30/simple-err-proof-value.json", false);
|
||||||
public final static Sample SIMPLE_JSON_EXPIRED = new Sample("ob30/simple-err-expired.json", false);
|
public final static Sample SIMPLE_JSON_EXPIRED = new Sample("ob30/simple-err-expired.json", false);
|
||||||
public final static Sample SIMPLE_JSON_ISSUED = new Sample("ob30/simple-err-issued.json", false);
|
public final static Sample SIMPLE_JSON_ISSUED = new Sample("ob30/simple-err-issued.json", false);
|
||||||
public final static Sample SIMPLE_JSON_ISSUER = new Sample("ob30/simple-err-issuer.json", false);
|
public final static Sample SIMPLE_JSON_ISSUER = new Sample("ob30/simple-err-issuer.json", false);
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"@context": [
|
||||||
|
"https://www.w3.org/2018/credentials/v1",
|
||||||
|
"https://purl.imsglobal.org/spec/ob/v3p0/context.json",
|
||||||
|
"https://purl.imsglobal.org/spec/ob/v3p0/extensions.json",
|
||||||
|
"https://w3id.org/security/suites/ed25519-2020/v1"
|
||||||
|
],
|
||||||
|
"id": "http://example.edu/credentials/3732",
|
||||||
|
"type": [
|
||||||
|
"VerifiableCredential",
|
||||||
|
"OpenBadgeCredential"
|
||||||
|
],
|
||||||
|
"issuer": {
|
||||||
|
"id": "https://example.edu/issuers/565049",
|
||||||
|
"type": [
|
||||||
|
"Profile"
|
||||||
|
],
|
||||||
|
"name": "Example University"
|
||||||
|
},
|
||||||
|
"issuanceDate": "2010-01-01T00:00:00Z",
|
||||||
|
"name": "Example University Degree",
|
||||||
|
"credentialSubject": {
|
||||||
|
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
||||||
|
"type": [
|
||||||
|
"AchievementSubject"
|
||||||
|
],
|
||||||
|
"achievement": {
|
||||||
|
"id": "https://example.com/achievements/21st-century-skills/teamwork",
|
||||||
|
"type": [
|
||||||
|
"Achievement"
|
||||||
|
],
|
||||||
|
"criteria": {
|
||||||
|
"narrative": "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management."
|
||||||
|
},
|
||||||
|
"description": "This badge recognizes the development of the capacity to collaborate within a group environment.",
|
||||||
|
"name": "Teamwork"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"credentialSchema": [
|
||||||
|
{
|
||||||
|
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json/ob_v3p0_achievementcredential_schema.json",
|
||||||
|
"type": "1EdTechJsonSchemaValidator2019"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"proof": [
|
||||||
|
{
|
||||||
|
"type": "Ed25519Signature2020",
|
||||||
|
"created": "2022-09-15T15:48:32Z",
|
||||||
|
"verificationMethod": "https://example.edu/issuers/565049#xxMkmY1R6tG2NEdRHzphdRT6JqxeYpHwLAHwbrDfQULpkMAj",
|
||||||
|
"proofPurpose": "assertionMethod",
|
||||||
|
"proofValue": "z3yUuWbFsLUp2CUrSZRaRbTk1UnkhpoJgJYu1SdMqd3AEMotpY41sKky7VzavnSfjApggtWJg1tcREvs5H4ZNnBRH"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"@context": [
|
||||||
|
"https://www.w3.org/2018/credentials/v1",
|
||||||
|
"https://purl.imsglobal.org/spec/ob/v3p0/context.json",
|
||||||
|
"https://purl.imsglobal.org/spec/ob/v3p0/extensions.json",
|
||||||
|
"https://w3id.org/security/suites/ed25519-2020/v1"
|
||||||
|
],
|
||||||
|
"id": "http://example.edu/credentials/3732",
|
||||||
|
"type": [
|
||||||
|
"VerifiableCredential",
|
||||||
|
"OpenBadgeCredential"
|
||||||
|
],
|
||||||
|
"issuer": {
|
||||||
|
"id": "https://example.edu/issuers/565049",
|
||||||
|
"type": [
|
||||||
|
"Profile"
|
||||||
|
],
|
||||||
|
"name": "Example University"
|
||||||
|
},
|
||||||
|
"issuanceDate": "2010-01-01T00:00:00Z",
|
||||||
|
"name": "Example University Degree",
|
||||||
|
"credentialSubject": {
|
||||||
|
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
||||||
|
"type": [
|
||||||
|
"AchievementSubject"
|
||||||
|
],
|
||||||
|
"achievement": {
|
||||||
|
"id": "https://example.com/achievements/21st-century-skills/teamwork",
|
||||||
|
"type": [
|
||||||
|
"Achievement"
|
||||||
|
],
|
||||||
|
"criteria": {
|
||||||
|
"narrative": "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management."
|
||||||
|
},
|
||||||
|
"description": "This badge recognizes the development of the capacity to collaborate within a group environment.",
|
||||||
|
"name": "Teamwork"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"credentialSchema": [
|
||||||
|
{
|
||||||
|
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json/ob_v3p0_achievementcredential_schema.json",
|
||||||
|
"type": "1EdTechJsonSchemaValidator2019"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"proof": [
|
||||||
|
{
|
||||||
|
"type": "Ed25519Signature2020",
|
||||||
|
"created": "2022-09-15T15:48:32Z",
|
||||||
|
"verificationMethod": "https://example.edu/issuers/565049#z6MkmY1R6tG2NEdRHzphdRT6JqxeYpHwLAHwbrDfQULpkMAj",
|
||||||
|
"proofPurpose": "assertionMethod",
|
||||||
|
"proofValue": "z3fQCWGpz7b1HSH6DTwYiH5vutqtpJb5SHiP1VFK22xeBEW2D61tC9j3SktwPLNxPnTNZnPt4GeAZJPdVYserRqs4"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"@context": [
|
|
||||||
"https://www.w3.org/2018/credentials/v1",
|
|
||||||
"https://imsglobal.github.io/openbadges-specification/context.json",
|
|
||||||
"https://w3id.org/security/suites/ed25519-2020/v1"
|
|
||||||
],
|
|
||||||
"id": "http://example.edu/credentials/3732",
|
|
||||||
"type": [
|
|
||||||
"VerifiableCredential",
|
|
||||||
"OpenBadgeCredential"
|
|
||||||
],
|
|
||||||
"issuer": {
|
|
||||||
"id": "https://example.edu/issuers/565049",
|
|
||||||
"type": [
|
|
||||||
"Profile"
|
|
||||||
],
|
|
||||||
"name": "Example University"
|
|
||||||
},
|
|
||||||
"issuanceDate": "2010-01-01T00:00:00Z",
|
|
||||||
"name": "Example University Degree",
|
|
||||||
"credentialSubject": {
|
|
||||||
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
|
||||||
"type": [
|
|
||||||
"AchievementSubject"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"proof": [
|
|
||||||
{
|
|
||||||
"type": "Ed25519Signature2020",
|
|
||||||
"created": "2022-06-28T16:28:36Z",
|
|
||||||
"verificationMethod": "did:key:z6MkkUD3J14nkYzn46QeuaVSnp7dF85QJKwKvJvfsjx79aXj",
|
|
||||||
"proofPurpose": "assertionMethod",
|
|
||||||
"proofValue": "XXXz3MUt2ZuU8Byqivxh6GphEM65AFYyNaGYibm97xLTafM7uGufZQLKvJR8itZwxKskvtFM3CUty46v26DZidMNoQnMXXX"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
@ -3,42 +3,60 @@
|
|||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:openbadges="https://purl.imsglobal.org/ob/v3p0" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:openbadges="https://purl.imsglobal.org/ob/v3p0" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||||
<openbadges:credential>
|
<openbadges:credential>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
{
|
{
|
||||||
"@context": [
|
"@context": [
|
||||||
"https://www.w3.org/2018/credentials/v1",
|
"https://www.w3.org/2018/credentials/v1",
|
||||||
"https://imsglobal.github.io/openbadges-specification/context.json",
|
"https://purl.imsglobal.org/spec/ob/v3p0/context.json",
|
||||||
"https://w3id.org/security/suites/ed25519-2020/v1"
|
"https://purl.imsglobal.org/spec/ob/v3p0/extensions.json",
|
||||||
],
|
"https://w3id.org/security/suites/ed25519-2020/v1"
|
||||||
"id": "http://example.edu/credentials/3732",
|
],
|
||||||
|
"id": "http://example.edu/credentials/3732",
|
||||||
|
"type": [
|
||||||
|
"VerifiableCredential",
|
||||||
|
"OpenBadgeCredential"
|
||||||
|
],
|
||||||
|
"issuer": {
|
||||||
|
"id": "https://example.edu/issuers/565049",
|
||||||
"type": [
|
"type": [
|
||||||
"VerifiableCredential",
|
"Profile"
|
||||||
"OpenBadgeCredential"
|
|
||||||
],
|
],
|
||||||
"issuer": {
|
"name": "Example University"
|
||||||
"id": "https://example.edu/issuers/565049",
|
},
|
||||||
|
"issuanceDate": "2010-01-01T00:00:00Z",
|
||||||
|
"name": "Example University Degree",
|
||||||
|
"credentialSubject": {
|
||||||
|
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
||||||
|
"type": [
|
||||||
|
"AchievementSubject"
|
||||||
|
],
|
||||||
|
"achievement": {
|
||||||
|
"id": "https://example.com/achievements/21st-century-skills/teamwork",
|
||||||
"type": [
|
"type": [
|
||||||
"Profile"
|
"Achievement"
|
||||||
],
|
],
|
||||||
"name": "Example University"
|
"criteria": {
|
||||||
},
|
"narrative": "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management."
|
||||||
"issuanceDate": "2010-01-01T00:00:00Z",
|
},
|
||||||
"name": "Example University Degree",
|
"description": "This badge recognizes the development of the capacity to collaborate within a group environment.",
|
||||||
"credentialSubject": {
|
"name": "Teamwork"
|
||||||
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
}
|
||||||
"type": [
|
},
|
||||||
"AchievementSubject"
|
"credentialSchema": [
|
||||||
]
|
{
|
||||||
},
|
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json/ob_v3p0_achievementcredential_schema.json",
|
||||||
"proof": [
|
"type": "1EdTechJsonSchemaValidator2019"
|
||||||
{
|
}
|
||||||
"type": "Ed25519Signature2020",
|
],
|
||||||
"created": "2022-06-28T16:28:36Z",
|
"proof": [
|
||||||
"verificationMethod": "did:key:z6MkkUD3J14nkYzn46QeuaVSnp7dF85QJKwKvJvfsjx79aXj",
|
{
|
||||||
"proofPurpose": "assertionMethod",
|
"type": "Ed25519Signature2020",
|
||||||
"proofValue": "z3MUt2ZuU8Byqivxh6GphEM65AFYyNaGYibm97xLTafM7uGufZQLKvJR8itZwxKskvtFM3CUty46v26DZidMNoQnM"
|
"created": "2022-09-15T15:48:32Z",
|
||||||
}
|
"verificationMethod": "https://example.edu/issuers/565049#z6MkmY1R6tG2NEdRHzphdRT6JqxeYpHwLAHwbrDfQULpkMAj",
|
||||||
]
|
"proofPurpose": "assertionMethod",
|
||||||
}
|
"proofValue": "z3yUuWbFsLUp2CUrSZRaRbTk1UnkhpoJgJYu1SdMqd3AEMotpY41sKky7VzavnSfjApggtWJg1tcREvs5H4ZNnBRH"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
]]>
|
]]>
|
||||||
</openbadges:credential>
|
</openbadges:credential>
|
||||||
<g>
|
<g>
|
||||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 83 KiB |
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:openbadges="https://purl.imsglobal.org/ob/v3p0" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:openbadges="https://purl.imsglobal.org/ob/v3p0" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||||
<openbadges:credential verify="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6IlJTQSIsIm4iOiJpMTljMlRlSWp5SjJCQWZ6cTdmYkdmMEl1RXJ6eGhzN0dnV0J2djZ6LXpqbDhCSjFDdDA1bmR4UzU0T2FHemZzY1JnckgxZnZqdnFZUi1tVlhFQXFRaFU2UG9LWlBuMGJoRUQ4Uk1lZlM0YTZfN2JnZVdpdTd3bmp0TzFlN2VYLXRxNUFwQzc4eGdGUW9Eemh1UXRqbDVHMjBJalRoR29sWGlwTEdLMmtoTjEyLUoxYVhCSUNaYVo5Q09UTk5zZDNSY1RXdGhBdDN6dDJLX09sSzUwV0VIYkV5Vk5qdlczcVZYQ1R5V0NXd1Y1WmN3dDFMX3AtV0VGU2lSRVgwb0lrNDZTYVo0bDk0c3N3WXk0STVveWtneVhpNUxYbEZjTVE0OVROZkpvUDYwRV92NDBGWnN2VTBjTHFmSkhOUThab0lHV2ZpcWRac2NkQ08ycXJLTUVybVEifX0.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vaW1zZ2xvYmFsLmdpdGh1Yi5pby9vcGVuYmFkZ2VzLXNwZWNpZmljYXRpb24vY29udGV4dC5qc29uIl0sImlkIjoiaHR0cDovL2V4YW1wbGUuZWR1L2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuZWR1L2lzc3VlcnMvNTY1MDQ5IiwidHlwZSI6WyJQcm9maWxlIl0sIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkifSwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IERlZ3JlZSIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXX19LCJpc3MiOiJodHRwczovL2V4YW1wbGUuZWR1L2lzc3VlcnMvNTY1MDQ5IiwibmJmIjoxMjYyMzA0MDAwLCJqdGkiOiJodHRwOi8vZXhhbXBsZS5lZHUvY3JlZGVudGlhbHMvMzczMiIsInN1YiI6ImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJ9.UGc9Ojaw9ivNBU6qOvn_V_yWeEEI1sUu3MBnULr0eVP0rqvslRzecdjKWy5ZcDv0SPk9ojGjzty7P1OKBRbBHAqH6Qh_vfRdjz3mXbVjwYU0tHPy7Tnqch3fQhZTCeJ6pEpfctRK6X4wwQrFEeAIAIuB-qOl7HVaWvzQeso4yYkg4sA7c9Xp0-1g2CzdL_VTQ8YoUp5KEn-cFAL3OvdQWl5flgBNOMsyxlhpqZ37BksSMFSUcoYDqTei8C6QG1124Hr2hcAtWMVq6zbWhhr23Gix6bkD8l1TMMQRKF1X1fIRlsdxQRlNWjBgTSKpM2uSmoL5PezDslF4K8r5_JD-7A"></openbadges:credential>
|
<openbadges:credential verify="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6IlJTQSIsIm4iOiI2dGM1dnJnQ2JzbGNrRzdPTTJoWkxJMnNxSHZabTdLS2FPTTItck1WczdyVjBRMEFiZk1ia1pXRzlfTENfM3RaelRld0tiblY1ZXZycFlVVGI4V09TVzk3dXNwZFFFMG5wR1pKdFdFWWgxaFJoM1hEVFBPVFRLa1ZwR2lJQWVocTdIRHJsYmxUZE41TUlqRWpPNnFhWTRhRzlIYXBMeXZHVUY2a2xGb2ctODZOWktOUXR0dVJvZWtlb3ZBdWhxZFhMd0RVZnJuOWlZTEowNmtWQkNKa1ZHdS1RYVlBbUFBcElfTFJGUWV4SF9BNXJQZnhZWEhReHctWmpBaVZNdkhwYmVtYkExWm9HUU5XOW92ZS1ZNWRQSm5CcWlDNEtSTzViMUctQU1KaVdHZDEwSFVkTEFDZ3FHX2FkWGktcmdHUFJINmpGRG9ZQzc2eDROQzBvVG9NS3cifX0.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vcHVybC5pbXNnbG9iYWwub3JnL3NwZWMvb2IvdjNwMC9jb250ZXh0Lmpzb24iLCJodHRwczovL3B1cmwuaW1zZ2xvYmFsLm9yZy9zcGVjL29iL3YzcDAvZXh0ZW5zaW9ucy5qc29uIl0sImlkIjoiaHR0cDovL2V4YW1wbGUuZWR1L2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuZWR1L2lzc3VlcnMvNTY1MDQ5IiwidHlwZSI6WyJQcm9maWxlIl0sIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkifSwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQwMDowMDowMFoiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IERlZ3JlZSIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXSwiYWNoaWV2ZW1lbnQiOnsiaWQiOiJodHRwczovL2V4YW1wbGUuY29tL2FjaGlldmVtZW50cy8yMXN0LWNlbnR1cnktc2tpbGxzL3RlYW13b3JrIiwidHlwZSI6WyJBY2hpZXZlbWVudCJdLCJjcml0ZXJpYSI6eyJuYXJyYXRpdmUiOiJUZWFtIG1lbWJlcnMgYXJlIG5vbWluYXRlZCBmb3IgdGhpcyBiYWRnZSBieSB0aGVpciBwZWVycyBhbmQgcmVjb2duaXplZCB1cG9uIHJldmlldyBieSBFeGFtcGxlIENvcnAgbWFuYWdlbWVudC4ifSwiZGVzY3JpcHRpb24iOiJUaGlzIGJhZGdlIHJlY29nbml6ZXMgdGhlIGRldmVsb3BtZW50IG9mIHRoZSBjYXBhY2l0eSB0byBjb2xsYWJvcmF0ZSB3aXRoaW4gYSBncm91cCBlbnZpcm9ubWVudC4iLCJuYW1lIjoiVGVhbXdvcmsifX0sImNyZWRlbnRpYWxTY2hlbWEiOlt7ImlkIjoiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9vYi92M3AwL3NjaGVtYS9qc29uL29iX3YzcDBfYWNoaWV2ZW1lbnRjcmVkZW50aWFsX3NjaGVtYS5qc29uIiwidHlwZSI6IjFFZFRlY2hKc29uU2NoZW1hVmFsaWRhdG9yMjAxOSJ9XX0sImlzcyI6Imh0dHBzOi8vZXhhbXBsZS5lZHUvaXNzdWVycy81NjUwNDkiLCJuYmYiOjEyNjIzMDQwMDAsImp0aSI6Imh0dHA6Ly9leGFtcGxlLmVkdS9jcmVkZW50aWFscy8zNzMyIiwic3ViIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIn0.ryVxvKHEQFu2b0Cu1L64A90ogiq4Ggkqv5i2ZN7phUt9AOlJfqKQIGrzl46CfmcaFqOBxwEJR_xtpaFRUrarwBnl81CSyHwVfSE1z9gQVLXgSRLNrh0UBMM53O4aVoJO-nYbr1f5YcS_d762o6TDlj9gAoCa3Y5j0vhwZPeRJD9cEONeYgpRhndYAD1SrFNvOopSQrY8l48p02oyYBdn1wSi0JOYAyn5MkvsfN6gL3P7GdOqoPYS-CoP3mtYrngUn9IwjpZUK7ZRnEzBgW_cvYwojZv5iYAtG56VN51JryxHeFL65rEchrCOnPNsQncx6M1UCx3RqOFgt_KE2pSKyw"></openbadges:credential>
|
||||||
<g>
|
<g>
|
||||||
<path fill="none" stroke="#040000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M500,928.8c0,0,0,40.8,245,40.8" />
|
<path fill="none" stroke="#040000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M500,928.8c0,0,0,40.8,245,40.8" />
|
||||||
<path fill="none" stroke="#040000" stroke-width="1.9215" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M500,928.8c0,0,40.8,0,285.8,0" />
|
<path fill="none" stroke="#040000" stroke-width="1.9215" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M500,928.8c0,0,40.8,0,285.8,0" />
|
||||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.6 KiB |
@ -2,6 +2,7 @@
|
|||||||
"@context": [
|
"@context": [
|
||||||
"https://www.w3.org/2018/credentials/v1",
|
"https://www.w3.org/2018/credentials/v1",
|
||||||
"https://purl.imsglobal.org/spec/ob/v3p0/context.json",
|
"https://purl.imsglobal.org/spec/ob/v3p0/context.json",
|
||||||
|
"https://purl.imsglobal.org/spec/ob/v3p0/extensions.json",
|
||||||
"https://w3id.org/security/suites/ed25519-2020/v1"
|
"https://w3id.org/security/suites/ed25519-2020/v1"
|
||||||
],
|
],
|
||||||
"id": "http://example.edu/credentials/3732",
|
"id": "http://example.edu/credentials/3732",
|
||||||
@ -22,15 +23,32 @@
|
|||||||
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
|
||||||
"type": [
|
"type": [
|
||||||
"AchievementSubject"
|
"AchievementSubject"
|
||||||
]
|
],
|
||||||
|
"achievement": {
|
||||||
|
"id": "https://example.com/achievements/21st-century-skills/teamwork",
|
||||||
|
"type": [
|
||||||
|
"Achievement"
|
||||||
|
],
|
||||||
|
"criteria": {
|
||||||
|
"narrative": "Team members are nominated for this badge by their peers and recognized upon review by Example Corp management."
|
||||||
|
},
|
||||||
|
"description": "This badge recognizes the development of the capacity to collaborate within a group environment.",
|
||||||
|
"name": "Teamwork"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
"credentialSchema": [
|
||||||
|
{
|
||||||
|
"id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json/ob_v3p0_achievementcredential_schema.json",
|
||||||
|
"type": "1EdTechJsonSchemaValidator2019"
|
||||||
|
}
|
||||||
|
],
|
||||||
"proof": [
|
"proof": [
|
||||||
{
|
{
|
||||||
"type": "Ed25519Signature2020",
|
"type": "Ed25519Signature2020",
|
||||||
"created": "2022-06-28T16:28:36Z",
|
"created": "2022-09-15T15:48:32Z",
|
||||||
"verificationMethod": "https://example.edu/issuers/565049#z6MkkUD3J14nkYzn46QeuaVSnp7dF85QJKwKvJvfsjx79aXj",
|
"verificationMethod": "https://example.edu/issuers/565049#z6MkmY1R6tG2NEdRHzphdRT6JqxeYpHwLAHwbrDfQULpkMAj",
|
||||||
"proofPurpose": "assertionMethod",
|
"proofPurpose": "assertionMethod",
|
||||||
"proofValue": "z3MUt2ZuU8Byqivxh6GphEM65AFYyNaGYibm97xLTafM7uGufZQLKvJR8itZwxKskvtFM3CUty46v26DZidMNoQnM"
|
"proofValue": "z3yUuWbFsLUp2CUrSZRaRbTk1UnkhpoJgJYu1SdMqd3AEMotpY41sKky7VzavnSfjApggtWJg1tcREvs5H4ZNnBRH"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|