public async Task Exchange_IdentityBackup() { var vault = new SoftwareVault(new TestStorage()); var identity = await vault.CreateIdentity("Test", "passphrase"); // Backup var document = IdentityBackupDocument.Pack(identity); var serialized = document.ToJson(); // Restore var deserialized = Document.FromJson(serialized); var received = new IdentityBackupDocument(deserialized); var keypair = new KeyPair ( new PublicKey(received.PublicKey), new PrivateKey(received.EncryptedPrivateKey) ); var restored = await vault.ImportIdentity(received.Name, keypair, received.Stereotype); Assert.AreEqual(identity.Name, restored.Name); Assert.AreEqual(identity.Stereotype, restored.Stereotype); Assert.AreEqual(identity.PublicKey, restored.PublicKey); Assert.IsTrue(vault.Unlock(identity.AccountID, "passphrase")); }
public async Task Vault_StoreIdentity() { var storage = new InMemoryStore(); var vault = new SoftwareVault(storage); await vault.Initialize(); // Create and store identity var identity = await vault.CreateIdentity("Identity", "Passphrase", "Stereotype"); // Reopen Vault vault = new SoftwareVault(storage); await vault.Initialize(); var storedIdentities = vault.IdentityIDs; Assert.IsNotNull(storedIdentities); Assert.AreEqual(1, storedIdentities.Count()); var storedID = storedIdentities.First(); Assert.AreEqual(identity.AccountID, storedID); // Identities will be created via IProvideSigning var restored = new Identity( new PublicKey(vault.GetPublicKey(storedID)), vault); Assert.IsNotNull(restored); Assert.AreEqual(identity.Name, restored.Name); Assert.AreEqual(identity.Stereotype, restored.Stereotype); Assert.AreEqual(identity.PublicKey, restored.PublicKey); }