@open-charging-cloud/chargy-core 0.16.0 → 0.16.1

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 CHANGED
@@ -7,6 +7,87 @@ While the version number is below 1.0.0, breaking changes are released in minor
7
7
  versions and are always listed first below.
8
8
 
9
9
 
10
+ ## [0.16.1] - 2026-09-09
11
+
12
+ ### Added
13
+
14
+ - **A signed log message is verified, not merely carried.** A legally relevant
15
+ log message may sign itself, and reading a live link now checks those
16
+ signatures alongside the document's own. The two prove different things: the
17
+ document signature says the message has not been changed since the operator
18
+ collected it, the message signature says the grid operator is who asked for
19
+ the constraint. Changing a message breaks both, since the document covers the
20
+ message - what only the message's signature survives is an operator who
21
+ re-signs the document around a forged constraint, which produces a document
22
+ that verifies as a whole while the grid never asked for anything.
23
+
24
+ `verifyEmbeddedSignatures(message, liveLink)` is exported for it: the
25
+ signatures sit on the message, the keys to check them and the
26
+ `keyIdGeneration` belong to the enclosing document, so the two objects are
27
+ passed separately. The message is canonicalized on its own, exactly as a
28
+ document is.
29
+
30
+ Nothing here refuses a document. A changed message, one signed with a key the
31
+ document does not list, and one carrying no signature at all are each reported
32
+ as a graded warning and change nothing else. There is deliberately no
33
+ `signatureVerification` written onto the message: that would change the very
34
+ bytes its signature covers.
35
+
36
+ - **`collectDocumentPublicKeys()` also collects `gridOperator.publicKeys`.**
37
+ A grid operator signs the constraints it sends rather than the document
38
+ carrying them, so its keys were listed in the fixtures and reachable by
39
+ nothing. The five new `LogMessageSignature_*` warning texts are in `i18n.json`.
40
+
41
+ - **`TT` may record a tariff change.** A Bonn tariff text names one tariff,
42
+ which is all a document needs until the tariff changes - and OCMF clearly
43
+ expects that it can, because it reserves a reading reason for exactly that
44
+ case. So this extends the format: `TT` carries the tariffs that have metered
45
+ something so far, separated by a vertical bar and in the order they took
46
+ effect.
47
+
48
+ 001;EUR;0;35;0;0
49
+ 001;EUR;0;35;0;0|001;EUR;0;25;0;0
50
+ 001;EUR;0;35;0;0|001;EUR;0;25;0;0|001;EUR;0;35;0;0
51
+
52
+ The last entry is the tariff in effect, the ones before it are the history
53
+ that led there, and the list only grows - so the newest document carries the
54
+ whole history and no earlier one is needed. The entries are tariff periods
55
+ rather than distinct tariffs: a tariff that comes back is written again,
56
+ which is why the base price appears twice above. A session whose tariff never
57
+ changes writes a list of one, byte-identical to the single-tariff form.
58
+
59
+ `parseOCMFBonnTariffTexts()` reads the list, `parseOCMFBonnTariffText()` one
60
+ entry. The vertical bar is also the OCMF envelope separator, but `TT` sits
61
+ inside the JSON payload, which is read by tracking the brace depth rather
62
+ than by splitting on bars; a reader that does split must take the payload
63
+ between the first and the last bar.
64
+
65
+ - **The OCMF-Test-01 series states its tariffs and marks the changes.** The
66
+ session has three tariff periods - the base energy price, the lower one for
67
+ the minute the grid limits the power, and the base price again - and every
68
+ document now carries the history up to its last reading. The two readings at
69
+ the ends of the limit carry `TX` = `T`, the OCMF reading reason for a tariff
70
+ change, so where the tariff changed and what it changed to are stated in
71
+ agreement with each other.
72
+
73
+ ### Fixed
74
+
75
+ - **A tariff change split a charging session in two, and silently lost half of
76
+ it.** `TT` was part of the key OCMF documents are grouped by, so the
77
+ documents before and after a tariff change formed two groups - and
78
+ `TryToParseOCMFDocuments()` returns only the first of them. Every reading
79
+ metered under a later tariff was parsed and then dropped without a word: for
80
+ the OCMF-Test-01 series, seven of thirty-three signed meter values. `TT` is
81
+ no longer part of that key. That only the first group is returned at all
82
+ remains as it was, and is worth revisiting separately.
83
+
84
+ - **Merging charge transparency records dropped the grid operators.** The merge
85
+ enumerates every top-level array by hand, and `gridOperators` was added to
86
+ `IChargeTransparencyRecord` in 0.16.0 without being added there - two records
87
+ merged into one lost a party, silently. A test now merges two records and
88
+ checks that both survive.
89
+
90
+
10
91
  ## [0.16.0] - 2026-09-08
11
92
 
12
93
  ### Added
package/README.md CHANGED
@@ -28,7 +28,7 @@ Currently supported formats include:
28
28
  - **EMH** energy meter data
29
29
  - **Mennekes** XML
30
30
  - **OCMF**, versions v1.1 to v1.4
31
- - Bonner Eichrechtstage **Tariff Text** Extensions
31
+ - Bonner Eichrechtstage (BET) **Tariff Text** Extensions including tariff changes
32
32
  - EdDSA support: Ed25519 and Ed448
33
33
  - Post-Quantum Cryptography support: ML-DSA-44, ML-DSA-65, ML-DSA-87
34
34
  - **Porsche Charging Data Format (PCDF)**
@@ -185,7 +185,7 @@ npx playwright install chromium
185
185
  ## Publishing
186
186
 
187
187
  ```bash
188
- npm version 0.16.0 --no-git-tag-version
188
+ npm version 0.16.1 --no-git-tag-version
189
189
  npm run verify
190
190
  npm pack --dry-run
191
191
  npm pack
@@ -48,10 +48,12 @@ export interface IDocumentPublicKey {
48
48
  /**
49
49
  * Every public key a document lists, in the order they appear.
50
50
  *
51
- * The keys of a charge transparency live link live in two places: those of the
52
- * operator, and the one of the energy meter of the EVSE. A key that does not
53
- * carry the three things needed to use it - an algorithm, an encodings pipeline
54
- * and a value - is skipped rather than guessed at.
51
+ * The keys of a charge transparency live link live in three places: those of
52
+ * the charging station operator, the one of the energy meter of the EVSE, and
53
+ * those of the grid operator, which signs the power constraints it sends rather
54
+ * than the document carrying them. A key that does not carry the three things
55
+ * needed to use it - an algorithm, an encodings pipeline and a value - is
56
+ * skipped rather than guessed at.
55
57
  */
56
58
  export declare function collectDocumentPublicKeys(Document: chargyLib.JSONObject): Array<IDocumentPublicKey>;
57
59
  /**
@@ -67,4 +69,18 @@ export declare function collectDocumentPublicKeys(Document: chargyLib.JSONObject
67
69
  * that are verified and makes a good signature look bad.
68
70
  */
69
71
  export declare function verifyDocumentSignatures(Document: chargyLib.JSONObject): IDocumentSignaturesResult;
72
+ /**
73
+ * The signatures an object *inside* a document carries over itself.
74
+ *
75
+ * A legally relevant log message is the case this exists for: the grid operator
76
+ * signs the power constraint it sends, not the document it later travels in, so
77
+ * the signatures sit on the message while the keys to check them and the rule
78
+ * for computing key ids belong to the enclosing live link. Passing the two
79
+ * objects separately is the whole difference to verifyDocumentSignatures().
80
+ *
81
+ * The embedded object is canonicalized on its own, exactly as a document is:
82
+ * what a signature covers is stated by the signature, not by where the object
83
+ * sits.
84
+ */
85
+ export declare function verifyEmbeddedSignatures(Embedded: chargyLib.JSONObject, EnclosingDocument: chargyLib.JSONObject): IDocumentSignaturesResult;
70
86
  //# sourceMappingURL=DocumentSignatures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentSignatures.d.ts","sourceRoot":"","sources":["../src/DocumentSignatures.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,SAAS,MAAyB,wBAAwB,CAAA;AAQtE,wDAAwD;AACxD,MAAM,MAAM,uBAAuB;AAE/B,kEAAkE;AAClE,gBAAgB;AAEhB,6EAA6E;AAC7E,kBAAkB;AAElB,4EAA4E;AAC5E,kBAAkB;AAElB,mEAAmE;AACnE,sBAAsB;AAEtB,uDAAuD;AACvD,WAAW,CAAC;AAGhB,0DAA0D;AAC1D,MAAM,WAAW,wBAAwB;IAErC,8CAA8C;IAC9C,KAAK,EAAQ,MAAM,CAAC;IAEpB,yDAAyD;IACzD,KAAK,CAAC,EAAO,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,SAAS,CAAC,EAAG,MAAM,CAAC;IAEpB,MAAM,EAAO,uBAAuB,CAAC;IAErC,2EAA2E;IAC3E,OAAO,CAAC,EAAK,MAAM,CAAC;CAEvB;AAGD,0CAA0C;AAC1C,MAAM,MAAM,wBAAwB;AAEhC,iEAAiE;AACjE,UAAU;AAEV,gCAAgC;AAChC,UAAU;AAEV,sDAAsD;AACtD,WAAW;AAEX,4DAA4D;AAC5D,WAAW,CAAC;AAGhB,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAO,wBAAwB,CAAC;IACtC,UAAU,EAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC7C,UAAU,EAAG,MAAM,CAAC;CACvB;AAGD,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAO,MAAM,CAAC;IACnB,QAAQ,EAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AA8RD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC,CA4CnG;AAiID;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,yBAAyB,CAyBlG"}
1
+ {"version":3,"file":"DocumentSignatures.d.ts","sourceRoot":"","sources":["../src/DocumentSignatures.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,SAAS,MAAyB,wBAAwB,CAAA;AAQtE,wDAAwD;AACxD,MAAM,MAAM,uBAAuB;AAE/B,kEAAkE;AAClE,gBAAgB;AAEhB,6EAA6E;AAC7E,kBAAkB;AAElB,4EAA4E;AAC5E,kBAAkB;AAElB,mEAAmE;AACnE,sBAAsB;AAEtB,uDAAuD;AACvD,WAAW,CAAC;AAGhB,0DAA0D;AAC1D,MAAM,WAAW,wBAAwB;IAErC,8CAA8C;IAC9C,KAAK,EAAQ,MAAM,CAAC;IAEpB,yDAAyD;IACzD,KAAK,CAAC,EAAO,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,SAAS,CAAC,EAAG,MAAM,CAAC;IAEpB,MAAM,EAAO,uBAAuB,CAAC;IAErC,2EAA2E;IAC3E,OAAO,CAAC,EAAK,MAAM,CAAC;CAEvB;AAGD,0CAA0C;AAC1C,MAAM,MAAM,wBAAwB;AAEhC,iEAAiE;AACjE,UAAU;AAEV,gCAAgC;AAChC,UAAU;AAEV,sDAAsD;AACtD,WAAW;AAEX,4DAA4D;AAC5D,WAAW,CAAC;AAGhB,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAO,wBAAwB,CAAC;IACtC,UAAU,EAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC7C,UAAU,EAAG,MAAM,CAAC;CACvB;AAGD,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAO,MAAM,CAAC;IACnB,QAAQ,EAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AA8RD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC,CA6CnG;AAiID;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,GAAG,yBAAyB,CAalG;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAY,SAAS,CAAC,UAAU,EACxC,iBAAiB,EAAG,SAAS,CAAC,UAAU,GAAG,yBAAyB,CAa5G"}
@@ -1 +1 @@
1
- {"version":3,"file":"OCMF.d.ts","sourceRoot":"","sources":["../src/OCMF.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OCMF.d.ts","sourceRoot":"","sources":["../src/OCMF.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,40 @@ export declare class OCMFBonnTariffParseError extends Error {
27
27
  readonly tariffText: string;
28
28
  constructor(tariffText: string, message: string);
29
29
  }
30
+ /**
31
+ * The separator between the tariffs of an OCMF "TT" field that records a tariff
32
+ * change.
33
+ *
34
+ * A vertical bar is also what separates the three parts of the OCMF envelope,
35
+ * but "TT" lives inside the JSON payload, and the payload is read by tracking
36
+ * the brace depth of the JSON rather than by splitting the envelope on bars -
37
+ * so a bar inside this field reaches a reader intact. A reader that does split
38
+ * the envelope naively must use the FIRST and the LAST bar, never the count.
39
+ */
40
+ export declare const OCMFBonnTariffSeparator = "|";
41
+ /**
42
+ * The tariffs of one OCMF "TT" field, in the order they took effect.
43
+ *
44
+ * The Bonner Eichrechtstage define a tariff text for ONE tariff, which is all a
45
+ * document needs as long as the tariff does not change. It can: OCMF has a
46
+ * reading reason for exactly that, TX "T". This is the extension of that format
47
+ * for the case - the tariffs that have been in effect so far, separated by a
48
+ * vertical bar and in chronological order:
49
+ *
50
+ * 001;EUR;0;35;0;0
51
+ * 001;EUR;0;35;0;0|001;EUR;0;25;0;0
52
+ * 001;EUR;0;35;0;0|001;EUR;0;25;0;0|001;EUR;0;35;0;0
53
+ *
54
+ * The list grows with the session, so the last entry is the tariff in effect at
55
+ * the document's last reading and the entries before it are the history that
56
+ * led there. A tariff that comes back is written again rather than referenced:
57
+ * the position in the list is what pairs an entry with a TX "T" reading, so the
58
+ * third document above states three tariff periods, not two distinct tariffs.
59
+ *
60
+ * A field naming a single tariff parses as a list of one, which is what every
61
+ * document of a session with an unchanging tariff carries.
62
+ */
63
+ export declare function parseOCMFBonnTariffTexts(tariffText: string): Array<IOCMFBonnTariff>;
30
64
  export declare function parseOCMFBonnTariffText(tariffText: string): IOCMFBonnTariff;
31
65
  export declare function tryParseOCMFBonnTariffText(tariffText: string): IOCMFBonnTariff | undefined;
32
66
  export declare function ocmfBonnTariffToChargingTariff(tariff: IOCMFBonnTariff): IChargingTariff;
@@ -1 +1 @@
1
- {"version":3,"file":"OCMF_BET_TariffTextExtension.d.ts","sourceRoot":"","sources":["../src/OCMF_BET_TariffTextExtension.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACR,eAAe,EAGlB,MAAM,+BAA+B,CAAC;AAGvC,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAa,MAAM,CAAC;IACvB,IAAI,EAAY,kBAAkB,CAAC;IACnC,QAAQ,EAAQ,KAAK,CAAC;IACtB,aAAa,EAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,oBAAoB,EAAY,MAAM,CAAC;IACvC,yBAAyB,EAAO,MAAM,CAAC;IACvC,sBAAsB,EAAU,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,oBAAoB,EAAY,MAAM,CAAC;IACvC,yBAAyB,EAAO,MAAM,CAAC;IACvC,8BAA8B,EAAE,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,qBAAqB,EAAW,MAAM,CAAC;CAC1C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,CAAC;AAGjD,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAK,MAAM;CAOjC;AAqBD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAqD3E;AAGD,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAY1F;AAyBD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAkDvF"}
1
+ {"version":3,"file":"OCMF_BET_TariffTextExtension.d.ts","sourceRoot":"","sources":["../src/OCMF_BET_TariffTextExtension.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACR,eAAe,EAGlB,MAAM,+BAA+B,CAAC;AAGvC,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAa,MAAM,CAAC;IACvB,IAAI,EAAY,kBAAkB,CAAC;IACnC,QAAQ,EAAQ,KAAK,CAAC;IACtB,aAAa,EAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,oBAAoB,EAAY,MAAM,CAAC;IACvC,yBAAyB,EAAO,MAAM,CAAC;IACvC,sBAAsB,EAAU,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,oBAAoB,EAAY,MAAM,CAAC;IACvC,yBAAyB,EAAO,MAAM,CAAC;IACvC,8BAA8B,EAAE,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,IAAI,EAA4B,KAAK,CAAC;IACtC,qBAAqB,EAAW,MAAM,CAAC;CAC1C;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,CAAC;AAGjD,qBAAa,wBAAyB,SAAQ,KAAK;IAE/C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAK,MAAM;CAOjC;AAqBD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAG3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,CAEnF;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAqD3E;AAGD,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAY1F;AAyBD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAkDvF"}
@@ -18,7 +18,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
18
18
  var __getProtoOf = Object.getPrototypeOf;
19
19
  var __hasOwnProp = Object.prototype.hasOwnProperty;
20
20
  var __commonJS = (cb, mod) => function __require() {
21
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
21
+ try {
22
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
23
+ } catch (e) {
24
+ throw mod = 0, e;
25
+ }
22
26
  };
23
27
  var __export = (target, all) => {
24
28
  for (var name in all)
@@ -7228,6 +7232,10 @@ function parseCents(value, tariffText, fieldName) {
7228
7232
  throw new OCMFBonnTariffParseError(tariffText, `${fieldName} is outside the supported numeric range`);
7229
7233
  return parsedValue;
7230
7234
  }
7235
+ var OCMFBonnTariffSeparator = "|";
7236
+ function parseOCMFBonnTariffTexts(tariffText) {
7237
+ return tariffText.split(OCMFBonnTariffSeparator).map(parseOCMFBonnTariffText);
7238
+ }
7231
7239
  function parseOCMFBonnTariffText(tariffText) {
7232
7240
  const fields = tariffText.split(";");
7233
7241
  const code = fields[0];
@@ -8685,7 +8693,13 @@ var OCMF = class {
8685
8693
  for (const ocmfJSONDocument of ocmfJSONDocuments) {
8686
8694
  try {
8687
8695
  const groupingKey = (ocmfJSONDocument.payload.FV ?? "") + "|" + (ocmfJSONDocument.payload.GI ?? "") + "|" + (ocmfJSONDocument.payload.GS ?? "") + "|" + (ocmfJSONDocument.payload.GV ?? "") + "|" + (ocmfJSONDocument.payload.MV ?? "") + "|" + (ocmfJSONDocument.payload.MM ?? "") + "|" + (ocmfJSONDocument.payload.MS ?? "") + "|" + (ocmfJSONDocument.payload.MF ?? "") + "|" + (ocmfJSONDocument.payload.IS === true ? "1|" : "0|") + (ocmfJSONDocument.payload.IL ?? "") + "|" + //(ocmfJSONDocument.payload.IF ?? "") + "|" +
8688
- (ocmfJSONDocument.payload.IT ?? "") + "|" + (ocmfJSONDocument.payload.ID ?? "") + "|" + (ocmfJSONDocument.payload.TT ?? "") + "|" + (ocmfJSONDocument.payload.CF ?? "") + "|" + (ocmfJSONDocument.payload.CT ?? "") + "|" + (ocmfJSONDocument.payload.CI ?? "");
8696
+ (ocmfJSONDocument.payload.IT ?? "") + "|" + (ocmfJSONDocument.payload.ID ?? "") + "|" + // "TT" is deliberately NOT part of this key. A tariff may change
8697
+ // during a charging session - OCMF has a reading reason of its own
8698
+ // for it, TX "T" - and the documents before and after such a change
8699
+ // belong to one session, not to two. Grouping by "TT" split them,
8700
+ // and since only the first group is returned below, the readings
8701
+ // metered under every later tariff were dropped without a word.
8702
+ (ocmfJSONDocument.payload.CF ?? "") + "|" + (ocmfJSONDocument.payload.CT ?? "") + "|" + (ocmfJSONDocument.payload.CI ?? "");
8689
8703
  if (!ocmfJSONDocumentGroups.has(groupingKey))
8690
8704
  ocmfJSONDocumentGroups.set(groupingKey, new Array());
8691
8705
  ocmfJSONDocumentGroups.get(groupingKey)?.push(ocmfJSONDocument);
@@ -12522,6 +12536,7 @@ function collectDocumentPublicKeys(Document) {
12522
12536
  const evse = asJSONObject(chargingStation?.["EVSE"]);
12523
12537
  collectFrom(asJSONObject(Document["chargingStationOperator"])?.["publicKeys"]);
12524
12538
  collectFrom(asJSONObject(evse?.["energyMeter"])?.["publicKeys"]);
12539
+ collectFrom(asJSONObject(Document["gridOperator"])?.["publicKeys"]);
12525
12540
  return publicKeys;
12526
12541
  }
12527
12542
  function verifyDocumentSignature(Document, Signature, Index, PublicKeys, KeyIdGeneration) {
@@ -12591,10 +12606,27 @@ function verifyDocumentSignatures(Document) {
12591
12606
  const signatures = Document["signatures"];
12592
12607
  if (!Array.isArray(signatures) || signatures.length === 0)
12593
12608
  return { status: "unsigned", signatures: [], validCount: 0 };
12594
- const keyIdGeneration = asStringArray(Document["keyIdGeneration"]) ?? defaultKeyIdGeneration;
12595
- const publicKeys = collectDocumentPublicKeys(Document);
12596
- const results = signatures.map(
12597
- (signature, index) => verifyDocumentSignature(Document, signature, index, publicKeys, keyIdGeneration)
12609
+ return verifySignaturesOf(
12610
+ Document,
12611
+ signatures,
12612
+ collectDocumentPublicKeys(Document),
12613
+ asStringArray(Document["keyIdGeneration"]) ?? defaultKeyIdGeneration
12614
+ );
12615
+ }
12616
+ function verifyEmbeddedSignatures(Embedded, EnclosingDocument) {
12617
+ const signatures = Embedded["signatures"];
12618
+ if (!Array.isArray(signatures) || signatures.length === 0)
12619
+ return { status: "unsigned", signatures: [], validCount: 0 };
12620
+ return verifySignaturesOf(
12621
+ Embedded,
12622
+ signatures,
12623
+ collectDocumentPublicKeys(EnclosingDocument),
12624
+ asStringArray(EnclosingDocument["keyIdGeneration"]) ?? defaultKeyIdGeneration
12625
+ );
12626
+ }
12627
+ function verifySignaturesOf(SignedObject, Signatures, PublicKeys, KeyIdGeneration) {
12628
+ const results = Signatures.map(
12629
+ (signature, index) => verifyDocumentSignature(SignedObject, signature, index, PublicKeys, KeyIdGeneration)
12598
12630
  );
12599
12631
  const validCount = results.filter((result) => result.status === "validSignature").length;
12600
12632
  return {
@@ -13647,6 +13679,11 @@ var Chargy = class {
13647
13679
  else if (processedFileResult.eMobilityProviders)
13648
13680
  for (const eMobilityProvider of processedFileResult.eMobilityProviders)
13649
13681
  mergedCTR.eMobilityProviders.push(eMobilityProvider);
13682
+ if (!mergedCTR.gridOperators)
13683
+ mergedCTR.gridOperators = processedFileResult.gridOperators;
13684
+ else if (processedFileResult.gridOperators)
13685
+ for (const gridOperator of processedFileResult.gridOperators)
13686
+ mergedCTR.gridOperators.push(gridOperator);
13650
13687
  if (!mergedCTR.mediationServices)
13651
13688
  mergedCTR.mediationServices = processedFileResult.mediationServices;
13652
13689
  else if (processedFileResult.mediationServices)
@@ -13713,7 +13750,9 @@ var Chargy = class {
13713
13750
  //#region (private) verifyLiveLinkSignatures(LiveLink)
13714
13751
  // A live link may be signed as a whole by the operator, which is what ties
13715
13752
  // the transport URLs and the listed public keys to whoever signed them.
13716
- // Those signatures are verified whenever the document carries any.
13753
+ // Those signatures are verified whenever the document carries any, and so
13754
+ // are the signatures its legally relevant log messages carry over
13755
+ // themselves - see verifyLiveLinkLogMessages().
13717
13756
  //
13718
13757
  // Nothing here rejects a document. An unsigned live link, an unknown key or
13719
13758
  // even a signature that does not match is reported as a warning and the
@@ -13757,11 +13796,62 @@ var Chargy = class {
13757
13796
  break;
13758
13797
  }
13759
13798
  }
13799
+ this.verifyLiveLinkLogMessages(LiveLink, warn);
13760
13800
  LiveLink.signatureVerification = result;
13761
13801
  if (warnings.length > 0)
13762
13802
  LiveLink.warnings = [...LiveLink.warnings ?? [], ...warnings];
13763
13803
  }
13764
13804
  //#endregion
13805
+ //#region (private) verifyLiveLinkLogMessages(LiveLink, Warn)
13806
+ // A legally relevant log message - a grid operator's power constraint, say -
13807
+ // carries signatures of its own, made by whoever sent it rather than by
13808
+ // whoever assembled the document around it. The two prove different things:
13809
+ // the document signature says the message has not been changed since the
13810
+ // operator collected it, the message signature says the grid operator is
13811
+ // who asked for the constraint. Only the second one answers the question the
13812
+ // message exists for, which is why a dip in the charging curve has a signed
13813
+ // explanation next to it.
13814
+ //
13815
+ // The keys and the keyIdGeneration come from the live link, the signatures
13816
+ // from the message - see verifyEmbeddedSignatures().
13817
+ //
13818
+ // Nothing here rejects a document either. A message that does not verify is
13819
+ // reported and stays where it is; what a reader makes of that is the
13820
+ // reader's decision.
13821
+ verifyLiveLinkLogMessages(LiveLink, Warn) {
13822
+ const logMessages = LiveLink.legallyRelevantLogMessages;
13823
+ if (!Array.isArray(logMessages))
13824
+ return;
13825
+ for (const logMessage of logMessages) {
13826
+ const message = asJSONObject(logMessage);
13827
+ if (message === void 0)
13828
+ continue;
13829
+ const result = verifyEmbeddedSignatures(message, LiveLink);
13830
+ if (result.status === "unsigned") {
13831
+ Warn("LogMessageSignature_Missing", "low" /* low */);
13832
+ continue;
13833
+ }
13834
+ for (const signature of result.signatures) {
13835
+ switch (signature.status) {
13836
+ case "validSignature":
13837
+ break;
13838
+ case "invalidSignature":
13839
+ Warn("LogMessageSignature_Mismatch", "high" /* high */);
13840
+ break;
13841
+ case "unknownPublicKey":
13842
+ Warn("LogMessageSignature_UnknownPublicKey", "medium" /* medium */);
13843
+ break;
13844
+ case "unsupportedAlgorithm":
13845
+ Warn("LogMessageSignature_UnsupportedAlgorithm", "medium" /* medium */);
13846
+ break;
13847
+ case "malformed":
13848
+ Warn("LogMessageSignature_Malformed", "medium" /* medium */);
13849
+ break;
13850
+ }
13851
+ }
13852
+ }
13853
+ }
13854
+ //#endregion
13765
13855
  //#region (private) collectLiveLinkMeterValueKeys(LiveLink)
13766
13856
  // Every public key of the document that is allowed to sign meter values.
13767
13857
  // A charging session is regularly signed by more than one of them: the
@@ -14118,6 +14208,11 @@ var Chargy = class {
14118
14208
  else if (ctr.eMobilityProviders)
14119
14209
  for (const eMobilityProvider of ctr.eMobilityProviders)
14120
14210
  mergedCTR.eMobilityProviders.push(eMobilityProvider);
14211
+ if (!mergedCTR.gridOperators)
14212
+ mergedCTR.gridOperators = ctr.gridOperators;
14213
+ else if (ctr.gridOperators)
14214
+ for (const gridOperator of ctr.gridOperators)
14215
+ mergedCTR.gridOperators.push(gridOperator);
14121
14216
  if (!mergedCTR.mediationServices)
14122
14217
  mergedCTR.mediationServices = ctr.mediationServices;
14123
14218
  else if (ctr.mediationServices)
@@ -14141,6 +14236,6 @@ buffer/index.js:
14141
14236
  *)
14142
14237
  */
14143
14238
 
14144
- export { ACrypt, Alfen, AlfenCrypt01, BSMCrypt01, CanonicalJSONError, ChargeIT, ChargePoint, ChargePointCrypt01, IChargeTransparencyLiveLink_exports as ChargeTransparencyLiveLink, ChargeTransparencyLiveLinkContext, IChargeTransparencyRecord_exports as ChargeTransparencyRecord, Chargy, chargyInterfaces_exports as ChargyInterfaces, Clone, CloneCTR, ConcatenateBuffers, CreateDiv, CreateDiv2, CreateError, CreateWarning, CryptoAlgorithms, CryptoHashAlgorithms, DayOfWeek, DisplayPrefixes, EDL40, EDL40Crypt01, EDL40ValidationError, EDL40_OBIS, EDL40_SESSION_CONTEXT, EDL40_SIGNATURE_CONTEXT, EMHCrypt01, ErrorLevel, GDFCrypt01, IECCurves, IEncoding, InformationRelevance, InformationRelevanceToString, IsAChargeTransparencyLiveLink, IsAChargeTransparencyRecord, IsAPublicKey, IsAPublicKeyLookup, IsAPublicKeySignature, IsAPublicKeyXY, IsASessionCryptoResult, IsAURL, IsNullOrEmpty, IsValidURL, JSONSignatureVerificationStatus, MENNEKES_EDL40_OBIS, MENNEKES_EDL40_XMLNS, Mennekes, MennekesCrypt01, OBIS2Hex, OBIS2MeasurementName, OBIS_RegExpr, OCMF, OCMFBonnTariffParseError, OCMFTransactionTypes, OCMF_SIGNATURE_ALGORITHMS, OCMFv1_x, OCPI, OIDInfo, PCDF, PCDFCrypt01, PCDFParseError, PCDFValidationError, PCDF_FIELD_ORDER, PCDF_PREFIX, PTB, ParseJSON_LD, PublicKeyFormats, IPublicKeyInfo_exports as PublicKeyInfo, SAFEXML, SessionVerificationResult, SetHex, SetInt8, SetText, SetText_withLength, SetTimestamp, SetTimestamp32, SetUInt32, SetUInt32_withCode, SetUInt64, SetUInt64D, SignMessage, SignatureFormats, IURL_exports as SimpleURL, TimeStatusTypes, URLContext, UTC2human, VerificationResult, VerifyJSONMessageSignatures, WarningLevel, WhenNullOrEmpty, XMLContainer, asJSONArray, asJSONObject, asNumber, asString, base64ToBytes, buf2hex, buildEDL40Signature, buildIsaSignature, buildMennekesSignatureData, bytesToBase64, bytesToHex, canParseEDL40, canonicalJSONBytes, canonicalJSONStringify, cleanHex, closeFullscreen, collectDocumentPublicKeys, createCompatibleCurve, createHexString, createLegacyP192Curve, dateToMennekesLocalEpochSeconds, decodeSmlMessages, defaultRefreshSeconds, extractMennekesChargingProcesses, findEntryByObis, findGetListRes, firstKey, firstValue, generateSignatureKeyPair, getArrayElement, getArrayLikeElement, getDirectChildByLocalName, getDirectChildrenByLocalName, getElementsByLocalName, getFirstArrayElement, getInt16Bytes, getInt32Bytes, getInt64Bytes, getInt8Bytes, getLastArrayElement, getOCMFSignatureDisplay, getSignatureSuite, getTrimmedTextContent, hashFile, hex2bin, hex32, hexToArrayBuffer, hexToBytes, intFromBytes, isConnector, isCustomHeaderValue, isCustomHeaderValueProvider, isCustomHeaders, isEncodedValue, isGeoLocation, isI18NString, isICryptoResult, isIFileInfo, isISessionCryptoResult1, isISessionCryptoResult2, isJSONLDObject, isMandatoryArrayOfStrings, isMandatoryBoolean, isMandatoryDecimal, isMandatoryJSONArray, isMandatoryJSONObject, isMandatoryNumber, isMandatoryString, isMandatoryURL, isOIDInfo, isObject, isOptionalArrayOfStrings, isOptionalDecimal, isOptionalJSONArray, isOptionalJSONArrayError, isOptionalJSONArrayOk, isOptionalJSONObject, isOptionalNumber, isOptionalString, isOptionalStringArray, isOptionalStringOrOIDInfo, isOptionalURL, isPCDFText, isPublicKeySubject, isString, isStringArray, isStringOrOIDInfo, isStringOrStringArray, isTOTPConfig, isLiveTransport as isTransport, isURL, isaListNameContext, jsonPrettyPrinter, measurementName2human, meterTimeZone, normalizePCDFPublicKeyHex, normalizeXMLText, ocmfBonnTariffToChargingTariff, openFullscreen, pad, parseAndVerifyJSONSignatures, parseDescription, parseEDL40, parseHexString, parseMennekesXMLDocument, parseNumber, parseOBIS, parseOCMFBonnTariffText, parsePCDFDocument, parsePCDFPublicKey, parsePCDFSignature, parseSmlTime, parseUTC, readQRCodeTextFromImage, readQRCodeTextFromImageData, readTLV, secp224k1, setUILocale, sha256, sha256____, sha384, sha384____, sha512, sha512____, signJSONMessage, signMessage, stripPCDFControlCharacters, stripTransport, time2human, timeZoneOffsetMinutes, toArrayBuffer, toSessionVerificationResults, toUint8Array, transformEDL40Status, tryParseOCMFBonnTariffText, unquotePCDFText, validatePCDFFields, verifyDocumentSignatures, verifyEDL40Document, verifyJSONMessageSignatureResults, verifyJSONMessageSignatures, verifyJSONSignature, verifyJSONSignatureResult, verifyPCDFDocument };
14239
+ export { ACrypt, Alfen, AlfenCrypt01, BSMCrypt01, CanonicalJSONError, ChargeIT, ChargePoint, ChargePointCrypt01, IChargeTransparencyLiveLink_exports as ChargeTransparencyLiveLink, ChargeTransparencyLiveLinkContext, IChargeTransparencyRecord_exports as ChargeTransparencyRecord, Chargy, chargyInterfaces_exports as ChargyInterfaces, Clone, CloneCTR, ConcatenateBuffers, CreateDiv, CreateDiv2, CreateError, CreateWarning, CryptoAlgorithms, CryptoHashAlgorithms, DayOfWeek, DisplayPrefixes, EDL40, EDL40Crypt01, EDL40ValidationError, EDL40_OBIS, EDL40_SESSION_CONTEXT, EDL40_SIGNATURE_CONTEXT, EMHCrypt01, ErrorLevel, GDFCrypt01, IECCurves, IEncoding, InformationRelevance, InformationRelevanceToString, IsAChargeTransparencyLiveLink, IsAChargeTransparencyRecord, IsAPublicKey, IsAPublicKeyLookup, IsAPublicKeySignature, IsAPublicKeyXY, IsASessionCryptoResult, IsAURL, IsNullOrEmpty, IsValidURL, JSONSignatureVerificationStatus, MENNEKES_EDL40_OBIS, MENNEKES_EDL40_XMLNS, Mennekes, MennekesCrypt01, OBIS2Hex, OBIS2MeasurementName, OBIS_RegExpr, OCMF, OCMFBonnTariffParseError, OCMFBonnTariffSeparator, OCMFTransactionTypes, OCMF_SIGNATURE_ALGORITHMS, OCMFv1_x, OCPI, OIDInfo, PCDF, PCDFCrypt01, PCDFParseError, PCDFValidationError, PCDF_FIELD_ORDER, PCDF_PREFIX, PTB, ParseJSON_LD, PublicKeyFormats, IPublicKeyInfo_exports as PublicKeyInfo, SAFEXML, SessionVerificationResult, SetHex, SetInt8, SetText, SetText_withLength, SetTimestamp, SetTimestamp32, SetUInt32, SetUInt32_withCode, SetUInt64, SetUInt64D, SignMessage, SignatureFormats, IURL_exports as SimpleURL, TimeStatusTypes, URLContext, UTC2human, VerificationResult, VerifyJSONMessageSignatures, WarningLevel, WhenNullOrEmpty, XMLContainer, asJSONArray, asJSONObject, asNumber, asString, base64ToBytes, buf2hex, buildEDL40Signature, buildIsaSignature, buildMennekesSignatureData, bytesToBase64, bytesToHex, canParseEDL40, canonicalJSONBytes, canonicalJSONStringify, cleanHex, closeFullscreen, collectDocumentPublicKeys, createCompatibleCurve, createHexString, createLegacyP192Curve, dateToMennekesLocalEpochSeconds, decodeSmlMessages, defaultRefreshSeconds, extractMennekesChargingProcesses, findEntryByObis, findGetListRes, firstKey, firstValue, generateSignatureKeyPair, getArrayElement, getArrayLikeElement, getDirectChildByLocalName, getDirectChildrenByLocalName, getElementsByLocalName, getFirstArrayElement, getInt16Bytes, getInt32Bytes, getInt64Bytes, getInt8Bytes, getLastArrayElement, getOCMFSignatureDisplay, getSignatureSuite, getTrimmedTextContent, hashFile, hex2bin, hex32, hexToArrayBuffer, hexToBytes, intFromBytes, isConnector, isCustomHeaderValue, isCustomHeaderValueProvider, isCustomHeaders, isEncodedValue, isGeoLocation, isI18NString, isICryptoResult, isIFileInfo, isISessionCryptoResult1, isISessionCryptoResult2, isJSONLDObject, isMandatoryArrayOfStrings, isMandatoryBoolean, isMandatoryDecimal, isMandatoryJSONArray, isMandatoryJSONObject, isMandatoryNumber, isMandatoryString, isMandatoryURL, isOIDInfo, isObject, isOptionalArrayOfStrings, isOptionalDecimal, isOptionalJSONArray, isOptionalJSONArrayError, isOptionalJSONArrayOk, isOptionalJSONObject, isOptionalNumber, isOptionalString, isOptionalStringArray, isOptionalStringOrOIDInfo, isOptionalURL, isPCDFText, isPublicKeySubject, isString, isStringArray, isStringOrOIDInfo, isStringOrStringArray, isTOTPConfig, isLiveTransport as isTransport, isURL, isaListNameContext, jsonPrettyPrinter, measurementName2human, meterTimeZone, normalizePCDFPublicKeyHex, normalizeXMLText, ocmfBonnTariffToChargingTariff, openFullscreen, pad, parseAndVerifyJSONSignatures, parseDescription, parseEDL40, parseHexString, parseMennekesXMLDocument, parseNumber, parseOBIS, parseOCMFBonnTariffText, parseOCMFBonnTariffTexts, parsePCDFDocument, parsePCDFPublicKey, parsePCDFSignature, parseSmlTime, parseUTC, readQRCodeTextFromImage, readQRCodeTextFromImageData, readTLV, secp224k1, setUILocale, sha256, sha256____, sha384, sha384____, sha512, sha512____, signJSONMessage, signMessage, stripPCDFControlCharacters, stripTransport, time2human, timeZoneOffsetMinutes, toArrayBuffer, toSessionVerificationResults, toUint8Array, transformEDL40Status, tryParseOCMFBonnTariffText, unquotePCDFText, validatePCDFFields, verifyDocumentSignatures, verifyEDL40Document, verifyEmbeddedSignatures, verifyJSONMessageSignatureResults, verifyJSONMessageSignatures, verifyJSONSignature, verifyJSONSignatureResult, verifyPCDFDocument };
14145
14240
  //# sourceMappingURL=index.js.map
14146
14241
  //# sourceMappingURL=index.js.map