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)");
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }