diff options
-rw-r--r-- | packages/exchange-backoffice-ui/src/account.ts | 34 | ||||
-rw-r--r-- | packages/taler-util/src/taler-crypto.ts | 2 |
2 files changed, 18 insertions, 18 deletions
diff --git a/packages/exchange-backoffice-ui/src/account.ts b/packages/exchange-backoffice-ui/src/account.ts index 019c0bb43..6c3766940 100644 --- a/packages/exchange-backoffice-ui/src/account.ts +++ b/packages/exchange-backoffice-ui/src/account.ts @@ -1,4 +1,12 @@ -import { decodeCrock, encodeCrock } from "@gnu-taler/taler-util"; +import { + bytesToString, + createEddsaKeyPair, + decodeCrock, + encodeCrock, + encryptWithDerivedKey, + getRandomBytesF, + stringToBytes, +} from "@gnu-taler/taler-util"; /** * Create a new session id from which it will @@ -55,27 +63,19 @@ export async function unlockAccount( * @returns */ export async function createNewAccount(password: string) { - const { privateKey } = await createPair(); + const { eddsaPriv } = createEddsaKeyPair(); const salt = createSalt(); - const protectedPrivKey = await protectWithPassword( - privateKey, + const key = stringToBytes(password); + + const protectedPrivKey = await encryptWithDerivedKey( + getRandomBytesF(24), + key, + eddsaPriv, salt, - password, ); - // const privRaw = await crypto.subtle - // .exportKey("pkcs8", privateKey) - // .catch((e) => { - // throw new Error(String(e)); - // }); - - // const pubRaw = await crypto.subtle.exportKey("spki", publicKey).catch((e) => { - // throw new Error(String(e)); - // }); - - // const pub = btoa(ab2str(pubRaw)); - const protectedPriv = btoa(ab2str(protectedPrivKey)); + const protectedPriv = bytesToString(protectedPrivKey); return { accountId: protectedPriv, salt }; } diff --git a/packages/taler-util/src/taler-crypto.ts b/packages/taler-util/src/taler-crypto.ts index 3cd482bfa..6fc6d14f6 100644 --- a/packages/taler-util/src/taler-crypto.ts +++ b/packages/taler-util/src/taler-crypto.ts @@ -1393,7 +1393,7 @@ async function deriveKey( }); } -async function encryptWithDerivedKey( +export async function encryptWithDerivedKey( nonce: EncryptionNonce, keySeed: OpaqueData, plaintext: OpaqueData, |