From 8ae0d2779c26f74e64a1db2b028bd2ac2f599cb4 Mon Sep 17 00:00:00 2001 From: polwex Date: Wed, 16 Jul 2025 10:46:39 +0700 Subject: encryption done if heavy --- lib/passkey.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib') diff --git a/lib/passkey.ts b/lib/passkey.ts index 81a21a5..6deb656 100644 --- a/lib/passkey.ts +++ b/lib/passkey.ts @@ -1,5 +1,6 @@ "use client"; +import * as age from "age-encryption"; import { Platform } from "react-native"; import * as SecureStore from "expo-secure-store"; import type { AsyncRes } from "./types"; @@ -8,6 +9,27 @@ const PASSKEY_CREDENTIAL_ID_KEY = "urbit_wallet_passkey_id"; const RELYING_PARTY_ID = "wallet.urbit.org"; // Change this to your domain const RELYING_PARTY_NAME = "Urbit Wallet"; +export async function createFancyPasskey() { + const credential = await age.webauthn.createCredential({ + keyName: "pasukii", + }); + return credential; +} +export async function pkEncrypt(mticket: string) { + const e = new age.Encrypter(); + e.addRecipient(new age.webauthn.WebAuthnRecipient()); + const ciphertext = await e.encrypt(mticket); + const armored = age.armor.encode(ciphertext); + return armored; +} +export async function pkDecrypt(data: string) { + const d = new age.Decrypter(); + d.addIdentity(new age.webauthn.WebAuthnIdentity()); + const decoded = age.armor.decode(data); + const out = await d.decrypt(decoded, "text"); + return out; +} + export async function createPasskey(): AsyncRes { const pkok = await window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable(); -- cgit v1.2.3