https://github.com/alexyer/xxxdh-js
WASM wrapper around xxxdh library implementing Extended Triple Diffie-Hellman key exchange.
https://github.com/alexyer/xxxdh-js
cryptography diffie-hellman key-exchange-protocol
Last synced: 5 months ago
JSON representation
WASM wrapper around xxxdh library implementing Extended Triple Diffie-Hellman key exchange.
- Host: GitHub
- URL: https://github.com/alexyer/xxxdh-js
- Owner: alexyer
- License: mit
- Created: 2022-01-14T12:49:53.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-01-14T14:29:55.000Z (over 4 years ago)
- Last Synced: 2025-09-20T05:52:15.417Z (9 months ago)
- Topics: cryptography, diffie-hellman, key-exchange-protocol
- Language: Rust
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# XXXDH_JS
WASM wrapper around xxxdh library implementing Extended Triple Diffie-Hellman key exchange.
## Usage
```javascript
import * as xxxdh from "xxxdh-js";
let alice_identity = new xxxdh.X25519RistrettoKeyPair();
let alice_prekey = new xxxdh.X25519RistrettoKeyPair();
let alice_signature = alice_identity.sign(alice_prekey.public);
let alice_protocol = new xxxdh.ProtocolX25519RistrettoInMemSha256Aes256Gm(alice_identity.to_vec(), alice_prekey.to_vec(), alice_signature);
let onetime_keypair = new xxxdh.X25519RistrettoKeyPair();
let bob_identity = new xxxdh.X25519RistrettoKeyPair();
let bob_prekey = new xxxdh.X25519RistrettoKeyPair();
let bob_signature = bob_identity.sign(bob_prekey.public);
let bob_protocol = new xxxdh.ProtocolX25519RistrettoInMemSha256Aes256Gm(bob_identity.to_vec(), bob_prekey.to_vec(), bob_signature, [onetime_keypair.to_vec()]);
let alice_msg = alice_protocol.prepare_init_msg(bob_identity.public, bob_prekey.public, bob_signature, onetime_keypair.public);
let alice_init_msg = alice_msg.init_msg;
let alice_sk = alice_msg.shared_secret;
let bob_sk = bob_protocol.derive_shared_secret(
alice_init_msg.sender_identity,
alice_init_msg.sender_ephemerial_key,
alice_init_msg.receiver_onetime_key,
alice_init_msg.nonce, alice_init_msg.cyphertext
);
console.log("Alice:", alice_sk);
console.log("Bob:", bob_sk);
```