Skip to content

Commit

Permalink
Move webauthn wasm signer to account-wasm (#516)
Browse files Browse the repository at this point in the history
* Move webauthn wasm signer to account-wasm

* Improve webauthn signer abstraction

* Softpasskey for testing

* Remove wasm-webauthn

* Cleanup
  • Loading branch information
tarrencev authored Jul 30, 2024
1 parent 7b0f4ee commit d3a6750
Show file tree
Hide file tree
Showing 22 changed files with 2,352 additions and 2,172 deletions.
6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ cairo-lang-starknet = "2.4.0"
coset = { version = "0.3.4", features = ["std"] }
ecdsa = "0.16.9"
futures = "0.3"
hex = "0.4.3"
indexmap = { version = "2.2.6", features = ["serde"] }
lazy_static = "1"
once_cell = "1.19.0"
p256 = "0.13"
primitive-types = { version = "0.12", default-features = false }
getrandom = { version = "0.2", features = ["js"] }
Expand All @@ -40,6 +42,10 @@ wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4.42"
wasm-webauthn = { git = "https://github.com/cartridge-gg/wasm-webauthn", rev = "972693f" }
tokio = { version = "1", features = ["macros", "time"] }
base64urlsafedata = { git = "https://github.com/cartridge-gg/webauthn-rs", rev = "a20501d" }
serde_cbor_2 = { version = "0.12.0-dev" }
webauthn-rs-core = { git = "https://github.com/cartridge-gg/webauthn-rs", rev = "a20501d" }
webauthn-rs-proto = { git = "https://github.com/cartridge-gg/webauthn-rs", rev = "a20501d" }

[patch.crates-io]
# Remove this patch once the following PR is merged: <https://github.com/xJonathanLEI/starknet-rs/pull/615>
Expand Down
7 changes: 2 additions & 5 deletions Scarb.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
[workspace]
members = [
"packages/contracts/controller",
]
members = ["packages/contracts/controller"]

[workspace.package]
edition = "2023_10"
Expand All @@ -15,5 +13,4 @@ alexandria_merkle_tree = { git = "https://github.com/keep-starknet-strange/alexa
alexandria_data_structures = { git = "https://github.com/keep-starknet-strange/alexandria.git", tag = "cairo-v2.6.0" }
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry.git", tag = "v0.20.0" }
openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.12.0" }
argent = {git = "https://github.com/piniom/argent-contracts-starknet.git", branch = "lib-target"}

argent = { git = "https://github.com/cartridge-gg/argent-contracts-starknet.git", branch = "main" }
13 changes: 10 additions & 3 deletions packages/account-wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ base64.workspace = true
cainome.workspace = true
convert_case = "0.6.0"
coset.workspace = true
futures.workspace = true
getrandom = { version = "0.2", features = ["js"] }
gloo-net = "0.6.0"
hex = "0.4.3"
num-traits.workspace = true
p256.workspace = true
rand = { version = "0.8", features = ["getrandom"] }
starknet.workspace = true
serde = { workspace = true, features = ["derive"] }
Expand All @@ -30,8 +30,15 @@ thiserror.workspace = true
url = { workspace = true, default-features = false }
wasm-bindgen = { workspace = true, features = ["serde-serialize"] }
wasm-bindgen-futures.workspace = true
wasm-webauthn.workspace = true
web-sys = { version = "0.3.4" }
webauthn-rs-proto = { workspace = true, features = ["wasm"] }
web-sys = { version = "0.3", features = [
"CredentialCreationOptions",
"CredentialRequestOptions",
"CredentialsContainer",
"Navigator",
"PublicKeyCredential",
"PublicKeyCredentialCreationOptions",
] }

# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
Expand Down
134 changes: 51 additions & 83 deletions packages/account-wasm/pkg/account_wasm_bg.js
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ function handleError(f, args) {
wasm.__wbindgen_exn_store(addHeapObject(e));
}
}
function __wbg_adapter_202(arg0, arg1, arg2, arg3) {
function __wbg_adapter_192(arg0, arg1, arg2, arg3) {
wasm.wasm_bindgen__convert__closures__invoke2_mut__h5ac21e00d5fb0b9f(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
}

Expand Down Expand Up @@ -457,6 +457,11 @@ export function __wbindgen_string_get(arg0, arg1) {
getInt32Memory0()[arg0 / 4 + 0] = ptr1;
};

export function __wbindgen_string_new(arg0, arg1) {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};

export function __wbindgen_object_clone_ref(arg0) {
const ret = getObject(arg0);
return addHeapObject(ret);
Expand Down Expand Up @@ -511,11 +516,6 @@ export function __wbindgen_bigint_from_u64(arg0) {
return addHeapObject(ret);
};

export function __wbindgen_string_new(arg0, arg1) {
const ret = getStringFromWasm0(arg0, arg1);
return addHeapObject(ret);
};

export function __wbindgen_jsval_loose_eq(arg0, arg1) {
const ret = getObject(arg0) == getObject(arg1);
return ret;
Expand Down Expand Up @@ -558,12 +558,8 @@ export function __wbg_fetch_eeae7120f2a07ede(arg0) {
return addHeapObject(ret);
};

export function __wbg_String_88810dfeb4021902(arg0, arg1) {
const ret = String(getObject(arg1));
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len1;
getInt32Memory0()[arg0 / 4 + 0] = ptr1;
export function __wbg_set_20cbc34131e76824(arg0, arg1, arg2) {
getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
};

export function __wbg_fetch_bc7c8e27076a5c84(arg0) {
Expand Down Expand Up @@ -596,11 +592,6 @@ export function __wbg_instanceof_Window_f401953a2cf86220(arg0) {
return ret;
};

export function __wbg_location_2951b5ee34f19221(arg0) {
const ret = getObject(arg0).location;
return addHeapObject(ret);
};

export function __wbg_navigator_6c8fa55c5cc8796e(arg0) {
const ret = getObject(arg0).navigator;
return addHeapObject(ret);
Expand All @@ -615,36 +606,63 @@ export function __wbg_fetch_921fad6ef9e883dd(arg0, arg1) {
return addHeapObject(ret);
};

export function __wbg_credentials_301bbb1c5ba6b52c(arg0) {
const ret = getObject(arg0).credentials;
export function __wbg_signal_a61f78a3478fd9bc(arg0) {
const ret = getObject(arg0).signal;
return addHeapObject(ret);
};

export function __wbg_authenticatorData_46fd4548141bf5a9(arg0) {
const ret = getObject(arg0).authenticatorData;
export function __wbg_new_0d76b0581eca6298() { return handleError(function () {
const ret = new AbortController();
return addHeapObject(ret);
}, arguments) };

export function __wbg_abort_2aa7521d5690750e(arg0) {
getObject(arg0).abort();
};

export function __wbg_signature_65655420a7b69a5e(arg0) {
const ret = getObject(arg0).signature;
export function __wbg_get_af826bc073cbd7b3() { return handleError(function (arg0, arg1) {
const ret = getObject(arg0).get(getObject(arg1));
return addHeapObject(ret);
};
}, arguments) };

export function __wbg_new_ab6fd82b10560829() { return handleError(function () {
const ret = new Headers();
return addHeapObject(ret);
}, arguments) };

export function __wbg_append_7bfcb4937d1d5e29() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
}, arguments) };

export function __wbg_hostname_3d9f22c60dc5bec6() { return handleError(function (arg0, arg1) {
const ret = getObject(arg1).hostname;
export function __wbg_set_cb0e7a5c2dd66afd() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
}, arguments) };

export function __wbg_url_7807f6a1fddc3e23(arg0, arg1) {
const ret = getObject(arg1).url;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len1;
getInt32Memory0()[arg0 / 4 + 0] = ptr1;
};

export function __wbg_newwithstr_36b0b3f97efe096f() { return handleError(function (arg0, arg1) {
const ret = new Request(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
}, arguments) };

export function __wbg_newwithstrandinit_3fd6fba4083ff2d0() { return handleError(function (arg0, arg1, arg2) {
const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };

export function __wbg_clientDataJSON_c62fc9ad5f2cb8ba(arg0) {
const ret = getObject(arg0).clientDataJSON;
export function __wbg_credentials_301bbb1c5ba6b52c(arg0) {
const ret = getObject(arg0).credentials;
return addHeapObject(ret);
};

export function __wbg_response_08b180427e74dd5a(arg0) {
const ret = getObject(arg0).response;
export function __wbg_getClientExtensionResults_a849d498bd960116(arg0) {
const ret = getObject(arg0).getClientExtensionResults();
return addHeapObject(ret);
};

Expand Down Expand Up @@ -695,56 +713,6 @@ export function __wbg_text_450a059667fd91fd() { return handleError(function (arg
return addHeapObject(ret);
}, arguments) };

export function __wbg_signal_a61f78a3478fd9bc(arg0) {
const ret = getObject(arg0).signal;
return addHeapObject(ret);
};

export function __wbg_new_0d76b0581eca6298() { return handleError(function () {
const ret = new AbortController();
return addHeapObject(ret);
}, arguments) };

export function __wbg_abort_2aa7521d5690750e(arg0) {
getObject(arg0).abort();
};

export function __wbg_get_af826bc073cbd7b3() { return handleError(function (arg0, arg1) {
const ret = getObject(arg0).get(getObject(arg1));
return addHeapObject(ret);
}, arguments) };

export function __wbg_new_ab6fd82b10560829() { return handleError(function () {
const ret = new Headers();
return addHeapObject(ret);
}, arguments) };

export function __wbg_append_7bfcb4937d1d5e29() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
}, arguments) };

export function __wbg_set_cb0e7a5c2dd66afd() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));
}, arguments) };

export function __wbg_url_7807f6a1fddc3e23(arg0, arg1) {
const ret = getObject(arg1).url;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
const len1 = WASM_VECTOR_LEN;
getInt32Memory0()[arg0 / 4 + 1] = len1;
getInt32Memory0()[arg0 / 4 + 0] = ptr1;
};

export function __wbg_newwithstr_36b0b3f97efe096f() { return handleError(function (arg0, arg1) {
const ret = new Request(getStringFromWasm0(arg0, arg1));
return addHeapObject(ret);
}, arguments) };

export function __wbg_newwithstrandinit_3fd6fba4083ff2d0() { return handleError(function (arg0, arg1, arg2) {
const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));
return addHeapObject(ret);
}, arguments) };

export function __wbg_search_c68f506c44be6d1e(arg0, arg1) {
const ret = getObject(arg1).search;
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
Expand Down Expand Up @@ -979,7 +947,7 @@ export function __wbg_new_81740750da40724f(arg0, arg1) {
const a = state0.a;
state0.a = 0;
try {
return __wbg_adapter_202(a, state0.b, arg0, arg1);
return __wbg_adapter_192(a, state0.b, arg0, arg1);
} finally {
state0.a = a;
}
Expand Down Expand Up @@ -1090,8 +1058,8 @@ export function __wbindgen_memory() {
return addHeapObject(ret);
};

export function __wbindgen_closure_wrapper2269(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 514, __wbg_adapter_48);
export function __wbindgen_closure_wrapper2220(arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 469, __wbg_adapter_48);
return addHeapObject(ret);
};

Binary file modified packages/account-wasm/pkg/account_wasm_bg.wasm
Binary file not shown.
4 changes: 0 additions & 4 deletions packages/account-wasm/src/errors.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use account_sdk::signers::SignError;
use base64::DecodeError;
use coset::CoseError;
use starknet::{
accounts::AccountError,
Expand Down Expand Up @@ -57,9 +56,6 @@ pub enum EncodingError {
#[error(transparent)]
NonAsciiName(#[from] NonAsciiNameError),

#[error("Base64 decoding error: {0}")]
Base64Decode(#[from] DecodeError),

#[error("COSE key error: {0}")]
CoseKey(#[from] CoseError),

Expand Down
Loading

0 comments on commit d3a6750

Please sign in to comment.