@open-charging-cloud/wwcp-poi 0.1.1 → 0.3.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 (106) hide show
  1. package/CHANGELOG.md +382 -0
  2. package/README.md +534 -362
  3. package/dist/crypto/ber.d.ts +48 -0
  4. package/dist/crypto/ber.d.ts.map +1 -0
  5. package/dist/crypto/certificates.d.ts +21 -0
  6. package/dist/crypto/certificates.d.ts.map +1 -0
  7. package/dist/crypto/curves.d.ts +25 -0
  8. package/dist/crypto/curves.d.ts.map +1 -0
  9. package/dist/crypto/ecc.d.ts +34 -0
  10. package/dist/crypto/ecc.d.ts.map +1 -0
  11. package/dist/crypto/publicKeys.d.ts +51 -0
  12. package/dist/crypto/publicKeys.d.ts.map +1 -0
  13. package/dist/crypto/rsa.d.ts +30 -0
  14. package/dist/crypto/rsa.d.ts.map +1 -0
  15. package/dist/encoding/text.d.ts +9 -0
  16. package/dist/encoding/text.d.ts.map +1 -1
  17. package/dist/evTaler/amounts.d.ts +89 -0
  18. package/dist/evTaler/amounts.d.ts.map +1 -0
  19. package/dist/evTaler/contractTerms.d.ts +107 -0
  20. package/dist/evTaler/contractTerms.d.ts.map +1 -0
  21. package/dist/evTaler/meterValue.d.ts +65 -0
  22. package/dist/evTaler/meterValue.d.ts.map +1 -0
  23. package/dist/evTaler/payURI.d.ts +28 -0
  24. package/dist/evTaler/payURI.d.ts.map +1 -0
  25. package/dist/evTaler/settlement.d.ts +85 -0
  26. package/dist/evTaler/settlement.d.ts.map +1 -0
  27. package/dist/evTaler/step.d.ts +72 -0
  28. package/dist/evTaler/step.d.ts.map +1 -0
  29. package/dist/history/apply.d.ts +6 -1
  30. package/dist/history/apply.d.ts.map +1 -1
  31. package/dist/history/changeSet.d.ts +18 -2
  32. package/dist/history/changeSet.d.ts.map +1 -1
  33. package/dist/history/checkpoint.d.ts +7 -0
  34. package/dist/history/checkpoint.d.ts.map +1 -1
  35. package/dist/history/commit.d.ts +13 -1
  36. package/dist/history/commit.d.ts.map +1 -1
  37. package/dist/history/elements.d.ts +19 -0
  38. package/dist/history/elements.d.ts.map +1 -0
  39. package/dist/history/epoch.d.ts +2 -0
  40. package/dist/history/epoch.d.ts.map +1 -1
  41. package/dist/history/history.d.ts +46 -6
  42. package/dist/history/history.d.ts.map +1 -1
  43. package/dist/history/preconditions.d.ts +22 -0
  44. package/dist/history/preconditions.d.ts.map +1 -0
  45. package/dist/index.d.ts +18 -4
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +10296 -1558
  48. package/dist/index.js.map +1 -1
  49. package/dist/json/canonical.d.ts.map +1 -1
  50. package/dist/keys.d.ts +2 -0
  51. package/dist/keys.d.ts.map +1 -1
  52. package/dist/network/certificates.d.ts +16 -4
  53. package/dist/network/certificates.d.ts.map +1 -1
  54. package/dist/network/countries.d.ts +16 -0
  55. package/dist/network/countries.d.ts.map +1 -0
  56. package/dist/network/evTaler.d.ts +1 -14
  57. package/dist/network/evTaler.d.ts.map +1 -1
  58. package/dist/network/identifications.d.ts +6 -6
  59. package/dist/network/identifications.d.ts.map +1 -1
  60. package/dist/network/measurementPublicKey.d.ts +7 -0
  61. package/dist/network/measurementPublicKey.d.ts.map +1 -0
  62. package/dist/network/offers.d.ts +53 -0
  63. package/dist/network/offers.d.ts.map +1 -0
  64. package/dist/network/partyKeys.d.ts +8 -5
  65. package/dist/network/partyKeys.d.ts.map +1 -1
  66. package/dist/network/poiJSON.d.ts +172 -0
  67. package/dist/network/poiJSON.d.ts.map +1 -0
  68. package/dist/network/poiValues.d.ts +48 -0
  69. package/dist/network/poiValues.d.ts.map +1 -0
  70. package/dist/network/reading.d.ts +46 -0
  71. package/dist/network/reading.d.ts.map +1 -0
  72. package/dist/network/references.d.ts +36 -0
  73. package/dist/network/references.d.ts.map +1 -0
  74. package/dist/network/roamingNetwork.d.ts +10 -11
  75. package/dist/network/roamingNetwork.d.ts.map +1 -1
  76. package/dist/network/timeZones.d.ts +8 -0
  77. package/dist/network/timeZones.d.ts.map +1 -0
  78. package/dist/network/tree.d.ts +14 -0
  79. package/dist/network/tree.d.ts.map +1 -1
  80. package/dist/network/versionTexts.d.ts +1 -7
  81. package/dist/network/versionTexts.d.ts.map +1 -1
  82. package/dist/network/writtenForm.d.ts.map +1 -1
  83. package/dist/proofs/priceStatement.d.ts.map +1 -1
  84. package/dist/proofs/stationProof.d.ts +2 -0
  85. package/dist/proofs/stationProof.d.ts.map +1 -1
  86. package/dist/proofs/trustContext.d.ts +6 -0
  87. package/dist/proofs/trustContext.d.ts.map +1 -1
  88. package/dist/verifier/chargingStation.d.ts +5 -0
  89. package/dist/verifier/chargingStation.d.ts.map +1 -1
  90. package/dist/verifier/checkpoints.d.ts +6 -0
  91. package/dist/verifier/checkpoints.d.ts.map +1 -1
  92. package/dist/verifier/documentKeys.d.ts +27 -0
  93. package/dist/verifier/documentKeys.d.ts.map +1 -0
  94. package/dist/verifier/historicalMeasurements.d.ts +96 -0
  95. package/dist/verifier/historicalMeasurements.d.ts.map +1 -0
  96. package/dist/verifier/measurementKeys.d.ts +48 -0
  97. package/dist/verifier/measurementKeys.d.ts.map +1 -0
  98. package/dist/verifier/observedVersions.d.ts +70 -0
  99. package/dist/verifier/observedVersions.d.ts.map +1 -0
  100. package/dist/verifier/pricePublication.d.ts +74 -0
  101. package/dist/verifier/pricePublication.d.ts.map +1 -0
  102. package/dist/verifier/sessionPrices.d.ts +75 -0
  103. package/dist/verifier/sessionPrices.d.ts.map +1 -0
  104. package/dist/verifier/trustTransitions.d.ts +67 -0
  105. package/dist/verifier/trustTransitions.d.ts.map +1 -0
  106. package/package.json +15 -14
@@ -0,0 +1,48 @@
1
+ /** Universal tags. */
2
+ export declare const TAG: {
3
+ readonly boolean: 1;
4
+ readonly integer: 2;
5
+ readonly bitString: 3;
6
+ readonly octetString: 4;
7
+ readonly null: 5;
8
+ readonly objectIdentifier: 6;
9
+ readonly sequence: 16;
10
+ readonly set: 17;
11
+ };
12
+ export declare const CONTEXT = 2;
13
+ /** A record of BER. */
14
+ export interface BER {
15
+ /** Universal 0, application 1, context-specific 2, private 3. */
16
+ readonly tagClass: number;
17
+ readonly tagNumber: number;
18
+ readonly constructed: boolean;
19
+ /** The value of a primitive record, of a string in segments its segments joined. */
20
+ readonly content: Uint8Array;
21
+ readonly children: readonly BER[];
22
+ /** Whether DER writes it and what it holds as given. */
23
+ readonly der: boolean;
24
+ /** The record as given. */
25
+ readonly encoded: Uint8Array;
26
+ }
27
+ export declare class BERError extends Error {
28
+ }
29
+ export declare const isSequence: (record: BER) => boolean;
30
+ export declare const isInteger: (record: BER) => boolean;
31
+ export declare const isNull: (record: BER) => boolean;
32
+ export declare const isOID: (record: BER) => boolean;
33
+ export declare const isBitString: (record: BER) => boolean;
34
+ /** The one record of the given bytes, as `Asn1Object.FromByteArray` reads it: nothing after it. */
35
+ export declare function readBER(bytes: Uint8Array): BER;
36
+ /** The first record of the given bytes, as `Asn1InputStream.ReadObject` reads it from a stream: what follows it left. */
37
+ export declare function readFirstBER(bytes: Uint8Array): BER;
38
+ /** What `GetInstance` of a class throws of a record of another one. */
39
+ export declare const illegal: (record: BER) => BERError;
40
+ /** An integer as `DerInteger` reads it: two's complement in its fewest octets. */
41
+ export declare function integerOf(record: BER): bigint;
42
+ /** An object identifier in dotted decimal, as `DerObjectIdentifier` reads it: each arc in its fewest octets. */
43
+ export declare function oidOf(record: BER): string;
44
+ /** The octets of a bit string, as `DerBitString.GetOctets` gives them: of whole octets. */
45
+ export declare function octetsOf(record: BER): Uint8Array;
46
+ /** The children of a sequence of the given sizes, as a `GetInstance` of a sequence takes them. */
47
+ export declare function sequenceOf(record: BER, sizes: readonly number[]): readonly BER[];
48
+ //# sourceMappingURL=ber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ber.d.ts","sourceRoot":"","sources":["../../src/crypto/ber.ts"],"names":[],"mappings":"AAuBA,sBAAsB;AACtB,eAAO,MAAM,GAAG;;;;;;;;;CASN,CAAC;AAEX,eAAO,MAAM,OAAO,IAAI,CAAC;AAEzB,uBAAuB;AACvB,MAAM,WAAW,GAAG;IAChB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAK,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAG,OAAO,CAAC;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAO,UAAU,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAM,SAAS,GAAG,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAW,OAAO,CAAC;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAO,UAAU,CAAC;CACrC;AAED,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAKtC,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,KAAG,OAA4C,CAAC;AACtF,eAAO,MAAM,SAAS,GAAK,QAAQ,GAAG,KAAG,OAA2C,CAAC;AACrF,eAAO,MAAM,MAAM,GAAQ,QAAQ,GAAG,KAAG,OAAwC,CAAC;AAClF,eAAO,MAAM,KAAK,GAAS,QAAQ,GAAG,KAAG,OAAoD,CAAC;AAC9F,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,KAAG,OAA6C,CAAC;AAwLxF,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAY9C;AAED,yHAAyH;AACzH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAOnD;AAuBD,uEAAuE;AACvE,eAAO,MAAM,OAAO,GAAI,QAAQ,GAAG,KAAG,QACsE,CAAC;AAE7G,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAgB7C;AAED,gHAAgH;AAChH,wBAAgB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAgCzC;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,CAkBhD;AAED,kGAAkG;AAClG,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,EAAE,CAUhF"}
@@ -0,0 +1,21 @@
1
+ import { type BER } from './ber.ts';
2
+ import { type SubjectPublicKeyInfo } from './publicKeys.ts';
3
+ export interface Certificate {
4
+ /** Its content, the TBSCertificate the signature is of. */
5
+ readonly tbs: BER;
6
+ readonly signatureAlgorithm: BER;
7
+ readonly tbsAlgorithm: BER;
8
+ readonly signature: BER;
9
+ readonly subjectPublicKeyInfo: SubjectPublicKeyInfo;
10
+ }
11
+ /** The DER of a certificate, as `ReadCertificate` reads it: undefined where it gives none, as it does of what is no sequence. */
12
+ export declare function certificateOf(bytes: Uint8Array): {
13
+ certificate: Certificate;
14
+ der: boolean;
15
+ } | undefined;
16
+ /**
17
+ * Whether the certificate is issued by the other one, as `X509Certificate.Verify` with the public key of the other one
18
+ * tells: of a key BouncyCastle makes, the signature algorithm the one of the content, the signature verified.
19
+ */
20
+ export declare function issuedBy(certificate: Certificate, issuer: Certificate): boolean;
21
+ //# sourceMappingURL=certificates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificates.d.ts","sourceRoot":"","sources":["../../src/crypto/certificates.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0H,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAE5J,OAAO,EAAuD,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAWjH,MAAM,WAAW,WAAW;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAmB,GAAG,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAI,GAAG,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAU,GAAG,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAa,GAAG,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;CACvD;AAqFD,iIAAiI;AACjI,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAgEvG;AA6JD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAQ/E"}
@@ -0,0 +1,25 @@
1
+ export interface PrimeCurve {
2
+ readonly oid: string;
3
+ readonly name: string;
4
+ /** What BouncyCastle names its field elements, e.g. `SecP256R1FieldElement`, `Fp field element`. */
5
+ readonly field: string;
6
+ readonly bits: number;
7
+ readonly p: bigint;
8
+ readonly a: bigint;
9
+ readonly b: bigint;
10
+ readonly n: bigint;
11
+ readonly h: bigint;
12
+ readonly gx: bigint;
13
+ readonly gy: bigint;
14
+ }
15
+ export interface BinaryCurve {
16
+ readonly oid: string;
17
+ readonly name: string;
18
+ readonly field: string;
19
+ readonly bits: number;
20
+ }
21
+ /** The prime curves by their object identifiers. */
22
+ export declare const PRIME_CURVES: ReadonlyMap<string, PrimeCurve>;
23
+ /** The curves over binary fields by their object identifiers, of which this library tells the lengths of points only. */
24
+ export declare const BINARY_CURVES: ReadonlyMap<string, BinaryCurve>;
25
+ //# sourceMappingURL=curves.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curves.d.ts","sourceRoot":"","sources":["../../src/crypto/curves.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,GAAG,EAAK,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAI,MAAM,CAAC;IACxB,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAI,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAO,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAO,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAO,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAO,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAO,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAM,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAM,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,GAAG,EAAK,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAI,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAI,MAAM,CAAC;CAC3B;AA8bD,oDAAoD;AACpD,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CACiE,CAAC;AAE3H,yHAAyH;AACzH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAClB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { PrimeCurve } from './curves.ts';
2
+ export declare const mod: (value: bigint, modulus: bigint) => bigint;
3
+ export declare function modPow(base: bigint, exponent: bigint, modulus: bigint): bigint;
4
+ /** The inverse modulo the given modulus; undefined, where there is none. */
5
+ export declare function modInverse(value: bigint, modulus: bigint): bigint | undefined;
6
+ export declare function gcd(a: bigint, b: bigint): bigint;
7
+ export declare const bitLength: (value: bigint) => number;
8
+ export declare const bigintOf: (bytes: Uint8Array) => bigint;
9
+ /** The square root modulo an odd prime (Tonelli and Shanks); undefined, where there is none. */
10
+ export declare function sqrtMod(value: bigint, p: bigint): bigint | undefined;
11
+ /** A point of a curve; undefined is the point at infinity. */
12
+ export interface Point {
13
+ readonly x: bigint;
14
+ readonly y: bigint;
15
+ }
16
+ /** k·P. */
17
+ export declare const multiply: (curve: PrimeCurve, point: Point, k: bigint) => Point | undefined;
18
+ export declare const onCurve: (curve: PrimeCurve, { x, y }: Point) => boolean;
19
+ /** Whether a point is of the order of the curve, of a curve of a cofactor 1 always (`SatisfiesOrder`). */
20
+ export declare const satisfiesOrder: (curve: PrimeCurve, point: Point) => boolean;
21
+ export declare class PointError extends Error {
22
+ }
23
+ /**
24
+ * A point of a prime curve as `ECCurve.DecodePoint` of BouncyCastle decodes it, compressed (02, 03), uncompressed (04) or
25
+ * hybrid (06, 07), and refuses it in its words; undefined for the point at infinity (00).
26
+ */
27
+ export declare function decodePoint(curve: PrimeCurve, encoded: Uint8Array): Point | undefined;
28
+ /** The leftmost bits of a digest as wide as the order, as `CalculateE` of ECDsaSigner and DsaSigner takes them. */
29
+ export declare function truncatedDigest(order: bigint, digest: Uint8Array): bigint;
30
+ /** Whether (r, s) is a signature of the digest by the key Q of the curve (`ECDsaSigner.VerifySignature`). */
31
+ export declare function verifyECDSA(curve: PrimeCurve, q: Point, digest: Uint8Array, r: bigint, s: bigint): boolean;
32
+ /** Whether (r, s) is a signature of the digest by the key y of the group (p, q, g) (`DsaSigner.VerifySignature`). */
33
+ export declare function verifyDSA(p: bigint, q: bigint, g: bigint, y: bigint, digest: Uint8Array, r: bigint, s: bigint): boolean;
34
+ //# sourceMappingURL=ecc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecc.d.ts","sourceRoot":"","sources":["../../src/crypto/ecc.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,MAGpD,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ7E;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MACI,CAAC;AAE/C,eAAO,MAAM,QAAQ,GAAI,OAAO,UAAU,KAAG,MACY,CAAC;AAE1D,gGAAgG;AAChG,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuCpE;AAMD,8DAA8D;AAC9D,MAAM,WAAW,KAAK;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACtB;AA6ED,WAAW;AACX,eAAO,MAAM,QAAQ,GAAI,OAAO,UAAU,EAAE,OAAO,KAAK,EAAE,GAAG,MAAM,KAAG,KAAK,GAAG,SAC5B,CAAC;AAEnD,eAAO,MAAM,OAAO,GAAI,OAAO,UAAU,EAAE,UAAU,KAAK,KAAG,OACO,CAAC;AAErE,0GAA0G;AAC1G,eAAO,MAAM,cAAc,GAAI,OAAO,UAAU,EAAE,OAAO,KAAK,KAAG,OACE,CAAC;AAEpE,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAExC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,CA2DrF;AAED,mHAAmH;AACnH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAKzE;AAED,6GAA6G;AAC7G,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAiB1G;AAED,qHAAqH;AACrH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAcvH"}
@@ -0,0 +1,51 @@
1
+ import { type BER } from './ber.ts';
2
+ import { type PrimeCurve } from './curves.ts';
3
+ import { type Point } from './ecc.ts';
4
+ export type PublicKey = {
5
+ readonly kind: 'ec';
6
+ readonly curve: PrimeCurve;
7
+ readonly q: Point;
8
+ } | {
9
+ readonly kind: 'rsa';
10
+ readonly n: bigint;
11
+ readonly e: bigint;
12
+ } | {
13
+ readonly kind: 'dsa';
14
+ readonly y: bigint;
15
+ readonly group: {
16
+ readonly p: bigint;
17
+ readonly q: bigint;
18
+ readonly g: bigint;
19
+ } | undefined;
20
+ } | {
21
+ readonly kind: 'eddsa';
22
+ readonly curve: 'Ed25519' | 'Ed448';
23
+ readonly bytes: Uint8Array;
24
+ } | {
25
+ readonly kind: 'ml-dsa';
26
+ readonly set: 'ML-DSA-44' | 'ML-DSA-65' | 'ML-DSA-87';
27
+ readonly bytes: Uint8Array;
28
+ } | {
29
+ readonly kind: 'other';
30
+ readonly oid: string;
31
+ };
32
+ /** What BouncyCastle refuses of a key it makes, in its words. */
33
+ export declare class KeyError extends Error {
34
+ }
35
+ /** A SubjectPublicKeyInfo as `SubjectPublicKeyInfo.GetInstance` reads it. */
36
+ export interface SubjectPublicKeyInfo {
37
+ readonly record: BER;
38
+ readonly algorithm: string;
39
+ readonly parameters: BER | undefined;
40
+ readonly key: BER;
41
+ }
42
+ /** The SubjectPublicKeyInfo of the given record: a sequence of an algorithm identifier and a bit string. */
43
+ export declare function subjectPublicKeyInfoOf(record: BER): SubjectPublicKeyInfo;
44
+ /** The SubjectPublicKeyInfo of the given bytes, as `Asn1Object.FromByteArray` reads them: one record of BER, nothing after it. */
45
+ export declare const subjectPublicKeyInfo: (bytes: Uint8Array) => SubjectPublicKeyInfo;
46
+ /**
47
+ * The key of the given SubjectPublicKeyInfo, as `PublicKeyFactory.CreateKey` of BouncyCastle makes it; what it refuses
48
+ * thrown as a `KeyError` or a `BERError` in its words.
49
+ */
50
+ export declare function publicKeyOf(info: SubjectPublicKeyInfo): PublicKey;
51
+ //# sourceMappingURL=publicKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicKeys.d.ts","sourceRoot":"","sources":["../../src/crypto/publicKeys.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA6F,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/H,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAA8D,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAYlG,MAAM,MAAM,SAAS,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAK,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CAAE,GAC3I;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC5F;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC9G;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,iEAAiE;AACjE,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAEtC,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAO,GAAG,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAI,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAG,GAAG,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAU,GAAG,CAAC;CAC7B;AAED,4GAA4G;AAC5G,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,oBAAoB,CAUxE;AAED,kIAAkI;AAClI,eAAO,MAAM,oBAAoB,GAAI,OAAO,UAAU,KAAG,oBACf,CAAC;AAsK3C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CA0DjE"}
@@ -0,0 +1,30 @@
1
+ /** A digest by the object identifier of its algorithm. */
2
+ export interface Digest {
3
+ readonly oid: string;
4
+ readonly size: number;
5
+ readonly digest: (data: Uint8Array) => Uint8Array;
6
+ }
7
+ export declare const DIGESTS: {
8
+ readonly md5: Digest;
9
+ readonly sha1: Digest;
10
+ readonly sha224: Digest;
11
+ readonly sha256: Digest;
12
+ readonly sha384: Digest;
13
+ readonly sha512: Digest;
14
+ readonly sha512_224: Digest;
15
+ readonly sha512_256: Digest;
16
+ readonly sha3_224: Digest;
17
+ readonly sha3_256: Digest;
18
+ readonly sha3_384: Digest;
19
+ readonly sha3_512: Digest;
20
+ };
21
+ export declare const digestByOid: (oid: string) => Digest | undefined;
22
+ /** Whether an odd integer above 3 is probably prime, by rounds of Miller and Rabin with random bases. */
23
+ export declare function isProbablePrime(candidate: bigint, rounds?: number): boolean;
24
+ /** The error, when RsaKeyParameters of BouncyCastle refuses a public key, in its words and order; undefined for none. */
25
+ export declare function rsaKeyError(modulus: bigint, exponent: bigint): string | undefined;
26
+ /** Whether the signature of PKCS #1 v1.5 is of the message, its DigestInfo with NULL parameters or without (`RsaDigestSigner`). */
27
+ export declare function verifyPKCS1(modulus: bigint, exponent: bigint, algorithm: Digest, message: Uint8Array, signature: Uint8Array): boolean;
28
+ /** Whether the signature of PSS is of the message, with its digest, the digest of its mask and its salt length (`PssSigner`). */
29
+ export declare function verifyPSS(modulus: bigint, exponent: bigint, algorithm: Digest, maskDigest: Digest, saltLength: number, message: Uint8Array, signature: Uint8Array): boolean;
30
+ //# sourceMappingURL=rsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa.d.ts","sourceRoot":"","sources":["../../src/crypto/rsa.ts"],"names":[],"mappings":"AA4BA,0DAA0D;AAC1D,MAAM,WAAW,MAAM;IACnB,QAAQ,CAAC,GAAG,EAAK,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAI,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;CACrD;AAKD,eAAO,MAAM,OAAO;;;;;;;;;;;;;CAaV,CAAC;AAEX,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SACgB,CAAC;AA8BpE,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,OAAO,CAuBvE;AAED,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA6BjF;AAyCD,mIAAmI;AACnI,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAmBrI;AAaD,iIAAiI;AACjI,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAsC3K"}
@@ -11,6 +11,15 @@ export declare function toBase64(bytes: Uint8Array): string;
11
11
  * padding and nonzero padding bits, as POI requires of keys and signature values (SPECIFICATION.md section 4).
12
12
  */
13
13
  export declare function fromBase64(text: string): Uint8Array;
14
+ /** What `Convert.FromBase64String` of .NET says of a text it can not read. */
15
+ export declare const DOTNET_BAD_BASE64 = "The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.";
16
+ /**
17
+ * Whether `Convert.FromBase64String` of .NET reads the given text, though perhaps not canonically: white space left out
18
+ * anywhere, groups of four characters of the alphabet, at most two padding characters at the end, unused bits of any value.
19
+ */
20
+ export declare const isDotNetBase64: (text: string) => boolean;
21
+ /** Whether the given text is nonempty canonical Base64: what `Convert.ToBase64String` writes again of what it reads. */
22
+ export declare const isCanonicalBase64: (text: string) => boolean;
14
23
  /** Base45 [RFC 9285], the encoding of the QR code of a trust anchor. */
15
24
  export declare function toBase45(bytes: Uint8Array): string;
16
25
  /** Reads Base45 [RFC 9285], refusing characters outside its alphabet and triples above 65535. */
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/encoding/text.ts"],"names":[],"mappings":"AAyBA,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAK/C;AAED,2GAA2G;AAC3G,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,UAAU,CAYnE;AAED,sFAAsF;AACtF,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,EAAE,QAAQ,MAAM,KAAG,IAAI,IAAI,MAIb,CAAC;AAevD,oCAAoC;AACpC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAmBlD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAoCnD;AAMD,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAgBlD;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAmCnD;AAGD,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAWvE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,CAYzD;AAED,aAAa;AACb,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,UACF,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/encoding/text.ts"],"names":[],"mappings":"AAyBA,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAK/C;AAED,2GAA2G;AAC3G,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,UAAU,CAYnE;AAED,sFAAsF;AACtF,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,EAAE,QAAQ,MAAM,KAAG,IAAI,IAAI,MAIb,CAAC;AAiBvD,oCAAoC;AACpC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAmBlD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAwCnD;AAGD,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,4KAA4K,CAAC;AAE3M;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,OAG7C,CAAC;AAEF,wHAAwH;AACxH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OAOhD,CAAC;AAMF,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAgBlD;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAmCnD;AAGD,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAWvE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,CAYzD;AAED,aAAa;AACb,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,UACF,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { Decimal } from '../json/decimal.ts';
2
+ import { type JSONObject } from '../json/value.ts';
3
+ import type { EVTalerCovers } from './step.ts';
4
+ /**
5
+ * A number as System.Decimal holds and calculates it: a mantissa below 2^96 and at most 28 decimal places; a result it can
6
+ * not hold exactly rounded half to even, to as many places as it holds (DecCalc of .NET).
7
+ */
8
+ export declare class NetDecimal {
9
+ readonly mantissa: bigint;
10
+ readonly scale: number;
11
+ private constructor();
12
+ static readonly ZERO: NetDecimal;
13
+ /** The given mantissa and scale, rounded half to even to what System.Decimal holds. */
14
+ private static fitted;
15
+ static of(value: number | bigint | Decimal): NetDecimal;
16
+ /** A text of digits, as `Decimal.TryParse` with `NumberStyles.AllowDecimalPoint` reads it; undefined beyond its range. */
17
+ static parse(text: string): NetDecimal | undefined;
18
+ /** An exact quotient of integers, e.g. milliseconds as seconds. */
19
+ static ofFraction(mantissa: bigint, scale: number): NetDecimal;
20
+ private aligned;
21
+ plus(other: NetDecimal): NetDecimal;
22
+ minus(other: NetDecimal): NetDecimal;
23
+ times(other: NetDecimal): NetDecimal;
24
+ /** The quotient as System.Decimal divides: exact where it holds it, else rounded half to even to as many places as it holds. */
25
+ dividedBy(other: NetDecimal): NetDecimal;
26
+ compareTo(other: NetDecimal): -1 | 0 | 1;
27
+ equals(other: NetDecimal): boolean;
28
+ isNegative(): boolean;
29
+ /** `Math.Round` to the given number of decimal places in the given way. */
30
+ round(places: number, mode: 'toEven' | 'awayFromZero' | 'toPositiveInfinity' | 'toZero'): NetDecimal;
31
+ /** `Math.Ceiling`. */
32
+ ceiling(): NetDecimal;
33
+ /** The digits of the given number of decimal places, as `ToString("F" + places)` writes a value that has no more. */
34
+ toFixed(places: number): string;
35
+ /** As `ToString("0.############################")` writes it: without trailing zeros, "-0" as "0". */
36
+ toString(): string;
37
+ }
38
+ /** The number of decimal digits of the minor unit of the given ISO 4217 currency: 2 unless it is known otherwise. */
39
+ export declare const minorUnitDigits: (currency: string) => number;
40
+ /** The given value rounded up to the minor unit of the given currency, as the amount of a step. */
41
+ export declare const roundUp: (value: NetDecimal, currency: string) => NetDecimal;
42
+ /** The given value rounded to the nearest minor unit of the given currency, half away from zero, as the price of a session. */
43
+ export declare const roundToNearest: (value: NetDecimal, currency: string) => NetDecimal;
44
+ /** The given amount with the digits of the minor unit of its currency, e.g. "3.20", or with all of its digits where it has more. */
45
+ export declare function writeAmount(value: NetDecimal, currency: string): string;
46
+ /** The given value as a text without trailing zeros, e.g. "13.412". */
47
+ export declare const writeDecimal: (value: NetDecimal) => string;
48
+ /**
49
+ * An amount as GNU Taler writes it, e.g. "EUR:3.25": a currency of at most 11 letters, no sign, at most 8 fractional
50
+ * digits, an integer part of at most 2^52; its error otherwise, as WWCP_POI words it.
51
+ */
52
+ export declare function talerAmountOf(text: string | undefined): {
53
+ currency: string;
54
+ value: NetDecimal;
55
+ } | string;
56
+ /** The given property as a decimal written as a text, not negative, e.g. "13.412"; its error otherwise. */
57
+ export declare function decimalTextOf(json: JSONObject, name: string): NetDecimal | string;
58
+ /**
59
+ * The gross rates an EV Taler session is priced by, where its prices are those of the simple profile (`EVTalerRates`): one
60
+ * element, without restrictions, of ENERGY, TIME and FLAT components each at most once, with their VAT added; no minimum
61
+ * or maximum price. A session of other prices is paid in steps all the same, but its amounts and its price are not
62
+ * recalculated by a reader.
63
+ */
64
+ export declare class EVTalerRates {
65
+ readonly currency: string;
66
+ /** The gross price of a kWh, if the tariff prices energy. */
67
+ readonly energyPerKWh: NetDecimal | undefined;
68
+ /** The billing increment of energy, in Wh. */
69
+ readonly energyStepWh: NetDecimal | undefined;
70
+ /** The gross price of an hour of charging, if the tariff prices time. */
71
+ readonly timePerHour: NetDecimal | undefined;
72
+ /** The billing increment of time, in seconds. */
73
+ readonly timeStepSeconds: NetDecimal | undefined;
74
+ /** The gross flat fee, if any. */
75
+ readonly flatFee: NetDecimal | undefined;
76
+ private constructor();
77
+ /** The rates of the simple profile of the given elements of the given charging tariff, or why there are none. */
78
+ static of(currency: string, tariff: JSONObject, elements: readonly JSONObject[]): EVTalerRates | {
79
+ readonly reason: string;
80
+ };
81
+ /** The price of what a step covers, rounded up to the minor unit: its kWh at the price of energy, its minutes at the price of time. */
82
+ stepPrice(covers: EVTalerCovers): NetDecimal | string;
83
+ /**
84
+ * The price of a session of the given energy, in kWh, and duration, in milliseconds: the flat fee, the energy and the
85
+ * time each billed in its increments, rounded to the nearest minor unit of the currency.
86
+ */
87
+ sessionPrice(energy: NetDecimal, durationMs: number): NetDecimal;
88
+ }
89
+ //# sourceMappingURL=amounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amounts.d.ts","sourceRoot":"","sources":["../../src/evTaler/amounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { type JSONObject, type JSONValue } from '../json/value.ts';
2
+ import { type EVTalerMerchant } from '../network/evTaler.ts';
3
+ import { type VerifiedChargingStation, type VerifiedPrice } from '../verifier/chargingStation.ts';
4
+ import { EVTalerRates, NetDecimal } from './amounts.ts';
5
+ import { type EVTalerMeterValueVerifier, type EVTalerVerifiedMeterValue } from './meterValue.ts';
6
+ import { type EVTalerPayURI } from './payURI.ts';
7
+ import { EVTalerStep } from './step.ts';
8
+ /** How exactly a reader checked the amount of a step (`EVTalerAmountChecks`). */
9
+ export declare const EVTalerAmountChecks: {
10
+ /** What the step covers at the price of the session, rounded up to the minor unit; in step 1 with the flat fee, the reserve as the rest. */
11
+ readonly Exact: "exact";
12
+ /** The session is priced by energy and time: the amount is at least what the step covers, the rest an estimate (5.1). */
13
+ readonly Estimate: "estimate";
14
+ /** The prices of the session are not of the simple profile: the amount is not recalculated. */
15
+ readonly Unsupported: "unsupported";
16
+ };
17
+ export type EVTalerAmountCheck = typeof EVTalerAmountChecks[keyof typeof EVTalerAmountChecks];
18
+ /** A step of an EV Taler session as its contract terms and a station proof establish it (`EVTalerVerifiedStep`, 7). */
19
+ export interface EVTalerVerifiedStep {
20
+ readonly terms: EVTalerContractTerms;
21
+ readonly step: EVTalerStep;
22
+ /** The operator's merchant, as the proof gives it. */
23
+ readonly merchant: EVTalerMerchant;
24
+ /** The EV Taler tariff of the EVSE, as the proof gives it. */
25
+ readonly tariff: JSONObject;
26
+ readonly currency: string;
27
+ /** The price statement that prices the session, if any. */
28
+ readonly priceStatement: VerifiedPrice | undefined;
29
+ /** The elements that price the session: of the price statement, else of the tariff. */
30
+ readonly elements: readonly JSONObject[];
31
+ /** The rates of the simple profile, if the elements are of it. */
32
+ readonly rates: EVTalerRates | undefined;
33
+ /** When step 1 was made: the time its price statement is current at, in milliseconds since 1970. */
34
+ readonly sessionStarted: number;
35
+ /** What the step covers at the price of its dimension, if recalculated. */
36
+ readonly stepPrice: NetDecimal | undefined;
37
+ /** The flat fee, in step 1, if recalculated. */
38
+ readonly flatFee: NetDecimal | undefined;
39
+ /** The reserve, in step 1, if recalculated: the amount less the step and the flat fee. */
40
+ readonly reserve: NetDecimal | undefined;
41
+ readonly amountCheck: EVTalerAmountCheck;
42
+ /** From step 2 on: the signed meter value at the start, verified. */
43
+ readonly start: EVTalerVerifiedMeterValue | undefined;
44
+ /** What a reader should know. */
45
+ readonly diagnostics: readonly string[];
46
+ }
47
+ /** An exchange of contract terms: its base URL and its master public key. */
48
+ export interface EVTalerContractExchange {
49
+ readonly url: string;
50
+ readonly masterPublicKey: string;
51
+ }
52
+ /**
53
+ * The contract terms of a step of an EV Taler session, as GNU Taler's merchant backend makes them and its instance signs
54
+ * them (contract terms of version 0): what WWCP_POI reads of them, the rest kept as given.
55
+ */
56
+ export declare class EVTalerContractTerms {
57
+ /** The contract terms, as given. */
58
+ readonly json: JSONObject;
59
+ readonly orderId: string;
60
+ readonly currency: string;
61
+ readonly amount: NetDecimal;
62
+ /** The base URL of the merchant instance. */
63
+ readonly merchantBaseURL: string;
64
+ /** The public key of the merchant instance, which signed the contract terms. */
65
+ readonly merchantPublicKey: string;
66
+ /** The exchanges the merchant accepts. */
67
+ readonly exchanges: readonly EVTalerContractExchange[];
68
+ /** When the contract terms were made, in milliseconds since 1970. */
69
+ readonly timestamp: number;
70
+ /** Until when the step can be paid. */
71
+ readonly payDeadline: number;
72
+ /** Until when the step can be refunded. */
73
+ readonly refundDeadline: number;
74
+ /** How long the wallet asks for a refund by itself, in microseconds, Infinity for "forever"; undefined if not at all. */
75
+ readonly autoRefund: number | undefined;
76
+ /** The step in WWCP terms: "extra": { "wwcp": … }. */
77
+ readonly step: EVTalerStep;
78
+ private constructor();
79
+ /**
80
+ * Reads the given contract terms of a step (`EVTalerContractTerms.TryParse`): of version 0, with an order, an amount and
81
+ * a maximum fee in one currency, the merchant's base URL and public key, at least one exchange, the times GNU Taler
82
+ * writes as { "t_s": … }, and the step in "extra": { "wwcp": … }. Refused in the words of WWCP_POI.
83
+ */
84
+ static parse(json: JSONValue | undefined): EVTalerContractTerms;
85
+ /**
86
+ * Checks these contract terms of a step against a verified charging station (`EVTalerContractTerms.TryVerify`,
87
+ * concepts/EVTaler.md 6 and 7): the merchant and its exchanges are those of the operator's evTaler in the currency of
88
+ * the EVSE's EV Taler tariff; the step names the roaming network, an EVSE of the station, that tariff and the price
89
+ * statement current when the session began; it follows the step before, or is step 1; from step 2 on, the signed start
90
+ * value is verified with a measurement key the proof gives; the amount is the step at the price of the session, where
91
+ * the prices are of the simple profile; the refund deadline is after the payment deadline, and the wallet picks a refund
92
+ * up by itself. Refused in the words of WWCP_POI.
93
+ *
94
+ * @param priceStatements The price statements the app holds of the station, its pool and its EVSEs, as JSON.
95
+ * @param previous The step before, verified; none for step 1.
96
+ * @param verifier A transparency software verifying signed meter values, from step 2 on.
97
+ * @param payURI The taler://pay URI of the offer, if the app has it as well.
98
+ */
99
+ verify(station: VerifiedChargingStation, priceStatements: JSONValue, previous: EVTalerVerifiedStep | undefined, verifier: EVTalerMeterValueVerifier | undefined, payURI?: EVTalerPayURI): EVTalerVerifiedStep;
100
+ }
101
+ /**
102
+ * The EV Taler tariff of the given EVSE, as the proof gives its tariffs (`EVTalerContractTerms.TryGetEVTalerTariff`, 4.3):
103
+ * the first of the type AD_HOC_PAYMENT, else the first without a type, with a currency, naming no payment means or
104
+ * EV_TALER among them; refused in the words of WWCP_POI otherwise.
105
+ */
106
+ export declare function evTalerTariff(station: VerifiedChargingStation, evseId: string): JSONObject;
107
+ //# sourceMappingURL=contractTerms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contractTerms.d.ts","sourceRoot":"","sources":["../../src/evTaler/contractTerms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { type JSONObject, type JSONValue } from '../json/value.ts';
2
+ import type { VerifiedChargingStation } from '../verifier/chargingStation.ts';
3
+ import type { NetDecimal } from './amounts.ts';
4
+ /** What a transparency software reads from a signed meter value it verified: the meter that signed it, when, the energy register in kWh. */
5
+ export interface EVTalerMeterReading {
6
+ readonly meterSerialNumber: string;
7
+ /** When it was measured, in milliseconds since 1970. */
8
+ readonly timestamp: number;
9
+ readonly energy: NetDecimal;
10
+ }
11
+ /** A measurement public key a station proof gives: its identification and its key, the DER of a SubjectPublicKeyInfo. */
12
+ export interface EVTalerMeasurementKey {
13
+ readonly id: string;
14
+ readonly key: Uint8Array;
15
+ readonly json: JSONObject;
16
+ }
17
+ /**
18
+ * A transparency software verifying a signed meter value with the given public key, as it knows the format of the value,
19
+ * e.g. OCMF (`EVTalerMeterValueVerifier`): what the value says, or an Error saying why it is not valid.
20
+ */
21
+ export type EVTalerMeterValueVerifier = (value: EVTalerSignedMeterValue, key: EVTalerMeasurementKey) => EVTalerMeterReading;
22
+ /** A signed meter value verified with a key a station proof gives for the meter of the EVSE or for the station. */
23
+ export interface EVTalerVerifiedMeterValue {
24
+ readonly value: EVTalerSignedMeterValue;
25
+ readonly reading: EVTalerMeterReading;
26
+ /** The @id of the measurement public key it was verified with. */
27
+ readonly keyId: string;
28
+ /** The @id of the energy meter or the charging station whose key it is. */
29
+ readonly signedBy: string;
30
+ }
31
+ /**
32
+ * A signed meter value as a charging station sends it with OCPP 2.1 (SignedMeterValueType): the signed data as the meter
33
+ * gives it, Base64 encoded, how it is encoded and signed, and maybe the public key. It is kept and compared as sent.
34
+ */
35
+ export declare class EVTalerSignedMeterValue {
36
+ /** The signed data, canonical Base64, as the station sent it. */
37
+ readonly signedMeterData: string;
38
+ /** How the meter encodes it, e.g. "OCMF". */
39
+ readonly encodingMethod: string;
40
+ /** How it is signed, if the station says so apart from the data. */
41
+ readonly signingMethod: string | undefined;
42
+ /** The public key, canonical Base64 of the DER of a SubjectPublicKeyInfo, if the station sent it: which key of the proof verifies it. */
43
+ readonly publicKey: string | undefined;
44
+ private constructor();
45
+ /** A signed meter value as a charging station sent it, refused in the words of WWCP_POI where it is no valid one. */
46
+ static create(signedMeterData: string, encodingMethod: string, signingMethod?: string, publicKey?: string): EVTalerSignedMeterValue;
47
+ /**
48
+ * Reads a signed meter value as OCPP 2.1 writes it (`EVTalerSignedMeterValue.TryParse`): the signed data and the public
49
+ * key canonical Base64, the methods nonempty texts, nothing else; refused in its words.
50
+ */
51
+ static parse(json: JSONValue | undefined): EVTalerSignedMeterValue;
52
+ /** As OCPP 2.1 writes it. */
53
+ toJSON(): JSONObject;
54
+ /** Whether the station sent the same, field by field. */
55
+ equals(other: EVTalerSignedMeterValue | undefined): boolean;
56
+ private invalid;
57
+ }
58
+ /**
59
+ * Verifies the given signed meter value of the given EVSE with a measurement public key the station proof gives for the
60
+ * energy meter of the EVSE or for the charging station (`EVTalerSignedMeterValue.TryVerify`): the one the value names by
61
+ * its public key, else the only one there is; no key is tried after another. The reading must name the serial number of
62
+ * the meter or the station whose key it is. Refused in the words of WWCP_POI.
63
+ */
64
+ export declare function verifyMeterValue(station: VerifiedChargingStation, evseId: string, value: EVTalerSignedMeterValue, verifier: EVTalerMeterValueVerifier): EVTalerVerifiedMeterValue;
65
+ //# sourceMappingURL=meterValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meterValue.d.ts","sourceRoot":"","sources":["../../src/evTaler/meterValue.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ/C,4IAA4I;AAC5I,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAW,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAc,UAAU,CAAC;CAC3C;AAED,yHAAyH;AACzH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,EAAK,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAI,UAAU,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,qBAAqB,KAAK,mBAAmB,CAAC;AAE5H,mHAAmH;AACnH,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,KAAK,EAAM,uBAAuB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAI,mBAAmB,CAAC;IACxC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAM,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;CAC9B;AAcD;;;GAGG;AACH,qBAAa,uBAAuB;IAG5B,iEAAiE;aACjD,eAAe,EAAG,MAAM;IACxC,6CAA6C;aAC7B,cAAc,EAAI,MAAM;IACxC,oEAAoE;aACpD,aAAa,EAAK,MAAM,GAAG,SAAS;IACpD,yIAAyI;aACzH,SAAS,EAAS,MAAM,GAAG,SAAS;IARxD,OAAO;IAWP,qHAAqH;WACvG,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB;IAQ1I;;;OAGG;WACW,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,uBAAuB;IAuBzE,6BAA6B;IACtB,MAAM,IAAI,UAAU;IAS3B,yDAAyD;IAClD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,SAAS,GAAG,OAAO;IASlE,OAAO,CAAC,OAAO;CAkBlB;AAGD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAI,uBAAuB,EAClC,MAAM,EAAK,MAAM,EACjB,KAAK,EAAM,uBAAuB,EAClC,QAAQ,EAAG,yBAAyB,GAAG,yBAAyB,CA2DhG"}
@@ -0,0 +1,28 @@
1
+ import type { EVTalerMerchant } from '../network/evTaler.ts';
2
+ /** Whether two HTTPS base URLs are the same: the host in any case, the path as written (`EVTalerPayURI.SameBaseURL`). */
3
+ export declare function sameBaseURL(a: string, b: string): boolean;
4
+ /**
5
+ * A taler://pay URI of an offer, as the merchant backend gives it (`EVTalerPayURI`):
6
+ * taler://pay/{merchant_host}{/merchant_prefix_path*}/{order_id}/{session_id}{?c=claim_token}{#ssid}.
7
+ */
8
+ export declare class EVTalerPayURI {
9
+ /** The URI as given. */
10
+ readonly text: string;
11
+ /** The base URL of the merchant instance it names: https://{merchant_host}/{merchant_prefix_path}/. */
12
+ readonly merchantBaseURL: string;
13
+ readonly orderId: string;
14
+ /** GNU Taler's session of the order, if any; not the session of the offers server. */
15
+ readonly sessionId: string | undefined;
16
+ readonly claimToken: string | undefined;
17
+ private constructor();
18
+ /**
19
+ * Reads the given taler://pay URI (`EVTalerPayURI.TryParse`). Its scheme is read in any case, as QR codes write it in
20
+ * upper case; taler+http://, of a merchant without HTTPS, is refused. The order and GNU Taler's session are counted from
21
+ * the end of its path, as the merchant's path may have any number of segments. Refused in the words of WWCP_POI.
22
+ */
23
+ static parse(text: string): EVTalerPayURI;
24
+ /** Checks that it names the merchant instance of the given EV Taler merchant: its host in any case, its path as written. */
25
+ verify(merchant: EVTalerMerchant): void;
26
+ toString(): string;
27
+ }
28
+ //# sourceMappingURL=payURI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payURI.d.ts","sourceRoot":"","sources":["../../src/evTaler/payURI.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAY7D,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAwBzD;AAGD;;;GAGG;AACH,qBAAa,aAAa;IAGlB,wBAAwB;aACR,IAAI,EAAc,MAAM;IACxC,uGAAuG;aACvF,eAAe,EAAG,MAAM;aACxB,OAAO,EAAW,MAAM;IACxC,sFAAsF;aACtE,SAAS,EAAS,MAAM,GAAG,SAAS;aACpC,UAAU,EAAQ,MAAM,GAAG,SAAS;IARxD,OAAO;IAWP;;;;OAIG;WACW,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAkDhD,4HAA4H;IACrH,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAKvC,QAAQ,IAAI,MAAM;CAI5B"}