Skip to content

Commit 23a9be4

Browse files
committed
Adjust headings
1 parent d2a46dd commit 23a9be4

7 files changed

Lines changed: 119 additions & 119 deletions

File tree

ob_v3p0/microsites/v3p0.md

Lines changed: 64 additions & 64 deletions
Large diffs are not rendered by default.

ob_v3p0/microsites/v3p0/spec/docformat.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ description: "Document formats for Open Badges 3.0 credentials"
1515
- The [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) MUST be serialized as JSON and JSON-LD (see [[[#serialization]]])
1616
- JSON exchanged between systems that are not part of a closed ecosystem MUST be encoded using UTF-8 [[RFC3629]].
1717

18-
## Example: Sample OpenBadgeCredential file contents
18+
### Example: Sample OpenBadgeCredential file contents
1919

2020
```obv3p0 org.1edtech.ob.v3p0.achievementcredential.class preventAdditionalProperties=true
2121
{
@@ -53,33 +53,33 @@ description: "Document formats for Open Badges 3.0 credentials"
5353
}
5454
```
5555

56-
## File Format
56+
### File Format
5757

5858
If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) the contents of the file MUST be the [=Compact JWS=] string formed as a result of signing the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) with VC-JWT. The file extension SHOULD be ".jws" or ".jwt".
5959

6060
If an embedded proof method is used instead, the contents of the file MUST be the JSON representation of the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class). The file extension SHOULD be ".json".
6161

62-
## Web Resource
62+
### Web Resource
6363

6464
If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) the contents of the response MUST be the [=Compact JWS=] string formed as a result of signing the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) with VC-JWT. The `Content-Type` SHOULD be `text/plain`.
6565

6666
If an embedded proof method is used instead, the contents of the response MUST be the JSON representation of the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class). The `Content-Type` SHOULD be `application/vc+ld+json`, although generic representations such `application/ld+json` or `application/json` are also allowed.
6767

68-
## Baked Badge
68+
### Baked Badge
6969

7070
OpenBadgeCredentials may be exchanged as image files with the credential encoded (baked) within. This allows the credential to be portable wherever image files may be stored or displayed.
7171

7272
"Baking" is the process of taking an [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) and embedding it into the image, so that when a user displays the image on a page, software that is Open Badges aware can automatically extract that OpenBadgeCredential data and perform the checks necessary to see if a person legitimately earned the achievement within the image. The image MUST be in either PNG [[PNG]] or SVG [[SVG11]] format in order to support baking.
7373

74-
### PNG
74+
#### PNG
7575

76-
#### Baking {#png-baking}
76+
##### Baking {#png-baking}
7777

7878
An [`iTXt`](http://www.w3.org/TR/PNG/#11iTXt) chunk should be inserted into the PNG with **keyword** `openbadgecredential`.
7979

8080
If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) the text value of the chunk MUST be the [=Compact JWS=] string formed as a result of signing the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) with VC-JWT. Compression MUST NOT be used.
8181

82-
##### Example: An example of creating a chunk with VC-JWT proof (assuming an iTXt constructor)
82+
###### Example: An example of creating a chunk with VC-JWT proof (assuming an iTXt constructor)
8383

8484
```js
8585
var chunk = new iTXt({
@@ -94,7 +94,7 @@ If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) the text value o
9494

9595
If an embedded proof method is used instead, the text value of the chunk MUST be the JSON representation of the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class). Compression MUST NOT be used.
9696

97-
##### Example: An example of creating a chunk with embedded proof (assuming an iTXt constructor)
97+
###### Example: An example of creating a chunk with embedded proof (assuming an iTXt constructor)
9898

9999
```js
100100
var chunk = new iTXt({
@@ -126,19 +126,19 @@ If an embedded proof method is used instead, the text value of the chunk MUST be
126126

127127
An iTXt chunk with the keyword `openbadgecredential` MUST NOT appear in a PNG more than once. When baking an image that already contains credential data, the implementer may choose whether to pass the user an error or overwrite the existing chunk.
128128

129-
#### Extracting {#png-extracting}
129+
##### Extracting {#png-extracting}
130130

131131
Parse the PNG datastream until the first [`iTXt`](http://www.w3.org/TR/PNG/#11iTXt) chunk is found with the keyword `openbadgecredential`. The rest of the stream can be safely discarded. The text portion of the iTXt will either be the JSON representation of a [[[#achievement-credential]]] or the [=Compact JWS=] string that was the result of signing the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) with [[[#jwt-proof]]].
132132

133-
### SVG
133+
#### SVG
134134

135-
#### Baking {#svg-baking}
135+
##### Baking {#svg-baking}
136136

137137
First, add an `xmlns:openbadges` attribute to the `<svg>` tag with the value "https://purl.imsglobal.org/ob/v3p0". Directly after the `<svg>` tag, add an `<openbadges:credential>` tag.
138138

139139
If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) add a `verify` attribute to the `<openbadges:credential>` tag. The value of `verify` attribute MUST be the [=Compact JWS=] string formed as a result of signing the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) with VC-JWT.
140140

141-
##### Example: An example of a well baked SVG with VC-JWT proof
141+
###### Example: An example of a well baked SVG with VC-JWT proof
142142

143143
```xml
144144
<?xml version="1.0" encoding="UTF-8"?>
@@ -153,7 +153,7 @@ If the credential is signed using the [[[#jwt-proof]]] (VC-JWT) add a `verify` a
153153

154154
If an embedded proof method is used instead, omit the `verify` attribute, and the JSON representation of the [OpenBadgeCredential](#org.1edtech.ob.v3p0.achievementcredential.class) MUST go into the body of the tag, wrapped in `<![CDATA[...]]>`.
155155

156-
##### Example: An example of a well baked SVG with embedded proof
156+
###### Example: An example of a well baked SVG with embedded proof
157157

158158
```xml
159159
<?xml version="1.0" encoding="UTF-8"?>
@@ -189,6 +189,6 @@ If an embedded proof method is used instead, omit the `verify` attribute, and th
189189

190190
There MUST be only one `<openbadges:credential>` tag in an SVG. When baking an image that already contains OpenBadgeCredential data, the implementer may choose whether to pass the user an error or overwrite the existing tag.
191191

192-
#### Extracting
192+
##### Extracting
193193

194194
Parse the SVG until you reach the first `<openbadges:credential>` tag. The rest of the SVG data can safely be discarded.

ob_v3p0/microsites/v3p0/spec/equality-and-comparison.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ A Host SHOULD treat a credential as the same as another when both the [issuer](#
1515

1616
If the two credentials are equal according to the above, then the credential with the newer `validFrom` is the more up-to-date representation and could be interpreted as a replacement of the prior issued credential.
1717

18-
## Examples
18+
### Examples
1919

20-
### Equality
20+
#### Equality
2121

2222
Credentials [A](#example-sample-credential-a) and [B](#example-sample-credential-b) are equal since they have the same [`id`](#achievement-credential) and the same [`issuer.id`](#org.1edtech.ob.v3p0.profile.class).
2323

24-
#### Example: Sample credential A
24+
##### Example: Sample credential A
2525

2626
```json org.1edtech.ob.v3p0.achievementcredential.class
2727
{
@@ -57,7 +57,7 @@ Credentials [A](#example-sample-credential-a) and [B](#example-sample-credential
5757
}
5858
```
5959

60-
#### Example: Sample credential B
60+
##### Example: Sample credential B
6161

6262
```json org.1edtech.ob.v3p0.achievementcredential.class
6363
{
@@ -95,11 +95,11 @@ Credentials [A](#example-sample-credential-a) and [B](#example-sample-credential
9595

9696
Since they also have the same `validFrom` both are up-to-date.
9797

98-
### Comparison
98+
#### Comparison
9999

100100
Credentials [C](#example-sample-credential-c) and [D](#example-sample-credential-d) are equal since they have the same [`id`](#achievement-credential) and the same [`issuer.id`](#org.1edtech.ob.v3p0.profile.class).
101101

102-
#### Example: Sample credential C
102+
##### Example: Sample credential C
103103

104104
```json org.1edtech.ob.v3p0.achievementcredential.class
105105
{
@@ -135,7 +135,7 @@ Credentials [C](#example-sample-credential-c) and [D](#example-sample-credential
135135
}
136136
```
137137

138-
#### Example: Sample credential D
138+
##### Example: Sample credential D
139139

140140
```json org.1edtech.ob.v3p0.achievementcredential.class
141141
{

ob_v3p0/microsites/v3p0/spec/gettingstarted.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ description: "Getting started with the Open Badges 3.0 specification"
99

1010
## Getting Started
1111

12-
## Implementation Guide
12+
### Implementation Guide
1313

1414
The [[OB-IMPL-30]] contains non-normative information on how to implement OB 3.0 and [[CLR-20]].
1515

16-
## Conformance and Certification
16+
### Conformance and Certification
1717

1818
[[OB-CERT-30]] - Specifies the conformance tests and certification requirements for this specification.

ob_v3p0/microsites/v3p0/spec/integrity.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ description: "Data integrity proofs and signatures for Open Badges 3.0"
1111

1212
This section describes mechanisms for ensuring the authenticity and integrity of OpenBadgeCredentials. At least one proof mechanism, and the details necessary to evaluate that proof, MUST be expressed for a [=credential=] to be a [=verifiable credential=]; that is, to be [=verifiable=]. In order to pass 1EdTech conformance tests, issuers MUST use a proof mechanism supported by the 1EdTech conformance test suite. See more about [Selecting proof methods and crypto algorithms](impl#selecting-proof-methods-and-crypto-algorithms) in the Implementation Guide.
1313

14-
## Proof Formats
14+
### Proof Formats
1515

1616
The proof formats included in this specification fall into two categories:
1717

@@ -22,14 +22,14 @@ The proof formats included in this specification fall into two categories:
2222
2323
A third category of proof format called Non-Signature Proof is not covered by this specification. This category includes proofs such as proof of work.
2424

25-
## JSON Web Token Proof Format {#jwt-proof}
25+
### JSON Web Token Proof Format {#jwt-proof}
2626

2727
This proof format relies on the well established JWT (JSON Web Token) [[RFC7519]] and JWS (JSON Web Signature) [[RFC7515]] specifications. A JSON Web Token Proof is a JWT signed and encoded as a [=Compact JWS=] string. The proof format is described in detail in [[VC-JOSE-COSE]], referred from Section 5.13 "Securing Mechanism Specifications" of [[VC-DATA-MODEL-2.0]]. That description allows several options which may inhibit interoperability. This specification limits the options while maintaining compatibility with [[VC-DATA-MODEL-2.0]] to help ensure interoperability.
2828

2929
> **Note**: At the time of the completion of this specification, the JSON Web Token Proof Format of [[VC-DATA-MODEL-2.0]] was undergoing a revision process. [[VC-JOSE-COSE]] will collect and display
3030
> the result of this revision. The modifications resulting from the incompatibility of the revision with what is contained in this document will be added in future revisions.
3131
32-
### Terminology {#jwt-terminology}
32+
#### Terminology {#jwt-terminology}
3333

3434
Some of the terms used in this section include:
3535

@@ -45,7 +45,7 @@ JWK
4545
Compact JWS
4646
: "A compact representation of a JWS." [[RFC7515]]
4747

48-
### Overview {#jwt-overview}
48+
#### Overview {#jwt-overview}
4949

5050
A [=JWS=] is a signed [=JWT=] with three parts separated by period (".") characters. Each part contains a base64url-encoded value.
5151

@@ -69,7 +69,7 @@ The resulting [=JWS=] proves that the [=issuer=] signed the [=JWT Payload=] turn
6969

7070
When using the JSON Web Token Proof Format, the `proof` property MAY be omitted from the [OpenBadgeCredential](#achievement-credential). If a Linked Data Proof is also provided, it MUST be created before the JSON Web Token Proof Format is created.
7171

72-
### Create the JOSE Header {#joseheader}
72+
#### Create the JOSE Header {#joseheader}
7373

7474
The [=JOSE Header=] is a JSON object with the following properties (also called JOSE Headers). Additional JOSE Headers are NOT allowed.
7575

@@ -80,7 +80,7 @@ The [=JOSE Header=] is a JSON object with the following properties (also called
8080
| `jwk` | [JWK](#jwk) | A JWK representing the public key used to verify the signature. If you do not include a `jwk` property in the header, you MUST include the `kid` property. <div class="advisement">Be careful not to accidentally expose the JWK representation of a private key. See [RFC7517](https://tools.ietf.org/html/rfc7517#appendix-A.2) for examples of private key representations. The `JWK` MUST never contain `"d"`.</div> | Optional |
8181
| `typ` | [String](#string) | If present, MUST be set to "JWT". | Optional |
8282

83-
#### Example: Sample JOSE Header with reference to a public key in a JWKS
83+
##### Example: Sample JOSE Header with reference to a public key in a JWKS
8484

8585
```json
8686
{
@@ -90,11 +90,11 @@ The [=JOSE Header=] is a JSON object with the following properties (also called
9090
}
9191
```
9292

93-
### Create the JWT Payload
93+
#### Create the JWT Payload
9494

9595
If you are going to use both external and embedded proof formats, add the embedded proofs prior to creating the JWT Payload.
9696

97-
#### JWT Payload Format
97+
##### JWT Payload Format
9898

9999
The JWT Payload is the JSON object of the [OpenBadgeCredential](#achievement-credential) with the following properties (JWT Claims). Additional standard JWT Claims Names are allowed, but their relationship to the credential is not defined.
100100

@@ -106,7 +106,7 @@ The JWT Payload is the JSON object of the [OpenBadgeCredential](#achievement-cre
106106
| `nbf` | [NumericDate](#numericdate) | The `validFrom` property of the OpenBadgeCredential. | Required |
107107
| `sub` | [URI](#uri) | The `credentialSubject.id` property of the OpenBadgeCredential. | Required |
108108

109-
### Create the Proof {#jwt-signing}
109+
#### Create the Proof {#jwt-signing}
110110

111111
> **Note**: 1EdTech strongly recommends using an existing, stable library for this step.
112112
@@ -131,7 +131,7 @@ The steps to sign and encode the credential as a Compact JWS are shown below:
131131

132132
The resulting string is the Compact JWS representation of the credential. The Compact JWS includes the credential AND acts as the proof for the credential.
133133

134-
### Verify a Credential {#jwt-verify}
134+
#### Verify a Credential {#jwt-verify}
135135

136136
Verifiers that receive a OpenBadgeCredential in Compact JWS format MUST perform the following steps to verify the embedded credential.
137137

@@ -149,7 +149,7 @@ Verifiers that receive a OpenBadgeCredential in Compact JWS format MUST perform
149149
> contents of the `vc` claim must be converted to an <a href="#achievement-credential">OpenBadgeCredential</a>
150150
> and continue with [[[#jwt-verify-credential]]].
151151
152-
#### Verify a Credential VC-JWT Signature {#jwt-verify-credential}
152+
##### Verify a Credential VC-JWT Signature {#jwt-verify-credential}
153153

154154
- The JSON object MUST have the `iss` claim, and the value MUST match the `issuer.id` of the [OpenBadgeCredential](#achievement-credential) object. If they do not match, the credential is not valid.
155155
- The JSON object MUST have the `sub` claim, and the value MUST match the `credentialSubject.id` of the [OpenBadgeCredential](#achievement-credential) object. If they do not match, the credential is not valid.
@@ -159,28 +159,28 @@ Verifiers that receive a OpenBadgeCredential in Compact JWS format MUST perform
159159

160160
> **Note**: Credentials created following [[VC-DATA-MODEL-1.1]] have different names for attributes used in this process. Concretely, they have `issuanceDate` and `expirationDate` instead of `validFrom` and `validUntil`, respectively
161161
162-
## Linked Data Proof Format {#lds-proof}
162+
### Linked Data Proof Format {#lds-proof}
163163

164164
This standard supports the Linked Data Proof format. In order to pass conformance tests for this format issuers MUST use an option supported by the 1EdTech conformance test suite, which is currently limited to the [[VC-DI-EDDSA]] suite.
165165

166166
> **Note**: Whenever possible, you should use a library or service to create and verify a Linked Data Proof.
167167
168-
### Create the Proof
168+
#### Create the Proof
169169

170170
Attach a Linked Data Proof to the credential, for example by following these steps to use a proof with the [[VC-DI-EDDSA]] suite:
171171

172172
1. Create an instance of [Multikey](#multikey) as shown in [Section 2.1.1 DataIntegrityProof](https://www.w3.org/TR/vc-di-eddsa/#multikey) of [[VC-DI-EDDSA]].
173173
1. Using the key material, sign the credential object as shown in [Section 7.1 Proof Algorithm](https://w3c-ccg.github.io/data-integrity-spec/#proof-algorithm) of [[DATA-INTEGRITY-SPEC]] to produce a [Proof](#proof) as shown in [Section 2.2.1 DataIntegrityProof](https://www.w3.org/TR/vc-di-eddsa/#dataintegrityproof) of [[VC-DI-EDDSA]] with a `proofPurpose` of "assertionMethod".
174174
1. Add the resulting proof object to the credential `proof` property.
175175

176-
### Verify an OpenBadgeCredential Linked Data Signature {#lds-verify}
176+
#### Verify an OpenBadgeCredential Linked Data Signature {#lds-verify}
177177

178178
Verify the Linked Data Proof signature as shown in [Section 7.2 Proof Verification Algorithm](https://w3c-ccg.github.io/data-integrity-spec/#proof-verification-algorithm) of [[DATA-INTEGRITY-SPEC]].
179179

180-
## Key Management
180+
### Key Management
181181

182182
[=Issuers=] will need to manage asymmetric keys. The mechanisms by which keys are minted and distributed is outside the scope of this specification. See Section 6. Key Management of the [[SEC-11]].
183183

184-
## Dereferencing the Public Key {#dereference}
184+
### Dereferencing the Public Key {#dereference}
185185

186186
All the proof formats in this specification, and all Digital Integrity proofs in general, require the [=verifier=] to "dereference" the public key from a URI. Dereferencing means using the URI to get the public key in [JWK](#jwk) format. This specification allows the use of an HTTP URL (e.g. `https://1edtech.org/keys/1`) or a DID URL (e.g. `did:key:123`), but only requires HTTP URL support.

0 commit comments

Comments
 (0)