@open-charging-cloud/chargy-core 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +45 -30
  2. package/dist/ACrypt.d.ts +21 -0
  3. package/dist/ACrypt.d.ts.map +1 -0
  4. package/dist/Alfen.d.ts +64 -0
  5. package/dist/Alfen.d.ts.map +1 -0
  6. package/dist/BSMCrypt01.d.ts +77 -0
  7. package/dist/BSMCrypt01.d.ts.map +1 -0
  8. package/dist/CanonicalJSON.d.ts +14 -0
  9. package/dist/CanonicalJSON.d.ts.map +1 -0
  10. package/dist/CryptoUtils.d.ts +47 -0
  11. package/dist/CryptoUtils.d.ts.map +1 -0
  12. package/dist/EMHCrypt01.d.ts +40 -0
  13. package/dist/EMHCrypt01.d.ts.map +1 -0
  14. package/dist/GDFCrypt01.d.ts +31 -0
  15. package/dist/GDFCrypt01.d.ts.map +1 -0
  16. package/dist/Mennekes.d.ts +87 -0
  17. package/dist/Mennekes.d.ts.map +1 -0
  18. package/dist/OCMF.d.ts +179 -0
  19. package/dist/OCMF.d.ts.map +1 -0
  20. package/dist/OCPI.d.ts +11 -0
  21. package/dist/OCPI.d.ts.map +1 -0
  22. package/dist/PCDF.d.ts +119 -0
  23. package/dist/PCDF.d.ts.map +1 -0
  24. package/dist/QIDigital_DCC.d.ts +398 -0
  25. package/dist/QIDigital_DCC.d.ts.map +1 -0
  26. package/dist/QIDigital_DCoA.d.ts +7 -0
  27. package/dist/QIDigital_DCoA.d.ts.map +1 -0
  28. package/dist/QIDigital_DCoC.d.ts +7 -0
  29. package/dist/QIDigital_DCoC.d.ts.map +1 -0
  30. package/dist/SAFE_XML.d.ts +35 -0
  31. package/dist/SAFE_XML.d.ts.map +1 -0
  32. package/dist/XMLContainer.d.ts +9 -0
  33. package/dist/XMLContainer.d.ts.map +1 -0
  34. package/dist/chargeIT.d.ts +13 -0
  35. package/dist/chargeIT.d.ts.map +1 -0
  36. package/dist/chargePoint.d.ts +44 -0
  37. package/dist/chargePoint.d.ts.map +1 -0
  38. package/dist/chargy.d.ts +86 -0
  39. package/dist/chargy.d.ts.map +1 -0
  40. package/dist/chargyLib.d.ts +207 -0
  41. package/dist/chargyLib.d.ts.map +1 -0
  42. package/dist/index.d.ts +32 -2354
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/interfaces/IChargeTransparencyLiveLink.d.ts +55 -0
  45. package/dist/interfaces/IChargeTransparencyLiveLink.d.ts.map +1 -0
  46. package/dist/interfaces/IChargeTransparencyRecord.d.ts +112 -0
  47. package/dist/interfaces/IChargeTransparencyRecord.d.ts.map +1 -0
  48. package/dist/interfaces/IPublicKeyInfo.d.ts +26 -0
  49. package/dist/interfaces/IPublicKeyInfo.d.ts.map +1 -0
  50. package/dist/interfaces/chargyInterfaces.d.ts +547 -0
  51. package/dist/interfaces/chargyInterfaces.d.ts.map +1 -0
  52. package/dist/qrCodeReader.d.ts +9 -0
  53. package/dist/qrCodeReader.d.ts.map +1 -0
  54. package/dist/secp224k1.d.ts +30 -0
  55. package/dist/secp224k1.d.ts.map +1 -0
  56. package/dist/verificationResults.d.ts +17 -0
  57. package/dist/verificationResults.d.ts.map +1 -0
  58. package/package.json +86 -84
package/README.md CHANGED
@@ -1,30 +1,45 @@
1
- # Chargy Core TS
2
-
3
- Shared TypeScript core for ChargyDesktopApp, ChargyWebApp, and the future ChargyMobileApp.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- import { Chargy } from "@open-charging-cloud/chargy-core";
9
- import { OCMF } from "@open-charging-cloud/chargy-core";
10
- ```
11
-
12
- The package is published as modern ESM and ships generated TypeScript declarations.
13
-
14
- ## Development
15
-
16
- ```bash
17
- npm install
18
- npm run typecheck
19
- npm test
20
- npm run build
21
- ```
22
-
23
- The build emits the package into `dist/`.
24
-
25
-
26
- ```bash
27
- npm pack --dry-run
28
- npm pack
29
- npm publish
30
- ```
1
+ # Chargy Core TS
2
+
3
+ Shared TypeScript core for ChargyDesktopApp, ChargyWebApp, and the future ChargyMobileApp.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ import { Chargy } from "@open-charging-cloud/chargy-core";
9
+ import { OCMF } from "@open-charging-cloud/chargy-core";
10
+ ```
11
+
12
+ The package is published as modern ESM and ships generated TypeScript declarations.
13
+
14
+ ## Development
15
+
16
+ ```bash
17
+ npm install
18
+ npm run typecheck
19
+ npm test
20
+ npm run build
21
+ ```
22
+
23
+ The build emits the package into `dist/`.
24
+
25
+
26
+ ```bash
27
+ npm version 0.2.0 --no-git-tag-version
28
+ npm run verify
29
+ npm pack --dry-run
30
+ npm pack
31
+ npm login
32
+ npm whoami
33
+ npm publish
34
+ ```
35
+
36
+
37
+ ## Funding
38
+
39
+ This Open Source project is partially funded by the [NGI Zero Commons Fund](https://nlnet.nl/commonsfund/) as part of our [EVQI project](https://nlnet.nl/project/EVQI/).
40
+
41
+ We also appreciate any additional funding and long-term support for the Chargy family, for example via [GitHub Sponsors](https://github.com/sponsors/GraphDefined), as it helps us keep the project sustainable, independent and useful for the entire e-mobility community.
42
+
43
+ <center>
44
+ <img src="images/NGI0_tag.svg" height="30">
45
+ </center>
@@ -0,0 +1,21 @@
1
+ import type { Chargy, EllipticCurve } from './chargy';
2
+ import { secp224k1 } from './secp224k1';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export declare abstract class ACrypt {
6
+ readonly description: string;
7
+ readonly chargy: Chargy;
8
+ readonly curve192r1: EllipticCurve;
9
+ readonly curve224k1: secp224k1;
10
+ readonly curve256r1: EllipticCurve;
11
+ readonly curve384r1: EllipticCurve;
12
+ readonly curve521r1: EllipticCurve;
13
+ constructor(description: string, chargy: Chargy);
14
+ protected CreateLocalizedLine(id: string, value: string | number, valueHEX: string, infoDiv: HTMLDivElement, bufferDiv: HTMLDivElement): void;
15
+ protected CreateLine(id: string, value: string | number, valueHEX: string, infoDiv: HTMLDivElement, bufferDiv: HTMLDivElement): void;
16
+ protected AddToVisualBuffer(valueHEX: string, bufferDiv: HTMLDivElement, lineDiv: HTMLDivElement): void;
17
+ abstract VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
18
+ abstract VerifyMeasurement(measurementValue: chargeTransparencyRecord.IMeasurementValue): Promise<chargyInterfaces.ICryptoResult>;
19
+ abstract ViewMeasurement(measurementValue: chargeTransparencyRecord.IMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, bufferValue: HTMLDivElement, hashedBufferValue: HTMLDivElement, publicKeyValue: HTMLDivElement, signatureExpectedValue: HTMLDivElement, signatureCheckValue: HTMLDivElement): Promise<Error | undefined>;
20
+ }
21
+ //# sourceMappingURL=ACrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ACrypt.d.ts","sourceRoot":"","sources":["../src/ACrypt.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAuB,aAAa,CAAA;AACxD,OAAO,KAAK,gBAAgB,MAAe,+BAA+B,CAAA;AAC1E,OAAO,KAAK,wBAAwB,MAAO,wCAAwC,CAAA;AAGnF,8BAAsB,MAAM;IAIxB,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAQ,MAAM,CAAC;IAE9B,QAAQ,CAAC,UAAU,EAAI,aAAa,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAI,SAAS,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAI,aAAa,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAI,aAAa,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAI,aAAa,CAAC;gBAIzB,WAAW,EAAG,MAAM,EACpB,MAAM,EAAQ,MAAM;IA6BhC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAU,MAAM,EAClB,KAAK,EAAO,MAAM,GAAC,MAAM,EACzB,QAAQ,EAAI,MAAM,EAClB,OAAO,EAAK,cAAc,EAC1B,SAAS,EAAG,cAAc;IAWxD,SAAS,CAAC,UAAU,CAAC,EAAE,EAAU,MAAM,EAClB,KAAK,EAAO,MAAM,GAAC,MAAM,EACzB,QAAQ,EAAI,MAAM,EAClB,OAAO,EAAK,cAAc,EAC1B,SAAS,EAAG,cAAc;IAW/C,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAI,MAAM,EAClB,SAAS,EAAG,cAAc,EAC1B,OAAO,EAAK,cAAc;IA4BtD,QAAQ,CAAC,qBAAqB,CAAC,eAAe,EAAU,wBAAwB,CAAC,gBAAgB,GAAI,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAEnJ,QAAQ,CAAC,iBAAiB,CAAK,gBAAgB,EAAS,wBAAwB,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC;IAK5I,QAAQ,CAAC,eAAe,CAAO,gBAAgB,EAAS,wBAAwB,CAAC,iBAAiB,EACnE,QAAQ,EAAiB,cAAc,EACvC,QAAQ,EAAiB,cAAc,EACvC,OAAO,EAAkB,cAAc,EACvC,WAAW,EAAc,cAAc,EACvC,iBAAiB,EAAQ,cAAc,EACvC,cAAc,EAAW,cAAc,EACvC,sBAAsB,EAAG,cAAc,EACvC,mBAAmB,EAAM,cAAc,GAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;CAEvG"}
@@ -0,0 +1,64 @@
1
+ import type { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export declare class Alfen {
6
+ private readonly chargy;
7
+ constructor(chargy: Chargy);
8
+ private bufferToHex;
9
+ private bufferToNumber;
10
+ TryToParseALFENFormat(Content: string | string[], ContainerInfos: unknown): chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult;
11
+ }
12
+ export interface IAlfenMeasurement extends chargeTransparencyRecord.IMeasurement {
13
+ adapterId: string;
14
+ adapterFWVersion: string;
15
+ adapterFWChecksum: string;
16
+ }
17
+ export interface IAlfenMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
18
+ statusMeter: string;
19
+ statusAdapter: string;
20
+ secondsIndex: number;
21
+ sessionId: string;
22
+ paginationId: number;
23
+ measurement: IAlfenMeasurement;
24
+ }
25
+ export interface IAlfenCrypt01Result extends chargyInterfaces.ICryptoResult {
26
+ adapterId?: string;
27
+ adapterFWVersion?: string;
28
+ adapterFWChecksum?: string;
29
+ meterId?: string;
30
+ meter?: chargyInterfaces.IMeter;
31
+ statusMeter?: string;
32
+ statusAdapter?: string;
33
+ secondsIndex?: string;
34
+ timestamp?: string;
35
+ obisId?: string;
36
+ unitEncoded?: string;
37
+ scalar?: string;
38
+ value?: string;
39
+ uid?: string;
40
+ sessionId?: string;
41
+ paging?: string;
42
+ hashValue?: string | bigint;
43
+ publicKey?: string;
44
+ publicKeyFormat?: string;
45
+ publicKeySignatures?: Array<unknown>;
46
+ signature?: chargyInterfaces.ISignatureRS;
47
+ }
48
+ export interface IAlfenChargingSession extends chargeTransparencyRecord.IChargingSession {
49
+ internalSessionId?: string;
50
+ meter?: chargyInterfaces.IMeter;
51
+ measurements: Array<IAlfenMeasurement>;
52
+ }
53
+ export interface IAlfenChargeTransparencyRecord extends chargeTransparencyRecord.IChargeTransparencyRecord {
54
+ chargingSessions?: Array<IAlfenChargingSession>;
55
+ }
56
+ export declare class AlfenCrypt01 extends ACrypt {
57
+ constructor(chargy: Chargy);
58
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
59
+ VerifyMeasurement(measurementValue: IAlfenMeasurementValue): Promise<IAlfenCrypt01Result>;
60
+ ViewMeasurement(measurementValue: IAlfenMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
61
+ private DecodeMeterStatus;
62
+ private DecodeAdapterStatus;
63
+ }
64
+ //# sourceMappingURL=Alfen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alfen.d.ts","sourceRoot":"","sources":["../src/Alfen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export interface IBSMMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
6
+ Typ: number;
7
+ RCR: number;
8
+ RCR_SF: number;
9
+ RCR_Unit: string;
10
+ RCR_Prefix: chargyInterfaces.DisplayPrefixes;
11
+ RCR_Precision: number;
12
+ TotWhImp: number;
13
+ TotWhImp_SF: number;
14
+ TotWhImp_Unit: string;
15
+ TotWhImp_Prefix: chargyInterfaces.DisplayPrefixes;
16
+ TotWhImp_Precision: number;
17
+ W: number;
18
+ W_SF: number;
19
+ W_Unit: string;
20
+ W_Prefix: chargyInterfaces.DisplayPrefixes;
21
+ W_Precision: number;
22
+ MA1: string;
23
+ RCnt: number;
24
+ OS: number;
25
+ Epoch: number;
26
+ TZO: number;
27
+ EpochSetCnt: number;
28
+ EpochSetOS: number;
29
+ DI: number;
30
+ DO: number;
31
+ Meta1: string;
32
+ Meta2: string;
33
+ Meta3: string;
34
+ Evt: number;
35
+ }
36
+ export interface IBSMCrypt01Result extends chargyInterfaces.ICryptoResult {
37
+ sha256value?: string;
38
+ meterId?: string;
39
+ meter?: chargyInterfaces.IMeter;
40
+ timestamp?: string;
41
+ ArraySize: number;
42
+ Typ: string;
43
+ RCR: string;
44
+ TotWhImp: string;
45
+ W: string;
46
+ MA1: string;
47
+ RCnt: string;
48
+ OS: string;
49
+ Epoch: string;
50
+ TZO: string;
51
+ EpochSetCnt: string;
52
+ EpochSetOS: string;
53
+ DI: string;
54
+ DO: string;
55
+ Meta1: string;
56
+ Meta2: string;
57
+ Meta3: string;
58
+ Evt: string;
59
+ publicKey?: string;
60
+ publicKeyFormat?: string;
61
+ publicKeySignatures?: Array<unknown>;
62
+ signature?: chargyInterfaces.ISignatureRS;
63
+ }
64
+ export declare class BSMCrypt01 extends ACrypt {
65
+ readonly curve: import("./chargy").EllipticCurve;
66
+ constructor(chargy: Chargy);
67
+ tryToParseBSM_WS36aMeasurements(CTR: chargeTransparencyRecord.IChargeTransparencyRecord, ExpectedEVSEId: string, ExpectedCscSwVersion: string | null, Measurements: Array<unknown>): chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult;
68
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
69
+ VerifyMeasurement(measurementValue: IBSMMeasurementValue): Promise<IBSMCrypt01Result>;
70
+ ViewMeasurement(measurementValue: IBSMMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
71
+ private PrefixConverter;
72
+ private UnitConverter;
73
+ ParseTyp(value: number): string;
74
+ ParseEvents(value: number): string[];
75
+ private DecodeStatus;
76
+ }
77
+ //# sourceMappingURL=BSMCrypt01.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BSMCrypt01.d.ts","sourceRoot":"","sources":["../src/BSMCrypt01.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class CanonicalJSONError extends TypeError {
2
+ constructor(message: string);
3
+ }
4
+ /**
5
+ * Deterministic RFC 8259 JSON serialization for signature input.
6
+ *
7
+ * Objects are emitted with ordinally sorted property names, arrays keep their
8
+ * original order, and no insignificant whitespace is written. This is meant
9
+ * as a stable JSON byte representation; it is intentionally strict about
10
+ * values which are not representable as RFC 8259 JSON.
11
+ */
12
+ export declare function canonicalJSONStringify(value: unknown): string;
13
+ export declare function canonicalJSONBytes(value: unknown): Uint8Array;
14
+ //# sourceMappingURL=CanonicalJSON.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanonicalJSON.d.ts","sourceRoot":"","sources":["../src/CanonicalJSON.ts"],"names":[],"mappings":"AAiBA,qBAAa,kBAAmB,SAAQ,SAAS;gBAE1B,OAAO,EAAE,MAAM;CAKrC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAE7D"}
@@ -0,0 +1,47 @@
1
+ import { ec as EC } from "elliptic";
2
+ export type JSONMessage = Record<string, unknown>;
3
+ export interface JSONSignature {
4
+ publicKey: string;
5
+ publicKeyHEX: string;
6
+ signature: string;
7
+ signatureHEX: string;
8
+ }
9
+ export interface SignedJSONMessage extends JSONMessage {
10
+ signatures?: JSONSignature[];
11
+ }
12
+ export declare enum JSONSignatureVerificationStatus {
13
+ True = "True",
14
+ False = "False",
15
+ InvalidJSON = "InvalidJSON",
16
+ MissingSignatures = "MissingSignatures",
17
+ InvalidSignaturesArray = "InvalidSignaturesArray",
18
+ InvalidSignatureStructure = "InvalidSignatureStructure",
19
+ InvalidSignatureEncoding = "InvalidSignatureEncoding",
20
+ InvalidPublicKey = "InvalidPublicKey",
21
+ InvalidSignature = "InvalidSignature",
22
+ InvalidCanonicalJSON = "InvalidCanonicalJSON"
23
+ }
24
+ export interface JSONSignatureVerificationResult {
25
+ status: JSONSignatureVerificationStatus;
26
+ description?: string;
27
+ }
28
+ export interface JSONMessageSignaturesVerificationResult {
29
+ status: JSONSignatureVerificationStatus;
30
+ description?: string;
31
+ signatures: Record<string, JSONSignatureVerificationResult>;
32
+ }
33
+ export interface SignJSONMessageOptions {
34
+ curve?: string;
35
+ canonical?: boolean;
36
+ signatureFormat?: "DER";
37
+ }
38
+ export declare function signMessage(JSONMessage: SignedJSONMessage, ...KeyPairs: EC.KeyPair[]): Promise<boolean>;
39
+ export declare function SignMessage(JSONMessage: SignedJSONMessage, ...KeyPairs: EC.KeyPair[]): Promise<boolean>;
40
+ export declare function signJSONMessage(JSONMessage: SignedJSONMessage | null | undefined, KeyPairs: Array<EC.KeyPair | null | undefined> | null | undefined, options?: SignJSONMessageOptions): Promise<boolean>;
41
+ export declare function verifyJSONSignature(JSONMessage: SignedJSONMessage, signature: JSONSignature, options?: SignJSONMessageOptions): Promise<boolean>;
42
+ export declare function verifyJSONSignatureResult(JSONMessage: SignedJSONMessage | null | undefined, signature: unknown, options?: SignJSONMessageOptions): Promise<JSONSignatureVerificationResult>;
43
+ export declare function verifyJSONMessageSignatures(JSONMessage: unknown, options?: SignJSONMessageOptions): Promise<boolean>;
44
+ export declare function verifyJSONMessageSignatureResults(JSONMessage: unknown, options?: SignJSONMessageOptions): Promise<JSONMessageSignaturesVerificationResult>;
45
+ export declare function VerifyJSONMessageSignatures(JSONMessage: unknown, options?: SignJSONMessageOptions): Promise<boolean>;
46
+ export declare function parseAndVerifyJSONSignatures(JSONMessage: string, options?: SignJSONMessageOptions): Promise<boolean>;
47
+ //# sourceMappingURL=CryptoUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CryptoUtils.d.ts","sourceRoot":"","sources":["../src/CryptoUtils.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC;AAMpC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAM,MAAM,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;IACtB,SAAS,EAAM,MAAM,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IAClD,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC;AAED,oBAAY,+BAA+B;IACvC,IAAI,SAA8B;IAClC,KAAK,UAA8B;IACnC,WAAW,gBAA8B;IACzC,iBAAiB,sBAA8B;IAC/C,sBAAsB,2BAA8B;IACpD,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA8B;IACtD,gBAAgB,qBAA8B;IAC9C,gBAAgB,qBAA8B;IAC9C,oBAAoB,yBAA8B;CACrD;AAED,MAAM,WAAW,+BAA+B;IAC5C,MAAM,EAAQ,+BAA+B,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uCAAuC;IACpD,MAAM,EAAQ,+BAA+B,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAI,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,sBAAsB;IACnC,KAAK,CAAC,EAAW,MAAM,CAAC;IACxB,SAAS,CAAC,EAAO,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;CAC3B;AAQD,wBAAsB,WAAW,CAAC,WAAW,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAI7E;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAI7E;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACjD,QAAQ,EAAK,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,EACpE,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiD3F;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAI,aAAa,EAC1B,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAI/F;AAED,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACjD,SAAS,EAAI,OAAO,EACpB,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAkE7H;AAED,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAIvG;AAED,wBAAsB,iCAAiC,CAAC,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAmD7I;AAED,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAIvG;AAED,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAIxG"}
@@ -0,0 +1,40 @@
1
+ import { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export interface IEMHMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
6
+ infoStatus: string;
7
+ secondsIndex: number;
8
+ paginationId: string;
9
+ logBookIndex: string;
10
+ }
11
+ export interface IEMHCrypt01Result extends chargyInterfaces.ICryptoResult {
12
+ sha256value?: string;
13
+ meterId?: string;
14
+ meter?: chargyInterfaces.IMeter;
15
+ timestamp?: string;
16
+ infoStatus?: string;
17
+ secondsIndex?: string;
18
+ paginationId?: string;
19
+ obis?: string;
20
+ unitEncoded?: string;
21
+ scale?: string;
22
+ value?: string;
23
+ logBookIndex?: string;
24
+ authorizationStart?: string;
25
+ authorizationStop?: string;
26
+ authorizationStartTimestamp?: string;
27
+ publicKey?: string;
28
+ publicKeyFormat?: string;
29
+ publicKeySignatures?: Array<unknown>;
30
+ signature?: chargyInterfaces.ISignatureRS;
31
+ }
32
+ export declare class EMHCrypt01 extends ACrypt {
33
+ readonly curve: import("./chargy").EllipticCurve;
34
+ constructor(chargy: Chargy);
35
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
36
+ VerifyMeasurement(measurementValue: IEMHMeasurementValue): Promise<IEMHCrypt01Result>;
37
+ ViewMeasurement(measurementValue: IEMHMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
38
+ private DecodeStatus;
39
+ }
40
+ //# sourceMappingURL=EMHCrypt01.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EMHCrypt01.d.ts","sourceRoot":"","sources":["../src/EMHCrypt01.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AACrD,OAAO,KAAK,gBAAgB,MAAe,+BAA+B,CAAA;AAC1E,OAAO,KAAK,wBAAwB,MAAO,wCAAwC,CAAA;AAInF,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB,CAAC,iBAAiB;IAEpF,UAAU,EAAkB,MAAM,CAAC;IACnC,YAAY,EAAgB,MAAM,CAAC;IACnC,YAAY,EAAgB,MAAM,CAAC;IACnC,YAAY,EAAgB,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CAAC,aAAa;IAErE,WAAW,CAAC,EAAmB,MAAM,CAAC;IACtC,OAAO,CAAC,EAAuB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,gBAAgB,CAAC,MAAM,CAAC;IACvD,SAAS,CAAC,EAAqB,MAAM,CAAC;IACtC,UAAU,CAAC,EAAoB,MAAM,CAAC;IACtC,YAAY,CAAC,EAAkB,MAAM,CAAC;IACtC,YAAY,CAAC,EAAkB,MAAM,CAAC;IACtC,IAAI,CAAC,EAA0B,MAAM,CAAC;IACtC,WAAW,CAAC,EAAmB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,MAAM,CAAC;IACtC,YAAY,CAAC,EAAkB,MAAM,CAAC;IACtC,kBAAkB,CAAC,EAAY,MAAM,CAAC;IACtC,iBAAiB,CAAC,EAAa,MAAM,CAAC;IACtC,2BAA2B,CAAC,EAAG,MAAM,CAAC;IACtC,SAAS,CAAC,EAAqB,MAAM,CAAC;IACtC,eAAe,CAAC,EAAe,MAAM,CAAC;IACtC,mBAAmB,CAAC,EAAW,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAqB,gBAAgB,CAAC,YAAY,CAAA;CAC/D;AAGD,qBAAa,UAAW,SAAQ,MAAM;IAElC,QAAQ,CAAC,KAAK,mCAAuC;gBAEzC,MAAM,EAAG,MAAM;IAMrB,qBAAqB,CAAC,eAAe,EAAE,wBAAwB,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAkDjI,iBAAiB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyHrF,eAAe,CAAC,gBAAgB,EAAO,oBAAoB,EAC3C,QAAQ,EAAe,cAAc,EACrC,QAAQ,EAAe,cAAc,EACrC,OAAO,EAAgB,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,kBAAkB,EAAK,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,oBAAoB,EAAG,cAAc,EACrC,iBAAiB,EAAM,cAAc,GAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAsNzF,OAAO,CAAC,YAAY;CA4CvB"}
@@ -0,0 +1,31 @@
1
+ import { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export interface IGDFMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
6
+ prevSignature: string;
7
+ }
8
+ export interface IGDFCrypt01Result extends chargyInterfaces.ICryptoResult {
9
+ sha256value?: string;
10
+ meterId?: string;
11
+ meter?: chargyInterfaces.IMeter;
12
+ timestamp?: string;
13
+ obis?: string;
14
+ unitEncoded?: string;
15
+ scale?: string;
16
+ value?: string;
17
+ authorizationStart?: string;
18
+ authorizationStartTimestamp?: string;
19
+ publicKey?: string;
20
+ publicKeyFormat?: string;
21
+ publicKeySignatures?: Array<unknown>;
22
+ signature?: chargyInterfaces.ISignatureRS;
23
+ }
24
+ export declare class GDFCrypt01 extends ACrypt {
25
+ readonly curve: import("./chargy").EllipticCurve;
26
+ constructor(chargy: Chargy);
27
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
28
+ VerifyMeasurement(measurementValue: IGDFMeasurementValue): Promise<IGDFCrypt01Result>;
29
+ ViewMeasurement(measurementValue: IGDFMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
30
+ }
31
+ //# sourceMappingURL=GDFCrypt01.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GDFCrypt01.d.ts","sourceRoot":"","sources":["../src/GDFCrypt01.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAA0B,UAAU,CAAA;AACrD,OAAO,KAAK,gBAAgB,MAAe,+BAA+B,CAAA;AAC1E,OAAO,KAAK,wBAAwB,MAAO,wCAAwC,CAAA;AAInF,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB,CAAC,iBAAiB;IAEpF,aAAa,EAAkB,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CAAC,aAAa;IAErE,WAAW,CAAC,EAAmB,MAAM,CAAC;IACtC,OAAO,CAAC,EAAuB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,gBAAgB,CAAC,MAAM,CAAC;IACvD,SAAS,CAAC,EAAqB,MAAM,CAAC;IACtC,IAAI,CAAC,EAA0B,MAAM,CAAC;IACtC,WAAW,CAAC,EAAmB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,MAAM,CAAC;IACtC,KAAK,CAAC,EAAyB,MAAM,CAAC;IACtC,kBAAkB,CAAC,EAAY,MAAM,CAAC;IACtC,2BAA2B,CAAC,EAAG,MAAM,CAAC;IACtC,SAAS,CAAC,EAAqB,MAAM,CAAC;IACtC,eAAe,CAAC,EAAe,MAAM,CAAC;IACtC,mBAAmB,CAAC,EAAW,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAqB,gBAAgB,CAAC,YAAY,CAAA;CAC/D;AAED,qBAAa,UAAW,SAAQ,MAAM;IAElC,QAAQ,CAAC,KAAK,mCAAuC;gBAEzC,MAAM,EAAG,MAAM;IAKrB,qBAAqB,CAAC,eAAe,EAAE,wBAAwB,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IAkDjI,iBAAiB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoHrF,eAAe,CAAC,gBAAgB,EAAO,oBAAoB,EAC3C,QAAQ,EAAe,cAAc,EACrC,QAAQ,EAAe,cAAc,EACrC,OAAO,EAAgB,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,kBAAkB,EAAK,cAAc,EACrC,YAAY,EAAW,cAAc,EACrC,oBAAoB,EAAG,cAAc,EACrC,iBAAiB,EAAM,cAAc,GAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;CAuM5F"}
@@ -0,0 +1,87 @@
1
+ import type { Chargy } from './chargy';
2
+ import { ACrypt } from './ACrypt';
3
+ import * as chargyInterfaces from './interfaces/chargyInterfaces';
4
+ import * as chargeTransparencyRecord from './interfaces/IChargeTransparencyRecord';
5
+ export declare const MENNEKES_EDL40_XMLNS = "http://www.mennekes.de/Mennekes.EdlVerification.xsd";
6
+ export declare const MENNEKES_EDL40_OBIS = "1-0:1.17.0*255";
7
+ export interface IMennekesMeasurement {
8
+ timestampCustomerIdent?: string;
9
+ timestamp: string;
10
+ signature: string;
11
+ eventCounter: number;
12
+ meterStatus: number;
13
+ value: number;
14
+ scaler: number;
15
+ pagination: number;
16
+ secondIndex: number;
17
+ }
18
+ export interface IMennekesChargingProcess {
19
+ serverId: string;
20
+ publicKey: string;
21
+ meteringPoint?: string;
22
+ siteAddress?: chargyInterfaces.IAddress;
23
+ customerIdent: string;
24
+ timestampCustomerIdent: string;
25
+ measurementStart: IMennekesMeasurement;
26
+ measurementEnd: IMennekesMeasurement;
27
+ }
28
+ export interface IMennekesBilling {
29
+ chargingProcesses: IMennekesChargingProcess[];
30
+ }
31
+ export interface IMennekesMeasurementValue extends chargeTransparencyRecord.IMeasurementValue {
32
+ eventCounter: number;
33
+ meterStatusNumber: number;
34
+ originalSignature: string;
35
+ timestampCustomerIdent?: string;
36
+ measurement: IMennekesChargyMeasurement;
37
+ }
38
+ export interface IMennekesChargyMeasurement extends chargeTransparencyRecord.IMeasurement {
39
+ serverId: string;
40
+ publicKey: string;
41
+ customerIdent: string;
42
+ timestampCustomerIdent: string;
43
+ values: IMennekesMeasurementValue[];
44
+ }
45
+ export interface IMennekesCrypt01Result extends chargyInterfaces.ICryptoResult {
46
+ hashValue?: string;
47
+ signedData?: string;
48
+ publicKey?: string;
49
+ publicKeyFormat?: string;
50
+ signature?: chargyInterfaces.ISignatureRS;
51
+ serverId?: string;
52
+ timestamp?: string;
53
+ meterStatus?: string;
54
+ secondsIndex?: string;
55
+ pagination?: string;
56
+ obis?: string;
57
+ unitEncoded?: string;
58
+ scaler?: string;
59
+ value?: string;
60
+ logBytes?: string;
61
+ customerIdent?: string;
62
+ timestampCustomerIdent?: string;
63
+ }
64
+ export declare class Mennekes {
65
+ private readonly chargy;
66
+ constructor(chargy: Chargy);
67
+ tryToParseMennekesXML(XMLDocument: Document): Promise<chargeTransparencyRecord.IChargeTransparencyRecord | chargyInterfaces.ISessionCryptoResult>;
68
+ private toChargeTransparencyRecord;
69
+ private toChargingStation;
70
+ private toChargingSession;
71
+ private evseId;
72
+ private meterId;
73
+ }
74
+ export declare class MennekesCrypt01 extends ACrypt {
75
+ constructor(chargy: Chargy);
76
+ VerifyChargingSession(chargingSession: chargeTransparencyRecord.IChargingSession): Promise<chargyInterfaces.ISessionCryptoResult>;
77
+ VerifyMeasurement(measurementValue: IMennekesMeasurementValue): Promise<IMennekesCrypt01Result>;
78
+ ViewMeasurement(measurementValue: IMennekesMeasurementValue, errorDiv: HTMLDivElement, introDiv: HTMLDivElement, infoDiv: HTMLDivElement, PlainTextDiv: HTMLDivElement, HashedPlainTextDiv: HTMLDivElement, PublicKeyDiv: HTMLDivElement, SignatureExpectedDiv: HTMLDivElement, SignatureCheckDiv: HTMLDivElement): Promise<Error | undefined>;
79
+ }
80
+ export declare function extractMennekesChargingProcesses(XMLDocument: Document): IMennekesChargingProcess[];
81
+ export declare function parseMennekesXMLDocument(XMLDocument: Document): IMennekesBilling | IMennekesChargingProcess;
82
+ export declare function buildMennekesSignatureData(chargingProcess: IMennekesChargingProcess, measurement: IMennekesMeasurement): Uint8Array;
83
+ export declare function dateToMennekesLocalEpochSeconds(isoTimestamp: string): number;
84
+ export declare function cleanHex(hex: string): string;
85
+ export declare function hexToBytes(hex: string): Uint8Array;
86
+ export declare function bytesToHex(bytes: Uint8Array): string;
87
+ //# sourceMappingURL=Mennekes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mennekes.d.ts","sourceRoot":"","sources":["../src/Mennekes.ts"],"names":[],"mappings":"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"}