Initial Node.js library and CLI
This commit is contained in:
commit
dd74209ed1
14 files changed
+1343
No files matched your search
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
const { Boss, SymmetricKey } = require('unicrypto');
|
||||
const { initializeCrypto, openCrypstie } = require('../src');
|
||||
|
||||
async function main() {
|
||||
await initializeCrypto();
|
||||
const key = new SymmetricKey();
|
||||
const text = `Crypstie Node compatibility fixture ${new Date().toISOString()}`;
|
||||
const record = {
|
||||
guid: '',
|
||||
encryptedData: key.etaEncryptSync(new TextEncoder().encode(text)),
|
||||
deleteAt: new Date(Date.now() + 90 * 24 * 60 * 60 * 1000),
|
||||
burnOnShow: false,
|
||||
showWide: false,
|
||||
syntaxHighlighting: null,
|
||||
editable: false,
|
||||
ownerHandle: null,
|
||||
};
|
||||
|
||||
const form = new FormData();
|
||||
form.append('data', new Blob([Boss.dump(record)]), 'crypstie.boss');
|
||||
const response = await fetch('https://crypstie.com/api/crypstie', {
|
||||
method: 'POST',
|
||||
body: form,
|
||||
});
|
||||
if (!response.ok) throw new Error(`create failed: HTTP ${response.status}`);
|
||||
|
||||
const id = await response.text();
|
||||
const encodedKey = Buffer.from(key.pack())
|
||||
.toString('base64')
|
||||
.replaceAll('+', '.')
|
||||
.replaceAll('/', '_')
|
||||
.replace(/=+$/, '');
|
||||
const url = `https://crypstie.com/_${id}#${encodedKey}`;
|
||||
const opened = await openCrypstie(url);
|
||||
if (opened.text !== text) throw new Error('live round trip returned different plaintext');
|
||||
console.log(url);
|
||||
console.log(opened.text);
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in new issue
Block a user