diff --git a/tests/keyring/deletePublic.cs b/tests/keyring/deletePublic.cs new file mode 100644 index 0000000..1ebb8ce --- /dev/null +++ b/tests/keyring/deletePublic.cs @@ -0,0 +1,45 @@ +using NUnit.Framework; +using System; +using System.IO; +using Sodium; +using System.Collections.Generic; +using keyring; +using chestcrypto; +using chestcrypto.exceptions; + +namespace KeyRingTests +{ + public class Tests + { + [SetUp] + public void Setup() + { + } + + [Test] + public void TestDeleteIdentityByPublicKey(){ + string tempFile = Path.GetTempFileName(); + + DoublePublicKey getKey(){ + KeyRing keyRing = new KeyRing(); + byte[] signingKey = PublicKeyAuth.GenerateKeyPair().PublicKey; + byte[] encryptionKey = PublicKeyBox.GenerateKeyPair().PublicKey; + + byte[] combinedKey = new byte[signingKey.Length + encryptionKey.Length]; + Buffer.BlockCopy(signingKey, 0, combinedKey, 0, signingKey.Length); + Buffer.BlockCopy(encryptionKey, 0, combinedKey, signingKey.Length, encryptionKey.Length); + DoublePublicKey combo = new DoublePublicKey(signingKey, encryptionKey); + return combo; + } + DoublePublicKey combo = getKey(); + KeyRing keyRing = new KeyRing(); + keyRing.addPublicKey(combo); + Assert.IsTrue(keyRing.getIdentityCount() == 1); + keyRing.removeIdentityByPubkey(combo); + Assert.IsTrue(keyRing.getIdentityCount() == 0); + + + } + + } +} \ No newline at end of file diff --git a/treasurechest/chestcrypto/identity/exceptions.cs b/treasurechest/chestcrypto/identity/exceptions.cs new file mode 100644 index 0000000..c8ee2ea --- /dev/null +++ b/treasurechest/chestcrypto/identity/exceptions.cs @@ -0,0 +1,23 @@ +using System; +namespace chestcrypto{ + + namespace exceptions{ + public class NoIdentityException : Exception + { + public NoIdentityException() + { + } + + public NoIdentityException(string message) + : base(message) + { + } + + public NoIdentityException(string message, Exception inner) + : base(message, inner) + { + } + } + } + +} \ No newline at end of file diff --git a/treasurechest/keyring/keyring.cs b/treasurechest/keyring/keyring.cs index 019e273..704326b 100644 --- a/treasurechest/keyring/keyring.cs +++ b/treasurechest/keyring/keyring.cs @@ -22,11 +22,34 @@ namespace keyring{ return success; } + private int getIdentityListPosition(Identity iden){ + int counter = 0; + bool success = false; + identities.ForEach(delegate(Identity ident) + { + if (ident.getDoublePublicKey().Equals(iden.getDoublePublicKey())){ + success = true; + return; + } + counter += 1; + }); + if (success){ + return counter; + } + throw new NoIdentityException(); + } + public KeyRing(string storageFile){ } public KeyRing(){} + public int getIdentityCount(){return identities.Count;} + + public int getIdentityInstance(DoublePublicKey){ + + } + public List getIdentityPublicKeys(){ List pubKeys = new List(); identities.ForEach(delegate(Identity identity){ @@ -48,7 +71,7 @@ namespace keyring{ } - public void deletePublicKey(DoublePublicKey key){ + public void removeIdentityByPubkey(DoublePublicKey key){ } }