bun
bun copied to clipboard
Promisified `crypto.generateKeyPair` does not fulfill the resolve value specified in the Nodejs document
What version of Bun is running?
1.1.27-canary.3+7529cd76b
What platform is your computer?
No response
What steps can reproduce the bug?
Promisified crypto.generateKeyPair
is supposed to return a Promise for an object with publicKey and privateKey, but, Bun returns only publicKey
, which type is String (please check out the Nodejs docs). I think this needs to be handled specially as described here.
import crypto from 'node:crypto'
import util from 'node:util'
const generateKeyPairAsync = util.promisify(crypto.generateKeyPair)
const keys = await generateKeyPairAsync('rsa', {
modulusLength: 2048,
publicKeyEncoding: {
type: 'spki',
format: 'pem',
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
},
})
console.log(keys)
What is the expected behavior?
The example of expected keys
is:
{
publicKey: '-----BEGIN PUBLIC KEY-----\n' +
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvVfBRt8Awas0N6zEdXV+\n' +
'cKT7Z+067Hakt1u436kPUZVOe8KXhm18ImfjFWD3yg/H+HLiWFpzGssQbmvKbWNj\n' +
'lgTR3M0aIbiUCsq3ReCitTqw9CxdfRaOe2elxHBBHImC4ApGoNydE361SByMHVeC\n' +
'S10h385/lu942W8kpcCmifkoqAWOGycSVWZVf1eHhwZ/+44+DDXPXo20l6z5JdY1\n' +
'AJ0iTpQpWVj/MPXGABbioHYR0pzmyHD1/2JsYeB/DFJzyRXzDc3VtGnfDCLrPZS6\n' +
'pkm1hzo1Neleug6mB/6rsZQRHi6jpTrjplYOFfUdiklQe0ZIlhZFAGD2Y88Ub06x\n' +
'VwIDAQAB\n' +
'-----END PUBLIC KEY-----\n',
privateKey: '-----BEGIN PRIVATE KEY-----\n' +
'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9V8FG3wDBqzQ3\n' +
'rMR1dX5wpPtn7TrsdqS3W7jfqQ9RlU57wpeGbXwiZ+MVYPfKD8f4cuJYWnMayxBu\n' +
'a8ptY2OWBNHczRohuJQKyrdF4KK1OrD0LF19Fo57Z6XEcEEciYLgCkag3J0TfrVI\n' +
'HIwdV4JLXSHfzn+W73jZbySlwKaJ+SioBY4bJxJVZlV/V4eHBn/7jj4MNc9ejbSX\n' +
'rPkl1jUAnSJOlClZWP8w9cYAFuKgdhHSnObIcPX/Ymxh4H8MUnPJFfMNzdW0ad8M\n' +
'Ius9lLqmSbWHOjU16V66DqYH/quxlBEeLqOlOuOmVg4V9R2KSVB7RkiWFkUAYPZj\n' +
'zxRvTrFXAgMBAAECggEACP1zrv8xWSVLASG7KkCQeTAp57Wfkb6s9As4R6igtwBe\n' +
'aVJ7HHhNwyNNVlthutDtk71+aAwchdu5RW4N7Hn9nDR1zwShdCWSkeZSI6wWhIF9\n' +
'wENZ2992BP+ykKe+GNbGoOLlKVD9/EofAfQWweFTO0cceOukPPD5TWURR4fAKbH7\n' +
'QYUGRtarfr6Bca++1EFABp5vxOoKVe4Na0oeHcFC4x9HNrh2/Ab7ApAqKyVlZvY0\n' +
'OscoRsvca6O5zg+JOZ91sL6AO8tiI85ImYwnKmzrpMabJzKvCTyNo/+OvQKPN87d\n' +
'stpO98/n+hw1vdUAkAs4E+M6dlaXDwFUpEPTXCtncQKBgQD2BP4HU2FqEVQLWTw+\n' +
'PCHr2xBWvh+2RFEDFSJJvxFHsbwB5ePmr3lwtNVHeObJiHHsTTWUGjqtBB7ASczt\n' +
'3dM1aHTB4pSxHUOoLD63dYQaPXCVj2gI3F+NQ9ls4aQ3CpQOdDjg4DjC0DbBH31U\n' +
'QZRfnLxYO95UXZpPzMMSNzW4EwKBgQDFBic0kaGYfqvEGpXBW/+cS033k8vVvN0+\n' +
'VuICsUNJm1Rk540qz9Z39P2HNhsP97pzzuK8IXLsbxCL0JpcONqMkGCctNVR4cq4\n' +
'c5wHPNt/htIgRChBUsdsw+O3L/pYiGmLWU/BU2d0d9loM82wwIh1TZbupg4gRKCZ\n' +
'xAWTUeQSLQKBgEZsV2sxawk5vJ0jBiOqgutI4fxyoBFErQv82LvTfdbQAclpTTuT\n' +
'r2eb3BGBgk7eR/4ke9nRSEqOi17vwUG15ee75vA5M+cfQWa6g5lwgkggnkGxs04W\n' +
'ByQg7/RDAwbeeFNK4Z09kgHyKDpQEUg1HYvhCekX+iScRrfhHVXxh+cRAoGBAJMZ\n' +
'8/2g2dkEgnRJMRSL/r2Pz+eQNrkfaMRZlCdUeBul2I36AAE96i/n/76LHAuA93nt\n' +
'toWmJ6r1hZIOLqG6ZRpb1XZK4ZZgEb5DuvQAcRW28H3cxX14M6M2YndsX+rn9n1v\n' +
'MkfyYKSpsu3E98cHCRsj0hPecV+QPaRwoYULuFAFAoGAFimqpfw9F8EloePvCyt+\n' +
'YVM2T3Zjs6QP8eZf0roHeUZZrfPeSsijxQEY5NMkJlMAtjb3K9/WGijKJZqdPvCr\n' +
'SwPA5RulOkaWs8aclKCzspG3fDrkL0ySv9DdqgHrv5ooucierp+kuXX8NWIl7Cr6\n' +
'rQGWrptWpXEqFduz/305L5c=\n' +
'-----END PRIVATE KEY-----\n'
}
What do you see instead?
Bun result is:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl7g2wWnxJLGhHku7lymd
EbR2GltXzMi+BUWUTkl7wU8xvgQxbo5t6FnBz+6+qH0vZtrD0ApRDhVd5f8YpPq3
INMUHjPEOrQAFtPSHSWnHF5fE8LseU24GawYr/81nZKz23GWWzUKQTWb6IFV56pF
fS0l5f4WNa1H63j7rZFP992NCAAPHL1ShBhCmmv56cv5KBdxn1gX1F1MSmfh0kyu
4KrWKpf0xookff9dtXo+CzTdzsoNh6oheKTua9QIiSG7/tpE+Zpp/MKbH1ufmgg/
dkfMEuodqH+QgD7EP1oyLvQQKqwVasRhplqSOvQrhwprUt4KSL7QcM7uXNIDBm3d
FwIDAQAB
-----END PUBLIC KEY-----
Additional information
https://nodejs.org/api/crypto.html#cryptogeneratekeypairtype-options-callback
Currently blocking jose
from creating crypto pair correctly.
https://github.com/panva/jose/blob/main/src/runtime/node/generate.ts#L9