@open-charging-cloud/chargy-core 0.15.1 → 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,196 @@ 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
+
91
+ ## [0.16.0] - 2026-09-08
92
+
93
+ ### Added
94
+
95
+ - **A grid operator is a party to a charging session.** When the grid asks a
96
+ station to charge more slowly, the session's power drops for a reason that is
97
+ neither the car's nor the station's, and without the constraint and the key
98
+ it was signed with that dip is indistinguishable from a fault. `IGridOperator`
99
+ carries the identity and the keys to tell the two apart: a charging station
100
+ operator minus everything about charging infrastructure, because a grid
101
+ operator runs no pools, stations or tariffs. `@id` is all it requires. A live
102
+ link names one in `gridOperator`, a charge transparency record several in
103
+ `gridOperators` - a live link describes one ongoing session, a record may
104
+ span several grids.
105
+
106
+ - **`signGridPowerConstraints` is the key usage a grid operator signs under.**
107
+ It joins `signCTRs` for whole records and `signMeterValues` /
108
+ `signEnergyMeterValues` for readings. A constraint is signed with every key
109
+ the operator holds for that usage, so a verifier supporting either algorithm
110
+ can check it.
111
+
112
+ - **The OCMF-Test-01 series carries a power constraint.** It is now a five
113
+ minute session in 35 documents instead of a three minute one in twenty, and
114
+ the grid operator limits the charging power to 6 kW for one minute in the
115
+ middle of it. The constraint is a `legallyRelevantLogMessage` signed by
116
+ `DE*VEN` under `signGridPowerConstraints` with one ECDSA and one Ed25519 key,
117
+ the meter takes an extra reading where it begins and where it ends, the power
118
+ in between stays below the limit, and the charging periods are cut at both
119
+ ends of it - which is the whole point of the fixture: a dip in the curve with
120
+ a signed explanation next to it. The generator gained
121
+ `OCMF-Test-01__LRLMs.json`, the log messages whose times are relative to the
122
+ start reading, and `--log-messages` / `--no-log-messages` to steer them.
123
+
124
+ - **Every optional property of the live link document may now be explicitly
125
+ `undefined`.**
126
+ Under `exactOptionalPropertyTypes` a bare `?:` means the property may be
127
+ omitted but not set to `undefined`, which made building a live link from
128
+ optional sources need a conditional per property. `description`, `timeSource`,
129
+ `chargingStationOperator`, `chargingStation`, `chargingSessionId`,
130
+ `eMobilityProvider`, `contract`, `warnings` and `signatureVerification` now
131
+ say `| undefined` like their neighbours already did.
132
+
133
+ ### Fixed
134
+
135
+ - **The live link documentation described a format two releases old.** Every
136
+ one of these would have produced a document the current code turns away, and
137
+ the format documentation is where a producer looks first:
138
+
139
+ - The TOTP configuration was documented as `initialSharedSecret`, renamed to
140
+ `sharedSecret` in 0.15.0. `isTOTPConfig()` requires the new name, so a
141
+ transport copied from the documentation failed `isLiveTransport()` and was
142
+ dropped by a filtering reader without a word - the same failure 0.15.1
143
+ fixed in the fixtures, still sitting in the prose.
144
+ - Transports named their endpoint in `url`, removed in 0.15.0. A transport
145
+ copied from the documentation was well-formed and named no endpoint at all.
146
+ - The minimal document had no `created` and was described as the smallest
147
+ recognised live link. Since 0.15.0 it is not a live link at all:
148
+ recognition requires `@context`, `created` and `liveTransports`, and the
149
+ documentation still said `@context` alone decided it.
150
+ - Reading a document was described as filling in a missing `created`. It
151
+ stopped doing that in 0.15.0, because that timestamp recorded when the
152
+ document was *read*.
153
+ - The TOTP table listed two properties of seven and declared `timeStep`
154
+ required, which it is not; the paragraph below it said the format does not
155
+ specify a hash algorithm, digits or encoding, which it has since done in
156
+ `hashAlgorithm`, `totpLength` and `alphabet`.
157
+ - `refresh` was said to be validated by `IsAChargeTransparencyLiveLink()` and
158
+ the point-of-use guards to include an `isTransport`. Both are
159
+ `isLiveTransport()` now.
160
+
161
+ ### Changed
162
+
163
+ - **The format documentation lists the properties a live link declares.** The
164
+ interfaces grew in 0.14.0 and 0.15.0 without the documentation following, so
165
+ `chargingSessionId`, `eMobilityProvider`, `chargingPeriods`,
166
+ `legallyRelevantLogMessages` and `supportMessages` appeared nowhere, while
167
+ nine properties that *are* declared were still listed as carried by the
168
+ fixtures and unvalidated. That section now holds what it says: `@id`,
169
+ `imageURLs` and the superseded `geoLocation` and `connector`.
170
+
171
+ - **An operator's `contact`, `support` and `privacy` are optional.**
172
+ `IChargingStationOperator` had required all three since it was written, and
173
+ `IGridOperator` inherited that when it took its shape. No document in the
174
+ repository carries any of them, nothing validates them, and requiring them
175
+ forced anyone building an operator in TypeScript to invent three properties
176
+ the format's own fixtures do without.
177
+
178
+ - **The fixtures write an operator's `name` as the `I18NString` it is typed
179
+ as.** The template said `"GraphDefined"` and `"Vanaheimr Electric"` where the
180
+ interfaces say a language-tag-to-string object, so the one document meant to
181
+ show the format did not follow it. It is `{ "en": ... }` now, and the series
182
+ is regenerated.
183
+
184
+ - **`ILegallyRelevantLogMessage` names its `text` before its `data`.** The
185
+ message comes before the payload that qualifies it, the way `ISupportMessage`
186
+ already had it.
187
+
188
+ - **`CTR_Format.md` lists `gridOperators`** among the top-level properties of a
189
+ charge transparency record.
190
+
191
+ - **Two live link tests no longer spell out what the generator regenerates.**
192
+ One asserted `created` to be a fixed timestamp and one the meter values to
193
+ number twenty; both are properties of the moment the fixture was generated
194
+ and of the session parameters, so both broke the first time the series was
195
+ regenerated. They now compare `created` against what the document itself
196
+ states - which is the actual assertion, that reading neither fills in nor
197
+ replaces it - and count the OCMF documents rather than naming a number.
198
+
199
+
10
200
  ## [0.15.1] - 2026-09-07
11
201
 
12
202
  ### Fixed
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.15.1 --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