Skip to content

Commit 32e2190

Browse files
committed
Add samples/deno for @hpke/core.
1 parent adb3f5a commit 32e2190

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

core/samples/deno/deno.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"tasks": {
3+
"dev": "deno run --watch main.ts"
4+
},
5+
"imports": {
6+
"@hpke/core": "jsr:@hpke/core@^1.2.9",
7+
"@std/assert": "jsr:@std/assert@1"
8+
}
9+
}

core/samples/deno/deno.lock

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/samples/deno/main.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import {
2+
Aes128Gcm, CipherSuite, DhkemP256HkdfSha256, HkdfSha256,
3+
} from "@hpke/core";
4+
5+
async function doHpke() {
6+
// setup
7+
const suite = new CipherSuite({
8+
kem: new DhkemP256HkdfSha256(),
9+
kdf: new HkdfSha256(),
10+
aead: new Aes128Gcm(),
11+
});
12+
13+
const rkp = await suite.kem.generateKeyPair();
14+
15+
const sender = await suite.createSenderContext({
16+
recipientPublicKey: rkp.publicKey,
17+
});
18+
19+
const recipient = await suite.createRecipientContext({
20+
recipientKey: rkp.privateKey,
21+
enc: sender.enc,
22+
});
23+
24+
// encrypt
25+
const ct = await sender.seal(new TextEncoder().encode("Hello world!"));
26+
27+
// decrypt
28+
const pt = await recipient.open(ct);
29+
30+
// Hello world!
31+
console.log(new TextDecoder().decode(pt));
32+
}
33+
34+
try {
35+
doHpke();
36+
} catch (_err: unknown) {
37+
console.log("doHPKE() failed.");
38+
}

0 commit comments

Comments
 (0)