#encryption #e2ee #security

rgp-web

WebAssembly bindings for the RGP crate

1 unstable release

Uses new Rust 2024

new 0.3.3 Mar 31, 2025

#48 in #e2ee

Download history 62/week @ 2025-03-26

62 downloads per month

MIT license

71KB
1K SLoC

RGP Web

WebAssembly bindings for RGP.

Usage

import init, { generate_fingerprint, generate_dh_keys, encrypt_dh, decrypt_dh, } from "https://unpkg.com/rgp-web@0.3.3/rgp_web.js";


(async () => {
    await init();

    // fingerprint of sender
    const fingerprint = generate_fingerprint();

    // public/private keys for sender/receiver
    const senderKeys = generate_dh_keys();
    const receiverKeys = generate_dh_keys();

    // content to be sent
    const encoder = new TextEncoder();
    const content = encoder.encode("hello world :)");

    // encrypt
    const encryptedContent = encrypt_dh(
        fingerprint.fingerprint,
        content,
        senderKeys.private,
        receiverKeys.public,
    );
    console.log("encrypted: ", encryptedContent);

    // decrypt
    const decryptedContent = decrypt_dh(
        0,
        encryptedContent,
        fingerprint.verifier,
        senderKeys.public,
        receiverKeys.private
    );

    const decoder = new TextDecoder();
    console.log("decrypted: ", decoder.decode(decryptedContent));
})();

Development

Install wasm-pack.

cargo install wasm-pack

Build with wasm-pack.

wasm-pack build --target web

Publish with wasm-pack.

wasm-pack publish

Dependencies

~4.5–6.5MB
~109K SLoC