windo69lib
Version:
Pre-built version of DPAPI (Data Protection API of Windows). Encrypt and decrypt data.
61 lines (41 loc) • 2.13 kB
Markdown
# DPAPI
[](https://www.npmjs.com/package/@primno/dpapi)
[](https://github.com/primno/dpapi/blob/main/LICENSE)

[](https://codecov.io/gh/primno/dpapi)
Native module to encrypt/decrypt data on Windows with DPAPI.
This native module is **prebuilt** for Node.JS running on Windows. It provides the win32-x64 N-API module.
Based on the port to N-API made by [Microsoft](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/extensions/msal-node-extensions/src/dpapi-addon) in @msal-node-extension from the work of [Brad Hughes](https://github.com/bradhugh/node-dpapi).
> This package is part of the [Primno](https://primno.io) framework.
## Why this package?
Other similar packages require to build the native module on the target machine during the installation.
This means that you must have Python and Visual C++ installed, production environment included.
This package is prebuilt, so you don't need to have build tools installed on the target machine.
## Install
The win32-x64 prebuilt module will be installed with the following command.
```bash
npm install @primno/dpapi
```
## Definition
```ts
function protectData(
userData: Uint8Array,
optionalEntropy: Uint8Array | null,
scope: "CurrentUser" | "LocalMachine"
): Uint8Array;
function unprotectData(
encryptedData: Uint8Array,
optionalEntropy: Uint8Array | null,
scope: "CurrentUser" | "LocalMachine"
): Uint8Array;
```
## Usage
```ts
import { Dpapi } from "@primno/dpapi";
const buffer = Buffer.from("Hello world", "utf-8");
const encrypted = Dpapi.protectData(buffer, null, "CurrentUser");
const decrypted = Dpapi.unprotectData(encrypted, null, "CurrentUser");
```
## Credits
- Brad Hughes for the original code.
- Microsoft for the N-API port in MSAL-Node-Extension.