a274edffba
* Calculating gas fees * Ability to set custom fees * Added extra test * Removed commented code * Moved all msg types to common contract crate * Temporarily disabling get_tx method * Finishing up nymd client API * Comment fix * Remaining fee values * Some cleanup * Removed needless borrow * Fixed imports in contract tests * Moved error types around * New ValidatorClient * Experiment with new type of defaults * Removed dead module * Dealt with unwrap * Migrated mixnode to use new validator client * Migrated gateway to use new validator client * Mixnode and gateway adjustments * More exported defaults * Clients using new validator client * Fixed mixnode upgrade * Moved default values to a new crate * Changed behaviour of validator client features * Migrated basic functions of validator api * Updated config + fixed startup * Fixed wasm client build * Integration with the explorer api * Removed tokio dev dependency * Needless borrow * Fixex wasm client build * Fixed tauri client build * Needless borrows * Fixed client upgrade print * Removed redundant comments * Made note on aggregated verification key into a doc comment * Removed mixnet contract references from verloc * Modified default validators structure * Reformatted validator-api Cargo.toml file * Removed commented code * Made the doc comment example a no-run * Fixed a upgrade print... again * Adjusted the doc example * Removed unused import
48 lines
1.8 KiB
Rust
48 lines
1.8 KiB
Rust
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// for time being assume the bandwidth credential consists of public identity of the requester
|
|
// and private (though known... just go along with it) infinite bandwidth value
|
|
// right now this has no double-spending protection, spender binding, etc
|
|
// it's the simplest possible case
|
|
|
|
use crate::error::Error;
|
|
use crate::utils::{obtain_aggregate_signature, prepare_credential_for_spending};
|
|
use coconut_interface::{hash_to_scalar, Credential, Parameters, Signature, VerificationKey};
|
|
use url::Url;
|
|
|
|
const BANDWIDTH_VALUE: &str = "Bandwidth: infinite (for now)";
|
|
|
|
pub const PUBLIC_ATTRIBUTES: u32 = 1;
|
|
pub const PRIVATE_ATTRIBUTES: u32 = 1;
|
|
pub const TOTAL_ATTRIBUTES: u32 = PUBLIC_ATTRIBUTES + PRIVATE_ATTRIBUTES;
|
|
|
|
// TODO: this definitely has to be moved somewhere else. It's just a temporary solution
|
|
pub async fn obtain_signature(raw_identity: &[u8], validators: &[Url]) -> Result<Signature, Error> {
|
|
let public_attributes = vec![hash_to_scalar(raw_identity)];
|
|
let private_attributes = vec![hash_to_scalar(BANDWIDTH_VALUE)];
|
|
|
|
let params = Parameters::new(TOTAL_ATTRIBUTES)?;
|
|
|
|
obtain_aggregate_signature(¶ms, &public_attributes, &private_attributes, validators).await
|
|
}
|
|
|
|
pub fn prepare_for_spending(
|
|
raw_identity: &[u8],
|
|
signature: &Signature,
|
|
verification_key: &VerificationKey,
|
|
) -> Result<Credential, Error> {
|
|
let public_attributes = vec![hash_to_scalar(raw_identity)];
|
|
let private_attributes = vec![hash_to_scalar(BANDWIDTH_VALUE)];
|
|
|
|
let params = Parameters::new(TOTAL_ATTRIBUTES)?;
|
|
|
|
prepare_credential_for_spending(
|
|
¶ms,
|
|
&public_attributes,
|
|
&private_attributes,
|
|
signature,
|
|
verification_key,
|
|
)
|
|
}
|