2022-01-20 12:49:57 +08:00
|
|
|
import Connection from "./connection";
|
|
|
|
import _sodium from "libsodium-wrappers";
|
|
|
|
|
2022-01-20 02:27:49 +08:00
|
|
|
window.currentConnection = undefined;
|
|
|
|
|
|
|
|
export function setConn(conn) {
|
|
|
|
window.currentConnection = conn;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getConn() {
|
|
|
|
return windows.currentConnection;
|
2022-01-20 12:49:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export async function startConn(id) {
|
|
|
|
const conn = new Connection();
|
|
|
|
setConn(conn);
|
|
|
|
await conn.start('124931507');
|
|
|
|
}
|
|
|
|
|
|
|
|
let sodium;
|
|
|
|
export async function verify(signed, pk) {
|
|
|
|
if (!sodium) {
|
|
|
|
await _sodium.ready;
|
|
|
|
sodium = _sodium;
|
|
|
|
}
|
2022-01-20 15:41:11 +08:00
|
|
|
if (typeof pk == 'string') {
|
|
|
|
pk = decodeBase64(pk);
|
|
|
|
}
|
2022-01-20 12:49:57 +08:00
|
|
|
return sodium.crypto_sign_open(signed, pk);
|
|
|
|
}
|
|
|
|
|
2022-01-20 15:41:11 +08:00
|
|
|
export function decodeBase64(pk) {
|
|
|
|
return sodium.from_base64(pk, sodium.base64_variants.ORIGINAL);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function genBoxKeyPair() {
|
|
|
|
const pair = sodium.crypto_box_keypair();
|
|
|
|
const sk = pair.privateKey;
|
|
|
|
const pk = pair.publicKey;
|
|
|
|
return [sk, pk];
|
|
|
|
}
|
|
|
|
|
|
|
|
export function genSecretKey() {
|
|
|
|
return sodium.crypto_secretbox_keygen();
|
|
|
|
}
|
|
|
|
|
|
|
|
export function seal(unsigned, theirPk, ourSk) {
|
|
|
|
const nonce = Uint8Array.from(Array(24).fill(0));
|
|
|
|
return sodium.crypto_box_easy(unsigned, nonce, theirPk, ourSk);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function encrypt(unsigned, nonce, key) {
|
|
|
|
return sodium.crypto_secretbox_easy(unsigned, nonce, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function decrypt(signed, nonce, key) {
|
|
|
|
return sodium.crypto_secretbox_open_easy(signed, nonce, key);
|
|
|
|
}
|
|
|
|
|
2022-01-20 12:49:57 +08:00
|
|
|
window.startConn = startConn;
|