@noeos/verification-engine 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/LICENSE +201 -0
- package/NOTICE +11 -0
- package/README.md +7 -0
- package/dist/cjs/api/engine.js +271 -0
- package/dist/cjs/api/types.js +10 -0
- package/dist/cjs/chains/chain-builder.js +541 -0
- package/dist/cjs/chains/duplicate-detector.js +208 -0
- package/dist/cjs/chains/verify-chain.js +656 -0
- package/dist/cjs/contracts/generated.js +512 -0
- package/dist/cjs/contracts/schema-assets.js +6 -0
- package/dist/cjs/contracts/vector-assets.js +6 -0
- package/dist/cjs/domain/algorithm-id.js +5 -0
- package/dist/cjs/domain/byte-view.js +7 -0
- package/dist/cjs/domain/chain.js +3 -0
- package/dist/cjs/domain/diagnostic.js +6 -0
- package/dist/cjs/domain/digest.js +37 -0
- package/dist/cjs/domain/duplicate-policy.js +3 -0
- package/dist/cjs/domain/evidence.js +10 -0
- package/dist/cjs/domain/identifiers.js +52 -0
- package/dist/cjs/domain/json-value.js +3 -0
- package/dist/cjs/domain/limits.js +24 -0
- package/dist/cjs/domain/operation-result.js +19 -0
- package/dist/cjs/domain/position.js +16 -0
- package/dist/cjs/domain/protocol-version.js +5 -0
- package/dist/cjs/domain/rule.js +3 -0
- package/dist/cjs/domain/stream.js +3 -0
- package/dist/cjs/domain/version.js +16 -0
- package/dist/cjs/evidence/digest-evidence.js +22 -0
- package/dist/cjs/evidence/evidence-parser.js +288 -0
- package/dist/cjs/framing/frame-builders.js +124 -0
- package/dist/cjs/framing/frame-encoder.js +238 -0
- package/dist/cjs/framing/frame-parser.js +173 -0
- package/dist/cjs/framing/frame-types.js +3 -0
- package/dist/cjs/hashing/hash-adapter.js +90 -0
- package/dist/cjs/hashing/hash-frame.js +16 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/normalization/byte-sink.js +70 -0
- package/dist/cjs/normalization/jcs-profile.js +154 -0
- package/dist/cjs/normalization/normalize.js +56 -0
- package/dist/cjs/normalization/profile-registry.js +66 -0
- package/dist/cjs/normalization/profile.js +3 -0
- package/dist/cjs/normalization/raw-bytes-profile.js +27 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/profiles.js +9 -0
- package/dist/cjs/records/record-service.js +278 -0
- package/dist/cjs/rules/rule-set.js +211 -0
- package/dist/cjs/schemas.js +6 -0
- package/dist/cjs/validation/algorithm-validation.js +12 -0
- package/dist/cjs/validation/diagnostic-collector.js +159 -0
- package/dist/cjs/validation/digest-validation.js +48 -0
- package/dist/cjs/validation/identifier-validation.js +33 -0
- package/dist/cjs/validation/json-text-parser.js +297 -0
- package/dist/cjs/validation/json-value-validation.js +155 -0
- package/dist/cjs/validation/limit-validation.js +75 -0
- package/dist/cjs/validation/object-inspection.js +60 -0
- package/dist/cjs/validation/position-validation.js +13 -0
- package/dist/cjs/validation/result-helpers.js +9 -0
- package/dist/cjs/validation/utf8-validation.js +69 -0
- package/dist/cjs/validation/version-validation.js +31 -0
- package/dist/cjs/vectors.js +6 -0
- package/dist/esm/api/engine.js +266 -0
- package/dist/esm/api/types.js +4 -0
- package/dist/esm/chains/chain-builder.js +536 -0
- package/dist/esm/chains/duplicate-detector.js +204 -0
- package/dist/esm/chains/verify-chain.js +652 -0
- package/dist/esm/contracts/generated.js +509 -0
- package/dist/esm/contracts/schema-assets.js +2 -0
- package/dist/esm/contracts/vector-assets.js +2 -0
- package/dist/esm/domain/algorithm-id.js +2 -0
- package/dist/esm/domain/byte-view.js +4 -0
- package/dist/esm/domain/chain.js +2 -0
- package/dist/esm/domain/diagnostic.js +3 -0
- package/dist/esm/domain/digest.js +32 -0
- package/dist/esm/domain/duplicate-policy.js +2 -0
- package/dist/esm/domain/evidence.js +7 -0
- package/dist/esm/domain/identifiers.js +45 -0
- package/dist/esm/domain/json-value.js +2 -0
- package/dist/esm/domain/limits.js +21 -0
- package/dist/esm/domain/operation-result.js +15 -0
- package/dist/esm/domain/position.js +12 -0
- package/dist/esm/domain/protocol-version.js +2 -0
- package/dist/esm/domain/rule.js +2 -0
- package/dist/esm/domain/stream.js +2 -0
- package/dist/esm/domain/version.js +12 -0
- package/dist/esm/evidence/digest-evidence.js +19 -0
- package/dist/esm/evidence/evidence-parser.js +281 -0
- package/dist/esm/framing/frame-builders.js +114 -0
- package/dist/esm/framing/frame-encoder.js +234 -0
- package/dist/esm/framing/frame-parser.js +170 -0
- package/dist/esm/framing/frame-types.js +2 -0
- package/dist/esm/hashing/hash-adapter.js +84 -0
- package/dist/esm/hashing/hash-frame.js +12 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/normalization/byte-sink.js +66 -0
- package/dist/esm/normalization/jcs-profile.js +151 -0
- package/dist/esm/normalization/normalize.js +52 -0
- package/dist/esm/normalization/profile-registry.js +62 -0
- package/dist/esm/normalization/profile.js +2 -0
- package/dist/esm/normalization/raw-bytes-profile.js +24 -0
- package/dist/esm/profiles.js +6 -0
- package/dist/esm/records/record-service.js +270 -0
- package/dist/esm/rules/rule-set.js +206 -0
- package/dist/esm/schemas.js +2 -0
- package/dist/esm/validation/algorithm-validation.js +9 -0
- package/dist/esm/validation/diagnostic-collector.js +154 -0
- package/dist/esm/validation/digest-validation.js +43 -0
- package/dist/esm/validation/identifier-validation.js +27 -0
- package/dist/esm/validation/json-text-parser.js +294 -0
- package/dist/esm/validation/json-value-validation.js +152 -0
- package/dist/esm/validation/limit-validation.js +71 -0
- package/dist/esm/validation/object-inspection.js +54 -0
- package/dist/esm/validation/position-validation.js +10 -0
- package/dist/esm/validation/result-helpers.js +6 -0
- package/dist/esm/validation/utf8-validation.js +63 -0
- package/dist/esm/validation/version-validation.js +26 -0
- package/dist/esm/vectors.js +2 -0
- package/dist/types/api/engine.d.ts +8 -0
- package/dist/types/api/types.d.ts +124 -0
- package/dist/types/chains/chain-builder.d.ts +42 -0
- package/dist/types/chains/duplicate-detector.d.ts +18 -0
- package/dist/types/chains/verify-chain.d.ts +9 -0
- package/dist/types/contracts/generated.d.ts +442 -0
- package/dist/types/contracts/schema-assets.d.ts +2 -0
- package/dist/types/contracts/vector-assets.d.ts +2 -0
- package/dist/types/domain/algorithm-id.d.ts +4 -0
- package/dist/types/domain/byte-view.d.ts +1 -0
- package/dist/types/domain/chain.d.ts +43 -0
- package/dist/types/domain/diagnostic.d.ts +23 -0
- package/dist/types/domain/digest.d.ts +12 -0
- package/dist/types/domain/duplicate-policy.d.ts +26 -0
- package/dist/types/domain/evidence.d.ts +100 -0
- package/dist/types/domain/identifiers.d.ts +29 -0
- package/dist/types/domain/json-value.d.ts +6 -0
- package/dist/types/domain/limits.d.ts +13 -0
- package/dist/types/domain/operation-result.d.ts +12 -0
- package/dist/types/domain/position.d.ts +8 -0
- package/dist/types/domain/protocol-version.d.ts +2 -0
- package/dist/types/domain/rule.d.ts +34 -0
- package/dist/types/domain/stream.d.ts +5 -0
- package/dist/types/domain/version.d.ts +8 -0
- package/dist/types/evidence/digest-evidence.d.ts +4 -0
- package/dist/types/evidence/evidence-parser.d.ts +8 -0
- package/dist/types/framing/frame-builders.d.ts +40 -0
- package/dist/types/framing/frame-encoder.d.ts +6 -0
- package/dist/types/framing/frame-parser.d.ts +4 -0
- package/dist/types/framing/frame-types.d.ts +27 -0
- package/dist/types/hashing/hash-adapter.d.ts +12 -0
- package/dist/types/hashing/hash-frame.d.ts +6 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/normalization/byte-sink.d.ts +19 -0
- package/dist/types/normalization/jcs-profile.d.ts +3 -0
- package/dist/types/normalization/normalize.d.ts +11 -0
- package/dist/types/normalization/profile-registry.d.ts +26 -0
- package/dist/types/normalization/profile.d.ts +22 -0
- package/dist/types/normalization/raw-bytes-profile.d.ts +2 -0
- package/dist/types/profiles.d.ts +8 -0
- package/dist/types/records/record-service.d.ts +38 -0
- package/dist/types/rules/rule-set.d.ts +13 -0
- package/dist/types/schemas.d.ts +2 -0
- package/dist/types/validation/algorithm-validation.d.ts +3 -0
- package/dist/types/validation/diagnostic-collector.d.ts +24 -0
- package/dist/types/validation/digest-validation.d.ts +6 -0
- package/dist/types/validation/identifier-validation.d.ts +6 -0
- package/dist/types/validation/json-text-parser.d.ts +4 -0
- package/dist/types/validation/json-value-validation.d.ts +4 -0
- package/dist/types/validation/limit-validation.d.ts +4 -0
- package/dist/types/validation/object-inspection.d.ts +11 -0
- package/dist/types/validation/position-validation.d.ts +3 -0
- package/dist/types/validation/result-helpers.d.ts +3 -0
- package/dist/types/validation/utf8-validation.d.ts +5 -0
- package/dist/types/validation/version-validation.d.ts +9 -0
- package/dist/types/vectors.d.ts +2 -0
- package/package.json +61 -0
- package/schemas/chain-summary.v1.schema.json +156 -0
- package/schemas/diagnostic.v1.schema.json +107 -0
- package/schemas/link-evidence.v1.schema.json +165 -0
- package/schemas/record-evidence.v1.schema.json +91 -0
- package/schemas/vector-set.v1.schema.json +52 -0
- package/vectors/evidence.json +26 -0
- package/vectors/framing.json +136 -0
- package/vectors/hashing.json +58 -0
- package/vectors/invalid.json +56 -0
- package/vectors/manifest.json +46 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:noeos:verification-engine:record-evidence:1",
|
|
4
|
+
"title": "Noeos Verification Engine Record Evidence v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"$schema",
|
|
9
|
+
"protocolVersion",
|
|
10
|
+
"contextId",
|
|
11
|
+
"recordId",
|
|
12
|
+
"profile",
|
|
13
|
+
"algorithm",
|
|
14
|
+
"normalizedByteLength",
|
|
15
|
+
"contentDigest",
|
|
16
|
+
"recordDigest"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"$schema": { "const": "urn:noeos:verification-engine:record-evidence:1" },
|
|
20
|
+
"protocolVersion": { "const": 1 },
|
|
21
|
+
"contextId": { "$ref": "#/$defs/identifier" },
|
|
22
|
+
"recordId": { "$ref": "#/$defs/identifier" },
|
|
23
|
+
"profile": { "$ref": "#/$defs/profile" },
|
|
24
|
+
"algorithm": { "$ref": "#/$defs/algorithm" },
|
|
25
|
+
"normalizedByteLength": { "$ref": "#/$defs/safeInteger" },
|
|
26
|
+
"contentDigest": { "$ref": "#/$defs/digest" },
|
|
27
|
+
"recordDigest": { "$ref": "#/$defs/digest" }
|
|
28
|
+
},
|
|
29
|
+
"allOf": [{ "$ref": "#/$defs/digestLengths" }],
|
|
30
|
+
"$defs": {
|
|
31
|
+
"identifier": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$",
|
|
34
|
+
"maxLength": 128
|
|
35
|
+
},
|
|
36
|
+
"profile": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"required": ["id", "version"],
|
|
40
|
+
"properties": {
|
|
41
|
+
"id": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$",
|
|
44
|
+
"maxLength": 128
|
|
45
|
+
},
|
|
46
|
+
"version": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$",
|
|
49
|
+
"maxLength": 256
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"algorithm": { "enum": ["sha-256", "sha-384", "sha-512"] },
|
|
54
|
+
"safeInteger": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
|
|
55
|
+
"digest": { "type": "string", "pattern": "^[0-9a-f]+$", "maxLength": 128 },
|
|
56
|
+
"digestLengths": {
|
|
57
|
+
"allOf": [
|
|
58
|
+
{
|
|
59
|
+
"if": { "type": "object", "properties": { "algorithm": { "const": "sha-256" } } },
|
|
60
|
+
"then": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"properties": {
|
|
63
|
+
"contentDigest": { "type": "string", "minLength": 64, "maxLength": 64 },
|
|
64
|
+
"recordDigest": { "type": "string", "minLength": 64, "maxLength": 64 }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"if": { "type": "object", "properties": { "algorithm": { "const": "sha-384" } } },
|
|
70
|
+
"then": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"properties": {
|
|
73
|
+
"contentDigest": { "type": "string", "minLength": 96, "maxLength": 96 },
|
|
74
|
+
"recordDigest": { "type": "string", "minLength": 96, "maxLength": 96 }
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"if": { "type": "object", "properties": { "algorithm": { "const": "sha-512" } } },
|
|
80
|
+
"then": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"properties": {
|
|
83
|
+
"contentDigest": { "type": "string", "minLength": 128, "maxLength": 128 },
|
|
84
|
+
"recordDigest": { "type": "string", "minLength": 128, "maxLength": 128 }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:noeos:verification-engine:vector-set:1",
|
|
4
|
+
"title": "Noeos Verification Engine Vector Set v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["$schema", "version", "protocolVersion", "license", "files", "sources"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": { "const": "urn:noeos:verification-engine:vector-set:1" },
|
|
10
|
+
"version": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
|
|
13
|
+
},
|
|
14
|
+
"protocolVersion": { "const": 1 },
|
|
15
|
+
"license": { "const": "Apache-2.0" },
|
|
16
|
+
"files": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"minItems": 1,
|
|
19
|
+
"uniqueItems": true,
|
|
20
|
+
"items": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": false,
|
|
23
|
+
"required": ["path", "category", "caseCount", "sha256"],
|
|
24
|
+
"properties": {
|
|
25
|
+
"path": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"pattern": "^[a-z0-9][a-z0-9./-]*\\.json$",
|
|
28
|
+
"maxLength": 256
|
|
29
|
+
},
|
|
30
|
+
"category": { "enum": ["hashing", "framing", "evidence", "invalid"] },
|
|
31
|
+
"caseCount": { "type": "integer", "minimum": 1, "maximum": 100000 },
|
|
32
|
+
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"sources": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"minItems": 1,
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["id", "url", "license"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9._:-]{1,128}$" },
|
|
45
|
+
"url": { "type": "string", "pattern": "^https://[^\\s]{1,2040}$", "maxLength": 2048 },
|
|
46
|
+
"license": { "type": "string", "maxLength": 128 },
|
|
47
|
+
"revision": { "type": "string", "maxLength": 128 }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{
|
|
4
|
+
"id": "EVIDENCE-CHAIN-SUMMARY-EMPTY-SHA256",
|
|
5
|
+
"kind": "evidence",
|
|
6
|
+
"requirement": "CON-006",
|
|
7
|
+
"source": "Noeos-VE-Protocol-1",
|
|
8
|
+
"algorithm": "sha-256",
|
|
9
|
+
"evidence": {
|
|
10
|
+
"$schema": "urn:noeos:verification-engine:chain-summary:1",
|
|
11
|
+
"protocolVersion": 1,
|
|
12
|
+
"contextId": "v",
|
|
13
|
+
"sequenceId": "s",
|
|
14
|
+
"profile": { "id": "dev.noeos.jcs", "version": "1.0.0" },
|
|
15
|
+
"algorithm": "sha-256",
|
|
16
|
+
"count": 0,
|
|
17
|
+
"boundaries": { "start": "not-applicable", "end": "not-applicable" },
|
|
18
|
+
"status": "valid",
|
|
19
|
+
"diagnostics": { "errors": 0, "warnings": 0, "info": 0, "truncated": false }
|
|
20
|
+
},
|
|
21
|
+
"expectedJcsHex": "7b2224736368656d61223a2275726e3a6e6f656f733a766572696669636174696f6e2d656e67696e653a636861696e2d73756d6d6172793a31222c22616c676f726974686d223a227368612d323536222c22626f756e646172696573223a7b22656e64223a226e6f742d6170706c696361626c65222c227374617274223a226e6f742d6170706c696361626c65227d2c22636f6e746578744964223a2276222c22636f756e74223a302c22646961676e6f7374696373223a7b226572726f7273223a302c22696e666f223a302c227472756e6361746564223a66616c73652c227761726e696e6773223a307d2c2270726f66696c65223a7b226964223a226465762e6e6f656f732e6a6373222c2276657273696f6e223a22312e302e30227d2c2270726f746f636f6c56657273696f6e223a312c2273657175656e63654964223a2273222c22737461747573223a2276616c6964227d",
|
|
22
|
+
"expectedFrameHex": "4e4f454f53564531040001000300010200000000000000077368612d323536000202000000000000002d75726e3a6e6f656f733a766572696669636174696f6e2d656e67696e653a636861696e2d73756d6d6172793a3100030100000000000001567b2224736368656d61223a2275726e3a6e6f656f733a766572696669636174696f6e2d656e67696e653a636861696e2d73756d6d6172793a31222c22616c676f726974686d223a227368612d323536222c22626f756e646172696573223a7b22656e64223a226e6f742d6170706c696361626c65222c227374617274223a226e6f742d6170706c696361626c65227d2c22636f6e746578744964223a2276222c22636f756e74223a302c22646961676e6f7374696373223a7b226572726f7273223a302c22696e666f223a302c227472756e6361746564223a66616c73652c227761726e696e6773223a307d2c2270726f66696c65223a7b226964223a226465762e6e6f656f732e6a6373222c2276657273696f6e223a22312e302e30227d2c2270726f746f636f6c56657273696f6e223a312c2273657175656e63654964223a2273222c22737461747573223a2276616c6964227d",
|
|
23
|
+
"expectedDigest": "cd9a4b495b3097c50a948cdd523eb9817075e395c70ab487ede5d6de199b353b"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{
|
|
4
|
+
"id": "FRAME-CONTENT-SHA256-RAW-BYTES",
|
|
5
|
+
"kind": "framing",
|
|
6
|
+
"requirement": "CRY-002",
|
|
7
|
+
"source": "Noeos-VE-Protocol-1",
|
|
8
|
+
"algorithm": "sha-256",
|
|
9
|
+
"frame": {
|
|
10
|
+
"kind": "content",
|
|
11
|
+
"fields": [
|
|
12
|
+
{ "tag": 1, "type": "utf8", "value": "sha-256" },
|
|
13
|
+
{ "tag": 2, "type": "utf8", "value": "dev.noeos.raw-bytes" },
|
|
14
|
+
{ "tag": 3, "type": "utf8", "value": "1.0.0" },
|
|
15
|
+
{ "tag": 4, "type": "bytes", "value": "000102ff" }
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"expectedFrameHex": "4e4f454f53564531010001000400010200000000000000077368612d32353600020200000000000000136465762e6e6f656f732e7261772d62797465730003020000000000000005312e302e300004010000000000000004000102ff",
|
|
19
|
+
"expectedDigest": "441fcb174fba0958eb0a78ad6169a69985597b3c861f9376554dc32cd4e42a79"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "FRAME-CONTENT-FIELD-LENGTH-BOUNDARIES",
|
|
23
|
+
"kind": "framing",
|
|
24
|
+
"requirement": "CRY-002",
|
|
25
|
+
"source": "Noeos-VE-Protocol-1",
|
|
26
|
+
"algorithm": "sha-256",
|
|
27
|
+
"frame": {
|
|
28
|
+
"kind": "content",
|
|
29
|
+
"fields": [
|
|
30
|
+
{ "tag": 1, "type": "bytes", "value": "" },
|
|
31
|
+
{ "tag": 2, "type": "bytes", "value": "00" },
|
|
32
|
+
{ "tag": 3, "type": "bytes", "value": "00", "repeat": 255 },
|
|
33
|
+
{ "tag": 4, "type": "bytes", "value": "00", "repeat": 256 }
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"expectedFrameHex": "4e4f454f535645310100010004000101000000000000000000020100000000000000010000030100000000000000ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
37
|
+
"expectedDigest": "fc70d1d41448ff74c3c2a61c0c9de9b98e318c0ee05bd43056891558df1d646b"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "FRAME-RECORD-SHA384-MAX-SAFE-LENGTH",
|
|
41
|
+
"kind": "framing",
|
|
42
|
+
"requirement": "CRY-002",
|
|
43
|
+
"source": "Noeos-VE-Protocol-1",
|
|
44
|
+
"algorithm": "sha-384",
|
|
45
|
+
"frame": {
|
|
46
|
+
"kind": "record",
|
|
47
|
+
"fields": [
|
|
48
|
+
{ "tag": 1, "type": "utf8", "value": "sha-384" },
|
|
49
|
+
{ "tag": 2, "type": "utf8", "value": "example.context" },
|
|
50
|
+
{ "tag": 3, "type": "utf8", "value": "record-0001" },
|
|
51
|
+
{ "tag": 4, "type": "utf8", "value": "dev.noeos.jcs" },
|
|
52
|
+
{ "tag": 5, "type": "utf8", "value": "1.0.0" },
|
|
53
|
+
{ "tag": 6, "type": "uint64", "value": 9007199254740991 },
|
|
54
|
+
{
|
|
55
|
+
"tag": 7,
|
|
56
|
+
"type": "bytes",
|
|
57
|
+
"value": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"expectedFrameHex": "4e4f454f53564531020001000700010200000000000000077368612d333834000202000000000000000f6578616d706c652e636f6e74657874000302000000000000000b7265636f72642d30303031000402000000000000000d6465762e6e6f656f732e6a63730005020000000000000005312e302e300006030000000000000008001fffffffffffff0007010000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
62
|
+
"expectedDigest": "ce0a07363fb9285a32f4e8ad119f0c3d302f6a262a8b2542b55534d8d81d01b253478bc7756ca791671631a78d0da755"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "FRAME-LINK-GENESIS-SHA256",
|
|
66
|
+
"kind": "framing",
|
|
67
|
+
"requirement": "CRY-002",
|
|
68
|
+
"source": "Noeos-VE-Protocol-1",
|
|
69
|
+
"algorithm": "sha-256",
|
|
70
|
+
"frame": {
|
|
71
|
+
"kind": "link",
|
|
72
|
+
"fields": [
|
|
73
|
+
{ "tag": 1, "type": "utf8", "value": "sha-256" },
|
|
74
|
+
{ "tag": 2, "type": "utf8", "value": "example.context" },
|
|
75
|
+
{ "tag": 3, "type": "utf8", "value": "sequence-2026" },
|
|
76
|
+
{ "tag": 4, "type": "uint64", "value": 0 },
|
|
77
|
+
{ "tag": 5, "type": "utf8", "value": "record-0001" },
|
|
78
|
+
{
|
|
79
|
+
"tag": 6,
|
|
80
|
+
"type": "bytes",
|
|
81
|
+
"value": "0000000000000000000000000000000000000000000000000000000000000000"
|
|
82
|
+
},
|
|
83
|
+
{ "tag": 7, "type": "none" }
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"expectedFrameHex": "4e4f454f53564531030001000700010200000000000000077368612d323536000202000000000000000f6578616d706c652e636f6e74657874000302000000000000000d73657175656e63652d3230323600040300000000000000080000000000000000000502000000000000000b7265636f72642d30303031000601000000000000002000000000000000000000000000000000000000000000000000000000000000000007040000000000000000",
|
|
87
|
+
"expectedDigest": "1f247fac2ba5a3c217b406dc63832ed1d0f73e03af1ef832d66758e612eb6b0d"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "FRAME-LINK-POSITION-256-SHA256",
|
|
91
|
+
"kind": "framing",
|
|
92
|
+
"requirement": "CRY-002",
|
|
93
|
+
"source": "Noeos-VE-Protocol-1",
|
|
94
|
+
"algorithm": "sha-256",
|
|
95
|
+
"frame": {
|
|
96
|
+
"kind": "link",
|
|
97
|
+
"fields": [
|
|
98
|
+
{ "tag": 1, "type": "utf8", "value": "sha-256" },
|
|
99
|
+
{ "tag": 2, "type": "utf8", "value": "example.context" },
|
|
100
|
+
{ "tag": 3, "type": "utf8", "value": "sequence-2026" },
|
|
101
|
+
{ "tag": 4, "type": "uint64", "value": 256 },
|
|
102
|
+
{ "tag": 5, "type": "utf8", "value": "record-0256" },
|
|
103
|
+
{
|
|
104
|
+
"tag": 6,
|
|
105
|
+
"type": "bytes",
|
|
106
|
+
"value": "1111111111111111111111111111111111111111111111111111111111111111"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"tag": 7,
|
|
110
|
+
"type": "bytes",
|
|
111
|
+
"value": "2222222222222222222222222222222222222222222222222222222222222222"
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"expectedFrameHex": "4e4f454f53564531030001000700010200000000000000077368612d323536000202000000000000000f6578616d706c652e636f6e74657874000302000000000000000d73657175656e63652d3230323600040300000000000000080000000000000100000502000000000000000b7265636f72642d303235360006010000000000000020111111111111111111111111111111111111111111111111111111111111111100070100000000000000202222222222222222222222222222222222222222222222222222222222222222",
|
|
116
|
+
"expectedDigest": "657d9f97cc8d20c706ecd01d89e1b350a82f38992ada8c206adb1b65db024b49"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"id": "FRAME-EVIDENCE-SHA512",
|
|
120
|
+
"kind": "framing",
|
|
121
|
+
"requirement": "CRY-002",
|
|
122
|
+
"source": "Noeos-VE-Protocol-1",
|
|
123
|
+
"algorithm": "sha-512",
|
|
124
|
+
"frame": {
|
|
125
|
+
"kind": "evidence",
|
|
126
|
+
"fields": [
|
|
127
|
+
{ "tag": 1, "type": "utf8", "value": "sha-512" },
|
|
128
|
+
{ "tag": 2, "type": "utf8", "value": "urn:noeos:verification-engine:record-evidence:1" },
|
|
129
|
+
{ "tag": 3, "type": "bytes", "value": "7b7d" }
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
"expectedFrameHex": "4e4f454f53564531040001000300010200000000000000077368612d353132000202000000000000002f75726e3a6e6f656f733a766572696669636174696f6e2d656e67696e653a7265636f72642d65766964656e63653a3100030100000000000000027b7d",
|
|
133
|
+
"expectedDigest": "b2132aae41e683bd51b91466757351e2a1f349c54fe7879e6495a608017bf8c06a00976181b05dc1ba104ae80ceca08e34489c160a0f852887188cab84aef027"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{
|
|
4
|
+
"id": "HASH-SHA256-EMPTY",
|
|
5
|
+
"kind": "hashing",
|
|
6
|
+
"requirement": "CRY-003",
|
|
7
|
+
"source": "FIPS-180-4",
|
|
8
|
+
"algorithm": "sha-256",
|
|
9
|
+
"inputHex": "",
|
|
10
|
+
"expectedDigest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "HASH-SHA256-ABC",
|
|
14
|
+
"kind": "hashing",
|
|
15
|
+
"requirement": "CRY-003",
|
|
16
|
+
"source": "FIPS-180-4",
|
|
17
|
+
"algorithm": "sha-256",
|
|
18
|
+
"inputHex": "616263",
|
|
19
|
+
"expectedDigest": "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "HASH-SHA384-EMPTY",
|
|
23
|
+
"kind": "hashing",
|
|
24
|
+
"requirement": "CRY-003",
|
|
25
|
+
"source": "FIPS-180-4",
|
|
26
|
+
"algorithm": "sha-384",
|
|
27
|
+
"inputHex": "",
|
|
28
|
+
"expectedDigest": "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "HASH-SHA384-ABC",
|
|
32
|
+
"kind": "hashing",
|
|
33
|
+
"requirement": "CRY-003",
|
|
34
|
+
"source": "FIPS-180-4",
|
|
35
|
+
"algorithm": "sha-384",
|
|
36
|
+
"inputHex": "616263",
|
|
37
|
+
"expectedDigest": "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "HASH-SHA512-EMPTY",
|
|
41
|
+
"kind": "hashing",
|
|
42
|
+
"requirement": "CRY-003",
|
|
43
|
+
"source": "FIPS-180-4",
|
|
44
|
+
"algorithm": "sha-512",
|
|
45
|
+
"inputHex": "",
|
|
46
|
+
"expectedDigest": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "HASH-SHA512-ABC",
|
|
50
|
+
"kind": "hashing",
|
|
51
|
+
"requirement": "CRY-003",
|
|
52
|
+
"source": "FIPS-180-4",
|
|
53
|
+
"algorithm": "sha-512",
|
|
54
|
+
"inputHex": "616263",
|
|
55
|
+
"expectedDigest": "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{
|
|
4
|
+
"id": "INVALID-DUPLICATE-TAG",
|
|
5
|
+
"kind": "invalid",
|
|
6
|
+
"requirement": "CRY-002",
|
|
7
|
+
"source": "Noeos-VE-Protocol-1",
|
|
8
|
+
"frame": {
|
|
9
|
+
"kind": "content",
|
|
10
|
+
"fields": [
|
|
11
|
+
{ "tag": 1, "type": "utf8", "value": "sha-256" },
|
|
12
|
+
{ "tag": 1, "type": "utf8", "value": "sha-256" }
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"expectedCode": "FRAME_FIELD_DUPLICATE"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "INVALID-DESCENDING-TAG",
|
|
19
|
+
"kind": "invalid",
|
|
20
|
+
"requirement": "CRY-002",
|
|
21
|
+
"source": "Noeos-VE-Protocol-1",
|
|
22
|
+
"frame": {
|
|
23
|
+
"kind": "content",
|
|
24
|
+
"fields": [
|
|
25
|
+
{ "tag": 2, "type": "utf8", "value": "b" },
|
|
26
|
+
{ "tag": 1, "type": "utf8", "value": "a" }
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"expectedCode": "FRAME_FIELD_ORDER_INVALID"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "INVALID-BYTES-UPPERCASE",
|
|
33
|
+
"kind": "invalid",
|
|
34
|
+
"requirement": "CRY-002",
|
|
35
|
+
"source": "Noeos-VE-Protocol-1",
|
|
36
|
+
"frame": { "kind": "content", "fields": [{ "tag": 1, "type": "bytes", "value": "AA" }] },
|
|
37
|
+
"expectedCode": "DIGEST_ENCODING_INVALID"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "INVALID-NONE-WITH-VALUE",
|
|
41
|
+
"kind": "invalid",
|
|
42
|
+
"requirement": "CRY-002",
|
|
43
|
+
"source": "Noeos-VE-Protocol-1",
|
|
44
|
+
"frame": { "kind": "link", "fields": [{ "tag": 1, "type": "none", "value": "" }] },
|
|
45
|
+
"expectedCode": "FRAME_FIELD_TYPE_INVALID"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "INVALID-ODD-HEX",
|
|
49
|
+
"kind": "invalid",
|
|
50
|
+
"requirement": "CRY-002",
|
|
51
|
+
"source": "Noeos-VE-Protocol-1",
|
|
52
|
+
"frame": { "kind": "content", "fields": [{ "tag": 1, "type": "bytes", "value": "0" }] },
|
|
53
|
+
"expectedCode": "DIGEST_ENCODING_INVALID"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "urn:noeos:verification-engine:vector-set:1",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"protocolVersion": 1,
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"files": [
|
|
7
|
+
{
|
|
8
|
+
"path": "evidence.json",
|
|
9
|
+
"category": "evidence",
|
|
10
|
+
"caseCount": 1,
|
|
11
|
+
"sha256": "b4e3b4a38f67e7489eafb05528fd309ee931db66e1a0c230ffbd0e103db1f032"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"path": "framing.json",
|
|
15
|
+
"category": "framing",
|
|
16
|
+
"caseCount": 6,
|
|
17
|
+
"sha256": "bacc590419dcee44ad0fa3e707d00a9bf322ac51243efc0a0418821fc6c92ea8"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "hashing.json",
|
|
21
|
+
"category": "hashing",
|
|
22
|
+
"caseCount": 6,
|
|
23
|
+
"sha256": "8722eba9ec01c80bdfa5f08fe13bc4c010b4712f61f417e5e2f748a8cbad44b3"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "invalid.json",
|
|
27
|
+
"category": "invalid",
|
|
28
|
+
"caseCount": 5,
|
|
29
|
+
"sha256": "05d098aa80412ce8d85aafea1b4ce4add53381e2fe4a4cda1cad88d9fa286fa6"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"sources": [
|
|
33
|
+
{
|
|
34
|
+
"id": "FIPS-180-4",
|
|
35
|
+
"url": "https://csrc.nist.gov/pubs/fips/180-4/upd1/final",
|
|
36
|
+
"license": "US Government work",
|
|
37
|
+
"revision": "FIPS PUB 180-4"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "Noeos-VE-Protocol-1",
|
|
41
|
+
"url": "https://github.com/noeos/verification-engine/blob/main/docs/04-normalizacion-criptografia/02-hash-framing.md",
|
|
42
|
+
"license": "Apache-2.0",
|
|
43
|
+
"revision": "protocol-1"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|