adapt issued credential storage on API

This commit is contained in:
Simon Wicky
2024-05-07 10:12:26 +02:00
parent 452a5b45fe
commit 5f656e69b5
3 changed files with 15 additions and 14 deletions
+7 -7
View File
@@ -69,7 +69,7 @@ pub trait CoconutStorageManagerExt {
bs58_partial_credential: String,
bs58_signature: String,
joined_private_commitments: String,
joined_public_attributes: String,
expiration_date: i64,
) -> Result<i64, sqlx::Error>;
/// Attempts to retrieve issued credentials from the data store using provided ids.
@@ -247,7 +247,7 @@ impl CoconutStorageManagerExt for StorageManager {
sqlx::query_as!(
IssuedCredential,
r#"
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, joined_public_attributes
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, expiration_date as "expiration_date: i64"
FROM issued_credential
WHERE id = ?
"#,
@@ -269,7 +269,7 @@ impl CoconutStorageManagerExt for StorageManager {
sqlx::query_as!(
IssuedCredential,
r#"
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, joined_public_attributes
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, expiration_date as "expiration_date: i64"
FROM issued_credential
WHERE tx_hash = ?
"#,
@@ -291,16 +291,16 @@ impl CoconutStorageManagerExt for StorageManager {
bs58_partial_credential: String,
bs58_signature: String,
joined_private_commitments: String,
joined_public_attributes: String,
expiration_date: i64,
) -> Result<i64, sqlx::Error> {
let row_id = sqlx::query!(
r#"
INSERT INTO issued_credential
(epoch_id, tx_hash, bs58_partial_credential, bs58_signature, joined_private_commitments, joined_public_attributes)
(epoch_id, tx_hash, bs58_partial_credential, bs58_signature, joined_private_commitments, expiration_date)
VALUES
(?, ?, ?, ?, ?, ?)
"#,
epoch_id, tx_hash, bs58_partial_credential, bs58_signature, joined_private_commitments, joined_public_attributes
epoch_id, tx_hash, bs58_partial_credential, bs58_signature, joined_private_commitments, expiration_date
).execute(&self.connection_pool).await?.last_insert_rowid();
Ok(row_id)
@@ -341,7 +341,7 @@ impl CoconutStorageManagerExt for StorageManager {
sqlx::query_as!(
IssuedCredential,
r#"
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, joined_public_attributes
SELECT id, epoch_id as "epoch_id: u32", tx_hash, bs58_partial_credential, bs58_signature,joined_private_commitments, expiration_date as "expiration_date: i64"
FROM issued_credential
WHERE id > ?
ORDER BY id
+5 -3
View File
@@ -8,6 +8,8 @@ use crate::support::storage::NymApiStorage;
use nym_api_requests::coconut::models::Pagination;
use nym_coconut::{Base58, BlindedSignature};
use nym_coconut_dkg_common::types::EpochId;
use nym_compact_ecash::utils::BlindedSignature;
use nym_compact_ecash::Base58;
use nym_crypto::asymmetric::identity;
use nym_validator_client::nyxd::Hash;
@@ -52,7 +54,7 @@ pub trait CoconutStorageExt {
partial_credential: &BlindedSignature,
signature: identity::Signature,
private_commitments: Vec<String>,
public_attributes: Vec<String>,
expiration_date: i64,
) -> Result<i64, NymApiStorageError>;
async fn get_issued_credentials(
@@ -122,7 +124,7 @@ impl CoconutStorageExt for NymApiStorage {
partial_credential: &BlindedSignature,
signature: identity::Signature,
private_commitments: Vec<String>,
public_attributes: Vec<String>,
expiration_date: i64,
) -> Result<i64, NymApiStorageError> {
Ok(self
.manager
@@ -132,7 +134,7 @@ impl CoconutStorageExt for NymApiStorage {
partial_credential.to_bs58(),
signature.to_base58_string(),
join_attributes(private_commitments),
join_attributes(public_attributes),
expiration_date,
)
.await?)
}
+3 -4
View File
@@ -7,7 +7,7 @@ use nym_api_requests::coconut::models::{
IssuedCredentialBody as ApiIssuedCredentialInner,
};
use nym_api_requests::coconut::BlindedSignatureResponse;
use nym_coconut::{Base58, BlindedSignature};
use nym_compact_ecash::{utils::BlindedSignature, Base58};
use sqlx::FromRow;
use std::fmt::Display;
@@ -48,8 +48,7 @@ pub struct IssuedCredential {
// i.e. "'attr1','attr2',..."
pub joined_private_commitments: String,
// i.e. "'attr1','attr2',..."
pub joined_public_attributes: String,
pub expiration_date: i64,
}
impl TryFrom<IssuedCredential> for ApiIssuedCredentialInner {
@@ -70,7 +69,7 @@ impl TryFrom<IssuedCredential> for ApiIssuedCredentialInner {
bs58_encoded_private_attributes_commitments: split_attributes(
&value.joined_private_commitments,
),
public_attributes: split_attributes(&value.joined_public_attributes),
expiration_date: value.expiration_date,
},
signature: value.bs58_signature.parse()?,
})