mirror of
https://github.com/openpgpjs/openpgpjs.git
synced 2025-11-24 22:45:48 +00:00
Drop internal OID hex mapping from enums.curves
This commit is contained in:
parent
c499c791af
commit
fb710bc2dc
@ -49,52 +49,52 @@ const nodeCurves = nodeCrypto ? {
|
||||
} : {};
|
||||
|
||||
const curves = {
|
||||
nistP256: {
|
||||
[enums.curve.nistP256]: {
|
||||
oid: [0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha256,
|
||||
cipher: enums.symmetric.aes128,
|
||||
node: nodeCurves.nistP256,
|
||||
web: webCurves.nistP256,
|
||||
node: nodeCurves[enums.curve.nistP256],
|
||||
web: webCurves[enums.curve.nistP256],
|
||||
payloadSize: 32,
|
||||
sharedSize: 256
|
||||
},
|
||||
nistP384: {
|
||||
[enums.curve.nistP384]: {
|
||||
oid: [0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x22],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha384,
|
||||
cipher: enums.symmetric.aes192,
|
||||
node: nodeCurves.nistP384,
|
||||
web: webCurves.nistP384,
|
||||
node: nodeCurves[enums.curve.nistP384],
|
||||
web: webCurves[enums.curve.nistP384],
|
||||
payloadSize: 48,
|
||||
sharedSize: 384
|
||||
},
|
||||
nistP521: {
|
||||
[enums.curve.nistP521]: {
|
||||
oid: [0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x23],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha512,
|
||||
cipher: enums.symmetric.aes256,
|
||||
node: nodeCurves.nistP521,
|
||||
web: webCurves.nistP521,
|
||||
node: nodeCurves[enums.curve.nistP521],
|
||||
web: webCurves[enums.curve.nistP521],
|
||||
payloadSize: 66,
|
||||
sharedSize: 528
|
||||
},
|
||||
secp256k1: {
|
||||
[enums.curve.secp256k1]: {
|
||||
oid: [0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x0A],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha256,
|
||||
cipher: enums.symmetric.aes128,
|
||||
node: nodeCurves.secp256k1,
|
||||
node: nodeCurves[enums.curve.secp256k1],
|
||||
payloadSize: 32
|
||||
},
|
||||
ed25519Legacy: {
|
||||
[enums.curve.ed25519Legacy]: {
|
||||
oid: [0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0xDA, 0x47, 0x0F, 0x01],
|
||||
keyType: enums.publicKey.eddsaLegacy,
|
||||
hash: enums.hash.sha512,
|
||||
node: false, // nodeCurves.ed25519 TODO
|
||||
payloadSize: 32
|
||||
},
|
||||
curve25519Legacy: {
|
||||
[enums.curve.curve25519Legacy]: {
|
||||
oid: [0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01],
|
||||
keyType: enums.publicKey.ecdh,
|
||||
hash: enums.hash.sha256,
|
||||
@ -102,28 +102,28 @@ const curves = {
|
||||
node: false, // nodeCurves.curve25519 TODO
|
||||
payloadSize: 32
|
||||
},
|
||||
brainpoolP256r1: {
|
||||
[enums.curve.brainpoolP256r1]: {
|
||||
oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x07],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha256,
|
||||
cipher: enums.symmetric.aes128,
|
||||
node: nodeCurves.brainpoolP256r1,
|
||||
node: nodeCurves[enums.curve.brainpoolP256r1],
|
||||
payloadSize: 32
|
||||
},
|
||||
brainpoolP384r1: {
|
||||
[enums.curve.brainpoolP384r1]: {
|
||||
oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0B],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha384,
|
||||
cipher: enums.symmetric.aes192,
|
||||
node: nodeCurves.brainpoolP384r1,
|
||||
node: nodeCurves[enums.curve.brainpoolP384r1],
|
||||
payloadSize: 48
|
||||
},
|
||||
brainpoolP512r1: {
|
||||
[enums.curve.brainpoolP512r1]: {
|
||||
oid: [0x06, 0x09, 0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0D],
|
||||
keyType: enums.publicKey.ecdsa,
|
||||
hash: enums.hash.sha512,
|
||||
cipher: enums.symmetric.aes256,
|
||||
node: nodeCurves.brainpoolP512r1,
|
||||
node: nodeCurves[enums.curve.brainpoolP512r1],
|
||||
payloadSize: 64
|
||||
}
|
||||
};
|
||||
@ -217,7 +217,7 @@ async function generate(curveName) {
|
||||
* @returns {enums.hash} hash algorithm
|
||||
*/
|
||||
function getPreferredHashAlgo(oid) {
|
||||
return curves[enums.write(enums.curve, oid.toHex())].hash;
|
||||
return curves[oid.getName()].hash;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -232,14 +232,14 @@ function getPreferredHashAlgo(oid) {
|
||||
*/
|
||||
async function validateStandardParams(algo, oid, Q, d) {
|
||||
const supportedCurves = {
|
||||
nistP256: true,
|
||||
nistP384: true,
|
||||
nistP521: true,
|
||||
secp256k1: true,
|
||||
curve25519Legacy: algo === enums.publicKey.ecdh,
|
||||
brainpoolP256r1: true,
|
||||
brainpoolP384r1: true,
|
||||
brainpoolP512r1: true
|
||||
[enums.curve.nistP256]: true,
|
||||
[enums.curve.nistP384]: true,
|
||||
[enums.curve.nistP521]: true,
|
||||
[enums.curve.secp256k1]: true,
|
||||
[enums.curve.curve25519Legacy]: algo === enums.publicKey.ecdh,
|
||||
[enums.curve.brainpoolP256r1]: true,
|
||||
[enums.curve.brainpoolP384r1]: true,
|
||||
[enums.curve.brainpoolP512r1]: true
|
||||
};
|
||||
|
||||
// Check whether the given curve is supported
|
||||
@ -262,7 +262,7 @@ async function validateStandardParams(algo, oid, Q, d) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const nobleCurve = await util.getNobleCurve(enums.publicKey.ecdsa, enums.write(enums.curve, oid.toHex())); // excluding curve25519Legacy, ecdh and ecdsa use the same curves
|
||||
const nobleCurve = await util.getNobleCurve(enums.publicKey.ecdsa, curveName); // excluding curve25519Legacy, ecdh and ecdsa use the same curves
|
||||
/*
|
||||
* Re-derive public point Q' = dG from private key
|
||||
* Expect Q == Q'
|
||||
|
||||
@ -16,46 +16,37 @@ export default {
|
||||
'nistP256': 'nistP256',
|
||||
/** @deprecated use `nistP256` instead */
|
||||
'p256': 'nistP256',
|
||||
'2a8648ce3d030107': 'nistP256',
|
||||
|
||||
/** NIST P-384 Curve */
|
||||
'nistP384': 'nistP384',
|
||||
/** @deprecated use `nistP384` instead */
|
||||
'p384': 'nistP384',
|
||||
'2b81040022': 'nistP384',
|
||||
|
||||
/** NIST P-521 Curve */
|
||||
'nistP521': 'nistP521',
|
||||
/** @deprecated use `nistP521` instead */
|
||||
'p521': 'nistP521',
|
||||
'2b81040023': 'nistP521',
|
||||
|
||||
/** SECG SECP256k1 Curve */
|
||||
'secp256k1': 'secp256k1',
|
||||
'2b8104000a': 'secp256k1',
|
||||
|
||||
/** Ed25519 - deprecated by crypto-refresh (replaced by standaone Ed25519 algo) */
|
||||
'ed25519Legacy': 'ed25519Legacy',
|
||||
/** @deprecated use `ed25519Legacy` instead */
|
||||
'ed25519': 'ed25519Legacy',
|
||||
'2b06010401da470f01': 'ed25519Legacy',
|
||||
|
||||
/** Curve25519 - deprecated by crypto-refresh (replaced by standaone X25519 algo) */
|
||||
'curve25519Legacy': 'curve25519Legacy',
|
||||
/** @deprecated use `curve25519Legacy` instead */
|
||||
'curve25519': 'curve25519Legacy',
|
||||
'2b060104019755010501': 'curve25519Legacy',
|
||||
|
||||
/** BrainpoolP256r1 Curve */
|
||||
'brainpoolP256r1': 'brainpoolP256r1',
|
||||
'2b2403030208010107': 'brainpoolP256r1',
|
||||
|
||||
/** BrainpoolP384r1 Curve */
|
||||
'brainpoolP384r1': 'brainpoolP384r1',
|
||||
'2b240303020801010b': 'brainpoolP384r1',
|
||||
|
||||
/** BrainpoolP512r1 Curve */
|
||||
'2b240303020801010d': 'brainpoolP512r1',
|
||||
'brainpoolP512r1': 'brainpoolP512r1'
|
||||
},
|
||||
|
||||
|
||||
@ -35,6 +35,18 @@
|
||||
import util from '../util';
|
||||
import enums from '../enums';
|
||||
|
||||
const knownOIDs = {
|
||||
'2a8648ce3d030107': enums.curve.nistP256,
|
||||
'2b81040022': enums.curve.nistP384,
|
||||
'2b81040023': enums.curve.nistP521,
|
||||
'2b8104000a': enums.curve.secp256k1,
|
||||
'2b06010401da470f01': enums.curve.ed25519Legacy,
|
||||
'2b060104019755010501': enums.curve.curve25519Legacy,
|
||||
'2b2403030208010107': enums.curve.brainpoolP256r1,
|
||||
'2b240303020801010b': enums.curve.brainpoolP384r1,
|
||||
'2b240303020801010d': enums.curve.brainpoolP512r1
|
||||
};
|
||||
|
||||
class OID {
|
||||
constructor(oid) {
|
||||
if (oid instanceof OID) {
|
||||
@ -88,15 +100,16 @@ class OID {
|
||||
|
||||
/**
|
||||
* If a known curve object identifier, return the canonical name of the curve
|
||||
* @returns {string} String with the canonical name of the curve.
|
||||
* @returns {enums.curve} String with the canonical name of the curve
|
||||
* @throws if unknown
|
||||
*/
|
||||
getName() {
|
||||
const hex = this.toHex();
|
||||
if (enums.curve[hex]) {
|
||||
return enums.write(enums.curve, hex);
|
||||
} else {
|
||||
const name = knownOIDs[this.toHex()];
|
||||
if (!name) {
|
||||
throw new Error('Unknown curve object identifier.');
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user