def test_hyper_relation(self): # Set up the validator. fetcher = CertificateFetcherOffline() validator = ValidatorConfig(fetcher) validator.load( os.path.join(self._policyConfigDirectory, "hyperrelation_ruleset.conf")) # Set up a Data packet and result object. data = Data() KeyLocator.getFromSignature(data.getSignature()).setType(KeyLocatorType.KEYNAME) result = TestValidationResult(data) data.setName(Name("/SecurityTestSecRule/Basic/Longer/Data2")) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/Longer/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) data.setName(Name("/SecurityTestSecRule/Basic/Other/Data1")) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/Longer/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_)
def test_hyper_relation(self): # Set up the validator. fetcher = CertificateFetcherOffline() validator = ValidatorConfig(fetcher) validator.load( os.path.join(self._policyConfigDirectory, "hyperrelation_ruleset.conf")) # Set up a Data packet and result object. data = Data() KeyLocator.getFromSignature(data.getSignature()).setType( KeyLocatorType.KEYNAME) result = TestValidationResult(data) data.setName(Name("/SecurityTestSecRule/Basic/Longer/Data2")) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/Longer/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) data.setName(Name("/SecurityTestSecRule/Basic/Other/Data1")) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/Longer/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/Basic/KEY/123")) result.checkPolicy(validator) self.assertTrue(result._calledFailure and not result.calledContinue_)
def onInterest(self, prefix, interest, face, interestFilterId, filter): self._callbackCount = 0 # log.debug("prefix: '{}'".format(prefix)) # log.debug("interest: '{}'".format(interest)) # log.debug("face: '{}'".format(face)) # log.debug("interestFilterId: '{}'".format(interestFilterId)) # log.debug("filter: '{}'".format(filter)) data = Data() # # log.debug("----") # for n in self.db: # log.debug(n) # log.debug(self.db[n].value) # log.debug("----") # n = str(prefix).split("/")[-1] log.debug("{} value '{}' ({})".format(prefix, self.db[n].value, self.freshnessPeriod)) data.setContent(str(self.db[n].value)) # TODO: Why does this need to be converted to string? data.setName(prefix) meta = MetaInfo() meta.setFreshnessPeriod(self.freshnessPeriod) data.setMetaInfo(meta) self.keyChain.sign(data) face.putData(data)
def setName(self, name): """ Overrides Data.setName() to ensure that the new name is a valid identity certificate name. :param name: The new name for this IdentityCertificate :type name: Name """ if (not self._isCorrectName(name)): raise SecurityException("Bad format for identity certificate name!") Data.setName(self, name) self._setPublicKeyName()
def setName(self, name): """ Overrides Data.setName() to ensure that the new name is a valid identity certificate name. :param name: The new name for this IdentityCertificate :type name: Name """ if (not self._isCorrectName(name)): raise SecurityException( "Bad format for identity certificate name!") Data.setName(self, name) self._setPublicKeyName()
def test_get_group_key_without_regeneration(self): # Create the group manager. manager = GroupManager( Name("Alice"), Name("data_type"), Sqlite3GroupManagerDb(self.groupKeyDatabaseFilePath), 1024, 1, self.keyChain) self.setManager(manager) # Get the data list from the group manager. timePoint1 = Schedule.fromIsoString("20150825T093000") result = manager.getGroupKey(timePoint1) self.assertEqual(4, len(result)) # The first data packet contains the group's encryption key (public key). data1 = result[0] self.assertEqual( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T100000", data1.getName().toUri()) groupEKey1 = EncryptKey(data1.getContent()) # Get the second data packet and decrypt. data = result[1] self.assertEqual( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberA/ksk-123", data.getName().toUri()) # Add new members to the database. dataBlob = self.certificate.wireEncode() memberD = Data() memberD.wireDecode(dataBlob) memberD.setName(Name("/ndn/memberD/KEY/ksk-123/ID-CERT/123")) manager.addMember("schedule1", memberD) result2 = manager.getGroupKey(timePoint1, False) self.assertEqual(5, len(result2)) # Check that the new EKey is the same as the previous one. data2 = result2[0] self.assertEqual( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T100000", data2.getName().toUri()) groupEKey2 = EncryptKey(data2.getContent()) self.assertTrue(groupEKey1.getKeyBits().equals( groupEKey2.getKeyBits())) # Check the second data packet. data2 = result2[1] self.assertEqual( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberA/ksk-123", data2.getName().toUri())
def test_get_group_key_without_regeneration(self): # Create the group manager. manager = GroupManager( Name("Alice"), Name("data_type"), Sqlite3GroupManagerDb(self.groupKeyDatabaseFilePath), 1024, 1, self.keyChain) self.setManager(manager) # Get the data list from the group manager. timePoint1 = Schedule.fromIsoString("20150825T093000") result = manager.getGroupKey(timePoint1) self.assertEqual(4, len(result)) # The first data packet contains the group's encryption key (public key). data1 = result[0] self.assertEqual( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T100000", data1.getName().toUri()) groupEKey1 = EncryptKey(data1.getContent()) # Get the second data packet and decrypt. data = result[1] self.assertEqual( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberA/ksk-123", data.getName().toUri()) # Add new members to the database. dataBlob = self.certificate.wireEncode() memberD = Data() memberD.wireDecode(dataBlob) memberD.setName(Name("/ndn/memberD/KEY/ksk-123/ID-CERT/123")) manager.addMember("schedule1", memberD) result2 = manager.getGroupKey(timePoint1, False) self.assertEqual(5, len(result2)) # Check that the new EKey is the same as the previous one. data2 = result2[0] self.assertEqual( "/Alice/READ/data_type/E-KEY/20150825T090000/20150825T100000", data2.getName().toUri()) groupEKey2 = EncryptKey(data2.getContent()) self.assertTrue(groupEKey1.getKeyBits().equals(groupEKey2.getKeyBits())); # Check the second data packet. data2 = result2[1] self.assertEqual( "/Alice/READ/data_type/D-KEY/20150825T090000/20150825T100000/FOR/ndn/memberA/ksk-123", data2.getName().toUri())
def test_name_relation(self): # Set up the validators. fetcher = CertificateFetcherOffline() validatorPrefix = ValidatorConfig(fetcher) validatorEqual = ValidatorConfig(fetcher) validatorStrict = ValidatorConfig(fetcher) validatorPrefix.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_prefix.conf")) validatorEqual.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_equal.conf")) validatorStrict.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_strict.conf")) # Set up a Data packet and result object. data = Data() KeyLocator.getFromSignature(data.getSignature()).setType( KeyLocatorType.KEYNAME) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/KEY/123")) result = TestValidationResult(data) data.setName(Name("/TestRule1")) result.checkPolicy(validatorPrefix) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Prefix relation should match prefix name") result.checkPolicy(validatorEqual) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Equal relation should match prefix name") result.checkPolicy(validatorStrict) self.assertTrue(result._calledFailure and not result.calledContinue_, "Strict-prefix relation should not match prefix name") data.setName(Name("/TestRule1/hi")) result.checkPolicy(validatorPrefix) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Prefix relation should match longer name") result.checkPolicy(validatorEqual) self.assertTrue(result._calledFailure and not result.calledContinue_, "Equal relation should not match longer name") result.checkPolicy(validatorStrict) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Strict-prefix relation should match longer name") data.setName(Name("/Bad/TestRule1/")) result.checkPolicy(validatorPrefix) self.assertTrue(result._calledFailure and not result.calledContinue_, "Prefix relation should not match inner components") result.checkPolicy(validatorEqual) self.assertTrue(result._calledFailure and not result.calledContinue_, "Equal relation should not match inner components") result.checkPolicy(validatorStrict) self.assertTrue( result._calledFailure and not result.calledContinue_, "Strict-prefix relation should not match inner components")
def setManager(self, manager): # Set up the first schedule. schedule1 = Schedule() interval11 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 5, 10, 2, RepetitiveInterval.RepeatUnit.DAY) interval12 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 6, 8, 1, RepetitiveInterval.RepeatUnit.DAY) interval13 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.fromIsoString("20150827T000000"), 7, 8) schedule1.addWhiteInterval(interval11) schedule1.addWhiteInterval(interval12) schedule1.addBlackInterval(interval13) # Set up the second schedule. schedule2 = Schedule() interval21 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 9, 12, 1, RepetitiveInterval.RepeatUnit.DAY) interval22 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.fromIsoString("20150827T000000"), 6, 8) interval23 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.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. dataBlob = self.certificate.wireEncode() memberA = Data() memberA.wireDecode(dataBlob, TlvWireFormat.get()) memberA.setName(Name("/ndn/memberA/KEY/ksk-123/ID-CERT/123")) memberB = Data() memberB.wireDecode(dataBlob, TlvWireFormat.get()) memberB.setName(Name("/ndn/memberB/KEY/ksk-123/ID-CERT/123")) memberC = Data() memberC.wireDecode(dataBlob, TlvWireFormat.get()) memberC.setName(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)
def setManager(self, manager): # Set up the first schedule. schedule1 = Schedule() interval11 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 5, 10, 2, RepetitiveInterval.RepeatUnit.DAY) interval12 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 6, 8, 1, RepetitiveInterval.RepeatUnit.DAY) interval13 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.fromIsoString("20150827T000000"), 7, 8) schedule1.addWhiteInterval(interval11) schedule1.addWhiteInterval(interval12) schedule1.addBlackInterval(interval13) # Set up the second schedule. schedule2 = Schedule() interval21 = RepetitiveInterval( Schedule.fromIsoString("20150825T000000"), Schedule.fromIsoString("20150827T000000"), 9, 12, 1, RepetitiveInterval.RepeatUnit.DAY) interval22 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.fromIsoString("20150827T000000"), 6, 8) interval23 = RepetitiveInterval( Schedule.fromIsoString("20150827T000000"), Schedule.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. dataBlob = self.certificate.wireEncode() memberA = Data() memberA.wireDecode(dataBlob, TlvWireFormat.get()) memberA.setName(Name("/ndn/memberA/KEY/ksk-123/ID-CERT/123")) memberB = Data() memberB.wireDecode(dataBlob, TlvWireFormat.get()) memberB.setName(Name("/ndn/memberB/KEY/ksk-123/ID-CERT/123")) memberC = Data() memberC.wireDecode(dataBlob, TlvWireFormat.get()) memberC.setName(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)
def test_name_relation(self): # Set up the validators. fetcher = CertificateFetcherOffline() validatorPrefix = ValidatorConfig(fetcher) validatorEqual = ValidatorConfig(fetcher) validatorStrict = ValidatorConfig(fetcher) validatorPrefix.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_prefix.conf")) validatorEqual.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_equal.conf")) validatorStrict.load( os.path.join(self._policyConfigDirectory, "relation_ruleset_strict.conf")) # Set up a Data packet and result object. data = Data() KeyLocator.getFromSignature(data.getSignature()).setType( KeyLocatorType.KEYNAME) KeyLocator.getFromSignature(data.getSignature()).setKeyName( Name("/SecurityTestSecRule/KEY/123")) result = TestValidationResult(data) data.setName(Name("/TestRule1")) result.checkPolicy(validatorPrefix) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Prefix relation should match prefix name") result.checkPolicy(validatorEqual) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Equal relation should match prefix name") result.checkPolicy(validatorStrict) self.assertTrue(result._calledFailure and not result.calledContinue_, "Strict-prefix relation should not match prefix name") data.setName(Name("/TestRule1/hi")) result.checkPolicy(validatorPrefix) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Prefix relation should match longer name") result.checkPolicy(validatorEqual) self.assertTrue(result._calledFailure and not result.calledContinue_, "Equal relation should not match longer name") result.checkPolicy(validatorStrict) self.assertTrue(result.calledContinue_ and not result._calledFailure, "Strict-prefix relation should match longer name") data.setName(Name("/Bad/TestRule1/")) result.checkPolicy(validatorPrefix) self.assertTrue(result._calledFailure and not result.calledContinue_, "Prefix relation should not match inner components") result.checkPolicy(validatorEqual) self.assertTrue(result._calledFailure and not result.calledContinue_, "Equal relation should not match inner components") result.checkPolicy(validatorStrict) self.assertTrue(result._calledFailure and not result.calledContinue_, "Strict-prefix relation should not match inner components")
from pyndn import Data from pyndn.security import KeyChain import sys from RepoSocketPublisher import RepoSocketPublisher publisher = RepoSocketPublisher(12345) keyChain = KeyChain() max_packets = 50000 total_size = 0 n = Name("/test").append(str(0)) d = Data(n) d.setContent("this is a test.") d.getMetaInfo().setFreshnessPeriod(4000) keyChain.sign(d, keyChain.getDefaultCertificateName()) for i in range(0, max_packets + 1): n = Name("/test").append(str(i)) d.setName(n) if i % 100000 == 0: print str(i) if i == max_packets: print str(total_size) total_size = total_size + d.wireEncode().size() publisher.put(d)
def test_matches_data(self): interest = Interest(Name("/A")) interest.setMinSuffixComponents(2) interest.setMaxSuffixComponents(2) interest.getKeyLocator().setType(KeyLocatorType.KEYNAME) interest.getKeyLocator().setKeyName(Name("/B")) interest.getExclude().appendComponent(Name.Component("J")) interest.getExclude().appendAny() data = Data(Name("/A/D")) signature = Sha256WithRsaSignature() signature.getKeyLocator().setType(KeyLocatorType.KEYNAME) signature.getKeyLocator().setKeyName(Name("/B")) data.setSignature(signature) self.assertEqual(interest.matchesData(data), True) # Check violating MinSuffixComponents. data1 = Data(data) data1.setName(Name("/A")) self.assertEqual(interest.matchesData(data1), False) interest1 = Interest(interest) interest1.setMinSuffixComponents(1) self.assertEqual(interest1.matchesData(data1), True) # Check violating MaxSuffixComponents. data2 = Data(data) data2.setName(Name("/A/E/F")) self.assertEqual(interest.matchesData(data2), False) interest2 = Interest(interest) interest2.setMaxSuffixComponents(3) self.assertEqual(interest2.matchesData(data2), True) # Check violating PublisherPublicKeyLocator. data3 = Data(data) signature3 = Sha256WithRsaSignature() signature3.getKeyLocator().setType(KeyLocatorType.KEYNAME) signature3.getKeyLocator().setKeyName(Name("/G")) data3.setSignature(signature3) self.assertEqual(interest.matchesData(data3), False) interest3 = Interest(interest) interest3.getKeyLocator().setType(KeyLocatorType.KEYNAME) interest3.getKeyLocator().setKeyName(Name("/G")) self.assertEqual(interest3.matchesData(data3), True) data4 = Data(data) data4.setSignature(DigestSha256Signature()) self.assertEqual(interest.matchesData(data4), False) interest4 = Interest(interest) interest4.setKeyLocator(KeyLocator()) self.assertEqual(interest4.matchesData(data4), True) # Check violating Exclude. data5 = Data(data) data5.setName(Name("/A/J")) self.assertEqual(interest.matchesData(data5), False) interest5 = Interest(interest) interest5.getExclude().clear() interest5.getExclude().appendComponent(Name.Component("K")) interest5.getExclude().appendAny() self.assertEqual(interest5.matchesData(data5), True) # Check violating Name. data6 = Data(data) data6.setName(Name("/H/I")) self.assertEqual(interest.matchesData(data6), False) data7 = Data(data) data7.setName(Name("/A/B")) interest7 = Interest( Name("/A/B/sha256digest=" + "54008e240a7eea2714a161dfddf0dd6ced223b3856e9da96792151e180f3b128")) self.assertEqual(interest7.matchesData(data7), True) # Check violating the implicit digest. interest7b = Interest( Name("/A/B/%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00" + "%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00")) self.assertEqual(interest7b.matchesData(data7), False) # Check excluding the implicit digest. interest8 = Interest(Name("/A/B")) interest8.getExclude().appendComponent(interest7.getName().get(2)) self.assertEqual(interest8.matchesData(data7), False)
class DRecord: def __init__(self): self.data = None self.key = None self.producer = None self.endorse_count = 0 self.approvers = None def from_data(self, record_data): self.data = record_data self.key = self.data.getName().toUri() sig = self.data.getSignature() if isinstance(sig, Sha256WithEcdsaSignature) or isinstance( sig, Sha256WithRsaSignature): self.producer = sig.getKeyLocator().getKeyName().getPrefix( -2).toUri() self.endorse_count = 0 self.approvers = set() def get_preceding_record_keys(self): pass if __name__ == "__main__": data = Data() data.setName(Name("/test/my/data")) keychain = KeyChain() keychain.signByIdentity(data, Name("/example")) record = DRecord() record.from_data(data) print(record.producer)
def test_matches_data(self): interest = Interest(Name("/A")) interest.setMinSuffixComponents(2) interest.setMaxSuffixComponents(2) interest.getKeyLocator().setType(KeyLocatorType.KEYNAME) interest.getKeyLocator().setKeyName(Name("/B")) interest.getExclude().appendComponent(Name.Component("J")) interest.getExclude().appendAny() data = Data(Name("/A/D")) signature = Sha256WithRsaSignature() signature.getKeyLocator().setType(KeyLocatorType.KEYNAME) signature.getKeyLocator().setKeyName(Name("/B")) data.setSignature(signature) self.assertEqual(interest.matchesData(data), True) # Check violating MinSuffixComponents. data1 = Data(data) data1.setName(Name("/A")) self.assertEqual(interest.matchesData(data1), False) interest1 = Interest(interest) interest1.setMinSuffixComponents(1) self.assertEqual(interest1.matchesData(data1), True) # Check violating MaxSuffixComponents. data2 = Data(data) data2.setName(Name("/A/E/F")) self.assertEqual(interest.matchesData(data2), False) interest2 = Interest(interest) interest2.setMaxSuffixComponents(3) self.assertEqual(interest2.matchesData(data2), True) # Check violating PublisherPublicKeyLocator. data3 = Data(data) signature3 = Sha256WithRsaSignature() signature3.getKeyLocator().setType(KeyLocatorType.KEYNAME) signature3.getKeyLocator().setKeyName(Name("/G")) data3.setSignature(signature3) self.assertEqual(interest.matchesData(data3), False) interest3 = Interest(interest) interest3.getKeyLocator().setType(KeyLocatorType.KEYNAME) interest3.getKeyLocator().setKeyName(Name("/G")) self.assertEqual(interest3.matchesData(data3), True) data4 = Data(data) data4.setSignature(DigestSha256Signature()) self.assertEqual(interest.matchesData(data4), False) interest4 = Interest(interest) interest4.setKeyLocator(KeyLocator()) self.assertEqual(interest4.matchesData(data4), True) # Check violating Exclude. data5 = Data(data) data5.setName(Name("/A/J")) self.assertEqual(interest.matchesData(data5), False) interest5 = Interest(interest) interest5.getExclude().clear() interest5.getExclude().appendComponent(Name.Component("K")) interest5.getExclude().appendAny() self.assertEqual(interest5.matchesData(data5), True) # Check violating Name. data6 = Data(data) data6.setName(Name("/H/I")) self.assertEqual(interest.matchesData(data6), False) data7 = Data(data) data7.setName(Name("/A/B")) interest7 = Interest( Name("/A/B/sha256digest=" + "54008e240a7eea2714a161dfddf0dd6ced223b3856e9da96792151e180f3b128")) self.assertEqual(interest7.matchesData(data7), True) # Check violating the implicit digest. interest7b = Interest( Name("/A/B/%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00" + "%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00")) self.assertEqual(interest7b.matchesData(data7), False) # Check excluding the implicit digest. interest8 = Interest(Name("/A/B")) interest8.getExclude().appendComponent(interest7.getName().get(2)) self.assertEqual(interest8.matchesData(data7), False)
def test_matches_data(self): interest = Interest(Name("/A")) interest.setCanBePrefix(False) # Check violating CanBePrefix. data = Data(Name("/A/D")) self.assertEqual(interest.matchesData(data), False) # Check violating PublisherPublicKeyLocator. data3 = Data(data) signature3 = Sha256WithRsaSignature() signature3.getKeyLocator().setType(KeyLocatorType.KEYNAME) signature3.getKeyLocator().setKeyName(Name("/G")) data3.setSignature(signature3) self.assertEqual(interest.matchesData(data3), False) # Do not test keylocator in interest packet #interest3 = Interest(interest) #interest3.getKeyLocator().setType(KeyLocatorType.KEYNAME) #interest3.getKeyLocator().setKeyName(Name("/G")) #self.assertEqual(interest3.matchesData(data3), True) data4 = Data(data) data4.setSignature(DigestSha256Signature()) self.assertEqual(interest.matchesData(data4), False) # Do not test keylocator in interest packet #interest4 = Interest(interest) #interest4.setKeyLocator(KeyLocator()) #self.assertEqual(interest4.matchesData(data4), True) # Check violating Exclude. data5 = Data(data) data5.setName(Name("/A/J")) self.assertEqual(interest.matchesData(data5), False) # Check violating Name. data6 = Data(data) data6.setName(Name("/H/I")) self.assertEqual(interest.matchesData(data6), False) data7 = Data(data) data7.setName(Name("/A/B")) interest7 = Interest( Name( "/A/B/sha256digest=" + "54008e240a7eea2714a161dfddf0dd6ced223b3856e9da96792151e180f3b128" )) self.assertEqual(interest7.matchesData(data7), True) # Check violating the implicit digest. interest7b = Interest( Name("/A/B/%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00" + "%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00")) self.assertEqual(interest7b.matchesData(data7), False) # Check excluding the implicit digest. interest8 = Interest(Name("/A/B")) interest8.getExclude().appendComponent(interest7.getName().get(2)) self.assertEqual(interest8.matchesData(data7), False)