1.1.1 • Published 1 year ago

pkauth v1.1.1

Weekly downloads
-
License
AGPL-3.0
Repository
github
Last release
1 year ago

🔑 PkAuth (Private key authentication)

This npm package provides a secure user authentication method that utilizes private keys for authentication. By eliminating the need for usernames and passwords, it enhances security. However if you wanted added security with a passphrase, a encrypted private key option is avaliable. This authentication system employs openpgp and a curve algorithm of your choice to function effectively.

Installation

Installing torv3 is a straightforward process. First, ensure that you have Node.js version 12.x or higher and a node package manager (such as NPM) installed on your system.

To install pkauth, open your terminal or command prompt and enter the following command:

npm i pkauth

Example

Standard authentication

const pkauth = require('pkauth');
const auth = new pkauth('ed25519')

(async () => {
  const keys = await auth.generateKeyPair();
  /*{
     privateKey: <String>,
     publicKey: <String>,
     revocationCertificate:  <String>
  }*/

  const publicKey = await auth.generatePublic(keys.privateKey);
  /*{
     publicKey: <String>
  }*/

  const valide = await auth.validateKeys(keys.privateKey, publicKey)
  /* True */
})():

Encrypted authentication

const pkauth = require('pkauth');
const auth = new pkauth('ed25519')

(async () => {
  const keys = await auth.generateKeyPair();
  /*{
     privateKey: <String>,
     publicKey: <String>,
     revocationCertificate:  <String>
  }*/

  const encryptedPrivateKey = await auth.encryptPrivateKey(keys.privateKey, 'SuperSecurePassPhrase')
  /*{
     privateKey: <String>
  }*/
  
  const decryptedPrivateKey = await auth.decryptPrivateKey(encryptedPrivateKey.privateKey, 'SuperSecurePassPhrase')
  /*{
     privateKey: <String>
  }*/

  const publicKey = auth.generatePublic(decryptedPrivateKey.privateKey);
  /*{
     publicKey: <String>
  }*/

  const valide = auth.validateKeys(keys.privateKey, publicKey)
  /* True */
})();

API

auth.generateKeyPair

auth.generateKeyPair()

Generates a pair key.

auth.generatePublic

auth.generatePublic(privateKey)

Generates a public key from the provided private key.

  • privateKey is a required string armoured pgp private key.

auth.encryptPrivateKey

auth.encryptPrivateKey(privateKey, passphrase)

Generates a encrypted private key from the provided private key and passphrase

  • privateKey is a required string armoured pgp private key.
  • passphrase is a required string passphrase.

auth.decryptPrivateKey

auth.decryptPrivateKey(encryptedPrivateKey, passphrase)

Generates a decrypted private key from the provided encrypted private key and passphrase

  • encryptedPrivateKey is a required string armoured pgp encrypted private key.
  • passphrase is a required string passphrase.

auth.validateKeys

auth.validateKeys(privateKey, publicKey)

Validates inputed public key is equal to the derived public key from the private key.

  • privateKey is a required string armoured pgp private key.
  • publicKey is a required string armoured pgp public key.