From f8790712b2b2f622ef68707f2ff3b70d77322ac4 Mon Sep 17 00:00:00 2001
From: Manu Sporny Design Goals and Rationale
converted to a
JSON document that follows the relevant normative requirements in
-Sections [[[#proofs]]], [[[#proof-purposes]]], [[[#contexts-and-vocabularies]]],
-and [[[#dataintegrityproof]]].
+Sections [[[#proofs]]], [[[#proof-purposes]]], [[[#resource-integrity]]],
+[[[#contexts-and-vocabularies]]], and [[[#dataintegrityproof]]].
@@ -1040,7 +1040,7 @@
-The information contained in an unsecured document before a +The information contained in an input document before a [=data integrity proof=] is added to the document is expressed in one or more graphs. To ensure that information from different [=data integrity proofs=] is not accidentally co-mingled, the concept of a [=proof graph=] is used to encapsulate @@ -1744,8 +1744,8 @@
The algorithms defined below operate on documents represented as JSON objects. This specification follows the -[[[JSON-LD11-API]]] specification in representing a JSON object as an -[[[Infra]]] [=map=]. An unsecured data document is an -[[[Infra]]] [=map=] that has not yet had the current proof added to it, but it -MAY contain a proof value that was added to it by a previous process. A secured data document is a [=map=] that has had the current -proof(s) added to it. +[[[JSON-LD11-API]]] specification in representing a JSON object as an [=map=]. +An unsecured data document is a [=map=] that contains +no proof values. An input document is an [=map=] that has not yet had +the current proof added to it, but it MAY contain a proof value that was added +to it by a previous process. A secured data document +is a [=map=] that contains one or more proof value, one of which might be the +current proof(s) being generated to be added to it.
@@ -1964,19 +1965,19 @@
-The following algorithm specifies how a digital proof can be added to an -[=unsecured data document=], and can then be used to verify the output -document's authenticity and integrity. Required inputs are an unsecured data -document ([=map=] |unsecuredDocument|), a [=cryptosuite instance=] -([=struct=] |cryptosuite|), and a set of options ([=map=] |options|). Output is -a [=secured data document=] ([=map=]) or an error. Whenever this algorithm -encodes strings, it MUST use UTF-8 encoding. +The following algorithm specifies how a digital proof can be added to an [=input +document=], and can then be used to verify the output document's authenticity +and integrity. Required inputs are an [=input document=] ([=map=] +|inputDocument|), a [=cryptosuite instance=] ([=struct=] |cryptosuite|), and a +set of options ([=map=] |options|). Output is a [=secured data document=] +([=map=]) or an error. Whenever this algorithm encodes strings, it MUST use +UTF-8 encoding.
This step is critical, as it binds
the previous proofs to the document
prior to signing. The |proof| value for the document will be updated
@@ -2061,7 +2062,7 @@
When constructing a [=proof set=] where each of the signatories signs an -|unsecuredDataDocument| without concern, we construct a proof symbolically as: +|inputDocument| without concern, we construct a proof symbolically as:
{ @@ -3357,13 +3358,13 @@Understanding Proof Sets and Proof Chains
"created": "2023-03-05T19:23:24Z", "proofPurpose": "assertionMethod", "verificationMethod":publicCEO
, - "proofValue": signature(secretCEO
,unsecuredDataDocument
) + "proofValue": signature(secretCEO
,inputDocument
) }
Where publicCEO is used as a placeholder for a reference that resolves to the CEO's public key and signature(`secretKey`, -`unsecuredDataDocument`) denotes the computation of a digital signature +`inputDocument`) denotes the computation of a digital signature by a particular data integrity cryptosuite using a particular secret key over a particular document. The `type`, `cryptosuite`, `created`, and `proofPurpose` attributes do not factor into our discussion so we will omit them. In @@ -3375,13 +3376,13 @@
publicVPE
,
- "proofValue": signature(secretVPE
, unsecuredDataDocument
)
+ "proofValue": signature(secretVPE
, inputDocument
)
}, {
"verificationMethod": publicCFO
,
- "proofValue": signature(secretCFO
, unsecuredDataDocument
)
+ "proofValue": signature(secretCFO
, inputDocument
)
}, {
"verificationMethod": publicCEO
,
- "proofValue": signature(secretCEO
, unsecuredDataDocument
)
+ "proofValue": signature(secretCEO
, inputDocument
)
}]
}
@@ -3402,10 +3403,10 @@ publicCFO
,
- "proofValue": signature(secretCFO
, unsecuredDataDocument
)
+ "proofValue": signature(secretCFO
, inputDocument
)
}, {
"verificationMethod": publicCEO
,
- "proofValue": signature(secretCEO
, unsecuredDataDocument
)
+ "proofValue": signature(secretCEO
, inputDocument
)
}]
}
@@ -3425,7 +3426,7 @@ @@ -3434,7 +3435,7 @@@@ -3454,12 +3455,12 @@Understanding Proof Sets and Proof Chains
"proof": { "id": "urn:proof-1", "verificationMethod":publicVPE
, - "proofValue": signature(secretVPE
,unsecuredDataDocument
) + "proofValue": signature(secretVPE
,inputDocument
) } }
publicVPE
,
- "proofValue": signature(secretVPE
, unsecuredDataDocument
)
+ "proofValue": signature(secretVPE
, inputDocument
)
}, {
"id": "urn:proof-2",
"verificationMethod": publicCFO
,
"previousProof": "urn:proof-1",
- "proofValue": signature(secretCFO
, unsecuredDataDocumentWithProof1
)
+ "proofValue": signature(secretCFO
, inputDocumentWithProof1
)
}]
}
@@ -3485,17 +3486,17 @@ publicVPE
,
- "proofValue": signature(secretVPE
, unsecuredDataDocument
)
+ "proofValue": signature(secretVPE
, inputDocument
)
}, {
"id": "urn:proof-2",
"verificationMethod": publicCFO
,
"previousProof": "urn:proof-1",
- "proofValue": signature(secretCFO
, unsecuredDataDocumentWithProof1
)
+ "proofValue": signature(secretCFO
, inputDocumentWithProof1
)
}, {
"id": "urn:proof-3",
"verificationMethod": publicCEO
,
"previousProof": "urn:proof-2",
- "proofValue": signature(secretCEO
, unsecuredDataDocumentWithProof2
)
+ "proofValue": signature(secretCEO
, inputDocumentWithProof2
)
}]
}