@open-charging-cloud/wwcp-poi 0.1.0 → 0.2.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 +498 -300
- package/README.md +522 -300
- package/dist/common.d.ts +9 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/history/apply.d.ts.map +1 -1
- package/dist/history/commit.d.ts.map +1 -1
- package/dist/history/epoch.d.ts +2 -0
- package/dist/history/epoch.d.ts.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3224 -625
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +2 -0
- package/dist/keys.d.ts.map +1 -1
- package/dist/network/certificates.d.ts +6 -4
- package/dist/network/certificates.d.ts.map +1 -1
- package/dist/network/evTaler.d.ts +13 -0
- package/dist/network/evTaler.d.ts.map +1 -1
- package/dist/network/identifications.d.ts +15 -2
- package/dist/network/identifications.d.ts.map +1 -1
- package/dist/network/partyKeys.d.ts.map +1 -1
- package/dist/network/roamingNetwork.d.ts +9 -0
- package/dist/network/roamingNetwork.d.ts.map +1 -1
- package/dist/network/versionTexts.d.ts +3 -2
- package/dist/network/versionTexts.d.ts.map +1 -1
- package/dist/network/writtenForm.d.ts +24 -0
- package/dist/network/writtenForm.d.ts.map +1 -0
- package/dist/proofs/keyStatement.d.ts +6 -1
- package/dist/proofs/keyStatement.d.ts.map +1 -1
- package/dist/proofs/signingKeyCertificate.d.ts +5 -0
- package/dist/proofs/signingKeyCertificate.d.ts.map +1 -1
- package/dist/proofs/stationProof.d.ts +5 -2
- package/dist/proofs/stationProof.d.ts.map +1 -1
- package/dist/proofs/trustContext.d.ts +56 -0
- package/dist/proofs/trustContext.d.ts.map +1 -0
- package/dist/verifier/chargingStation.d.ts +7 -1
- package/dist/verifier/chargingStation.d.ts.map +1 -1
- package/dist/verifier/documentKeys.d.ts +27 -0
- package/dist/verifier/documentKeys.d.ts.map +1 -0
- package/dist/verifier/historicalMeasurements.d.ts +96 -0
- package/dist/verifier/historicalMeasurements.d.ts.map +1 -0
- package/dist/verifier/measurementKeys.d.ts +48 -0
- package/dist/verifier/measurementKeys.d.ts.map +1 -0
- package/dist/verifier/observedVersions.d.ts +70 -0
- package/dist/verifier/observedVersions.d.ts.map +1 -0
- package/dist/verifier/pricePublication.d.ts +74 -0
- package/dist/verifier/pricePublication.d.ts.map +1 -0
- package/dist/verifier/sessionPrices.d.ts +75 -0
- package/dist/verifier/sessionPrices.d.ts.map +1 -0
- package/dist/verifier/trust.d.ts +3 -2
- package/dist/verifier/trust.d.ts.map +1 -1
- package/dist/verifier/trustTransitions.d.ts +67 -0
- package/dist/verifier/trustTransitions.d.ts.map +1 -0
- package/dist/verifier/version.d.ts +2 -1
- package/dist/verifier/version.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/keys.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ import { type JSONObject, type JSONValue } from './json/value.ts';
|
|
|
3
3
|
/** What a signing key may sign (SPECIFICATION.md section 4.1); a signing key naming none signs everything of its party. */
|
|
4
4
|
export declare const KeyUsages: {
|
|
5
5
|
readonly Infrastructure: "infrastructure";
|
|
6
|
+
readonly ChargeTransparencyRecords: "chargeTransparencyRecords";
|
|
6
7
|
readonly Tariffs: "tariffs";
|
|
7
8
|
readonly PriceStatements: "priceStatements";
|
|
9
|
+
readonly WitnessPublications: "witnessPublications";
|
|
8
10
|
readonly Models: "models";
|
|
9
11
|
readonly Software: "software";
|
|
10
12
|
readonly Certificates: "certificates";
|
package/dist/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIhF,2HAA2H;AAC3H,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIhF,2HAA2H;AAC3H,eAAO,MAAM,SAAS;;;;;;;;;;;CAWZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAKhE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AAyBjF;;;GAGG;AACH,qBAAa,YAAY;IAGjB,wEAAwE;aACxD,EAAE,EAAU,MAAM;aAClB,GAAG,EAAS,OAAO;IACnC,gFAAgF;aAChE,QAAQ,EAAI,UAAU;aACtB,SAAS,EAAG,MAAM,GAAG,SAAS;aAC9B,QAAQ,EAAI,MAAM,GAAG,SAAS;IAC9C,iHAAiH;aACjG,MAAM,EAAM,MAAM,GAAG,SAAS;aAC9B,MAAM,EAAM,SAAS,MAAM,EAAE;IAC7C,iCAAiC;aACjB,IAAI,EAAQ,UAAU;IAZ1C,OAAO;IAgBP,2FAA2F;IAC3F,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,iGAAiG;IAC1F,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIxC,2FAA2F;IACpF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMvC;;;;;;OAMG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,SAAiB,GAAG,YAAY;IA2FtF,0DAA0D;WAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;CAiBrF"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type JSONObject } from '../json/value.ts';
|
|
2
2
|
/**
|
|
3
|
-
* The error, when WWCP_POI refuses the given certificate, as `ConformityCertificate.TryParse` reads it
|
|
4
|
-
* its arguments, by their path
|
|
3
|
+
* The error, when WWCP_POI refuses the given certificate, as `ConformityCertificate.TryParse` reads it, in its words: what
|
|
4
|
+
* it reads as its arguments, by their path, then what its constructor checks, as an argument of its parameter where it
|
|
5
|
+
* names one.
|
|
5
6
|
*/
|
|
6
7
|
export declare function invalidCertificate(certificate: JSONObject): string | undefined;
|
|
7
8
|
/**
|
|
8
|
-
* The error, when the given content names a certificate WWCP_POI refuses to read,
|
|
9
|
-
*
|
|
9
|
+
* The error, when the given content names a certificate WWCP_POI refuses to read, or a conformity assessment body naming
|
|
10
|
+
* them it refuses, as WWCP_POI says it; undefined for none. Body by body, as WWCP_POI reads them: what it reads of the
|
|
11
|
+
* body, its certificates, then what its constructor checks.
|
|
10
12
|
*/
|
|
11
13
|
export declare function invalidCertificates(content: JSONObject): string | undefined;
|
|
12
14
|
//# sourceMappingURL=certificates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificates.d.ts","sourceRoot":"","sources":["../../src/network/certificates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"certificates.d.ts","sourceRoot":"","sources":["../../src/network/certificates.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AA6U3F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAE9E;AAsED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAe3E"}
|
|
@@ -26,6 +26,19 @@ export interface EVTalerMerchant {
|
|
|
26
26
|
* same key is refused, so that it is compared with the one of a contract as a text.
|
|
27
27
|
*/
|
|
28
28
|
export declare const isTalerPublicKey: (value: JSONValue | undefined) => value is string;
|
|
29
|
+
/**
|
|
30
|
+
* A URL as Hermod reads it (`URL.TryParse`), as far as a base URL needs it: trimmed, with the scheme https unless it names
|
|
31
|
+
* one, which is a name of RFC 3986, then its user information, host, port, path, query and fragment. Its text is what it
|
|
32
|
+
* writes again: as given, trimmed, the scheme put in front where it named none.
|
|
33
|
+
*/
|
|
34
|
+
export interface HermodURL {
|
|
35
|
+
readonly text: string;
|
|
36
|
+
readonly scheme: string;
|
|
37
|
+
readonly user: boolean;
|
|
38
|
+
readonly query: boolean;
|
|
39
|
+
readonly fragment: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function hermodURL(given: string): HermodURL | undefined;
|
|
29
42
|
/**
|
|
30
43
|
* The merchant of a charging station operator as `EVTalerMerchant.TryParse` reads it, with its exchanges in the ordinal
|
|
31
44
|
* order of their master public keys; its error otherwise, as WWCP_POI words it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evTaler.d.ts","sourceRoot":"","sources":["../../src/network/evTaler.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"evTaler.d.ts","sourceRoot":"","sources":["../../src/network/evTaler.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAc3E,eAAO,MAAM,yBAAyB,QAAwD,CAAC;AAC/F,eAAO,MAAM,yBAAyB,QAAwD,CAAC;AAE/F,6GAA6G;AAC7G,eAAO,MAAM,uBAAuB,YAAe,CAAC;AACpD,eAAO,MAAM,sBAAsB,aAAiB,CAAC;AAmBrD,0HAA0H;AAC1H,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,eAAe,EAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAW,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAU,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAc,QAAQ,CAAC;CACvC;AAED,6HAA6H;AAC7H,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,eAAe,EAAK,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAW,SAAS,eAAe,EAAE,CAAC;CAC3D;AAGD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,GAAG,SAAS,KAAG,KAAK,IAAI,MAC4D,CAAC;AAEtI;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAO,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAK,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAO,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAM,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAC;CAC/B;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAqD9D;AAmID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,MAAM,CAuE5E;AAGD,uGAAuG;AACvG,eAAO,MAAM,YAAY,GAAI,gBAAgB,SAAS,GAAG,SAAS,KAAG,OAC8F,CAAC;AAyDpK;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAiCtE;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,UAAU,KAAG,MAAM,GAAG,SAGP,CAAC;AAGhE,8HAA8H;AAC9H,eAAO,MAAM,iBAAiB,GAAI,UAAU,eAAe,KAAG,QACkD,CAAC"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { type JSONObject } from '../json/value.ts';
|
|
2
|
+
/**
|
|
3
|
+
* What the constructor of the roaming network refuses, as its TryParse names it: an argument of the given parameter, e.g.
|
|
4
|
+
* of its `ConformityAssessmentBodies`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const inRoamingNetwork: (error: string, parameter: string) => string;
|
|
2
7
|
/** A text as `StringComparison.OrdinalIgnoreCase` compares it: every character by its simple upper case. */
|
|
3
8
|
export declare const ignoringCase: (text: string) => string;
|
|
4
9
|
/**
|
|
@@ -6,9 +11,17 @@ export declare const ignoringCase: (text: string) => string;
|
|
|
6
11
|
* charging stations and EVSEs, and of their grid connection points.
|
|
7
12
|
*/
|
|
8
13
|
export declare function energyMetersOf(operators: readonly JSONObject[], gridOperators: readonly JSONObject[]): JSONObject[];
|
|
14
|
+
/**
|
|
15
|
+
* The error, when an entity of the given content names no identification, or one of another JSON type WWCP_POI3 refuses,
|
|
16
|
+
* as it says it; undefined for none. Its parties in the order it reads them, each before what it holds.
|
|
17
|
+
*/
|
|
18
|
+
export declare function invalidIdentification(content: JSONObject): string | undefined;
|
|
9
19
|
/**
|
|
10
20
|
* The error, when the given content names an identification twice that WWCP_POI keeps unique within the roaming network,
|
|
11
|
-
* as WWCP_POI says it; undefined for none.
|
|
21
|
+
* as WWCP_POI says it of a version, or after the last change of a change set; undefined for none. Of a version, it refuses
|
|
22
|
+
* them as the constructor of the roaming network does, in its order, each as an argument of its parameter, which its
|
|
23
|
+
* TryParse names: "The given JSON representation of a roaming network is invalid: … (Parameter 'GridOperators')". After the
|
|
24
|
+
* last change of a change set, it names them bare, in the order it checks them there (RoamingNetwork.ChangeSets.cs).
|
|
12
25
|
*/
|
|
13
|
-
export declare function duplicateIdentification(content: JSONObject): string | undefined;
|
|
26
|
+
export declare function duplicateIdentification(content: JSONObject, of: 'version' | 'change set'): string | undefined;
|
|
14
27
|
//# sourceMappingURL=identifications.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifications.d.ts","sourceRoot":"","sources":["../../src/network/identifications.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA0B,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAiB3F,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAI7B,CAAC;AA2EhB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAAU,EAAE,EAAE,aAAa,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,CAgCnH;
|
|
1
|
+
{"version":3,"file":"identifications.d.ts","sourceRoot":"","sources":["../../src/network/identifications.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA0B,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAiB3F;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,WAAW,MAAM,KAAG,MACoC,CAAC;AAEzG,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAI7B,CAAC;AA2EhB;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAAU,EAAE,EAAE,aAAa,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,CAgCnH;AA2ED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CA8C7E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CA2C7G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partyKeys.d.ts","sourceRoot":"","sources":["../../src/network/partyKeys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"partyKeys.d.ts","sourceRoot":"","sources":["../../src/network/partyKeys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,KAAK,UAAU,EAAkB,MAAM,kBAAkB,CAAC;AAInG,OAAO,EAAE,YAAY,EAAE,MAAO,YAAY,CAAC;AA2B3C,2BAA2B;AAC3B,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,WAAW,EAAI,SAAS,YAAY,EAAE,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAG,SAAS,YAAY,EAAE,CAAC;CACnD;AA+BD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CA6BpF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAwBxE"}
|
|
@@ -50,10 +50,19 @@ export declare class RoamingNetwork {
|
|
|
50
50
|
* revision, firmware version or serial number WWCP_POI refuses (`invalidVersionText`), nor a certificate WWCP_POI
|
|
51
51
|
* refuses to read (`invalidCertificates`), nor an EV Taler merchant or payment options it refuses (`invalidEVTaler`),
|
|
52
52
|
* nor keys of a party it refuses (`invalidPartyKeys`),
|
|
53
|
+
* nor what WWCP_POI takes and writes otherwise than the content holds it (`notWrittenAsHeld`),
|
|
53
54
|
* also the version a change set leads to. Its `eTags` may be left out: what binds a version is the commit whose ETags it
|
|
54
55
|
* has (`matchesCommitETags`).
|
|
55
56
|
*/
|
|
56
57
|
static parse(value: JSONValue | undefined): RoamingNetwork;
|
|
58
|
+
/**
|
|
59
|
+
* Reads the version the given change set leads to, its content after the last change, and refuses it as `parse`
|
|
60
|
+
* does, but in the words WWCP_POI3 names what it refuses of the network there (RoamingNetwork.ChangeSets.cs): its
|
|
61
|
+
* operator and the identifications it keeps unique within the roaming network bare, not as arguments of its
|
|
62
|
+
* constructor.
|
|
63
|
+
*/
|
|
64
|
+
static afterChangeSet(content: JSONObject): RoamingNetwork;
|
|
65
|
+
private static read;
|
|
57
66
|
/** The effective content (8.1), calculated once. */
|
|
58
67
|
get effectiveContent(): JSONObject;
|
|
59
68
|
/** The `effectiveTree` ETag of the given hash algorithm (8.2). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roamingNetwork.d.ts","sourceRoot":"","sources":["../../src/network/roamingNetwork.ts"],"names":[],"mappings":"AAkBA,OAAO,
|
|
1
|
+
{"version":3,"file":"roamingNetwork.d.ts","sourceRoot":"","sources":["../../src/network/roamingNetwork.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA2D,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAmE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AACzG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAc,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAmB,2BAA2B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAU,oCAAoC,CAAC;AAI/E,eAAO,MAAM,uBAAuB,QAAuC,CAAC;AAgB5E,iFAAiF;AACjF,eAAO,MAAM,SAAS,GAAI,MAAM,SAAS,YAAY,EAAE,KAAG,GAAG,CAAC,MAAM,CACnB,CAAC;AAGlD;;;GAGG;AACH,qBAAa,sBAAsB;aAGX,EAAE,EAAuB,MAAM;aAC/B,YAAY,EAAa,SAAS,YAAY,EAAE;aAChD,YAAY,EAAa,MAAM;aAC/B,YAAY,EAAa,YAAY,GAAG,SAAS;aACjD,sBAAsB,EAAG,SAAS,qBAAqB,EAAE;aACzD,IAAI,EAAqB,UAAU;IANvD,OAAO;IASP,iDAAiD;IACjD,IAAW,WAAW,IAAI,YAAY,EAAE,CAKvC;IAGD;;;;;;;OAOG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,gBAAgB,EAAE,MAAM,GAAG,sBAAsB;CAwHtG;AAGD;;GAEG;AACH,qBAAa,cAAc;aAMH,EAAE,EAAmB,MAAM;IAC3C,4FAA4F;aAC5E,OAAO,EAAc,UAAU;aAC/B,QAAQ,EAAa,sBAAsB,GAAG,SAAS;aACvD,kBAAkB,EAAG,SAAS,aAAa,EAAE;IARjE,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAE5D,OAAO;IASP;;;;;;;;;;OAUG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc;IAIjE;;;;;OAKG;WACW,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc;IAIjE,OAAO,CAAC,MAAM,CAAC,IAAI;IA0EnB,oDAAoD;IACpD,IAAW,gBAAgB,IAAI,UAAU,CAExC;IAED,kEAAkE;IAC3D,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAaxD,kHAAkH;IAC3G,KAAK,IAAI,IAAI,EAAE;IAItB,+EAA+E;IACxE,cAAc,IAAI,IAAI,EAAE;IAI/B,6GAA6G;IACtG,kBAAkB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,OAAO;IAI1D,uCAAuC;IAChC,SAAS,IAAI,MAAM;IAI1B,IAAW,IAAI,IAAI,SAAS,GAAG,SAAS,CAEvC;IAED,IAAW,WAAW,IAAI,SAAS,GAAG,SAAS,CAE9C;IAED,qDAAqD;IAC9C,wBAAwB,IAAI,UAAU,EAAE;IAK/C,8EAA8E;IACvE,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAIrE"}
|
|
@@ -10,8 +10,9 @@ export declare const MODEL_VERSIONS: {
|
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* The error, when the given holder names a hardware revision or firmware version twice, which `ModelVersions.Of` refuses
|
|
13
|
-
* once both were read (`A hardware revision of the charging station model 'GD-DC300'
|
|
14
|
-
* a certificate or an energy meter a certificate was issued
|
|
13
|
+
* once both were read, as an argument of its `Versions` (`A hardware revision of the charging station model 'GD-DC300'
|
|
14
|
+
* must not be given twice! (Parameter 'Versions')`): a model, a certificate or an energy meter a certificate was issued
|
|
15
|
+
* with, `whose` in words.
|
|
15
16
|
*/
|
|
16
17
|
export declare function versionTwice(holder: JSONObject, whose: string): string | undefined;
|
|
17
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionTexts.d.ts","sourceRoot":"","sources":["../../src/network/versionTexts.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAa3F,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,GAAG,SAAS,KAAG,UAAU,EACnB,CAAC;AAkBjD,mHAAmH;AACnH,eAAO,MAAM,MAAM,GAAI,OAAO,SAAS,KAAG,OACW,CAAC;AAEtD,4FAA4F;AAC5F,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MACT,CAAC;AAyB/B,eAAO,MAAM,cAAc;;;CAAmF,CAAC;AAE/G
|
|
1
|
+
{"version":3,"file":"versionTexts.d.ts","sourceRoot":"","sources":["../../src/network/versionTexts.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAa3F,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,GAAG,SAAS,KAAG,UAAU,EACnB,CAAC;AAkBjD,mHAAmH;AACnH,eAAO,MAAM,MAAM,GAAI,OAAO,SAAS,KAAG,OACW,CAAC;AAEtD,4FAA4F;AAC5F,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MACT,CAAC;AAyB/B,eAAO,MAAM,cAAc;;;CAAmF,CAAC;AAE/G;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUlF;AAgCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAoB1E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type JSONObject, type JSONValue } from '../json/value.ts';
|
|
2
|
+
export declare const PROPERTIES_OF: Readonly<Record<string, readonly string[]>>;
|
|
3
|
+
/**
|
|
4
|
+
* The given value as WWCP_POI reads it, of an object of the given kind (`PROPERTIES_OF`): without the properties it does
|
|
5
|
+
* not read, of the objects within it as well.
|
|
6
|
+
*/
|
|
7
|
+
export declare function asRead(value: JSONValue, kind: string): JSONValue;
|
|
8
|
+
/** Where a value is not written as the content holds it, e.g. "chargingPools[1].paymentOptions", and how it is held. */
|
|
9
|
+
export interface NotWritten {
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly reason: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Where the given value of the given property, at the given path, is not written as the content holds it; undefined where
|
|
15
|
+
* it is. A new value names each element of an ordered list once, and leaves out the lastChange the change set gives it; a
|
|
16
|
+
* version leaves an element given twice to what refuses it in the words of WWCP_POI.
|
|
17
|
+
*/
|
|
18
|
+
export declare function notWritten(value: JSONValue, property: string | undefined, path: string, of: 'version' | 'new value'): NotWritten | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* The error, as WWCP_POI3 words it since 3de830a, when the given content of a version is not written as the content holds
|
|
21
|
+
* it, its own JSON-LD context aside; undefined where it is.
|
|
22
|
+
*/
|
|
23
|
+
export declare function notWrittenAsHeld(content: JSONObject): string | undefined;
|
|
24
|
+
//# sourceMappingURL=writtenForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writtenForm.d.ts","sourceRoot":"","sources":["../../src/network/writtenForm.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA6C,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAwQ9G,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAarE,CAAC;AAiIF;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAchE;AAGD,wHAAwH;AACxH,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAK,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAoI5I;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CA2CxE"}
|
|
@@ -22,7 +22,12 @@ export declare class KeyStatement {
|
|
|
22
22
|
readonly signatures: readonly KeyStatementSignature[];
|
|
23
23
|
readonly json: JSONObject;
|
|
24
24
|
private constructor();
|
|
25
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Reads a key statement as `RoamingNetworkKeyStatement.TryParse` of WWCP_POI3 reads it, in its words and order: its
|
|
27
|
+
* context, the roaming network and its operator, its identity keys, `signedAt` and `validUntil` as POI writes them,
|
|
28
|
+
* `minConsensus`, its signatures. Then what this library refuses besides, as whatever is not signed is not taken: a
|
|
29
|
+
* property it does not know, identity keys out of the order of their `@id`s, a `validUntil` before its `signedAt`.
|
|
30
|
+
*/
|
|
26
31
|
static parse(value: JSONValue | undefined): KeyStatement;
|
|
27
32
|
/** The statement as it is signed: without `signatures`, with its `@context`, keys embedded without theirs. */
|
|
28
33
|
content(): JSONObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyStatement.d.ts","sourceRoot":"","sources":["../../src/proofs/keyStatement.ts"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"keyStatement.d.ts","sourceRoot":"","sources":["../../src/proofs/keyStatement.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAe,YAAY,CAAC;AAKnD,eAAO,MAAM,qBAAqB,QAAoD,CAAC;AAGvF,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,SAAS,EAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAO,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAO,MAAM,CAAC;CAC/B;AAGD;;;;GAIG;AACH,qBAAa,YAAY;aAGD,gBAAgB,EAAW,MAAM;aACjC,wBAAwB,EAAG,MAAM;aACjC,YAAY,EAAe,SAAS,YAAY,EAAE;aAClD,YAAY,EAAe,MAAM;aACjC,QAAQ,EAAmB,MAAM;aACjC,UAAU,EAAiB,MAAM;aACjC,UAAU,EAAiB,SAAS,qBAAqB,EAAE;aAC3D,IAAI,EAAuB,UAAU;IARzD,OAAO;IAYP;;;;;OAKG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY;IAmE/D,8GAA8G;IACvG,OAAO,IAAI,UAAU;IAY5B,0GAA0G;IACnG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IAIjE,0DAA0D;IACnD,eAAe,CAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI;IASzF,wFAAwF;IACjF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKvC,mHAAmH;IACnH,IAAW,OAAO,IAAI,MAAM,EAAE,EAAE,CAS/B;IAGD;;;OAGG;IACI,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvC,iBAAiB,GAAM,SAAS,YAAY,EAAO,EACnD,OAAO,GAAgB;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAM9F;;;;;;;;;;;OAWG;IACI,aAAa,CAAC,cAAc,EAAM,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,EAClD,iBAAiB,GAAG,SAAS,YAAY,EAAO,EAChD,OAAO,GAAa;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG;QAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAkFlJ"}
|
|
@@ -15,6 +15,11 @@ export declare class SigningKeyCertificate {
|
|
|
15
15
|
readonly value: string;
|
|
16
16
|
readonly json: JSONObject;
|
|
17
17
|
private constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Reads a certificate as `RoamingNetworkSigningKeyCertificate.TryParse` of WWCP_POI3 reads it, in its words and order:
|
|
20
|
+
* its context, the roaming network operator, the signing key it certifies, `signedAt` as POI writes it, the algorithm,
|
|
21
|
+
* key identification and value of its signature; then a property it does not know, which is not signed.
|
|
22
|
+
*/
|
|
18
23
|
static parse(value: JSONValue | undefined): SigningKeyCertificate;
|
|
19
24
|
/** The signature input: the certificate without `value`, with its `@context`, its signing key embedded without its. */
|
|
20
25
|
signingBytes(): Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signingKeyCertificate.d.ts","sourceRoot":"","sources":["../../src/proofs/signingKeyCertificate.ts"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"signingKeyCertificate.d.ts","sourceRoot":"","sources":["../../src/proofs/signingKeyCertificate.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,MAAe,YAAY,CAAC;AAKnD,eAAO,MAAM,+BAA+B,QAA6D,CAAC;AAO1G;;;;GAIG;AACH,qBAAa,qBAAqB;aAGV,wBAAwB,EAAG,MAAM;aACjC,UAAU,EAAiB,YAAY;aACvC,QAAQ,EAAmB,MAAM;aACjC,SAAS,EAAkB,MAAM;aACjC,KAAK,EAAsB,MAAM;aACjC,KAAK,EAAsB,MAAM;aACjC,IAAI,EAAuB,UAAU;IAPzD,OAAO;IAWP;;;;OAIG;WACW,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,qBAAqB;IAsCxE,uHAAuH;IAChH,YAAY,IAAI,UAAU;IAYjC;;;OAGG;IACI,MAAM,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,EAAE,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;CA2BlH"}
|
|
@@ -5,11 +5,14 @@ import { type ETag } from '../etags.ts';
|
|
|
5
5
|
import type { RoamingNetwork } from '../network/roamingNetwork.ts';
|
|
6
6
|
import { KeyStatement } from './keyStatement.ts';
|
|
7
7
|
import { Attestation } from './attestation.ts';
|
|
8
|
+
import { TrustContext } from './trustContext.ts';
|
|
8
9
|
import type { TrustAnchor } from './trustAnchor.ts';
|
|
9
10
|
import type { Checkpoint, CheckpointProof } from '../history/checkpoint.ts';
|
|
10
11
|
export declare const PROOF_CONTEXT: string;
|
|
11
12
|
/** What a verified proof attests, and by whom. */
|
|
12
13
|
export interface VerifiedProof {
|
|
14
|
+
/** Conservative expiry of counted attestations and their certified signing/identity keys. */
|
|
15
|
+
readonly validUntil: number;
|
|
13
16
|
/** The root the proof leads to: the `effectiveTree` ETag of its version. */
|
|
14
17
|
readonly eTag: ETag;
|
|
15
18
|
/** The roaming network with what the proof gives completely; pruned arrays as they are. */
|
|
@@ -63,7 +66,7 @@ export declare class ChargingStationProof {
|
|
|
63
66
|
*
|
|
64
67
|
* Attestations of a subject (8.5) attest one entity, not the root: they do not count here.
|
|
65
68
|
*/
|
|
66
|
-
verify(
|
|
69
|
+
verify(basis: TrustAnchor | TrustContext, at?: number | Date | string): VerifiedProof;
|
|
67
70
|
/**
|
|
68
71
|
* Verifies a checkpoint against a trust anchor with this proof of the version of its commit (10.5), as
|
|
69
72
|
* `Verify(Checkpoint, TrustAnchor)` of the C# implementation, e.g. with the proof of the root of the snapshot of the
|
|
@@ -73,7 +76,7 @@ export declare class ChargingStationProof {
|
|
|
73
76
|
* signed and at `at`, and allowed to sign for the party, as attestations are verified. Signatures that do not count are
|
|
74
77
|
* ignored, not refused; the other signatures, e.g. of witnesses, are not checked here. Returns the holders that signed.
|
|
75
78
|
*/
|
|
76
|
-
verifyCheckpoint(checkpoint: Checkpoint,
|
|
79
|
+
verifyCheckpoint(checkpoint: Checkpoint, basis: TrustAnchor | TrustContext, at?: number | Date | string): string[];
|
|
77
80
|
/**
|
|
78
81
|
* The signing keys of the roaming network operator the proof gives, as a verifier trusting the trust anchor finds them
|
|
79
82
|
* (4.1, 8.5, 8.6), as `TryGetCertifiedSigningKeys` of the C# implementation: the key statement of the operator is signed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stationProof.d.ts","sourceRoot":"","sources":["../../src/proofs/stationProof.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAA0B,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAc,KAAK,IAAI,EAAE,MAAU,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAY,8BAA8B,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAmB,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAoB,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAe,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI5E,eAAO,MAAM,aAAa,QAA6C,CAAC;AAGxE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAW,IAAI,CAAC;IAC7B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAO,UAAU,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAG,SAAS,WAAW,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAK,SAAS,MAAM,EAAE,CAAC;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAG,YAAY,CAAC;CACxC;AAiBD;;;;GAIG;AACH,qBAAa,oBAAoB;aAGT,aAAa,EAAI,aAAa;aAC9B,QAAQ,EAAS,MAAM;aACvB,QAAQ,EAAS,MAAM;aACvB,cAAc,EAAG,UAAU;aAC3B,YAAY,EAAK,SAAS,WAAW,EAAE;aACvC,IAAI,EAAa,UAAU;IAN/C,OAAO;WAUO,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB;IA4BvE;;;;OAIG;WACW,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,GAAE,SAAS,WAAW,EAAO,GAAG,oBAAoB;IAaxM,uFAAuF;IAChF,SAAS,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;IAMxD;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"stationProof.d.ts","sourceRoot":"","sources":["../../src/proofs/stationProof.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAA0B,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAc,KAAK,IAAI,EAAE,MAAU,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAY,8BAA8B,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAmB,mBAAmB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAoB,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAY,MAAS,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAe,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI5E,eAAO,MAAM,aAAa,QAA6C,CAAC;AAGxE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC1B,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAW,IAAI,CAAC;IAC7B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAO,UAAU,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAG,SAAS,WAAW,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAK,SAAS,MAAM,EAAE,CAAC;IAC1C,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAG,YAAY,CAAC;CACxC;AAiBD;;;;GAIG;AACH,qBAAa,oBAAoB;aAGT,aAAa,EAAI,aAAa;aAC9B,QAAQ,EAAS,MAAM;aACvB,QAAQ,EAAS,MAAM;aACvB,cAAc,EAAG,UAAU;aAC3B,YAAY,EAAK,SAAS,WAAW,EAAE;aACvC,IAAI,EAAa,UAAU;IAN/C,OAAO;WAUO,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,oBAAoB;IA4BvE;;;;OAIG;WACW,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,GAAE,SAAS,WAAW,EAAO,GAAG,oBAAoB;IAaxM,uFAAuF;IAChF,SAAS,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;IAMxD;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,aAAa;IA6E5F;;;;;;;;OAQG;IACI,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE;IAiDzH;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;;;OAIG;IACI,wBAAwB,CAAC,WAAW,EAAE,eAAe,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE;CAkBtG;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type Epoch } from '../history/epoch.ts';
|
|
2
|
+
import type { POIPublicKey } from '../keys.ts';
|
|
3
|
+
import type { KeyStatement } from './keyStatement.ts';
|
|
4
|
+
import { TrustAnchor } from './trustAnchor.ts';
|
|
5
|
+
export interface TrustEvaluationOptions {
|
|
6
|
+
readonly trustedIdentityKeyIds: Iterable<string>;
|
|
7
|
+
readonly otherIdentityKeys?: readonly POIPublicKey[];
|
|
8
|
+
readonly at?: number | Date | string;
|
|
9
|
+
}
|
|
10
|
+
/** Diagnostics keep mathematical validity, local authorization and distinct-holder consensus separate. */
|
|
11
|
+
export interface TrustEvaluation {
|
|
12
|
+
readonly signatures: 'valid' | 'invalid';
|
|
13
|
+
readonly signers: 'valid' | 'invalid';
|
|
14
|
+
readonly quorum: 'valid' | 'invalid';
|
|
15
|
+
readonly validity: 'valid' | 'invalid';
|
|
16
|
+
readonly trustedHolderCount: number;
|
|
17
|
+
readonly requiredConsensus: number;
|
|
18
|
+
readonly signatureCount: number;
|
|
19
|
+
/** Import and optional manual authorization are allowed even without a trusted quorum. */
|
|
20
|
+
readonly canTrustKeys: boolean;
|
|
21
|
+
readonly verificationError?: string;
|
|
22
|
+
readonly context?: TrustContext;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A locally authorized bootstrap policy and a verified statement, evaluated at one time. The application supplies
|
|
26
|
+
* trusted key IDs, from its bundled roots and explicit user decisions after applying local exclusions. The library
|
|
27
|
+
* intersects them with the original holder groups and verifies every signature, holder consistency, time and quorum.
|
|
28
|
+
* Importing an anchor is not authorization. This object is not a revocation service: recreate it from current local
|
|
29
|
+
* decisions for each operation. It is not persisted, and cannot be constructed from a serialized green flag.
|
|
30
|
+
*/
|
|
31
|
+
export declare class TrustContext {
|
|
32
|
+
private readonly statement;
|
|
33
|
+
readonly evaluatedAt: number;
|
|
34
|
+
readonly epoch: Epoch;
|
|
35
|
+
readonly epochs: readonly Epoch[];
|
|
36
|
+
readonly anchor: TrustAnchor;
|
|
37
|
+
readonly authorizedAnchor: TrustAnchor;
|
|
38
|
+
readonly trustedHolders: readonly (readonly string[])[];
|
|
39
|
+
readonly roamingNetworkId: string;
|
|
40
|
+
readonly roamingNetworkOperatorId: string;
|
|
41
|
+
readonly keyStatementDigest: string;
|
|
42
|
+
readonly requiredConsensus: number;
|
|
43
|
+
readonly validUntil: number;
|
|
44
|
+
private constructor();
|
|
45
|
+
/** Attach only profiles established by a verified transition; the bootstrap keeps the first epoch. */
|
|
46
|
+
static withEpoch(reference: TrustContext, epoch: Epoch, epochs?: readonly Epoch[]): TrustContext;
|
|
47
|
+
static create(anchor: TrustAnchor, statement: KeyStatement, options: TrustEvaluationOptions): TrustContext;
|
|
48
|
+
static evaluate(anchor: TrustAnchor, statement: KeyStatement, options: TrustEvaluationOptions): TrustEvaluation;
|
|
49
|
+
/** The context represents exactly one evaluation time; a different time requires fresh local decisions. */
|
|
50
|
+
evaluationTime(at?: number | Date | string): number;
|
|
51
|
+
/** Rechecks supplied signatures and binds their signed content to the verified statement. */
|
|
52
|
+
verifyStatement(statement: KeyStatement, otherIdentityKeys?: readonly POIPublicKey[], at?: number | Date | string): ReturnType<KeyStatement['verifyHolders']>;
|
|
53
|
+
}
|
|
54
|
+
/** The trust anchor a verifier checks against: of a context the one naming only the identity keys authorized locally. */
|
|
55
|
+
export declare function anchorOf(basis: TrustAnchor | TrustContext): TrustAnchor;
|
|
56
|
+
//# sourceMappingURL=trustContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustContext.d.ts","sourceRoot":"","sources":["../../src/proofs/trustContext.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAa,KAAK,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAK3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAU,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAgB,kBAAkB,CAAC;AAGzD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;CACxC;AAED,0GAA0G;AAC1G,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACnC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IAWD,OAAO,CAAC,QAAQ,CAAC,SAAS;aAAgC,WAAW,EAAE,MAAM;aAAiB,KAAK,EAAC,KAAK;aAA6B,MAAM,EAAC,SAAS,KAAK,EAAE;IAVjL,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,SAAgB,gBAAgB,EAAE,WAAW,CAAC;IAC9C,SAAgB,cAAc,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/D,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,wBAAwB,EAAE,MAAM,CAAC;IACjD,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAC1C,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC,OAAO;IAeP,sGAAsG;WACxF,SAAS,CAAC,SAAS,EAAC,YAAY,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,GAAC,SAAS,KAAK,EAAU,GAAE,YAAY;WAG1F,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY;WAOnG,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,GAAG,eAAe;IAkDtH,2GAA2G;IACpG,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM;IAM1D,6FAA6F;IACtF,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,GAAE,SAAS,YAAY,EAAO,EACxE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CASjG;AAED,yHAAyH;AACzH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAEvE"}
|
|
@@ -3,9 +3,15 @@ import type { ETag } from '../etags.ts';
|
|
|
3
3
|
import { POIPublicKey } from '../keys.ts';
|
|
4
4
|
import { ChargingStationProof } from '../proofs/stationProof.ts';
|
|
5
5
|
import { PriceStatement } from '../proofs/priceStatement.ts';
|
|
6
|
+
import { TrustContext } from '../proofs/trustContext.ts';
|
|
6
7
|
import type { TrustAnchor } from '../proofs/trustAnchor.ts';
|
|
7
8
|
/** A charging station as a verified proof gives it: everything here is attested by the roaming network operator. */
|
|
8
9
|
export interface VerifiedChargingStation {
|
|
10
|
+
/** Evaluation time and conservative freshness bound of the counted root attestations. */
|
|
11
|
+
readonly verification: {
|
|
12
|
+
readonly at: number;
|
|
13
|
+
readonly validUntil: number;
|
|
14
|
+
};
|
|
9
15
|
readonly roamingNetwork: {
|
|
10
16
|
readonly id: string;
|
|
11
17
|
readonly name: string | undefined;
|
|
@@ -108,7 +114,7 @@ export interface NamedTransparencySoftware {
|
|
|
108
114
|
* tariffs they take, and the signing keys of the operator. With `chargingStationId` or `evseId`, the proof must give that
|
|
109
115
|
* station, or the station of that EVSE.
|
|
110
116
|
*/
|
|
111
|
-
export declare function verifyChargingStation(anchor: TrustAnchor, proof: JSONValue | ChargingStationProof, options?: {
|
|
117
|
+
export declare function verifyChargingStation(anchor: TrustAnchor | TrustContext, proof: JSONValue | ChargingStationProof, options?: {
|
|
112
118
|
at?: number | Date | string;
|
|
113
119
|
chargingStationId?: string;
|
|
114
120
|
evseId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chargingStation.d.ts","sourceRoot":"","sources":["../../src/verifier/chargingStation.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAkC,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,KAAK,EAAE,IAAI,EAAE,MAA6B,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAA0B,YAAY,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAkB,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAoD,MAAM,6BAA6B,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAsB,0BAA0B,CAAC;AAI5E,oHAAoH;AACpH,MAAM,WAAW,uBAAuB;IAEpC,QAAQ,CAAC,cAAc,EAAG;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC/H,qHAAqH;IACrH,QAAQ,CAAC,QAAQ,EAAS,UAAU,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAK,UAAU,CAAC;IACrC,qHAAqH;IACrH,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAY,SAAS,UAAU,EAAE,CAAC;IAChD,wGAAwG;IACxG,QAAQ,CAAC,OAAO,EAAU,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IACrE,yEAAyE;IACzE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,YAAY,EAAE,CAAC;IACtD,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAK,YAAY,GAAG,SAAS,CAAC;IACnD,wKAAwK;IACxK,QAAQ,CAAC,YAAY,EAAK,SAAS,UAAU,EAAE,CAAC;IAChD,2HAA2H;IAC3H,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9D,0GAA0G;IAC1G,QAAQ,CAAC,YAAY,EAAK,SAAS,gBAAgB,EAAE,CAAC;IACtD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAEpE,QAAQ,CAAC,QAAQ,EAAS,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAS,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAa,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAO,SAAS,MAAM,EAAE,CAAC;IAC5C,yGAAyG;IACzG,QAAQ,CAAC,QAAQ,EAAS,SAAS,MAAM,EAAE,CAAC;CAE/C;AAGD;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAG,UAAU,CAAC;IACnC,kJAAkJ;IAClJ,QAAQ,CAAC,KAAK,EAAU,UAAU,GAAG,SAAS,CAAC;CAClD;AAGD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,aAAa,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/G,QAAQ,CAAC,WAAW,EAAK,UAAU,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAY,UAAU,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAQ,0BAA0B,GAAG,wBAAwB,CAAC;IAC/E;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAI,OAAO,CAAC;CACpC;AAGD;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,aAAa,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/G,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAK,MAAM,GAAG,SAAS,CAAC;IAC5C,yIAAyI;IACzI,QAAQ,CAAC,OAAO,EAAS,UAAU,CAAC;IACpC,iIAAiI;IACjI,QAAQ,CAAC,YAAY,EAAI,UAAU,CAAC;IACpC,6IAA6I;IAC7I,QAAQ,CAAC,YAAY,EAAI,SAAS,gBAAgB,EAAE,CAAC;CACxD;AA2ID;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"chargingStation.d.ts","sourceRoot":"","sources":["../../src/verifier/chargingStation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { JSONValue } from '../json/value.ts';
|
|
2
|
+
import type { TrustContext } from '../proofs/trustContext.ts';
|
|
3
|
+
import type { HistoricalTrustContext } from './historicalMeasurements.ts';
|
|
4
|
+
/** Library extension: this usage authorizes charging transparency envelopes, independently of price statements. */
|
|
5
|
+
export declare const CHARGING_DOCUMENT_USAGE: "chargeTransparencyRecords";
|
|
6
|
+
export interface AuthorizedChargingDocumentKeys {
|
|
7
|
+
readonly evseId: string;
|
|
8
|
+
readonly chargingStationId: string;
|
|
9
|
+
readonly operatorId: string;
|
|
10
|
+
readonly at: number;
|
|
11
|
+
readonly commitId: string;
|
|
12
|
+
readonly revision: number;
|
|
13
|
+
readonly keys: readonly {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly algorithm: string;
|
|
16
|
+
readonly encodings: readonly string[];
|
|
17
|
+
readonly value: string;
|
|
18
|
+
readonly keyUsage: readonly string[];
|
|
19
|
+
}[];
|
|
20
|
+
}
|
|
21
|
+
/** Authentication and key normalization are shared by web, desktop and mobile callers. No envelope-supplied key is an authority input. */
|
|
22
|
+
export declare function verifyChargingDocumentKeys(context: TrustContext | HistoricalTrustContext, proof: JSONValue, request: {
|
|
23
|
+
readonly evseId: string;
|
|
24
|
+
readonly operatorId: string;
|
|
25
|
+
readonly at: number;
|
|
26
|
+
}): AuthorizedChargingDocumentKeys;
|
|
27
|
+
//# sourceMappingURL=documentKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentKeys.d.ts","sourceRoot":"","sources":["../../src/verifier/documentKeys.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAyB,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAsB,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAY,6BAA6B,CAAC;AAMhF,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,EAAG,2BAAoC,CAAC;AAE5E,MAAM,WAAW,8BAA8B;IAC3C,QAAQ,CAAC,MAAM,EAAc,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,EAAkB,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAY,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAY,MAAM,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAgB,SAAS;QAClC,QAAQ,CAAC,EAAE,EAAU,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAG,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAG,SAAS,MAAM,EAAE,CAAC;QACvC,QAAQ,CAAC,KAAK,EAAO,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAI,SAAS,MAAM,EAAE,CAAC;KAC1C,EAAE,CAAC;CACP;AAYD,0IAA0I;AAC1I,wBAAgB,0BAA0B,CAAC,OAAO,EAAG,YAAY,GAAG,sBAAsB,EAC/C,KAAK,EAAK,SAAS,EACnB,OAAO,EAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,8BAA8B,CAkClK"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { JSONValue } from '../json/value.ts';
|
|
2
|
+
import type { TrustAnchor } from '../proofs/trustAnchor.ts';
|
|
3
|
+
import { TrustContext } from '../proofs/trustContext.ts';
|
|
4
|
+
import { KeyStatement } from '../proofs/keyStatement.ts';
|
|
5
|
+
import { POIPublicKey } from '../keys.ts';
|
|
6
|
+
import { Checkpoint } from '../history/checkpoint.ts';
|
|
7
|
+
import type { TrustedWitness } from './checkpoints.ts';
|
|
8
|
+
import { type MeasurementKeyFormat, type VerifiedMeterKeyBinding } from './measurementKeys.ts';
|
|
9
|
+
/** Versioned TS-library extension, not a change to the existing Evidence wire schema. */
|
|
10
|
+
export declare const HISTORICAL_METER_EVIDENCE_CONTEXT = "https://open.charging.cloud/contexts/wwcp/historicalMeterEvidence/v1";
|
|
11
|
+
export interface HistoricalMeterEvidence {
|
|
12
|
+
readonly evseId: string;
|
|
13
|
+
readonly versions: readonly {
|
|
14
|
+
readonly proof: JSONValue;
|
|
15
|
+
readonly commitProof?: JSONValue;
|
|
16
|
+
readonly checkpoints: readonly {
|
|
17
|
+
readonly checkpoint: JSONValue;
|
|
18
|
+
readonly operator: JSONValue;
|
|
19
|
+
}[];
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
export interface HistoricalMeterKeyBinding extends Omit<VerifiedMeterKeyBinding, 'evidence'> {
|
|
23
|
+
readonly evidence: Omit<VerifiedMeterKeyBinding['evidence'], 'association'> & {
|
|
24
|
+
readonly association: 'historical-attestation';
|
|
25
|
+
readonly measurementTimes: readonly number[];
|
|
26
|
+
readonly historicalStatementDigest: string;
|
|
27
|
+
readonly attestationValidUntil: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface HistoricalMeterVerification {
|
|
31
|
+
readonly bindings: readonly HistoricalMeterKeyBinding[];
|
|
32
|
+
readonly versions: readonly {
|
|
33
|
+
readonly commitId: string;
|
|
34
|
+
readonly publication: 'missing' | 'rno-checkpoint' | 'witnessed-checkpoint';
|
|
35
|
+
readonly checkpointId?: string;
|
|
36
|
+
readonly witnessedBy: readonly string[];
|
|
37
|
+
}[];
|
|
38
|
+
readonly checkedAt: number;
|
|
39
|
+
readonly timeBasis: 'signed-measurement-timestamps';
|
|
40
|
+
readonly independentTime: 'not-proven';
|
|
41
|
+
readonly latestVersion: 'not-proven';
|
|
42
|
+
}
|
|
43
|
+
export interface HistoricalMeterPolicy {
|
|
44
|
+
readonly witnesses?: readonly TrustedWitness[];
|
|
45
|
+
readonly requiredWitnesses?: number;
|
|
46
|
+
readonly requirePublication?: boolean;
|
|
47
|
+
/** Caller-authorized compromise information, never read from the evidence bundle. */
|
|
48
|
+
readonly revocations?: readonly {
|
|
49
|
+
readonly keyId: string;
|
|
50
|
+
readonly invalidFrom: number;
|
|
51
|
+
}[];
|
|
52
|
+
}
|
|
53
|
+
export declare function parseHistoricalMeterEvidence(value: JSONValue): HistoricalMeterEvidence;
|
|
54
|
+
export declare function historicalOperatorContext(current: TrustContext | HistoricalTrustContext, operator: JSONValue, at: number): TrustContext;
|
|
55
|
+
/** Fresh local permission for historical verification, independent of today's statement expiry. Not persisted. */
|
|
56
|
+
export declare class HistoricalTrustContext {
|
|
57
|
+
readonly evaluatedAt: number;
|
|
58
|
+
private readonly authorities;
|
|
59
|
+
readonly authorizedAnchor: TrustAnchor;
|
|
60
|
+
readonly roamingNetworkId: string;
|
|
61
|
+
readonly roamingNetworkOperatorId: string;
|
|
62
|
+
readonly requiredConsensus: number;
|
|
63
|
+
readonly keyStatementDigest: string;
|
|
64
|
+
/** An operation deadline, not historical document validity or a lease on local trust. */
|
|
65
|
+
readonly validUntil: number;
|
|
66
|
+
readonly trustedHolders: readonly (readonly string[])[];
|
|
67
|
+
readonly epoch: TrustContext['epoch'];
|
|
68
|
+
readonly epochs: TrustContext['epochs'];
|
|
69
|
+
private constructor();
|
|
70
|
+
/** Contexts must be reconstructed from current local roots and verified transition certificates, never serialized success flags. */
|
|
71
|
+
static fromVerifiedAuthorities(reference: TrustContext, authorities: readonly {
|
|
72
|
+
readonly context: TrustContext;
|
|
73
|
+
readonly from: number;
|
|
74
|
+
readonly until: number;
|
|
75
|
+
}[], now: number): HistoricalTrustContext;
|
|
76
|
+
authorityAt(at: number): TrustContext | undefined;
|
|
77
|
+
static create(anchor: TrustAnchor, reference: KeyStatement, options: {
|
|
78
|
+
readonly trustedIdentityKeyIds: Iterable<string>;
|
|
79
|
+
readonly otherIdentityKeys?: readonly POIPublicKey[];
|
|
80
|
+
readonly now?: number;
|
|
81
|
+
}): HistoricalTrustContext;
|
|
82
|
+
}
|
|
83
|
+
/** Current caller authorization and historical document validity are deliberately different clocks. */
|
|
84
|
+
export declare function verifyHistoricalMeterEvidence(current: TrustContext | HistoricalTrustContext, value: JSONValue, request: {
|
|
85
|
+
readonly evseId: string;
|
|
86
|
+
readonly meterSerialNumber: string;
|
|
87
|
+
readonly measurementTimes: readonly number[];
|
|
88
|
+
readonly keyFormat: MeasurementKeyFormat;
|
|
89
|
+
}, policy?: HistoricalMeterPolicy): HistoricalMeterVerification;
|
|
90
|
+
/** Shared checkpoint authority for meter and price evidence. A witness is never authorized by its own bundle. */
|
|
91
|
+
export declare function verifyAuthorizedCheckpoint(current: TrustContext | HistoricalTrustContext, checkpoint: Checkpoint, operator: JSONValue, policy?: HistoricalMeterPolicy): {
|
|
92
|
+
readonly checkpoint: Checkpoint;
|
|
93
|
+
readonly signedBy: readonly string[];
|
|
94
|
+
readonly witnessedBy: readonly string[];
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=historicalMeasurements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historicalMeasurements.d.ts","sourceRoot":"","sources":["../../src/verifier/historicalMeasurements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { POIError } from '../errors.ts';
|
|
2
|
+
import { type JSONValue } from '../json/value.ts';
|
|
3
|
+
import { TrustContext } from '../proofs/trustContext.ts';
|
|
4
|
+
export type MeasurementKeyFormat = 'spki-der' | 'cose-key';
|
|
5
|
+
export type MeasurementKeyProblem = 'missing-meter' | 'identity-mismatch' | 'ambiguous-key' | 'unsupported-key' | 'invalid-key';
|
|
6
|
+
export declare class MeasurementKeyError extends POIError {
|
|
7
|
+
readonly code: MeasurementKeyProblem;
|
|
8
|
+
constructor(code: MeasurementKeyProblem, message: string);
|
|
9
|
+
}
|
|
10
|
+
/** P-256 pilot. The declared format is required; a 64-character ID never determines its derivation scheme. */
|
|
11
|
+
export interface MeasurementPublicKey {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly idScheme: 'sha256-spki' | 'sha256-cose-key-thumbprint';
|
|
14
|
+
readonly canonicalId: string;
|
|
15
|
+
readonly sourceFormat: MeasurementKeyFormat;
|
|
16
|
+
readonly value: string;
|
|
17
|
+
readonly encodings: readonly string[];
|
|
18
|
+
readonly algorithm: 'ECDSA-secp256r1';
|
|
19
|
+
}
|
|
20
|
+
export interface VerifiedMeterKeyBinding {
|
|
21
|
+
readonly evseId: string;
|
|
22
|
+
readonly chargingStationId: string;
|
|
23
|
+
readonly meterId: string;
|
|
24
|
+
readonly meterSerialNumber: string;
|
|
25
|
+
readonly key: MeasurementPublicKey;
|
|
26
|
+
readonly evidence: {
|
|
27
|
+
readonly roamingNetworkId: string;
|
|
28
|
+
readonly roamingNetworkOperatorId: string;
|
|
29
|
+
readonly commitId: string;
|
|
30
|
+
readonly revision: number;
|
|
31
|
+
readonly treeRoot: string;
|
|
32
|
+
readonly keyStatementDigest: string;
|
|
33
|
+
readonly verifiedAt: number;
|
|
34
|
+
readonly validUntil: number;
|
|
35
|
+
/** A current authenticated snapshot is not historical installation/key-rotation evidence. */
|
|
36
|
+
readonly association: 'current-snapshot';
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare function parseMeasurementPublicKey(value: JSONValue, format: MeasurementKeyFormat): MeasurementPublicKey;
|
|
40
|
+
/** Re-verifies the original proof against an authorized context. Never searches other EVSEs or tries unrelated keys. */
|
|
41
|
+
export declare function verifyMeterKey(context: TrustContext, proof: JSONValue, request: {
|
|
42
|
+
readonly evseId: string;
|
|
43
|
+
readonly meterSerialNumber: string;
|
|
44
|
+
readonly meterId?: string;
|
|
45
|
+
readonly keyId?: string;
|
|
46
|
+
readonly keyFormat: MeasurementKeyFormat;
|
|
47
|
+
}): VerifiedMeterKeyBinding;
|
|
48
|
+
//# sourceMappingURL=measurementKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurementKeys.d.ts","sourceRoot":"","sources":["../../src/verifier/measurementKeys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAChI,qBAAa,mBAAoB,SAAQ,QAAQ;aACV,IAAI,EAAE,qBAAqB;gBAA3B,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAClF;AAED,8GAA8G;AAC9G,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,4BAA4B,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE;QACf,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;QAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,6FAA6F;QAC7F,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;KAC5C,CAAC;CACL;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CA0C9G;AAED,wHAAwH;AACxH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;CACrE,GAAG,uBAAuB,CAsB1B"}
|