doc: example generating keypairs with WebCrypto & node:crypto
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, node.js
- Área
- cryptography, documentation
Línea de trabajo
Comienza con el ejemplo de JavaScript del issue, especialmente con generateKeyPair, generateSecp256k1KeyPair y main, y compara su uso de WebCrypto y node:crypto. Confirma los nombres de algoritmo documentados y los archivos generados esperados, incluida la cuestión abierta sobre la compatibilidad con secp256k1 en WebCrypto; se considera terminado cuando el ejemplo cubra claramente la generación de pares de claves prevista.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
'use strict';
let Fs = require('node:fs/promises');
async function generateKeyPair(algo) {
let keyPair = await crypto.subtle.generateKey(algo, true, ['sign', 'verify']);
let name = algo.namedCurve || algo.name;
let privateKeyAb = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);
let privateKeyDER = new Uint8Array(privateKeyAb);
let privateKeyPath = `./key.${name}.der`.toLowerCase();
await Fs.writeFile(privateKeyPath, privateKeyDER);
let publicKeyAb = await crypto.subtle.exportKey('spki', keyPair.publicKey);
let publicKeyDER = new Uint8Array(publicKeyAb);
let publicKeyPath = `./pub.${name}.der`.toLowerCase();
await Fs.writeFile(publicKeyPath, publicKeyDER);
console.info(`Key pair generated and saved as ${privateKeyPath} and ${publicKeyPath}`);
}
let Crypto = require('node:crypto');
async function generateSecp256k1KeyPair() {
return new Promise(function (resolve, reject) {
Crypto.generateKeyPair(
'ec',
{
namedCurve: 'secp256k1',
publicKeyEncoding: {
type: 'spki',
format: 'der',
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'der',
},
},
async function (err, publicKey, privateKey) {
if (err) {
return reject(err);
}
await Fs.writeFile('./key.secp256k1.der', privateKey);
await Fs.writeFile('./pub.secp256k1.der', publicKey);
console.info(
'secp256k1 key pair generated and saved as ./key.secp256k1.der and ./pub.secp256k1.der',
);
},
);
});
}
async function main() {
await generateKeyPair({ name: 'Ed25519' });
await generateKeyPair({ name: 'ECDSA', namedCurve: 'P-256' });
// this should be possible with WebCrypto as well, but I don't know the name to use
//await generateKeyPair({ name: 'ECDSA', namedCurve: 'secp256k1' });
// it does work with node:crypto
await generateSecp256k1KeyPair();
}
main().catch(function (err) {
console.error(err.stack);
process.exit(1);
});
- Lenguaje dominante
- JavaScript
- Estrellas
- 2
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de BeyondCodeBootcamp/passkeys
-
doc: Screenshots & Other Images Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
doc: COSE -> JWK Mappings Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
BeyondCodeBootcamp/passkeys#6 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
Todos los issues de BeyondCodeBootcamp/passkeys
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mksglu/context-mode#1200 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
neondatabase/website#5944 ·
-
module: core
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
jaegertracing/jaeger-ui#4506 ·