use affinidi_data_integrity::{DataIntegrityProof, crypto_suites::CryptoSuite};
use affinidi_secrets_resolver::secrets::Secret;
use serde_json::{Value, json};
use std::sync::Arc;
use crate::{Multibase, parameters::Parameters};
#[cfg(test)]
pub const TEST_UPDATE_KEY: &str = "z6Mkp7QveNebyWs4z1kJ7Aa7CymUjRpjPYnBYh6Cr1t6JoXY";
pub fn generate_signing_key() -> Secret {
let mut key = Secret::generate_ed25519(None, None);
let pk = key.get_public_keymultibase().unwrap();
key.id = format!("did:key:{pk}#{pk}");
key
}
pub fn did_doc_with_key(did: &str, key: &Secret) -> Value {
let pk = key.get_public_keymultibase().unwrap();
json!({
"id": did,
"@context": ["https://www.w3.org/ns/did/v1"],
"verificationMethod": [{
"id": format!("{did}#key-0"),
"type": "Multikey",
"publicKeyMultibase": pk,
"controller": did
}],
"authentication": [format!("{did}#key-0")],
"assertionMethod": [format!("{did}#key-0")],
})
}
pub fn key_and_params() -> (Secret, Parameters) {
let key = generate_signing_key();
let params = Parameters {
update_keys: Some(Arc::new(vec![Multibase::new(
key.get_public_keymultibase().unwrap(),
)])),
..Default::default()
};
(key, params)
}
pub fn make_test_proof(vm: &str) -> DataIntegrityProof {
DataIntegrityProof {
type_: "test".to_string(),
created: None,
context: None,
cryptosuite: CryptoSuite::EddsaJcs2022,
proof_purpose: "test".to_string(),
proof_value: None,
verification_method: vm.to_string(),
}
}