@open-charging-cloud/chargy-core 0.11.0 → 0.11.2
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/README.md +1 -1
- package/dist/browser/index.js +63 -17
- package/dist/browser/index.js.map +1 -1
- package/dist/chargy.d.ts +1 -1
- package/dist/chargy.d.ts.map +1 -1
- package/dist/node/index.js +63 -17
- package/dist/node/index.js.map +1 -1
- package/package.json +1 -1
package/dist/chargy.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export declare class Chargy {
|
|
|
53
53
|
private PublicKeyIdFromFileName;
|
|
54
54
|
private TryToParseDERPublicKey;
|
|
55
55
|
private IsHexEncodedPublicKeyFile;
|
|
56
|
-
private
|
|
56
|
+
private TryToGetPublicKeyHEX;
|
|
57
57
|
private TryToCreatePublicKeyLookup;
|
|
58
58
|
private normalizeMIMEType;
|
|
59
59
|
private getQRCodeImageMIMETypeFromFileName;
|
package/dist/chargy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chargy.d.ts","sourceRoot":"","sources":["../src/chargy.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,gBAAgB,MAAqB,+BAA+B,CAAA;AAChF,OAAO,KAAK,wBAAwB,MAAa,wCAAwC,CAAA;AACzF,OAAO,KAAK,0BAA0B,MAAW,0CAA0C,CAAA;AAC3F,OAAO,KAAK,SAAS,MAA4B,mBAAmB,CAAA;AACpE,OAAO,KAAK,aAAa,MAAwB,6BAA6B,CAAA;AAC9E,OAAO,KAAK,SAAS,MAA4B,wBAAwB,CAAA;AAKzE,OAAO,KAAK,MAAM,MAA+B,QAAQ,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EAAE,MAAa,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"chargy.d.ts","sourceRoot":"","sources":["../src/chargy.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.js
CHANGED
|
@@ -10431,33 +10431,58 @@ var Chargy = class {
|
|
|
10431
10431
|
);
|
|
10432
10432
|
});
|
|
10433
10433
|
const publicKeyDER = ASN1_PublicKey.decode(publicKeyBuffer, "der");
|
|
10434
|
-
const
|
|
10434
|
+
const firstOID = publicKeyDER.oids[0];
|
|
10435
|
+
if (firstOID === void 0)
|
|
10436
|
+
throw new Error("The SubjectPublicKeyInfo algorithm identifier is missing!");
|
|
10437
|
+
const KeyType_OID = firstOID.join(".");
|
|
10435
10438
|
let KeyType = "unknown";
|
|
10436
10439
|
switch (KeyType_OID) {
|
|
10437
10440
|
case "1.2.840.10045.2.1":
|
|
10438
10441
|
KeyType = "ecPublicKey";
|
|
10439
10442
|
break;
|
|
10443
|
+
case "1.3.101.112":
|
|
10444
|
+
case "1.3.101.113":
|
|
10445
|
+
KeyType = "EdDSA";
|
|
10446
|
+
break;
|
|
10447
|
+
case "2.16.840.1.101.3.4.3.18":
|
|
10448
|
+
KeyType = "ML-DSA";
|
|
10449
|
+
break;
|
|
10440
10450
|
}
|
|
10441
|
-
const
|
|
10442
|
-
let
|
|
10443
|
-
switch (
|
|
10451
|
+
const Algorithm_OID = publicKeyDER.oids[1]?.join(".") ?? KeyType_OID;
|
|
10452
|
+
let Algorithm = "unknown";
|
|
10453
|
+
switch (Algorithm_OID) {
|
|
10454
|
+
case "1.3.101.112":
|
|
10455
|
+
Algorithm = "Ed25519";
|
|
10456
|
+
break;
|
|
10457
|
+
case "1.3.101.113":
|
|
10458
|
+
Algorithm = "Ed448";
|
|
10459
|
+
break;
|
|
10460
|
+
case "2.16.840.1.101.3.4.3.18":
|
|
10461
|
+
Algorithm = "ML-DSA-65";
|
|
10462
|
+
break;
|
|
10444
10463
|
// Koblitz 224-bit curve
|
|
10445
10464
|
case "1.3.132.0.32":
|
|
10446
|
-
|
|
10465
|
+
Algorithm = "secp224k1";
|
|
10447
10466
|
break;
|
|
10448
10467
|
// NIST/ANSI X9.62 named 256-bit elliptic curve used with SHA256
|
|
10449
10468
|
case "1.2.840.10045.3.1.7":
|
|
10450
|
-
|
|
10469
|
+
Algorithm = "secp256r1";
|
|
10451
10470
|
break;
|
|
10452
10471
|
// NIST/ANSI X9.62 named 384-bit elliptic curve used with SHA384
|
|
10453
10472
|
case "1.3.132.0.34":
|
|
10454
|
-
|
|
10473
|
+
Algorithm = "secp384r1";
|
|
10455
10474
|
break;
|
|
10456
10475
|
// NIST/ANSI X9.62 named 521-bit elliptic curve used with SHA512
|
|
10457
10476
|
case "1.3.132.0.35":
|
|
10458
|
-
|
|
10477
|
+
Algorithm = "secp521r1";
|
|
10459
10478
|
break;
|
|
10460
10479
|
}
|
|
10480
|
+
const publicKeyData = new Uint8Array(publicKeyDER.publicKey.data);
|
|
10481
|
+
const expectedLength = Algorithm === "Ed25519" ? 32 : Algorithm === "Ed448" ? 57 : Algorithm === "ML-DSA-65" ? 1952 : void 0;
|
|
10482
|
+
if (publicKeyDER.publicKey.unused !== void 0 && publicKeyDER.publicKey.unused !== 0)
|
|
10483
|
+
throw new Error("The SubjectPublicKeyInfo public key has unused bits!");
|
|
10484
|
+
if (expectedLength !== void 0 && publicKeyData.length !== expectedLength)
|
|
10485
|
+
throw new Error(`Invalid ${Algorithm} public key length: expected ${expectedLength} bytes, got ${publicKeyData.length}!`);
|
|
10461
10486
|
return {
|
|
10462
10487
|
"@id": keyId,
|
|
10463
10488
|
"@context": "https://open.charging.cloud/contexts/CTR+json",
|
|
@@ -10466,15 +10491,15 @@ var Chargy = class {
|
|
|
10466
10491
|
"@id": keyId,
|
|
10467
10492
|
"@context": "https://open.charging.cloud/contexts/publicKey+json",
|
|
10468
10493
|
"subject": keyId,
|
|
10469
|
-
type: {
|
|
10494
|
+
type: KeyType === "EdDSA" || KeyType === "ML-DSA" ? KeyType : {
|
|
10470
10495
|
oid: KeyType_OID,
|
|
10471
10496
|
name: KeyType
|
|
10472
10497
|
},
|
|
10473
10498
|
algorithm: {
|
|
10474
|
-
oid:
|
|
10475
|
-
name:
|
|
10499
|
+
oid: Algorithm_OID,
|
|
10500
|
+
name: Algorithm
|
|
10476
10501
|
},
|
|
10477
|
-
value: buf2hex(
|
|
10502
|
+
value: buf2hex(publicKeyData),
|
|
10478
10503
|
certainty: 0
|
|
10479
10504
|
}
|
|
10480
10505
|
]
|
|
@@ -10488,15 +10513,36 @@ var Chargy = class {
|
|
|
10488
10513
|
const publicKeyHEX = textContent.replace(/\s+/g, "");
|
|
10489
10514
|
return publicKeyFile && publicKeyHEX.length >= 80 && publicKeyHEX.length % 2 === 0 && publicKeyHEX.startsWith("30") && /^[0-9a-fA-F]+$/.test(publicKeyHEX);
|
|
10490
10515
|
}
|
|
10491
|
-
|
|
10516
|
+
TryToGetPublicKeyHEX(fileName, textContent) {
|
|
10492
10517
|
if (textContent == null)
|
|
10493
10518
|
return void 0;
|
|
10494
10519
|
if (textContent.startsWith("-----BEGIN PUBLIC KEY-----") && textContent.endsWith("-----END PUBLIC KEY-----")) {
|
|
10495
10520
|
const publicKeyPEM = textContent.replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "").split("\n").map((line) => line.trim()).filter((line) => line !== "" && !line.startsWith("#")).join("");
|
|
10496
|
-
|
|
10521
|
+
try {
|
|
10522
|
+
const publicKeyDER = Buffer$1.from(publicKeyPEM, "base64");
|
|
10523
|
+
const publicKey = this.TryToParseDERPublicKey(
|
|
10524
|
+
this.PublicKeyIdFromFileName(fileName),
|
|
10525
|
+
publicKeyDER
|
|
10526
|
+
).publicKeys[0];
|
|
10527
|
+
const algorithm = typeof publicKey?.algorithm === "string" ? publicKey.algorithm : publicKey?.algorithm.name;
|
|
10528
|
+
return algorithm === "Ed25519" || algorithm === "Ed448" || algorithm === "ML-DSA-65" ? publicKey?.value : buf2hex(publicKeyDER);
|
|
10529
|
+
} catch {
|
|
10530
|
+
return void 0;
|
|
10531
|
+
}
|
|
10532
|
+
}
|
|
10533
|
+
if (this.IsHexEncodedPublicKeyFile(fileName, textContent)) {
|
|
10534
|
+
try {
|
|
10535
|
+
const publicKeyDER = Buffer$1.from(textContent.replace(/\s+/g, ""), "hex");
|
|
10536
|
+
const publicKey = this.TryToParseDERPublicKey(
|
|
10537
|
+
this.PublicKeyIdFromFileName(fileName),
|
|
10538
|
+
publicKeyDER
|
|
10539
|
+
).publicKeys[0];
|
|
10540
|
+
const algorithm = typeof publicKey?.algorithm === "string" ? publicKey.algorithm : publicKey?.algorithm.name;
|
|
10541
|
+
return algorithm === "Ed25519" || algorithm === "Ed448" || algorithm === "ML-DSA-65" ? publicKey?.value : buf2hex(publicKeyDER);
|
|
10542
|
+
} catch {
|
|
10543
|
+
return void 0;
|
|
10544
|
+
}
|
|
10497
10545
|
}
|
|
10498
|
-
if (this.IsHexEncodedPublicKeyFile(fileName, textContent))
|
|
10499
|
-
return textContent.replace(/\s+/g, "");
|
|
10500
10546
|
return void 0;
|
|
10501
10547
|
}
|
|
10502
10548
|
TryToCreatePublicKeyLookup(processedFiles) {
|
|
@@ -11122,7 +11168,7 @@ var Chargy = class {
|
|
|
11122
11168
|
let textContent = new TextDecoder("utf-8").decode(expandedFile.data).trim();
|
|
11123
11169
|
if (textContent.charCodeAt(0) === 65279)
|
|
11124
11170
|
textContent = textContent.substring(1);
|
|
11125
|
-
const publicKeyHEX = this.
|
|
11171
|
+
const publicKeyHEX = this.TryToGetPublicKeyHEX(expandedFile.name, textContent);
|
|
11126
11172
|
if (publicKeyHEX != null)
|
|
11127
11173
|
publicKeyHEXLookup.set(this.PublicKeyIdFromFileName(expandedFile.name), publicKeyHEX);
|
|
11128
11174
|
}
|