diff --git a/Sources/Anoncreds/anoncreds_uniffi.swift b/Sources/Anoncreds/anoncreds_uniffi.swift index 47974be..874e0b3 100644 --- a/Sources/Anoncreds/anoncreds_uniffi.swift +++ b/Sources/Anoncreds/anoncreds_uniffi.swift @@ -1637,7 +1637,9 @@ public func FfiConverterTypeRevocationRegistryDefinition_lower(_ value: Revocati return FfiConverterTypeRevocationRegistryDefinition.lower(value) } -public protocol RevocationRegistryDefinitionPrivateProtocol {} +public protocol RevocationRegistryDefinitionPrivateProtocol { + func toJson() -> String +} public class RevocationRegistryDefinitionPrivate: RevocationRegistryDefinitionPrivateProtocol { fileprivate let pointer: UnsafeMutableRawPointer @@ -1649,9 +1651,26 @@ public class RevocationRegistryDefinitionPrivate: RevocationRegistryDefinitionPr self.pointer = pointer } + public convenience init(json: String) throws { + try self.init(unsafeFromRawPointer: rustCallWithError(FfiConverterTypeErrorCode.lift) { + uniffi_anoncreds_uniffi_fn_constructor_revocationregistrydefinitionprivate_new( + FfiConverterString.lower(json), $0 + ) + }) + } + deinit { try! rustCall { uniffi_anoncreds_uniffi_fn_free_revocationregistrydefinitionprivate(pointer, $0) } } + + public func toJson() -> String { + return try! FfiConverterString.lift( + try! + rustCall { + uniffi_anoncreds_uniffi_fn_method_revocationregistrydefinitionprivate_to_json(self.pointer, $0) + } + ) + } } public struct FfiConverterTypeRevocationRegistryDefinitionPrivate: FfiConverter { @@ -2974,6 +2993,9 @@ private var initializationResult: InitializationResult { if uniffi_anoncreds_uniffi_checksum_method_revocationregistrydefinition_to_json() != 31175 { return InitializationResult.apiChecksumMismatch } + if uniffi_anoncreds_uniffi_checksum_method_revocationregistrydefinitionprivate_to_json() != 37971 { + return InitializationResult.apiChecksumMismatch + } if uniffi_anoncreds_uniffi_checksum_method_revocationregistrydelta_to_json() != 15053 { return InitializationResult.apiChecksumMismatch } @@ -3040,6 +3062,9 @@ private var initializationResult: InitializationResult { if uniffi_anoncreds_uniffi_checksum_constructor_revocationregistrydefinition_new() != 3510 { return InitializationResult.apiChecksumMismatch } + if uniffi_anoncreds_uniffi_checksum_constructor_revocationregistrydefinitionprivate_new() != 53969 { + return InitializationResult.apiChecksumMismatch + } if uniffi_anoncreds_uniffi_checksum_constructor_revocationregistrydelta_new() != 59759 { return InitializationResult.apiChecksumMismatch } diff --git a/anoncreds/src/lib.rs b/anoncreds/src/lib.rs index bcf48d0..8290d7b 100644 --- a/anoncreds/src/lib.rs +++ b/anoncreds/src/lib.rs @@ -1,12 +1,11 @@ mod uffi; -use anoncreds::types::RevocationRegistryDefinitionPrivate; use uffi::issuer::Issuer; use uffi::prover::Prover; use uffi::types::{ Credential, CredentialDefinition, CredentialDefinitionPrivate, CredentialKeyCorrectnessProof, CredentialOffer, CredentialRequest, CredentialRequestMetadata, CredentialRevocationState, - Presentation, PresentationRequest, RevocationRegistryDefinition, RevocationRegistryDelta, - RevocationStatusList, Schema, + Presentation, PresentationRequest, RevocationRegistryDefinition, + RevocationRegistryDefinitionPrivate, RevocationRegistryDelta, RevocationStatusList, Schema, }; use uffi::verifier::Verifier; diff --git a/anoncreds/src/uffi/issuer.rs b/anoncreds/src/uffi/issuer.rs index aee20c0..8adc147 100644 --- a/anoncreds/src/uffi/issuer.rs +++ b/anoncreds/src/uffi/issuer.rs @@ -2,7 +2,8 @@ use super::error::ErrorCode; use super::types::{ Credential, CredentialDefinition, CredentialDefinitionPrivate, CredentialDefinitionTuple, CredentialKeyCorrectnessProof, CredentialOffer, CredentialRequest, CredentialRevocationConfig, - RevocationRegistryDefinition, RevocationRegistryDefinitionTuple, RevocationStatusList, Schema, + RevocationRegistryDefinition, RevocationRegistryDefinitionPrivate, + RevocationRegistryDefinitionTuple, RevocationStatusList, Schema, }; use anoncreds::data_types::{cred_def::SignatureType, rev_reg_def::RegistryType}; use anoncreds::issuer::{ @@ -11,9 +12,7 @@ use anoncreds::issuer::{ update_revocation_status_list, }; use anoncreds::tails::TailsFileWriter; -use anoncreds::types::{ - CredentialDefinitionConfig, MakeCredentialValues, RevocationRegistryDefinitionPrivate, -}; +use anoncreds::types::{CredentialDefinitionConfig, MakeCredentialValues}; use std::collections::BTreeSet; use std::collections::HashMap; use std::sync::Arc; @@ -112,7 +111,7 @@ impl Issuer { )?; Ok(RevocationRegistryDefinitionTuple { rev_reg_def: Arc::new(RevocationRegistryDefinition(rev_reg_def)), - rev_reg_def_priv: Arc::new(rev_reg_def_private), + rev_reg_def_priv: Arc::new(RevocationRegistryDefinitionPrivate(rev_reg_def_private)), }) } @@ -131,7 +130,7 @@ impl Issuer { .try_into() .map_err(|err| anoncreds::Error::from(err))?, &rev_reg_def.0, - &rev_reg_priv, + &rev_reg_priv.0, issuance_by_default, timestamp, )?; @@ -153,7 +152,7 @@ impl Issuer { let rev_status_list = update_revocation_status_list( &cred_def.0, &rev_reg_def.0, - &rev_reg_priv, + &rev_reg_priv.0, ¤t_list.0, issued, revoked, diff --git a/anoncreds/src/uffi/types.rs b/anoncreds/src/uffi/types.rs index ef7d65c..cd3ba4b 100644 --- a/anoncreds/src/uffi/types.rs +++ b/anoncreds/src/uffi/types.rs @@ -13,7 +13,7 @@ use anoncreds::types::{ CredentialRevocationState as RustCredentialRevocationState, Presentation as RustPresentation, PresentationRequest as RustPresentationRequest, RevocationRegistryDefinition as RustRevocationRegistryDefinition, - RevocationRegistryDefinitionPrivate, + RevocationRegistryDefinitionPrivate as RustRevocationRegistryDefinitionPrivate, }; use anoncreds_clsignatures::RevocationRegistryDelta as RustRevocationRegistryDelta; use std::collections::HashMap; @@ -175,7 +175,7 @@ impl<'a> From<&'a CredentialRevocationConfig> for RustCredentialRevocationConfig fn from(revocation_config: &'a CredentialRevocationConfig) -> Self { RustCredentialRevocationConfig { reg_def: &revocation_config.reg_def.0, - reg_def_private: &revocation_config.reg_def_private, + reg_def_private: &revocation_config.reg_def_private.0, status_list: &revocation_config.status_list.0, registry_idx: revocation_config.registry_index, } @@ -240,9 +240,9 @@ macro_rules! define_serializable_struct { impl $struct_name { #[uniffi::constructor] pub fn new(json: String) -> Result, ErrorCode> { - Ok(Arc::new(Self(serde_json::from_str::< - $rust_struct_name, - >(&json)?))) + Ok(Arc::new(Self(serde_json::from_str::<$rust_struct_name>( + &json, + )?))) } pub fn to_json(&self) -> String { @@ -253,7 +253,10 @@ macro_rules! define_serializable_struct { } define_serializable_struct!(CredentialDefinitionPrivate, RustCredentialDefinitionPrivate); -define_serializable_struct!(CredentialKeyCorrectnessProof, RustCredentialKeyCorrectnessProof); +define_serializable_struct!( + CredentialKeyCorrectnessProof, + RustCredentialKeyCorrectnessProof +); define_serializable_struct!(CredentialRequest, RustCredentialRequest); define_serializable_struct!(CredentialRequestMetadata, RustCredentialRequestMetadata); define_serializable_struct!(RevocationRegistryDelta, RustRevocationRegistryDelta); @@ -261,3 +264,7 @@ define_serializable_struct!(CredentialRevocationState, RustCredentialRevocationS define_serializable_struct!(RevocationStatusList, RustRevocationStatusList); define_serializable_struct!(PresentationRequest, RustPresentationRequest); define_serializable_struct!(Presentation, RustPresentation); +define_serializable_struct!( + RevocationRegistryDefinitionPrivate, + RustRevocationRegistryDefinitionPrivate +);