Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anthonybudd/tpm2
https://github.com/anthonybudd/tpm2
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/anthonybudd/tpm2
- Owner: anthonybudd
- Created: 2023-01-05T15:16:15.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-17T01:06:45.000Z (almost 2 years ago)
- Last Synced: 2024-12-07T20:12:06.578Z (27 days ago)
- Language: JavaScript
- Size: 801 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TPM2-Node
Node JS library for working with the TPM (Trusted Platform Module) 2.0
The TPM classs is a JS API of the tpm2-tools found here [tpm2-tools.readthedocs.io](https://tpm2-tools.readthedocs.io/en/latest/).
⚠️ This is not a stable API. This repo is just for my personal use. If you would like a stable version reach out and I will release a stable 1.0 ⚠️
```
npm i trusted-platform-module-2
``````js
const TPM2 = require('trusted-platform-module-2');
const tpm2 = new TPM2;// Random bytes
console.log(tpm2.getRandom(8));// Encrypt/decrypt file.
tpm2.encrypt('path/to/.env', {
parentContext: 'key.ctx',
output: 'secrets.enc'
});
tpm2.decrypt('secrets.enc', {
parentContext: 'key.ctx',
output: 'decrypted-secrets.txt'
});
```### Example
Below is a full example on how to use the TPM library to: create a primary hierarchy, create a child object, load the public/private portions of the key into the TPM, then encrypt a file with that key.```js
tpm2.createPrimary({
keyContext: 'primary.ctx'
});
tpm2.create({
parentContext: 'primary.ctx',
keyAlgorithm: 'aes128',
public: 'key.pub',
private: 'key.priv',
});
tpm2.load({
parentContext: 'primary.ctx',
keyContext: 'key.ctx',
public: 'key.pub',
private: 'key.priv',
});
tpm2.encrypt('path/to/.env', {
parentContext: 'key.ctx',
output: 'secrets.enc'
});
```### Raspberry Pi Set-up
I tested this library using the GeekPi TPM2 module which has a Infineon Optiga SLB 9670.```sh
sudo echo 'dtparam=spi=on' >> /boot/config.txt
sudo echo 'dtoverlay=tpm-slb9670' >> /boot/config.txtapt-get install tpm2-tools
# or build from source. Recommended but more complex. https://github.com/tpm2-software
sudo rebootgit clone [email protected]:anthonybudd/TPM2.git
cd TPM2
npm i
npm run test
```