Skip to content

Commit 6455f59

Browse files
Add more methods to anoncreds uniffi (#1)
1 parent f1d21b4 commit 6455f59

File tree

3 files changed

+69
-8
lines changed

3 files changed

+69
-8
lines changed

uniffi/src/anoncreds.udl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ interface LinkSecret {
4545

4646
interface Nonce {
4747
constructor();
48+
[Throws=AnoncredsError, Name=new_from_value]
49+
constructor(string value_string);
50+
[Throws=AnoncredsError]
51+
string get_value();
4852
};
4953

5054
dictionary CredentialDefinitionConfig {
@@ -96,6 +100,8 @@ interface CredentialOffer {
96100
};
97101

98102
interface CredentialRequest {
103+
[Throws=AnoncredsError]
104+
constructor(string json_string);
99105
string get_blinded_credential_secrets_json();
100106
string get_blinded_credential_secrets_correctness_proof_json();
101107
Nonce get_nonce();

uniffi/src/types/cred_req.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ pub struct CredentialRequest {
1212
}
1313

1414
impl CredentialRequest {
15+
pub fn new(jsonString: String) -> Result<Self, AnoncredsError> {
16+
let core_def: AnoncredsCredentialRequest =
17+
serde_json::from_str(&jsonString).map_err(|_| AnoncredsError::ConversionError)?;
18+
return Ok(CredentialRequest { core: core_def });
19+
}
20+
1521
pub fn get_blinded_credential_secrets_json(&self) -> String {
1622
serde_json::to_string(&self.core.blinded_ms).unwrap()
1723
}
@@ -35,6 +41,18 @@ pub struct CredentialRequestMetadata {
3541
pub link_secret_name: String,
3642
}
3743

44+
// impl CredentialRequestMetadata {
45+
// pub fn new(jsonString: String) -> Result<Self, AnoncredsError> {
46+
// let core_def: AnoncredsCredentialRequest =
47+
// serde_json::from_str(&jsonString).map_err(|_| AnoncredsError::ConversionError)?;
48+
// return Ok(CredentialRequestMetadata { core: core_def });
49+
// }
50+
51+
// pub fn get_json(&self) -> Result<String, AnoncredsError> {
52+
// serde_json::to_string(&self.core).map_err(|_| AnoncredsError::ConversionError)
53+
// }
54+
// }
55+
3856
impl Into<AnoncredsCredentialRequestMetadata> for CredentialRequestMetadata {
3957
fn into(self) -> AnoncredsCredentialRequestMetadata {
4058
let link_secret_core: ursa::cl::CredentialSecretsBlindingFactors = serde_json::from_str(&self.link_secret_blinding_data).unwrap();

uniffi/src/types/nonce.rs

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,50 @@
11
use crate::types::error::AnoncredsError;
2-
use anoncreds_core::data_types::nonce::{Nonce as AnoncredsNounce};
2+
use anoncreds_core::data_types::nonce::Nonce as AnoncredsNonce;
33
use std::convert::TryFrom;
44
use std::convert::TryInto;
55
use std::sync::Arc;
66

77
pub struct Nonce {
8-
pub anoncreds_nonce: AnoncredsNounce,
8+
pub anoncreds_nonce: AnoncredsNonce,
99
}
1010

1111
impl Nonce {
1212
pub fn new() -> Self {
13-
let nonce = AnoncredsNounce::new().unwrap();
14-
return Nonce { anoncreds_nonce: nonce }
13+
let nonce = AnoncredsNonce::new().unwrap();
14+
return Nonce {
15+
anoncreds_nonce: nonce,
16+
};
17+
}
18+
19+
pub fn new_from_value(value_string: String) -> Result<Self, AnoncredsError> {
20+
let nonce = AnoncredsNonce::try_from(value_string.as_str())
21+
.map_err(|_| AnoncredsError::ConversionError)?;
22+
return Ok(Nonce {
23+
anoncreds_nonce: nonce,
24+
});
25+
}
26+
27+
pub fn get_value(&self) -> Result<String, AnoncredsError> {
28+
let clone = self.clone();
29+
return Ok(clone.into());
30+
}
31+
}
32+
33+
impl From<AnoncredsNonce> for Nonce {
34+
fn from(acr: AnoncredsNonce) -> Self {
35+
return Nonce {
36+
anoncreds_nonce: acr,
37+
};
38+
}
39+
}
40+
41+
impl TryFrom<&Nonce> for AnoncredsNonce {
42+
type Error = AnoncredsError;
43+
44+
fn try_from(acr: &Nonce) -> Result<Self, Self::Error> {
45+
acr.anoncreds_nonce
46+
.try_clone()
47+
.map_err(|_| AnoncredsError::ConversionError)
1548
}
1649
}
1750

@@ -25,14 +58,18 @@ impl TryFrom<&str> for Nonce {
2558
type Error = AnoncredsError;
2659

2760
fn try_from(value: &str) -> Result<Self, Self::Error> {
28-
let nonce = AnoncredsNounce::try_from(value).map_err(|_| AnoncredsError::ConversionError)?;
29-
return Ok(Nonce { anoncreds_nonce: nonce })
61+
let nonce = AnoncredsNonce::try_from(value).map_err(|_| AnoncredsError::ConversionError)?;
62+
return Ok(Nonce {
63+
anoncreds_nonce: nonce,
64+
});
3065
}
3166
}
3267

3368
impl Clone for Nonce {
3469
fn clone(&self) -> Self {
3570
let original = self.anoncreds_nonce.try_clone().unwrap();
36-
return Nonce { anoncreds_nonce: original }
71+
return Nonce {
72+
anoncreds_nonce: original,
73+
};
3774
}
38-
}
75+
}

0 commit comments

Comments
 (0)