예제 #1
0
        benchmarkDecodeDataSeconds
            (int nIterations, bool useCrypto, KeyType keyType, Blob encoding)
        {
            // Initialize the KeyChain storage in case useCrypto is true.
            MemoryIdentityStorage identityStorage = new MemoryIdentityStorage();
            KeyChain keyChain = new KeyChain
                                    (new IdentityManager(identityStorage, new MemoryPrivateKeyStorage()),
                                    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");

            identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
            VerifyCallbacks callbacks = new VerifyCallbacks();

            double start = getNowSeconds();

            for (int i = 0; i < nIterations; ++i)
            {
                Data data = new Data();
                data.wireDecode(encoding.buf());

                if (useCrypto)
                {
                    keyChain.verifyData(data, callbacks, callbacks);
                }
            }
            double finish = getNowSeconds();

            return(finish - start);
        }
예제 #2
0
        static void Main(string[] args)
        {
            var data = new Data();

            data.wireDecode(new Blob(TlvData));
            Console.Out.WriteLine("Decoded Data:");
            dumpData(data);

            // Set the content again to clear the cached encoding so we encode again.
            data.setContent(data.getContent());
            var encoding = data.wireEncode();

            var reDecodedData = new Data();

            reDecodedData.wireDecode(encoding);
            Console.Out.WriteLine("");
            Console.Out.WriteLine("Re-decoded Data:");
            dumpData(reDecodedData);

            var identityStorage   = new MemoryIdentityStorage();
            var privateKeyStorage = new MemoryPrivateKeyStorage();
            var keyChain          = new KeyChain
                                        (new IdentityManager(identityStorage, privateKeyStorage),
                                        new SelfVerifyPolicyManager(identityStorage));

            // Initialize the storage.
            var keyName         = new Name("/testname/DSK-123");
            var certificateName = keyName.getSubName(0, keyName.size() - 1).append
                                      ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0");

            identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
            privateKeyStorage.setKeyPairForKeyName
                (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER),
                new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER));

            VerifyCallbacks callbacks = new VerifyCallbacks("Re-decoded Data");

            keyChain.verifyData(reDecodedData, callbacks, callbacks);

            var freshData = new Data(new Name("/ndn/abc"));

            freshData.setContent(new Blob("SUCCESS!"));
            freshData.getMetaInfo().setFreshnessPeriod(5000);
            freshData.getMetaInfo().setFinalBlockId(new Name("/%00%09").get(0));
            keyChain.sign(freshData, certificateName);
            Console.Out.WriteLine("");
            Console.Out.WriteLine("Freshly-signed Data:");
            dumpData(freshData);

            callbacks = new VerifyCallbacks("Freshly-signed Data");
            keyChain.verifyData(freshData, callbacks, callbacks);
        }
        static void Main(string[] args)
        {
            var interest = new Interest();
              interest.wireDecode(new Blob(TlvInterest));
              Console.Out.WriteLine("Interest:");
              dumpInterest(interest);

              // Set the name again to clear the cached encoding so we encode again.
              interest.setName(interest.getName());
              var encoding = interest.wireEncode();
              Console.Out.WriteLine("");
              Console.Out.WriteLine("Re-encoded interest " + encoding.toHex());

              var reDecodedInterest = new Interest();
              reDecodedInterest.wireDecode(encoding);
              Console.Out.WriteLine("");
              Console.Out.WriteLine("Re-decoded Interest:");
              dumpInterest(reDecodedInterest);

              var freshInterest = new Interest(new Name("/ndn/abc"));
              freshInterest.setMinSuffixComponents(4);
              freshInterest.setMaxSuffixComponents(6);
              freshInterest.setInterestLifetimeMilliseconds(30000);
              freshInterest.setChildSelector(1);
              freshInterest.setMustBeFresh(true);
              freshInterest.getKeyLocator().setType(KeyLocatorType.KEY_LOCATOR_DIGEST);
              freshInterest.getKeyLocator().setKeyData
            (new Blob(new byte[] {
              0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
              0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }));
              freshInterest.getExclude().appendComponent(new Name("abc").get(0)).appendAny();

              var identityStorage = new MemoryIdentityStorage();
              var privateKeyStorage = new MemoryPrivateKeyStorage();
              var keyChain = new KeyChain
            (new IdentityManager(identityStorage, privateKeyStorage),
              new SelfVerifyPolicyManager(identityStorage));

              // Initialize the storage.
              var keyName = new Name("/testname/DSK-123");
              var certificateName = keyName.getSubName(0, keyName.size() - 1).append
            ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0");
              identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
              privateKeyStorage.setKeyPairForKeyName
            (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER),
             new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER));

              // Make a Face just so that we can sign the interest.
              var face = new Face("localhost");
              face.setCommandSigningInfo(keyChain, certificateName);
              face.makeCommandInterest(freshInterest);

              Interest reDecodedFreshInterest = new Interest();
              reDecodedFreshInterest.wireDecode(freshInterest.wireEncode());
              Console.Out.WriteLine("");
              Console.Out.WriteLine("Re-decoded fresh Interest:");
              dumpInterest(reDecodedFreshInterest);

              VerifyCallbacks callbacks = new VerifyCallbacks("Freshly-signed Interest");
              keyChain.verifyInterest(reDecodedFreshInterest, callbacks, callbacks);
        }
예제 #4
0
        static void Main(string[] args)
        {
            var interest = new Interest();

            interest.wireDecode(new Blob(TlvInterest));
            Console.Out.WriteLine("Interest:");
            dumpInterest(interest);

            // Set the name again to clear the cached encoding so we encode again.
            interest.setName(interest.getName());
            var encoding = interest.wireEncode();

            Console.Out.WriteLine("");
            Console.Out.WriteLine("Re-encoded interest " + encoding.toHex());

            var reDecodedInterest = new Interest();

            reDecodedInterest.wireDecode(encoding);
            Console.Out.WriteLine("");
            Console.Out.WriteLine("Re-decoded Interest:");
            dumpInterest(reDecodedInterest);

            var freshInterest = new Interest(new Name("/ndn/abc"));

            freshInterest.setMinSuffixComponents(4);
            freshInterest.setMaxSuffixComponents(6);
            freshInterest.setInterestLifetimeMilliseconds(30000);
            freshInterest.setChildSelector(1);
            freshInterest.setMustBeFresh(true);
            freshInterest.getKeyLocator().setType(KeyLocatorType.KEY_LOCATOR_DIGEST);
            freshInterest.getKeyLocator().setKeyData
                (new Blob(new byte[] {
                0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
                0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
            }));
            freshInterest.getExclude().appendComponent(new Name("abc").get(0)).appendAny();

            var identityStorage   = new MemoryIdentityStorage();
            var privateKeyStorage = new MemoryPrivateKeyStorage();
            var keyChain          = new KeyChain
                                        (new IdentityManager(identityStorage, privateKeyStorage),
                                        new SelfVerifyPolicyManager(identityStorage));

            // Initialize the storage.
            var keyName         = new Name("/testname/DSK-123");
            var certificateName = keyName.getSubName(0, keyName.size() - 1).append
                                      ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0");

            identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
            privateKeyStorage.setKeyPairForKeyName
                (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER),
                new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER));

            // Make a Face just so that we can sign the interest.
            var face = new Face("localhost");

            face.setCommandSigningInfo(keyChain, certificateName);
            face.makeCommandInterest(freshInterest);

            Interest reDecodedFreshInterest = new Interest();

            reDecodedFreshInterest.wireDecode(freshInterest.wireEncode());
            Console.Out.WriteLine("");
            Console.Out.WriteLine("Re-decoded fresh Interest:");
            dumpInterest(reDecodedFreshInterest);

            VerifyCallbacks callbacks = new VerifyCallbacks("Freshly-signed Interest");

            keyChain.verifyInterest(reDecodedFreshInterest, callbacks, callbacks);
        }
        /**
         * Loop to decode a data packet nIterations times.
         * @param nIterations The number of iterations.
         * @param useCrypto If true, verify the signature.  If false, don't verify.
         * @param keyType KeyType.RSA or EC, used if useCrypto is true.
         * @param encoding The wire encoding to decode.
         * @return The number of seconds for all iterations.
         * @throws EncodingException
         */
        private static double benchmarkDecodeDataSeconds(int nIterations, bool useCrypto, KeyType keyType, Blob encoding)
        {
            // Initialize the KeyChain storage in case useCrypto is true.
              MemoryIdentityStorage identityStorage = new MemoryIdentityStorage();
              KeyChain keyChain = new KeyChain
            (new IdentityManager(identityStorage, new MemoryPrivateKeyStorage()),
              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");
              identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
              VerifyCallbacks callbacks = new VerifyCallbacks();

              double start = getNowSeconds();
              for (int i = 0; i < nIterations; ++i) {
            Data data = new Data();
            data.wireDecode(encoding.buf());

            if (useCrypto)
              keyChain.verifyData(data, callbacks, callbacks);
              }
              double finish = getNowSeconds();

              return finish - start;
        }
        static void Main(string[] args)
        {
            var data = new Data();
              data.wireDecode(new Blob(TlvData));
              Console.Out.WriteLine("Decoded Data:");
              dumpData(data);

              // Set the content again to clear the cached encoding so we encode again.
              data.setContent(data.getContent());
              var encoding = data.wireEncode();

              var reDecodedData = new Data();
              reDecodedData.wireDecode(encoding);
              Console.Out.WriteLine("");
              Console.Out.WriteLine("Re-decoded Data:");
              dumpData(reDecodedData);

              var identityStorage = new MemoryIdentityStorage();
              var privateKeyStorage = new MemoryPrivateKeyStorage();
              var keyChain = new KeyChain
            (new IdentityManager(identityStorage, privateKeyStorage),
              new SelfVerifyPolicyManager(identityStorage));

              // Initialize the storage.
              var keyName = new Name("/testname/DSK-123");
              var certificateName = keyName.getSubName(0, keyName.size() - 1).append
            ("KEY").append(keyName.get(-1)).append("ID-CERT").append("0");
              identityStorage.addKey(keyName, KeyType.RSA, new Blob(DEFAULT_RSA_PUBLIC_KEY_DER));
              privateKeyStorage.setKeyPairForKeyName
            (keyName, KeyType.RSA, new ByteBuffer(DEFAULT_RSA_PUBLIC_KEY_DER),
              new ByteBuffer(DEFAULT_RSA_PRIVATE_KEY_DER));

              VerifyCallbacks callbacks = new VerifyCallbacks("Re-decoded Data");
              keyChain.verifyData(reDecodedData, callbacks, callbacks);

              var freshData = new Data(new Name("/ndn/abc"));
              freshData.setContent(new Blob("SUCCESS!"));
              freshData.getMetaInfo().setFreshnessPeriod(5000);
              freshData.getMetaInfo().setFinalBlockId(new Name("/%00%09").get(0));
              keyChain.sign(freshData, certificateName);
              Console.Out.WriteLine("");
              Console.Out.WriteLine("Freshly-signed Data:");
              dumpData(freshData);

              callbacks = new VerifyCallbacks("Freshly-signed Data");
              keyChain.verifyData(freshData, callbacks, callbacks);
        }