diff --git a/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs b/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs index d78706f4..91fb0473 100644 --- a/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs +++ b/crates/radix-engine-toolkit-uniffi/src/common/access_rules.rs @@ -90,9 +90,7 @@ impl AccessRule { } #[uniffi::constructor] - pub fn require_virtual_signature( - public_key: PublicKey, - ) -> Result> { + pub fn require_signature(public_key: PublicKey) -> Result> { let public_key = NativePublicKey::try_from(public_key)?; let non_fungible_global_id = NativeNonFungibleGlobalId::from_public_key(&public_key); diff --git a/crates/radix-engine-toolkit-uniffi/src/common/non_fungible.rs b/crates/radix-engine-toolkit-uniffi/src/common/non_fungible.rs index 5f5be957..98a32c2e 100644 --- a/crates/radix-engine-toolkit-uniffi/src/common/non_fungible.rs +++ b/crates/radix-engine-toolkit-uniffi/src/common/non_fungible.rs @@ -83,7 +83,7 @@ impl NonFungibleGlobalId { } #[uniffi::constructor] - pub fn virtual_signature_badge( + pub fn signature_badge( public_key: PublicKey, network_id: u8, ) -> Result> { @@ -92,6 +92,27 @@ impl NonFungibleGlobalId { ) } + #[uniffi::constructor] + pub fn global_caller_badge( + component_address: Arc
, + network_id: u8, + ) -> Result> { + derive_global_caller_non_fungible_global_id_from_component_address( + component_address, + network_id, + ) + } + + #[uniffi::constructor] + pub fn package_of_direct_caller_badge( + package_address: Arc
, + network_id: u8, + ) -> Result> { + derive_package_of_direct_caller_non_fungible_global_id_from_component_address( + package_address, network_id, + ) + } + pub fn resource_address(&self) -> Arc
{ let address = self.0.resource_address(); Arc::new(Address::from_typed_node_id(address, self.1)) diff --git a/crates/radix-engine-toolkit-uniffi/src/derive/functions.rs b/crates/radix-engine-toolkit-uniffi/src/derive/functions.rs index 14c72c47..10cf5747 100644 --- a/crates/radix-engine-toolkit-uniffi/src/derive/functions.rs +++ b/crates/radix-engine-toolkit-uniffi/src/derive/functions.rs @@ -57,6 +57,36 @@ pub fn derive_signature_badge_non_fungible_global_id_from_public_key( ))) } +#[uniffi::export] +pub fn derive_global_caller_non_fungible_global_id_from_component_address( + component_address: Arc
, + network_id: u8, +) -> Result> { + let component_address = + NativeComponentAddress::try_from(*component_address)?; + let non_fungible_global_id = + core_global_caller_non_fungible_global_id_from_component_address( + component_address, + ); + Ok(Arc::new(NonFungibleGlobalId( + non_fungible_global_id, + network_id, + ))) +} + +#[uniffi::export] +pub fn derive_package_of_direct_caller_non_fungible_global_id_from_component_address( + package_address: Arc
, + network_id: u8, +) -> Result> { + let package_address = NativePackageAddress::try_from(*package_address)?; + let non_fungible_global_id = core_package_of_direct_caller_non_fungible_global_id_from_component_address(package_address); + Ok(Arc::new(NonFungibleGlobalId( + non_fungible_global_id, + network_id, + ))) +} + #[uniffi::export] pub fn derive_preallocated_account_address_from_olympia_account_address( olympia_account_address: Arc, diff --git a/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs b/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs index 79856c27..97715dc7 100644 --- a/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs +++ b/crates/radix-engine-toolkit-uniffi/src/internal_prelude.rs @@ -40,6 +40,8 @@ mod core { preallocated_account_address_from_public_key as core_preallocated_account_address_from_public_key, preallocated_identity_address_from_public_key as core_preallocated_identity_address_from_public_key, preallocated_signature_non_fungible_global_id_from_public_key as core_preallocated_signature_non_fungible_global_id_from_public_key, + global_caller_non_fungible_global_id_from_component_address as core_global_caller_non_fungible_global_id_from_component_address, + package_of_direct_caller_non_fungible_global_id_from_component_address as core_package_of_direct_caller_non_fungible_global_id_from_component_address, preallocated_account_address_from_olympia_account_address as core_preallocated_account_address_from_olympia_account_address, resource_address_from_olympia_resource_address as core_resource_address_from_olympia_resource_address, public_key_from_olympia_account_address as core_public_key_from_olympia_account_address, diff --git a/crates/radix-engine-toolkit/src/functions/derive.rs b/crates/radix-engine-toolkit/src/functions/derive.rs index 2ba7f691..d29a55da 100644 --- a/crates/radix-engine-toolkit/src/functions/derive.rs +++ b/crates/radix-engine-toolkit/src/functions/derive.rs @@ -47,6 +47,18 @@ where NonFungibleGlobalId::from_public_key(public_key) } +pub fn global_caller_non_fungible_global_id_from_component_address( + component_address: ComponentAddress, +) -> NonFungibleGlobalId { + NonFungibleGlobalId::global_caller_badge(component_address) +} + +pub fn package_of_direct_caller_non_fungible_global_id_from_component_address( + package_address: PackageAddress, +) -> NonFungibleGlobalId { + NonFungibleGlobalId::package_of_direct_caller_badge(package_address) +} + pub fn preallocated_account_address_from_olympia_account_address( olympia_account_address: S, ) -> Result