Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Nodejs with typescript TypeError: Passphrase required for encrypted key

I am trying to make authentication with JWT in node js and following this tutorial
https://www.becomebetterprogrammer.com/jwt-authentication-middleware-nodejs-typescript/
but now I am getting this error and don’t know how to solve it

import { sign, SignOptions } from 'jsonwebtoken';
import * as fs from 'fs';
import * as path from 'path';

export function generateToken() {
    // information to be encoded in the JWT
    const passphrase = 'shivamyadav';
    const payload = {
        id: 1,  
        email: '',
        role: '',
        iat: new Date().getTime(), // current time,
    };
    // read private key value
    const privateKey = fs.readFileSync(path.join(__dirname, '../../private.pem'), 'utf8');
    // sign with RSA SHA256
    const signInOptions: SignOptions = {
      // RS256 uses a public/private key pair. The API provides the private key
      // to generate the JWT. The client gets a public key to validate the
      // signature
      algorithm: 'RS256',
      expiresIn: '1h',
    };
    
    const token = sign(payload, privateKey, signInOptions);
  }

and error is

node:internal/crypto/sig:131
[1]   const ret = this[kHandle].sign(data, format, type, passphrase, rsaPadding,
[1]                             ^
[1]
[1] TypeError: Passphrase required for encrypted key
[1]     at Sign.sign (node:internal/crypto/sig:131:29)
[1]     at Object.sign (D:\projects\pro14\node_modules\jwa\index.js:152:45)
[1]     at Object.jwsSign [as sign] (D:\projects\pro14\node_modules\jws\lib\sign-stream.js:32:24)
[1]     at module.exports (D:\projects\pro14\node_modules\jsonwebtoken\sign.js:204:16)
[1]     at generateToken (D:\projects\pro14\dist\utils\jwt.utils.js:49:43)
[1]     at Server.<anonymous> (D:\projects\pro14\dist\app.js:25:57)
[1]     at Object.onceWrapper (node:events:509:28)
[1]     at Server.emit (node:events:390:28)
[1]     at emitListeningNT (node:net:1368:10)
[1]     at processTicksAndRejections (node:internal/process/task_queues:82:21) {
[1]   code: 'ERR_MISSING_PASSPHRASE'
[1] }

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Use

const privateKey = {
  key: fs.readFileSync(path.join(__dirname, '../../private.pem'), 'utf8'),
  passphrase: <passphrase>
};

where <passphrase> is the passphrase that was chosen when the private key was generated or exported. For example, the openssl genrsa command mentioned in the tutorial prompts you for a passphrase before generating a private key.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading