v0.2.6-pre.016-fix.002
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-wallet-lib/src/runtime.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
//! Version-neutral unlocked Wallet state dispatch used by stable OWNER/VIEW handles.
|
||||
|
||||
@@ -16,14 +16,6 @@ pub(crate) enum OwnerState {
|
||||
}
|
||||
|
||||
impl OwnerState {
|
||||
/// Returns the native format version owned by this OWNER state.
|
||||
pub(crate) const fn format_version(&self) -> u32 {
|
||||
return match self {
|
||||
Self::V1(_) => crate::KSPWALLET_FORMAT_VERSION_V1,
|
||||
Self::V2(_) => crate::KSPWALLET_FORMAT_VERSION_V2,
|
||||
};
|
||||
}
|
||||
|
||||
/// Exports the Solana identity through the requested external transfer format.
|
||||
pub(crate) fn export_transfer(&self, format: crate::WalletTransferFormat) -> ksp_core_lib::Result<std::vec::Vec<u8>> {
|
||||
return match self {
|
||||
@@ -43,8 +35,8 @@ impl OwnerState {
|
||||
/// Stages an authenticated metadata replacement without publishing it.
|
||||
pub(crate) fn stage_metadata_payload(&self, payload: crate::MetadataPayloadV1) -> ksp_core_lib::Result<(StagedEnvelope, crate::WalletInfo)> {
|
||||
return match self {
|
||||
Self::V1(state) => state.stage_metadata_payload(payload).map(|(envelope, info)| (StagedEnvelope::V1(envelope), info)),
|
||||
Self::V2(state) => state.stage_metadata_payload(payload).map(|(envelope, info)| (StagedEnvelope::V2(envelope), info)),
|
||||
Self::V1(state) => state.stage_metadata_payload(payload).map(|(envelope, info)| return (StagedEnvelope::V1(envelope), info)),
|
||||
Self::V2(state) => state.stage_metadata_payload(payload).map(|(envelope, info)| return (StagedEnvelope::V2(envelope), info)),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -67,16 +59,16 @@ impl OwnerState {
|
||||
/// Stages strong VIEW disable while retaining OWNER authority.
|
||||
pub(crate) fn stage_disable_view(&self) -> ksp_core_lib::Result<(StagedEnvelope, crate::SecretKeyV1)> {
|
||||
return match self {
|
||||
Self::V1(state) => state.stage_disable_view().map(|(envelope, key)| (StagedEnvelope::V1(envelope), key)),
|
||||
Self::V2(state) => state.stage_disable_view().map(|(envelope, key)| (StagedEnvelope::V2(envelope), key)),
|
||||
Self::V1(state) => state.stage_disable_view().map(|(envelope, key)| return (StagedEnvelope::V1(envelope), key)),
|
||||
Self::V2(state) => state.stage_disable_view().map(|(envelope, key)| return (StagedEnvelope::V2(envelope), key)),
|
||||
};
|
||||
}
|
||||
|
||||
/// Stages strong VIEW recreation under a new credential.
|
||||
pub(crate) async fn stage_recreate_view(&self, password: crate::ViewPassword) -> ksp_core_lib::Result<(StagedEnvelope, crate::SecretKeyV1)> {
|
||||
return match self {
|
||||
Self::V1(state) => state.stage_recreate_view(password).await.map(|(envelope, key)| (StagedEnvelope::V1(envelope), key)),
|
||||
Self::V2(state) => state.stage_recreate_view(password).await.map(|(envelope, key)| (StagedEnvelope::V2(envelope), key)),
|
||||
Self::V1(state) => state.stage_recreate_view(password).await.map(|(envelope, key)| return (StagedEnvelope::V1(envelope), key)),
|
||||
Self::V2(state) => state.stage_recreate_view(password).await.map(|(envelope, key)| return (StagedEnvelope::V2(envelope), key)),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -155,14 +147,6 @@ pub(crate) enum ViewState {
|
||||
}
|
||||
|
||||
impl ViewState {
|
||||
/// Returns the native format version owned by this VIEW state.
|
||||
pub(crate) const fn format_version(&self) -> u32 {
|
||||
return match self {
|
||||
Self::V1(_) => crate::KSPWALLET_FORMAT_VERSION_V1,
|
||||
Self::V2(_) => crate::KSPWALLET_FORMAT_VERSION_V2,
|
||||
};
|
||||
}
|
||||
|
||||
/// Stages a VIEW credential rotation in the state native format.
|
||||
pub(crate) async fn stage_view_password_rotation(&self, password: crate::ViewPassword) -> ksp_core_lib::Result<StagedEnvelope> {
|
||||
return match self {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/format.rs
|
||||
// version: 1
|
||||
// version: 2
|
||||
|
||||
#[test]
|
||||
fn default_and_latest_are_explicit_and_currently_v2() {
|
||||
@@ -12,7 +12,15 @@ fn default_and_latest_are_explicit_and_currently_v2() {
|
||||
fn detector_distinguishes_v1_json_and_v2_binary_without_crypto() -> ksp_core_lib::Result<()> {
|
||||
let v1 = include_bytes!("../tests/fixtures/kspwallet_v1_wire_only.json");
|
||||
let v2 = include_bytes!("../tests/fixtures/kspwallet_v2_wire_only.bin");
|
||||
assert_eq!(crate::detect_wallet_format(v1)?, crate::WalletFormat::V1);
|
||||
assert_eq!(crate::detect_wallet_format(v2)?, crate::WalletFormat::V2);
|
||||
let detected_v1 = match crate::detect_wallet_format(v1) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let detected_v2 = match crate::detect_wallet_format(v2) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
assert_eq!(detected_v1, crate::WalletFormat::V1);
|
||||
assert_eq!(detected_v2, crate::WalletFormat::V2);
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user