From bb13b38f1a77c06be7b73142af79703c435124b2 Mon Sep 17 00:00:00 2001 From: wulfraem Date: Thu, 27 Jun 2024 18:08:04 +0200 Subject: [PATCH] Make base64 encoding target independent in `KeyIdMemStore` in wasm bindings (#1386) --- bindings/wasm/lib/key_id_storage.ts | 4 ++-- bindings/wasm/package-lock.json | 14 ++++++++++++++ bindings/wasm/package.json | 1 + .../src/key_id_storage/key_id_storage_error.rs | 2 +- identity_storage/src/storage/error.rs | 2 +- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/bindings/wasm/lib/key_id_storage.ts b/bindings/wasm/lib/key_id_storage.ts index 1ceeb9eae2..0ed977a5c5 100644 --- a/bindings/wasm/lib/key_id_storage.ts +++ b/bindings/wasm/lib/key_id_storage.ts @@ -1,3 +1,4 @@ +import { encode as base64Encode } from "base64-arraybuffer"; import type { KeyIdStorage, MethodDigest } from "~identity_wasm"; export class KeyIdMemStore implements KeyIdStorage { @@ -48,6 +49,5 @@ export class KeyIdMemStore implements KeyIdStorage { */ function methodDigestToString(methodDigest: MethodDigest): string { let arrayBuffer = methodDigest.pack().buffer; - let buffer = Buffer.from(arrayBuffer); - return buffer.toString("base64"); + return base64Encode(arrayBuffer); } diff --git a/bindings/wasm/package-lock.json b/bindings/wasm/package-lock.json index ebdd96ae40..80c99f5bea 100644 --- a/bindings/wasm/package-lock.json +++ b/bindings/wasm/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@noble/ed25519": "^1.7.3", "@types/node-fetch": "^2.6.2", + "base64-arraybuffer": "^1.0.2", "node-fetch": "^2.6.7" }, "devDependencies": { @@ -1116,6 +1117,14 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -7721,6 +7730,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", diff --git a/bindings/wasm/package.json b/bindings/wasm/package.json index 9faa31edc8..2aef8087ba 100644 --- a/bindings/wasm/package.json +++ b/bindings/wasm/package.json @@ -75,6 +75,7 @@ "dependencies": { "@noble/ed25519": "^1.7.3", "@types/node-fetch": "^2.6.2", + "base64-arraybuffer": "^1.0.2", "node-fetch": "^2.6.7" }, "peerDependencies": { diff --git a/identity_storage/src/key_id_storage/key_id_storage_error.rs b/identity_storage/src/key_id_storage/key_id_storage_error.rs index 046b6cc5f8..d628585692 100644 --- a/identity_storage/src/key_id_storage/key_id_storage_error.rs +++ b/identity_storage/src/key_id_storage/key_id_storage_error.rs @@ -52,7 +52,7 @@ impl KeyIdStorageErrorKind { Self::KeyIdNotFound => "key id not found in storage", Self::Unavailable => "key id storage unavailable", Self::Unauthenticated => "authentication with the key id storage failed", - Self::Unspecified => "key storage operation failed", + Self::Unspecified => "key id storage operation failed", Self::RetryableIOFailure => "key id storage was unsuccessful because of an I/O failure", Self::SerializationError => "(de)serialization error", } diff --git a/identity_storage/src/storage/error.rs b/identity_storage/src/storage/error.rs index a5d8d11185..51af20ead0 100644 --- a/identity_storage/src/storage/error.rs +++ b/identity_storage/src/storage/error.rs @@ -13,7 +13,7 @@ pub enum JwkStorageDocumentError { #[error("storage operation failed: key storage error")] KeyStorageError(KeyStorageError), /// Caused by a failure in the key id storage. - #[error("storage operation failed: key id storage error")] + #[error("storage operation failed: key id storage error: {0}")] KeyIdStorageError(KeyIdStorageError), /// Caused by an attempt to add a method with a fragment that already exists. #[error("could not add method: the fragment already exists")]