public void testMissingKeyLocator() { Interest interest1 = fixture_.makeCommandInterest(fixture_.identity_); Sha256WithRsaSignature signatureInfo = new Sha256WithRsaSignature(); setNameComponent(interest1, net.named_data.jndn.security.CommandInterestSigner.POS_SIGNATURE_INFO, net.named_data.jndn.encoding.TlvWireFormat.get().encodeSignatureInfo(signatureInfo)); validateExpectFailure(interest1, "Should fail (missing KeyLocator)"); }
public void testBadCertificateName() { Interest interest1 = fixture_.makeCommandInterest(fixture_.identity_); KeyLocator keyLocator = new KeyLocator(); keyLocator.setType(net.named_data.jndn.KeyLocatorType.KEYNAME); keyLocator.setKeyName(new Name("/bad/cert/name")); Sha256WithRsaSignature signatureInfo = new Sha256WithRsaSignature(); signatureInfo.setKeyLocator(keyLocator); setNameComponent(interest1, net.named_data.jndn.security.CommandInterestSigner.POS_SIGNATURE_INFO, net.named_data.jndn.encoding.TlvWireFormat.get().encodeSignatureInfo(signatureInfo)); validateExpectFailure(interest1, "Should fail (bad certificate name)"); }
public void testBadKeyLocatorType() { Interest interest1 = fixture_.makeCommandInterest(fixture_.identity_); KeyLocator keyLocator = new KeyLocator(); keyLocator.setType(net.named_data.jndn.KeyLocatorType.KEY_LOCATOR_DIGEST); keyLocator.setKeyData(new Blob(new int[] { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd })); Sha256WithRsaSignature signatureInfo = new Sha256WithRsaSignature(); signatureInfo.setKeyLocator(keyLocator); setNameComponent(interest1, net.named_data.jndn.security.CommandInterestSigner.POS_SIGNATURE_INFO, net.named_data.jndn.encoding.TlvWireFormat.get().encodeSignatureInfo(signatureInfo)); validateExpectFailure(interest1, "Should fail (bad KeyLocator type)"); }
private static Sha256WithRsaSignature generateFakeSignature() { Sha256WithRsaSignature signatureInfo = new Sha256WithRsaSignature(); Name keyLocatorName = new Name("/ndn/site1/KEY/ksk-2516425377094"); KeyLocator keyLocator = new KeyLocator(); keyLocator.setType(net.named_data.jndn.KeyLocatorType.KEYNAME); keyLocator.setKeyName(keyLocatorName); signatureInfo.setKeyLocator(keyLocator); ValidityPeriod period = new ValidityPeriod(); period.setPeriod(net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20141111T050000"), net.named_data.jndn.tests.unit_tests.UnitTestsCommon.fromIsoString("20141111T060000")); signatureInfo.setValidityPeriod(period); Blob block2 = new Blob(SIG_VALUE, false); signatureInfo.setSignature(block2); return(signatureInfo); }
benchmarkEncodeDataSeconds (int nIterations, bool useComplex, bool useCrypto, KeyType keyType, Blob[] encoding) { Name name; Blob content; if (useComplex) { // Use a large name and content. name = new Name ("/ndn/ucla.edu/apps/lwndn-test/numbers.txt/%FD%05%05%E8%0C%CE%1D/%00"); StringBuilder contentStream = new StringBuilder(); int count = 1; contentStream.append(count++); while (contentStream.toString().Length < 1115) { contentStream.append(" ").append(count++); } content = new Blob(contentStream.toString()); } else { // Use a small name and content. name = new Name("/test"); content = new Blob("abc"); } Name.Component finalBlockId = new Name.Component(new Blob(new byte[] { (byte)0 })); // Initialize the KeyChain storage in case useCrypto is true. MemoryIdentityStorage identityStorage = new MemoryIdentityStorage(); MemoryPrivateKeyStorage privateKeyStorage = new MemoryPrivateKeyStorage(); KeyChain keyChain = new KeyChain (new IdentityManager(identityStorage, privateKeyStorage), new SelfVerifyPolicyManager(identityStorage)); Name keyName = new Name("/testname/DSK-123"); Name certificateName = keyName.getSubName(0, keyName.size() - 1).append ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0"); privateKeyStorage.setKeyPairForKeyName (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER), new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER)); Blob signatureBits = new Blob(new byte[256]); Blob emptyBlob = new Blob(new byte[0]); double start = getNowSeconds(); for (int i = 0; i < nIterations; ++i) { Data data = new Data(name); data.setContent(content); if (useComplex) { data.getMetaInfo().setFreshnessPeriod(30000); data.getMetaInfo().setFinalBlockId(finalBlockId); } if (useCrypto) { // This sets the signature fields. keyChain.sign(data, certificateName); } else { // Imitate IdentityManager.signByCertificate to set up the signature // fields, but don't sign. KeyLocator keyLocator = new KeyLocator(); keyLocator.setType(KeyLocatorType.KEYNAME); keyLocator.setKeyName(certificateName); Sha256WithRsaSignature sha256Signature = (Sha256WithRsaSignature)data.getSignature(); sha256Signature.setKeyLocator(keyLocator); sha256Signature.setSignature(signatureBits); } encoding[0] = data.wireEncode(); } double finish = getNowSeconds(); return(finish - start); }
public void testMatchesData() { Interest interest = new Interest(new Name("/A")); interest.setMinSuffixComponents(2); interest.setMaxSuffixComponents(2); interest.getKeyLocator().setType(net.named_data.jndn.KeyLocatorType.KEYNAME); interest.getKeyLocator().setKeyName(new Name("/B")); interest.getExclude().appendComponent(new Name.Component("J")); interest.getExclude().appendAny(); Data data = new Data(new Name("/A/D")); Sha256WithRsaSignature signature = new Sha256WithRsaSignature(); signature.getKeyLocator().setType(net.named_data.jndn.KeyLocatorType.KEYNAME); signature.getKeyLocator().setKeyName(new Name("/B")); data.setSignature(signature); Assert.AssertEquals(true, interest.matchesData(data)); // Check violating MinSuffixComponents. Data data1 = new Data(data); data1.setName(new Name("/A")); Assert.AssertEquals(false, interest.matchesData(data1)); Interest interest1 = new Interest(interest); interest1.setMinSuffixComponents(1); Assert.AssertEquals(true, interest1.matchesData(data1)); // Check violating MaxSuffixComponents. Data data2 = new Data(data); data2.setName(new Name("/A/E/F")); Assert.AssertEquals(false, interest.matchesData(data2)); Interest interest2 = new Interest(interest); interest2.setMaxSuffixComponents(3); Assert.AssertEquals(true, interest2.matchesData(data2)); // Check violating PublisherPublicKeyLocator. Data data3 = new Data(data); Sha256WithRsaSignature signature3 = new Sha256WithRsaSignature(); signature3.getKeyLocator().setType(net.named_data.jndn.KeyLocatorType.KEYNAME); signature3.getKeyLocator().setKeyName(new Name("/G")); data3.setSignature(signature3); Assert.AssertEquals(false, interest.matchesData(data3)); Interest interest3 = new Interest(interest); interest3.getKeyLocator().setType(net.named_data.jndn.KeyLocatorType.KEYNAME); interest3.getKeyLocator().setKeyName(new Name("/G")); Assert.AssertEquals(true, interest3.matchesData(data3)); Data data4 = new Data(data); data4.setSignature(new DigestSha256Signature()); Assert.AssertEquals(false, interest.matchesData(data4)); Interest interest4 = new Interest(interest); interest4.setKeyLocator(new KeyLocator()); Assert.AssertEquals(true, interest4.matchesData(data4)); // Check violating Exclude. Data data5 = new Data(data); data5.setName(new Name("/A/J")); Assert.AssertEquals(false, interest.matchesData(data5)); Interest interest5 = new Interest(interest); interest5.getExclude().clear(); interest5.getExclude().appendComponent(new Name.Component("K")); interest5.getExclude().appendAny(); Assert.AssertEquals(true, interest5.matchesData(data5)); // Check violating Name. Data data6 = new Data(data); data6.setName(new Name("/H/I")); Assert.AssertEquals(false, interest.matchesData(data6)); Data data7 = new Data(data); data7.setName(new Name("/A/B")); Interest interest7 = new Interest( new Name( "/A/B/sha256digest=" + "54008e240a7eea2714a161dfddf0dd6ced223b3856e9da96792151e180f3b128")); Assert.AssertEquals(true, interest7.matchesData(data7)); // Check violating the implicit digest. Interest interest7b = new Interest(new 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")); Assert.AssertEquals(false, interest7b.matchesData(data7)); // Check excluding the implicit digest. Interest interest8 = new Interest(new Name("/A/B")); interest8.getExclude().appendComponent(interest7.getName().get(2)); Assert.AssertEquals(false, interest8.matchesData(data7)); }