@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 +81 -0
- package/README.md +2 -2
- package/dist/DocumentSignatures.d.ts +20 -4
- package/dist/DocumentSignatures.d.ts.map +1 -1
- package/dist/OCMF.d.ts.map +1 -1
- package/dist/OCMF_BET_TariffTextExtension.d.ts +34 -0
- package/dist/OCMF_BET_TariffTextExtension.d.ts.map +1 -1
- package/dist/browser/index.js +103 -8
- package/dist/browser/index.js.map +1 -1
- package/dist/chargy.d.ts +1 -0
- package/dist/chargy.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/node/index.js +98 -7
- package/dist/node/index.js.map +1 -1
- package/i18n.json +25 -0
- package/package.json +6 -3
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.
|
|
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
|
|
52
|
-
* operator,
|
|
53
|
-
*
|
|
54
|
-
*
|
|
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
|
|
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"}
|
package/dist/OCMF.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/browser/index.js
CHANGED
|
@@ -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
|
-
|
|
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 ?? "") + "|" +
|
|
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
|
-
|
|
12595
|
-
|
|
12596
|
-
|
|
12597
|
-
(
|
|
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
|