public abstract Data createEKeyData(GroupManager groupManager, String startTimeStamp, String endTimeStamp, Blob publicKeyBlob);
public abstract Interval calculateInterval(GroupManager groupManager, double timeSlot, IDictionary memberKeys);
public abstract Data createDKeyData(GroupManager groupManager, String startTimeStamp, String endTimeStamp, Name keyName, Blob privateKeyBlob, Blob certificateKey);
public override Data createDKeyData(GroupManager groupManager, String startTimeStamp, String endTimeStamp, Name keyName, Blob privateKeyBlob, Blob certificateKey) { return groupManager.createDKeyData(startTimeStamp, endTimeStamp, keyName, privateKeyBlob, certificateKey); }
public override Data createEKeyData(GroupManager groupManager, String startTimeStamp, String endTimeStamp, Blob publicKeyBlob) { return groupManager.createEKeyData(startTimeStamp, endTimeStamp, publicKeyBlob); }
public void testCalculateInterval() { // Create the group manager. GroupManager manager = new GroupManager(new Name("Alice"), new Name( "data_type"), new Sqlite3GroupManagerDb( System.IO.Path.GetFullPath(intervalDatabaseFilePath.Name)), 1024, 1, keyChain); setManager(manager); IDictionary memberKeys = new Hashtable(); Interval result; double timePoint1 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150825T093000"); result = friendAccess .calculateInterval(manager, timePoint1, memberKeys); AssertEquals("20150825T090000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getStartTime())); AssertEquals("20150825T100000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getEndTime())); double timePoint2 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T073000"); result = friendAccess .calculateInterval(manager, timePoint2, memberKeys); AssertEquals("20150827T070000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getStartTime())); AssertEquals("20150827T080000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getEndTime())); double timePoint3 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T043000"); result = friendAccess .calculateInterval(manager, timePoint3, memberKeys); AssertEquals(false, result.isValid()); double timePoint4 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T053000"); result = friendAccess .calculateInterval(manager, timePoint4, memberKeys); AssertEquals("20150827T050000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getStartTime())); AssertEquals("20150827T060000", net.named_data.jndn.tests.unit_tests.UnitTestsCommon.toIsoString(result.getEndTime())); }
public override Interval calculateInterval(GroupManager groupManager, double timeSlot, IDictionary memberKeys) { return groupManager.calculateInterval(timeSlot, memberKeys); }
internal void setManager(GroupManager manager) { // Set up the first schedule. Schedule schedule1 = new Schedule(); RepetitiveInterval interval11 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150825T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 5, 10, 2, net.named_data.jndn.encrypt.RepetitiveInterval.RepeatUnit.DAY); RepetitiveInterval interval12 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150825T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 6, 8, 1, net.named_data.jndn.encrypt.RepetitiveInterval.RepeatUnit.DAY); RepetitiveInterval interval13 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 7, 8); schedule1.addWhiteInterval(interval11); schedule1.addWhiteInterval(interval12); schedule1.addBlackInterval(interval13); // Set up the second schedule. Schedule schedule2 = new Schedule(); RepetitiveInterval interval21 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150825T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 9, 12, 1, net.named_data.jndn.encrypt.RepetitiveInterval.RepeatUnit.DAY); RepetitiveInterval interval22 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 6, 8); RepetitiveInterval interval23 = new RepetitiveInterval( net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T000000"), 2, 4); schedule2.addWhiteInterval(interval21); schedule2.addWhiteInterval(interval22); schedule2.addBlackInterval(interval23); // Add them to the group manager database. manager.addSchedule("schedule1", schedule1); manager.addSchedule("schedule2", schedule2); // Make some adaptions to certificate. Blob dataBlob = certificate.wireEncode(); Data memberA = new Data(); memberA.wireDecode(dataBlob, net.named_data.jndn.encoding.TlvWireFormat.get()); memberA.setName(new Name("/ndn/memberA/KEY/ksk-123/ID-CERT/123")); Data memberB = new Data(); memberB.wireDecode(dataBlob, net.named_data.jndn.encoding.TlvWireFormat.get()); memberB.setName(new Name("/ndn/memberB/KEY/ksk-123/ID-CERT/123")); Data memberC = new Data(); memberC.wireDecode(dataBlob, net.named_data.jndn.encoding.TlvWireFormat.get()); memberC.setName(new Name("/ndn/memberC/KEY/ksk-123/ID-CERT/123")); // Add the members to the database. manager.addMember("schedule1", memberA); manager.addMember("schedule1", memberB); manager.addMember("schedule2", memberC); }
/// <summary> /// Call friend.setGroupManagerFriendAccess to pass an instance of /// a FriendAccess class to allow a friend class to call private methods. /// </summary> /// /// <param name="friend">Therefore, only a friend class gets an implementation of FriendAccess.</param> public static void setFriendAccess(GroupManager.Friend friend) { if (friend .GetType().FullName .equals("src.net.named_data.jndn.tests.integration_tests.TestGroupManager")) { friend.setGroupManagerFriendAccess(new GroupManager.FriendAccessImpl ()); } }
public void testGetGroupKey() { // Create the group manager. GroupManager manager = new GroupManager(new Name("Alice"), new Name( "data_type"), new Sqlite3GroupManagerDb( System.IO.Path.GetFullPath(groupKeyDatabaseFilePath.Name)), 1024, 1, keyChain); setManager(manager); // Get the data list from the group manager. double timePoint1 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150825T093000"); IList result = manager.getGroupKey(timePoint1); AssertEquals(4, result.Count); // The first data packet contains the group's encryption key (public key). Data data = (Data) result[0]; AssertEquals( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T100000", data.getName().toUri()); EncryptKey groupEKey = new EncryptKey(data.getContent()); // Get the second data packet and decrypt. data = (Data) result[1]; AssertEquals( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberA/ksk-123", data.getName().toUri()); /////////////////////////////////////////////////////// Start decryption. Blob dataContent = data.getContent(); // Get the nonce key. // dataContent is a sequence of the two EncryptedContent. EncryptedContent encryptedNonce = new EncryptedContent(); encryptedNonce.wireDecode(dataContent); AssertEquals(0, encryptedNonce.getInitialVector().size()); AssertEquals(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.RsaOaep, encryptedNonce.getAlgorithmType()); EncryptParams decryptParams = new EncryptParams( net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.RsaOaep); Blob blobNonce = encryptedNonce.getPayload(); Blob nonce = net.named_data.jndn.encrypt.algo.RsaAlgorithm.decrypt(decryptKeyBlob, blobNonce, decryptParams); // Get the payload. // Use the size of encryptedNonce to find the start of encryptedPayload. ByteBuffer payloadContent = dataContent.buf().duplicate(); payloadContent.position(encryptedNonce.wireEncode().size()); EncryptedContent encryptedPayload = new EncryptedContent(); encryptedPayload.wireDecode(payloadContent); AssertEquals(16, encryptedPayload.getInitialVector().size()); AssertEquals(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.AesCbc, encryptedPayload.getAlgorithmType()); decryptParams.setAlgorithmType(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.AesCbc); decryptParams.setInitialVector(encryptedPayload.getInitialVector()); Blob blobPayload = encryptedPayload.getPayload(); Blob largePayload = net.named_data.jndn.encrypt.algo.AesAlgorithm.decrypt(nonce, blobPayload, decryptParams); // Get the group D-KEY. DecryptKey groupDKey = new DecryptKey(largePayload); /////////////////////////////////////////////////////// End decryption. // Check the D-KEY. EncryptKey derivedGroupEKey = net.named_data.jndn.encrypt.algo.RsaAlgorithm.deriveEncryptKey(groupDKey .getKeyBits()); AssertTrue(groupEKey.getKeyBits().equals(derivedGroupEKey.getKeyBits())); // Check the third data packet. data = (Data) result[2]; AssertEquals( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberB/ksk-123", data.getName().toUri()); // Check the fourth data packet. data = (Data) result[3]; AssertEquals( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberC/ksk-123", data.getName().toUri()); // Check invalid time stamps for getting the group key. double timePoint2 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150826T083000"); AssertEquals(0, manager.getGroupKey(timePoint2).Count); double timePoint3 = net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20150827T023000"); AssertEquals(0, manager.getGroupKey(timePoint3).Count); }
public void testCreateEKeyData() { // Create the group manager. GroupManager manager = new GroupManager(new Name("Alice"), new Name( "data_type"), new Sqlite3GroupManagerDb( System.IO.Path.GetFullPath(eKeyDatabaseFilePath.Name)), 1024, 1, keyChain); setManager(manager); Data data = friendAccess.createEKeyData(manager, "20150825T090000", "20150825T110000", encryptKeyBlob); AssertEquals( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T110000", data.getName().toUri()); Blob contentBlob = data.getContent(); AssertTrue(encryptKeyBlob.equals(contentBlob)); }
public void testCreateDKeyData() { // Create the group manager. GroupManager manager = new GroupManager(new Name("Alice"), new Name( "data_type"), new Sqlite3GroupManagerDb( System.IO.Path.GetFullPath(dKeyDatabaseFilePath.Name)), 2048, 1, keyChain); Blob newCertificateBlob = certificate.wireEncode(); IdentityCertificate newCertificate = new IdentityCertificate(); newCertificate.wireDecode(newCertificateBlob); // Encrypt the D-KEY. Data data = friendAccess.createDKeyData(manager, "20150825T000000", "20150827T000000", new Name("/ndn/memberA/KEY"), decryptKeyBlob, newCertificate.getPublicKeyInfo().getKeyDer()); // Verify the encrypted D-KEY. Blob dataContent = data.getContent(); // Get the nonce key. // dataContent is a sequence of the two EncryptedContent. EncryptedContent encryptedNonce = new EncryptedContent(); encryptedNonce.wireDecode(dataContent); AssertEquals(0, encryptedNonce.getInitialVector().size()); AssertEquals(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.RsaOaep, encryptedNonce.getAlgorithmType()); Blob blobNonce = encryptedNonce.getPayload(); EncryptParams decryptParams = new EncryptParams( net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.RsaOaep); Blob nonce = net.named_data.jndn.encrypt.algo.RsaAlgorithm.decrypt(decryptKeyBlob, blobNonce, decryptParams); // Get the D-KEY. // Use the size of encryptedNonce to find the start of encryptedPayload. ByteBuffer payloadContent = dataContent.buf().duplicate(); payloadContent.position(encryptedNonce.wireEncode().size()); EncryptedContent encryptedPayload = new EncryptedContent(); encryptedPayload.wireDecode(payloadContent); AssertEquals(16, encryptedPayload.getInitialVector().size()); AssertEquals(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.AesCbc, encryptedPayload.getAlgorithmType()); decryptParams.setAlgorithmType(net.named_data.jndn.encrypt.algo.EncryptAlgorithmType.AesCbc); decryptParams.setInitialVector(encryptedPayload.getInitialVector()); Blob blobPayload = encryptedPayload.getPayload(); Blob largePayload = net.named_data.jndn.encrypt.algo.AesAlgorithm.decrypt(nonce, blobPayload, decryptParams); AssertTrue(largePayload.equals(decryptKeyBlob)); }
public override Interval calculateInterval(GroupManager groupManager, double timeSlot, IDictionary memberKeys) { return(groupManager.calculateInterval(timeSlot, memberKeys)); }
public override Data createEKeyData(GroupManager groupManager, String startTimeStamp, String endTimeStamp, Blob publicKeyBlob) { return(groupManager.createEKeyData(startTimeStamp, endTimeStamp, publicKeyBlob)); }
public virtual void setGroupManagerFriendAccess( GroupManager.FriendAccess friendAccess) { this.friendAccess = friendAccess; }