docs: Extending documentation and manpages

Refs: #1462

Change-Id: If33a0f3c623daf3502ed301bcdc63892779463e3
This commit is contained in:
Alexander Afanasyev authored and Yingdi Yu committed 2014-04-16 16:20:41 -07:00
1 parent 05842f2e0c
commit 151a855a1a
26 files changed
+992 -398

No files matched your search

+17 -1
View File
@@ -230,10 +230,26 @@ latex_documents = [
# (source start file, name, description, authors, manual section).
man_pages = [
('manpages/ndnsec', 'ndnsec', u'NDN security tools', None, 1),
('manpages/ndnsec-cert-dump', 'ndnsec-cert-dump', 'part of NDN security tools', None, 1),
('manpages/ndnsec-cert-gen', 'ndnsec-cert-gen', 'part of NDN security tools', None, 1),
('manpages/ndnsec-cert-install', 'ndnsec-cert-instal', 'part of NDN security tools', None, 1),
('manpages/ndnsec-delete', 'ndnsec-delete', 'part of NDN security tools', None, 1),
('manpages/ndnsec-export', 'ndnsec-export', 'part of NDN security tools', None, 1),
('manpages/ndnsec-get-default', 'ndnsec-get-default', 'part of NDN security tools', None, 1),
('manpages/ndnsec-import', 'ndnsec-import', 'part of NDN security tools', None, 1),
('manpages/ndnsec-key-gen', 'ndnsec-key-gen', 'part of NDN security tools', None, 1),
('manpages/ndnsec-list', 'ndnsec-list', 'part of NDN security tools', None, 1),
('manpages/ndnsec-op-tool', 'ndnsec-op-tool', 'part of NDN security tools', None, 1),
('manpages/ndnsec-set-acl', 'ndnsec-set-acl', 'part of NDN security tools', None, 1),
('manpages/ndnsec-set-default', 'ndnsec-set-default', 'part of NDN security tools', None, 1),
('manpages/ndnsec-sig-verify', 'ndnsec-sig-verify', 'part of NDN security tools', None, 1),
('manpages/ndnsec-sign-req', 'ndnsec-sign-req', 'part of NDN security tools', None, 1),
('manpages/ndnsec-unlock-tpm', 'ndnsec-unlock-tpm', 'part of NDN security tools', None, 1),
('tutorials/security-validator-config', 'ndnsec-validator.conf',
'NDN trust validator configuration file', None, 5),
('manpages/tlvdump', 'tlvdump', 'Decode structure of TLV encoded buffer', None, 1),
]
# If true, show URL addresses after external links.
#man_show_urls = False
man_show_urls = True
+52
View File
@@ -0,0 +1,52 @@
Basic examples
==============
Trivial consumer
----------------
In the following trivial example, a consumer creates a Face with default transport (UnixSocket transport) and sends an Interest for ``/localhost/testApp/randomData``.
While expressing Interest, the app specifies two callbacks to be called when Data is retrieved or Interest times out.
``ndn::bind`` is an alias for either `boost::bind <http://www.boost.org/doc/libs/1_55_0/libs/bind/bind.html>`_ or `std::bind <http://en.cppreference.com/w/cpp/utility/functional/bind>`_ when the library is compiled in C++11 mode.
.. literalinclude:: ../examples/consumer.cpp
:language: c++
:linenos:
:emphasize-lines: 17-19,25-27,41-44,47
Trivial producer
----------------
The following example demonstrates how to write a simple producer application.
First, application sets interset filter for ``/localhost/testApp`` to receive all Interests that have this prefix.
``setInterestFilter`` call accepts two callbacks, one which will be called when an Interest is received, and the other if prefix registration (i.e., configuring proper FIB entry in NFD) fails.
After Interest is received, a producer creates a Data packet with the same name as in the received Interest, adds a silly content, and signs the Data packet with the system-default identity.
It is possible to specify a particular key to be used during the signing.
For more information, refer to KeyChain API documentation.
Finally, after Data packet has been created and signed, it is returned to the requester using ``Face::put`` method.
.. literalinclude:: ../examples/producer.cpp
:language: c++
:linenos:
:emphasize-lines: 37-40,43,49,63-65
Consumer that uses ndn::Scheduler
---------------------------------
The following example demonstrates use for ``ndn::Scheduler`` to schedule an arbitrary events for execution at specific points of time.
The library internally uses `boost::asio::io_service <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/reference/io_service.html>`_ to implement fully asynchronous NDN operations (i.e., sending and receiving Interests and Data).
In addition to network-related operations, ``boost::asio::io_service`` can be used to execute any arbitrary callback within the processing thread (run either explicitly via ``io->run`` or implicitly via ``Face::processEvents`` as in previous examples).
``ndn::Scheduler`` is just a wrapper on top of ``boost::asio::io_service``, allowing simple interface to schedule tasks at specific times.
The highlighted lines in the example demonstrate all that is needed to express a second interest approximately 2 seconds after the first one.
.. literalinclude:: ../examples/consumer-with-timer.cpp
:language: c++
:linenos:
:emphasize-lines: 10,62,69,72-73,76
+1
View File
@@ -4,6 +4,7 @@ C++ library for Named Data Networking
`API documentation (doxygen) <doxygen/annotated.html>`_
.. toctree::
examples
tutorials/security-library
tutorials/utils-ndn-regex
tutorials/security-validator-config
+20 -2
View File
@@ -2,5 +2,23 @@ Manpages
========
.. toctree::
manpages/ndnsec
:maxdepth: 1
manpages/ndnsec
ndnsec-list <manpages/ndnsec-list>
ndnsec-get-default <manpages/ndnsec-get-default>
ndnsec-set-default <manpages/ndnsec-set-default>
ndnsec-key-gen <manpages/ndnsec-key-gen>
ndnsec-sign-req <manpages/ndnsec-sign-req>
ndnsec-cert-gen <manpages/ndnsec-cert-gen>
ndnsec-cert-install <manpages/ndnsec-cert-install>
ndnsec-cert-dump <manpages/ndnsec-cert-dump>
ndnsec-delete <manpages/ndnsec-delete>
ndnsec-export <manpages/ndnsec-export>
ndnsec-import <manpages/ndnsec-import>
ndnsec-unlock-tpm <manpages/ndnsec-unlock-tpm>
manpages/tlvdump
:maxdepth: 1
..
manpages/ndnsec-op-tool
manpages/ndnsec-set-acl
manpages/ndnsec-sig-verify
+67
View File
@@ -0,0 +1,67 @@
ndnsec-cert-dump
================
``ndnsec-cert-dump`` is a tool to dump a certificate from **Public Info Base** or file and output
it to standard output.
Usage
-----
::
$ ndnsec-cert-dump [-h] [-p] [-ikf] name
Description
-----------
``ndnsec-cert-dump`` can read a certificate from **Public Info Base (PIB)** or a file and output
the certificate to standard output.
By default, ``name`` is interpreted as a certificate name.
Options
-------
``-i``
Interpret ``name`` as an identity name. If specified, the certificate to dump is the default
certificate of the identity.
``-k``
Interpret ``name`` as a key name. If specified, the certificate to dump is the default certificate
of the key.
``-f``
Interpret ``name`` as a path to a file containing the certificate. If ``name`` is ``-``,
certificate will be read from standard input.
``-p``
Print out the certificate to a human-readable format.
Examples
--------
Dump a certificate from PIB to standard output:
::
$ ndnsec-cert-dump /ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
Dump a certificate to a human-readable format:
::
$ ndnsec-cert-dump -p /ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
Certificate name:
/ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
Validity:
NotBefore: 20140401T000000
NotAfter: 20150331T235959
Subject Description:
2.5.4.41: David
2.5.4.10: Some Organization
Public key bits:
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAtLq50tpynJ15zExEh9l6
jvh/HOmwhOppr/hTEPYUn2VTh21+JJIg5pHAAH/DQr8Bq5BGrdDUCIShxSxbaHwu
a1y4XgKP1MYBQP/WzcIhIzB/3PBDdmE0jM3Qg6yuk8BOwett3C07GtwW9dfgacwt
aC29xIHnYKfryH/gBSIDUIb38M7ILIDgQeIiQcHGHoFO8CbDtKY2OvVkFNgxowAR
Xn+gtkIfMdE77Z8p0S21pYfdvPuIpVVLy7lnFdwGzyCi3nmbtd/r9NSTepBczWQz
zBbThT7yfeNyHWLu0PZPdz84UpNPsBad3Bx9tT31noIVnt8yyBEfEU1jyEIVkm8U
VQIB
+70
View File
@@ -0,0 +1,70 @@
ndnsec-cert-gen
===============
``ndnsec-cert-gen`` is a tool to issue an identity certificate.
Usage
-----
::
$ ndnsec-cert-gen [-h] [-S timestamp] [-E timestamp] [-N name] [-I info] [-s sign-id] request
Description
-----------
``ndnsec-cert-gen`` takes signing request as input and issues an identity certificate for the key in
the signing request. The signing request can be created during ``ndnsec-keygen`` and can be
re-generated with ``ndnsec-sign-req``.
By default, the default key/certificate will be used to sign the issued certificate.
``request`` could be a path to a file that contains the signing request. If ``request`` is ``-``,
then signing request will be read from standard input.
The generated certificate will be written to standard output in base64 encoding.
Options
-------
``-S timestamp``
Timestamp when the certificate becomes valid. The default value is now.
``-E timestamp``
Timestamp when the certificate expires. The default value is one year from now.
``-N name``
Name of the certificate owner.
``-I info``
Other information about the certificate owner. ``subject-info`` is a list of pairs of OID and
corresponding value. For example, "2.5.4.10 'Some Organization' 2.5.4.3 'http://home.page/'".
``-s sign-id``
Signing identity. The default key/certificate of ``sign-id`` will be used to sign the requested
certificate. If this option is not specified, the system default identity will be used.
Examples
--------
::
$ ndnsec-cert-gen -S 20140401000000 -E 20150331235959 -N "David"
-I "2.5.4.10 'Some Organization'" -s /ndn/test sign_request.cert
Bv0C9wc9CANuZG4IBHRlc3QIA0tFWQgFZGF2aWQIEWtzay0xMzk2OTEzMDU4MTk2
CAdJRC1DRVJUCAgAAAFFPp2g3hQDGAECFf0BdjCCAXIwIhgPMjAxNDA0MDEwMDAw
MDBaGA8yMDE1MDMzMTIzNTk1OVowKDAMBgNVBCkTBURhdmlkMBgGA1UEChMRU29t
ZSBPcmdhbml6YXRpb24wggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQC0
urnS2nKcnXnMTESH2XqO+H8c6bCE6mmv+FMQ9hSfZVOHbX4kkiDmkcAAf8NCvwGr
kEat0NQIhKHFLFtofC5rXLheAo/UxgFA/9bNwiEjMH/c8EN2YTSMzdCDrK6TwE7B
623cLTsa3Bb11+BpzC1oLb3Egedgp+vIf+AFIgNQhvfwzsgsgOBB4iJBwcYegU7w
JsO0pjY69WQU2DGjABFef6C2Qh8x0TvtnynRLbWlh928+4ilVUvLuWcV3AbPIKLe
eZu13+v01JN6kFzNZDPMFtOFPvJ943IdYu7Q9k93PzhSk0+wFp3cHH21PfWeghWe
3zLIER8RTWPIQhWSbxRVAgERFjMbAQEcLgcsCANuZG4IA0tFWQgEdGVzdAgRa3Nr
LTEzOTQxMjk2OTQ3ODgIB0lELUNFUlQX/QEABUGcl7U+F8cwMHKckerv+1H2Nvsd
OfeqX0+4RzWU+wRx2emMGMZZdHSx8M/i45hb0P5hbNEF99L35/SrSTSzhTZdOriD
t/LQOcKBoNXY+iw3EUFM0gvRGU0kaEVBKAHtbYhtoHc48QLEyrsVaMqmrjCmpeF/
JOcClhzJfFW3cZ/SlhcTEayF0ntogYLR2cMzIwQhhSj5L/Kl7I7uxNxZhK1DS98n
q8oGAxHufEAluPrRpDQfI+jeQ4h/YYKcXPW3Vn7VQAGOqIi6gTlUxrmEbyCDF70E
xj5t3wfSUmDa1N+hLRMdEAI+IjRRHDSx2Lhj/QcoPIZPWwKjBz9CBL92og==
+56
View File
@@ -0,0 +1,56 @@
ndnsec-cert-install
===================
``ndnsec-cert-install`` is a tool to install a certificate into **Public Information Base (PIB)**.
Usage
-----
::
$ ndnsec-cert-install [-h] [-IKN] cert-source
Description
-----------
``ndnsec-cert-install`` can insert a certificate into PIB. By default, the installed certificate
will be set as the default certificate of its corresponding identity and the identity is set as
the system default identity.
``cert-source`` could be a filesystem path or an HTTP URL of a file containing to certificate to
install or . If ``cert-file`` is ``-``, the certificate will be read from standard input.
Options
-------
``-I``
Set the certificate as the default certificate of its corresponding identity, but do not change
the system default identity.
``-K``
Set the certificate as the default certificate of its corresponding key, but do not change the
corresponding identity's default key and the system default identity.
``-N``
Install the certificate but do not change any default settings.
Examples
--------
Install a certificate and set it as the system default certificate:
::
$ ndnsec-cert-install cert_file.cert
Install a certificate with HTTP URL and set it as the system default certificate:
::
$ ndnsec-install-cert "http://ndncert.domain.com/cert/get/my-certificate.ndncert"
Install a certificate but do not change any default settings:
::
$ ndnsec-cert-install -N cert_file.cert
+37
View File
@@ -0,0 +1,37 @@
ndnsec-delete
=============
``ndnsec-delete`` is a tool to delete security data from both **Public Info Base** and
**Trusted Platform Module**.
Usage
-----
::
ndnsec-delete [-h] [-kc] name
Description
-----------
By default, ``ndnsec-delete`` interpret ``name`` as an identity name. If an identity is deleted,
all the keys and certificates belonging to the identity will be deleted as well. If a key is
deleted, all the certificate belonging to the key will be deleted as well.
Options
-------
``-k``
Interpret ``name`` as a key name and delete the key and its related data.
``-c``
Interpret ``name`` as a certificate name and delete the certificate.
Examples
--------
Delete all data related to an identity:
::
$ ndnsec-delete /ndn/test/david
+44
View File
@@ -0,0 +1,44 @@
ndnsec-export
=============
``ndnsec-export`` is a tool to export an identity's security data
Usage
-----
::
$ ndnsec-export [-h] [-o output] [-p] identity
Description
-----------
``ndnsec-export`` can export public data of the ``identity`` including default key/certificate.
``ndnsec-export`` can also export sensitive data (such as private key), but the sensitive data will
be encrypted. The exported identity can be imported again using ``ndnsec-import``.
By default, the command will write exported data to standard output.
Options
-------
``-o output``
Output the exported data to a file pointed by ``output``.
``-p``
Export private key of the identity. A password will be asked for data encryption.
Examples
--------
Export an identity's security data including private key and store the security data in a file:
::
$ ndnsec-export -o id.info -p /ndn/test/alice
Export an identity's security data without private key and write it to standard output:
::
$ ndnsec-export /ndn/test/alice
+61
View File
@@ -0,0 +1,61 @@
ndnsec-get-default
==================
``ndnsec-get-default`` is a tool to display the default setting of a particular entity.
Usage
-----
::
$ ndnsec-get-default [-h] [-kc] [-i identity|-K key] [-q]
Description
-----------
Given a particular entity, ``ndnsec-get-default`` can display its default setting as specified in
options. If ``identity`` is specified, the given entity becomes the identity. If ``key`` is
specified, the given identity becomes the key. If no entity is specified, the command will take the
system default identity as the given entity.
Options
-------
``-k``
Display the given entity's default key name.
``-c``
Display the given entity's default certificate name.
``-i identity``
Display default setting of the ``identity``
``-K key``
Display default setting of the ``key``.
``-q``
Disable trailling new line character.
Examples
--------
Display an identity's default key name.
::
$ ndnsec-get-default -k -i /ndn/test/alice
/ndn/test/alice/ksk-1394129695025
Display an identity's default certificate name.
::
$ ndnsec-get-default -c -i /ndn/test/alice
/ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
Display a key's default certificate name.
::
$ ndnsec-get-default -c -K /ndn/test/alice/ksk-1394129695025
/ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
+33
View File
@@ -0,0 +1,33 @@
ndnsec-import
=============
``ndnsec-import`` is a tool to import an identity's security data that is prepared by
``ndnsec-export``.
Usage
-----
::
$ ndnsec-import [-h] [-p] input
Description
-----------
``ndnsec-import`` read data from ``input``. It will ask for password if the input contains private
key. If ``input`` is ``-``, security data will be read from standard input.
Options
-------
``-p``
Indicates the imported data containing private key. A password will be asked for data encryption.
Examples
--------
Import an identity's security data including private key:
::
$ ndnsec-import -p input_file
+50
View File
@@ -0,0 +1,50 @@
ndnsec-key-gen
==============
``ndnsec-key-gen`` is tool to generate a pair of RSA key.
Usage
-----
::
$ ndnsec-key-gen [-h] [-n] identity
Description
-----------
``ndnsec-key-gen`` creates a RSA key pair for the specified ``identity`` and sets the key as the
identity's default key. ``ndnsec-key-gen`` will also create a signing request for the generated key.
The signing request will be written to standard output in base64 encoding.
By default, it will also set the identity as the system default identity.
Options
-------
``-n``
Do not set the identity as the system default identity.
Examples
--------
::
$ ndnsec-key-gen /ndn/test/david
Bv0DAAc9CANuZG4IBHRlc3QIBWRhdmlkCANLRVkIEWtzay0xMzk2OTEzMDU4MTk2
CAdJRC1DRVJUCAgAAAFFPoG0ohQDGAECFf0BeDCCAXQwIhgPMjAxNDA0MDcyMzI0
MThaGA8yMDM0MDQwMjIzMjQxOFowKjAoBgNVBCkTIS9uZG4vdGVzdC9kYXZpZC9r
c2stMTM5NjkxMzA1ODE5NjCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB
ALS6udLacpydecxMRIfZeo74fxzpsITqaa/4UxD2FJ9lU4dtfiSSIOaRwAB/w0K/
AauQRq3Q1AiEocUsW2h8LmtcuF4Cj9TGAUD/1s3CISMwf9zwQ3ZhNIzN0IOsrpPA
TsHrbdwtOxrcFvXX4GnMLWgtvcSB52Cn68h/4AUiA1CG9/DOyCyA4EHiIkHBxh6B
TvAmw7SmNjr1ZBTYMaMAEV5/oLZCHzHRO+2fKdEttaWH3bz7iKVVS8u5ZxXcBs8g
ot55m7Xf6/TUk3qQXM1kM8wW04U+8n3jch1i7tD2T3c/OFKTT7AWndwcfbU99Z6C
FZ7fMsgRHxFNY8hCFZJvFFUCAREWOhsBARw1BzMIA25kbggEdGVzdAgFZGF2aWQI
A0tFWQgRa3NrLTEzOTY5MTMwNTgxOTYIB0lELUNFUlQX/QEAW2yfF8JTgu5okR+n
dRlXc3UR/b1REegrpQb3xVzs7fYiiHwFYzQE9RzOuGh/9GSMvQcfejsPw021tJnj
oxNx6spGTOK5Bc0QZGeC6YyNoVSaJr9Obc5Uh8eRqxw76r0pCUHP+l38UgUGeBg/
aHurtcu5zK0zFYX++SAfUGLUZlG4CqKBUNZC+6w9OGUXlcW411zMzfqQ7V9Gxg+p
1IMNJQ6trTFdIwT/4YWHsxR+16r2TRWCNHtJey2GEG84YoqRh8y37jnu7oPhAtTN
TgG9O7O39dZLiFg+UP3LpW1LY64fJXsNfZQmnZWcNo5lX6MXfeiPxWFjOQqnno82
1hgqgA==
+83
View File
@@ -0,0 +1,83 @@
ndnsec-list
===========
``ndnsec-list`` is a tool to display entities stored in **Public Information Base (PIB)**, such as
identities, keys, and certificates.
Usage
-----
::
$ ndnsec-list [-h] [-KkCc]
Description
-----------
``ndnsec-list`` lists names of all the entities according to the granularity specified in options
(The default granularity is identity). The default entities will be marked with ``*`` in front of
their names. For example:
::
$ ndnsec list
* /ndn/edu/ucla/cs/yingdi
/ndn/test/cathy
/ndn/test/bob
/ndn/test/alice
Options
-------
``-K, -k``
Display key names for each identity. The key name with ``*`` in front is the default key name of
the corresponding identity.
``-C, -c``
Display certificate names for each key. The certificate name with ``*`` in front is the default
certificate name of the corresponding key.
Examples
--------
Display all the key names in PIB.
::
$ ndnsec-list -k
* /ndn/edu/ucla/cs/yingdi
+->* /ndn/edu/ucla/cs/yingdi/ksk-1397247318867
+-> /ndn/edu/ucla/cs/yingdi/ksk-1393811874052
/ndn/test/cathy
+->* /ndn/test/cathy/ksk-1394129695418
/ndn/test/bob
+->* /ndn/test/bob/ksk-1394129695308
/ndn/test/alice
+->* /ndn/test/alice/ksk-1394129695025
Display all the certificate names in PIB.
::
$ ndnsec-list -c
* /ndn/edu/ucla/cs/yingdi
+->* /ndn/edu/ucla/cs/yingdi/ksk-1397247318867
+->* /ndn/edu/ucla/cs/yingdi/KEY/ksk-1397247318867/ID-CERT/%00%00%01ERn%1B%BE
+-> /ndn/edu/ucla/cs/yingdi/ksk-1393811874052
+->* /ndn/edu/ucla/cs/yingdi/KEY/ksk-1393811874052/ID-CERT/%FD%01D%85%A9a%DD
/ndn/test/cathy
+->* /ndn/test/cathy/ksk-1394129695418
+->* /ndn/test/KEY/cathy/ksk-1394129695418/ID-CERT/%FD%01D%98%9A%F3J
/ndn/test/bob
+->* /ndn/test/bob/ksk-1394129695308
+->* /ndn/test/KEY/bob/ksk-1394129695308/ID-CERT/%FD%01D%98%9A%F2%AE
/ndn/test/alice
+->* /ndn/test/alice/ksk-1394129695025
+->* /ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
View File
Whitespace-only changes.
+26
View File
@@ -0,0 +1,26 @@
ndnsec-set-acl
==============
``ndnsec-set-acl`` is a tool to add an application into access control list of an private key.
Usage
-----
::
$ ndnsec-set-acl [-h] keyName appPath
Description
-----------
``ndnsec-set-acl`` will add the application pointed by ``appPath`` into the ACL of a key with name
``keyName``.
Examples
--------
Add an application into a key's ACL:
::
$ ndnsec-set-acl /ndn/test/alice/ksk-1394129695025 /test/app/path
+49
View File
@@ -0,0 +1,49 @@
ndnsec-set-default
==================
``ndnsec-set-default`` is a tool to change the default security settings.
Usage
-----
::
$ ndnsec-set-default [-h] [-k|c] name
Description
-----------
By default, ``ndnsec-set-default`` takes ``name`` as an identity name and sets the identity as the
system default identity.
Options
-------
``-k``
Set default key. ``name`` should be a key name, ``ndnsec-set-default`` can infer the corresponding
identity and set the key as the identity's default key.
``-c``
Set default certificate. ``name`` should be a certificate name, ``ndnsec-set-default`` can
infer the corresponding key name and set the certificate as the key's default certificate.
Examples
--------
Set a key's default certificate:
::
$ ndnsec-set-default -c /ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
Set an identity's default key:
::
$ ndnsec-set-default -k /ndn/test/alice/ksk-1394129695025
Set system default identity:
::
$ ndnsec-set-default /ndn/test/alice
View File
Whitespace-only changes.
+77
View File
@@ -0,0 +1,77 @@
ndnsec-sign-req
===============
``ndnsec-sign-req`` is a tool to generate a signing request for a particular key.
Usage
-----
::
$ ndnsec-sign-req [-h] [-k] name
Description
-----------
The signing request of a key is actually a self-signed certificate. Given key's information,
``ndnsec-sign-req`` looks up the key in PIB. If such a key exists, a self-signed certificate of the
key, or its signing request, will be outputed to **stdout** with base64 encoding.
By default, ``name`` is interpreted as an identity name. ``ndnsec-sign-req`` will generate a
signing request for the identity's default key.
Options
-------
``-k``
Interpret ``name`` as a key name.
Examples
--------
Create a signing request for an identity's default key.
::
$ ndnsec-sign-req /ndn/test/david
Bv0DAAc9CANuZG4IBHRlc3QIBWRhdmlkCANLRVkIEWtzay0xMzk2OTk4Mzg5MjU3
CAdJRC1DRVJUCAgAAAFFZ+ibohQDGAECFf0BeDCCAXQwIhgPMjAxNDA0MTYwMDIx
MDhaGA8yMDM0MDQxMTAwMjEwOFowKjAoBgNVBCkTIS9uZG4vdGVzdC9kYXZpZC9r
c2stMTM5Njk5ODM4OTI1NzCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB
AKOhGgpUZXiUkaqgfcIvBKSw4wFcSMhBdXr45Tzh8hi8dv1plXKAV4YQLkjHhJqi
VTj8qGWkvaP0Kv/mkynaa2rPzUQ77wE1ydRIBUik62bXQa8SanJsV9ux99t9LBKq
MY4mtWgal48wFqwqRPNH4xq0yFACh28eaMCMpNvZd2Fh4gmDvQ5xU7sJTyRLt/Mc
mfYppDFGfzUP2nP8eQW5I9+L0DXMAAb4z8w1nXHs21xyPv0SSaJXgBH0ZdBwB++D
Eo5RLmcDdhFqN0f9Rlz06LVq+gLUC2M+N54jD5qUhPEdW5erY6pyYhq4Zv2B4lbK
Zgf2FWIB2iw0of4snf2SxDcCAREWOhsBARw1BzMIA25kbggEdGVzdAgFZGF2aWQI
A0tFWQgRa3NrLTEzOTY5OTgzODkyNTcIB0lELUNFUlQX/QEABe8tCY99uFTPyiNX
u/hUY96FGnfQx4usA2rCd+M4bkvsAwKQVlbBx1sDXsakvoHhLaCi+MTwHw17o+oG
mtPqklLjM8XS+gF+Lh+OyivJQixb8KR8tAtlGeLDoLU/kpgYv/xVhp8Q5ma0/T47
faI4Sn6bQP7YoWj+BdO3oZYthtq3MZPw2hl7wuTRMHNm5i3efnZyZdoPNMR2K43x
gH6ew1JbEQG7G6l5Q/jjnfT/oTtUeQzqWf2SSylAX+9xFZ9KG4+S6K7mYieBoqiA
0wHjvDS1cuIH2j6XveoUYapRjZXaEZqB/YoBwRqEYq2KVn/ol5knLM6FIISXXjxn
cIh62A==
Create a signing request for a particular key.
::
$ ndnsec-sign-req -k /ndn/test/david/ksk-1396913058196
Bv0DAAc9CANuZG4IBHRlc3QIBWRhdmlkCANLRVkIEWtzay0xMzk2OTEzMDU4MTk2
CAdJRC1DRVJUCAgAAAFFZ+mbhRQDGAECFf0BeDCCAXQwIhgPMjAxNDA0MTYwMDIy
MTRaGA8yMDM0MDQxMTAwMjIxNFowKjAoBgNVBCkTIS9uZG4vdGVzdC9kYXZpZC9r
c2stMTM5NjkxMzA1ODE5NjCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB
ALS6udLacpydecxMRIfZeo74fxzpsITqaa/4UxD2FJ9lU4dtfiSSIOaRwAB/w0K/
AauQRq3Q1AiEocUsW2h8LmtcuF4Cj9TGAUD/1s3CISMwf9zwQ3ZhNIzN0IOsrpPA
TsHrbdwtOxrcFvXX4GnMLWgtvcSB52Cn68h/4AUiA1CG9/DOyCyA4EHiIkHBxh6B
TvAmw7SmNjr1ZBTYMaMAEV5/oLZCHzHRO+2fKdEttaWH3bz7iKVVS8u5ZxXcBs8g
ot55m7Xf6/TUk3qQXM1kM8wW04U+8n3jch1i7tD2T3c/OFKTT7AWndwcfbU99Z6C
FZ7fMsgRHxFNY8hCFZJvFFUCAREWOhsBARw1BzMIA25kbggEdGVzdAgFZGF2aWQI
A0tFWQgRa3NrLTEzOTY5MTMwNTgxOTYIB0lELUNFUlQX/QEAkA2DjqDq8pcAD579
PaGz3sybCMo2zyjAJvLCRRDPrjQfkublIvN3wGykfsYRKTPW/aDlZcgOtqn8+Qdo
tpL9PixqB7hPAZzelADB7Rrqw41p5VNJTzBuIzC6bCssMa8xb2VTGkw1oEtWb1vl
Dn+WWvmTNE/yTnSTjNXnTdLinBSA1HH4edkjvH9hTn5+DVyZlpZrTX2qRYcNZqdC
kgESIroeoFnp95NVmO+jtL/pKaJ53jh7pvpv7y8wOu28Qk6HuhwDUR186Y/TNNt4
hIc0NNDfvvyGgbDEGCMJ7/qOSt0qpJ2BxvPCb9S/bQD1odjGfP2F4ZA2S/JN2SYm
5gldDQ==
+17
View File
@@ -0,0 +1,17 @@
ndnsec-unlock-tpm
=================
``ndnsec-unlock-tpm`` is a tool to (temporarily) unlock the **Trusted Platform Module (TPM)** that
manages private keys.
Usage
-----
::
$ ndnsec-unlock-tpm [-h]
Description
-----------
``ndnsec-unlock-tpm`` will ask for password to unlock the TPM.
+59 -326
View File
@@ -1,352 +1,85 @@
ndnsec: NDN security tool
=========================
ndnsec
======
``ndnsec`` is a command-line tools to perform various NDN security management
operation:
``ndnsec`` is a command-line toolkit to perform various NDN security management
operation.
Usage
-----
::
$ ndnsec <command> <args>
$ ndnsec <command> [<args>]
One can check the command list by
or alternatively
::
$ ndnsec help
$ ndnsec-command [<args>]
Here is a list of commands supported so far:
Description
-----------
::
The NDN security data are stored and managed in two places: **Public Information Base** and
**Trusted Platform Module**. ``ndnsec`` toolkit provides a command-line interface of managing and
using the NDN security data.
$ ndnsec help
help Show all commands.
list Display information in PublicInfo.
get-default Get default setting info.
set-default Configure default setting.
key-gen Generate a Key-Signing-Key for an identity.
sign-req Generate a certificate signing request.
cert-gen Generate an identity certificate.
cert-dump Dump a certificate from PublicInfo.
cert-install Install a certificate into PublicInfo.
delete Delete identity/key/certificate.
export Export an identity package.
import Import an identity package.
set-acl Configure ACL of a private key.
unlock-tpm Unlock Tpm.
op-tool Operator tool.
ndnsec commands
---------------
Next, we will introduce these commands one-by-one:
ndnsec-list_
Display information in PublicInfo.
list
----
ndnsec-get-default_
Get default setting info.
``list`` command can display the information of identities, keys, and
certificates. By default, it only display all the identities created in
the system. For example:
ndnsec-set-default_
Configure default setting.
::
ndnsec-key-gen_
Generate a Key-Signing-Key for an identity.
$ ndnsec list
* /ndn/edu/ucla/cs/yingdi
/ndn/test/cathy
/ndn/test/bob
/ndn/test/alice
ndnsec-sign-req_
Generate a certificate signing request.
The identity with ``*`` in front is the default identity of the system.
ndnsec-cert-gen_
Generate an identity certificate.
If option ``-K`` or ``-k`` is specified, the output of the command will
display key names for each identity. The key name with ``*`` in front is
the key name of the corresponding identity. For example:
ndnsec-cert-dump_
Dump a certificate from PublicInfo.
::
ndnsec-cert-install_
Install a certificate into PublicInfo.
$ ndnsec list -k
* /ndn/edu/ucla/cs/yingdi
+->* /ndn/edu/ucla/cs/yingdi/ksk-1393811874052
ndnsec-delete_
Delete identity/key/certificate.
/ndn/test/cathy
+->* /ndn/test/cathy/ksk-1394129695418
ndnsec-export_
Export an identity package.
/ndn/test/bob
+->* /ndn/test/bob/ksk-1394129695308
ndnsec-import_
Import an identity package.
/ndn/test/alice
+->* /ndn/test/alice/ksk-1394129695025
ndnsec-set-acl_
Configure ACL of a private key.
If option ``-C`` or ``-c`` is specified, the output of the command will
display certificate names for each key. The certificate name with ``*``
in front is the certificate name of the corresponding key. For example:
ndnsec-unlock-tpm_
Unlock Tpm.
::
ndnsec-op-tool_
Operator tool.
$ ndnsec list -c
* /ndn/edu/ucla/cs/yingdi
+->* /ndn/edu/ucla/cs/yingdi/ksk-1393811874052
+->* /ndn/edu/ucla/cs/yingdi/KEY/ksk-1393811874052/ID-CERT/%FD%01D%85%A9a%DD
/ndn/test/cathy
+->* /ndn/test/cathy/ksk-1394129695418
+->* /ndn/test/KEY/cathy/ksk-1394129695418/ID-CERT/%FD%01D%98%9A%F3J
/ndn/test/bob
+->* /ndn/test/bob/ksk-1394129695308
+->* /ndn/test/KEY/bob/ksk-1394129695308/ID-CERT/%FD%01D%98%9A%F2%AE
/ndn/test/alice
+->* /ndn/test/alice/ksk-1394129695025
+->* /ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
get-default/set-default
-----------------------
If you are only curious about the default setting of a particular
identity or key. You can use ``get-default`` command.
If you want to check the default setting of a particular identity, you
can specify the identity name with option ``-i``. For example, a
command:
::
$ ndnsec get-default -k -i /ndn/test/alice
/ndn/test/alice/ksk-1394129695025
returns the default key name of ``/ndn/test/alice``. And a command:
::
$ ndnsec get-default -c -i /ndn/test/alice
/ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
returns the default certificate name of ``/ndn/test/alice``. If option
``-i`` is missing, the system default identity will be used.
If you want to check default settings of a particular key, you can
specify the key name with option ``-K``.
::
$ ndnsec get-default -c -K /ndn/test/alice/ksk-1394129695025
/ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
In order to change the default setting, you can change it using command
``set-default``. If you want to change the default system identity, you
can use command:
::
$ ndnsec set-default /ndn/test/alice
If you want to set a key as the default key of its corresponding
identity, you can specify the key name with option ``-k``:
::
$ ndnsec set-default -k /ndn/test/alice/ksk-1394129695025
If you want to set a certificate as the default certificate of its
corresponding key, you can specify the certificate name with option
``-c``:
::
$ ndnsec set-default -c /ndn/test/KEY/alice/ksk-1394129695025/ID-CERT/%FD%01D%98%9A%F2%3F
key-gen
-------
Command ``key-gen`` allows you to generate keys for a specified
identity.
::
$ ndnsec key-gen /ndn/test/david
Bv0DAAc9CANuZG4IBHRlc3QIBWRhdmlkCANLRVkIEWtzay0xMzk2OTEzMDU4MTk2
CAdJRC1DRVJUCAgAAAFFPoG0ohQDGAECFf0BeDCCAXQwIhgPMjAxNDA0MDcyMzI0
MThaGA8yMDM0MDQwMjIzMjQxOFowKjAoBgNVBCkTIS9uZG4vdGVzdC9kYXZpZC9r
c2stMTM5NjkxMzA1ODE5NjCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEB
ALS6udLacpydecxMRIfZeo74fxzpsITqaa/4UxD2FJ9lU4dtfiSSIOaRwAB/w0K/
AauQRq3Q1AiEocUsW2h8LmtcuF4Cj9TGAUD/1s3CISMwf9zwQ3ZhNIzN0IOsrpPA
TsHrbdwtOxrcFvXX4GnMLWgtvcSB52Cn68h/4AUiA1CG9/DOyCyA4EHiIkHBxh6B
TvAmw7SmNjr1ZBTYMaMAEV5/oLZCHzHRO+2fKdEttaWH3bz7iKVVS8u5ZxXcBs8g
ot55m7Xf6/TUk3qQXM1kM8wW04U+8n3jch1i7tD2T3c/OFKTT7AWndwcfbU99Z6C
FZ7fMsgRHxFNY8hCFZJvFFUCAREWOhsBARw1BzMIA25kbggEdGVzdAgFZGF2aWQI
A0tFWQgRa3NrLTEzOTY5MTMwNTgxOTYIB0lELUNFUlQX/QEAW2yfF8JTgu5okR+n
dRlXc3UR/b1REegrpQb3xVzs7fYiiHwFYzQE9RzOuGh/9GSMvQcfejsPw021tJnj
oxNx6spGTOK5Bc0QZGeC6YyNoVSaJr9Obc5Uh8eRqxw76r0pCUHP+l38UgUGeBg/
aHurtcu5zK0zFYX++SAfUGLUZlG4CqKBUNZC+6w9OGUXlcW411zMzfqQ7V9Gxg+p
1IMNJQ6trTFdIwT/4YWHsxR+16r2TRWCNHtJey2GEG84YoqRh8y37jnu7oPhAtTN
TgG9O7O39dZLiFg+UP3LpW1LY64fJXsNfZQmnZWcNo5lX6MXfeiPxWFjOQqnno82
1hgqgA==
And the generated key will be automatically set to be the default key of
the identity. The output of these command is a base64 encoded
self-signed certificate of the generated key. By default, the specified
identity will become the system default identity. If this is not your
intention, you can specify option ``-n`` to disable that.
sign-req
--------
If you want to ask somebody else to issue you a certificate, you need to
create a signing request. Such a signing request is a self-signed
certificate of the your default key. You can generate this request using
command ``sign-req``, for example:
::
$ ndnsec sign-req /ndn/test/david
The request will be output to stdout. If you want to create a signing
request for a particular key. You can specify the key name with option
``-k``, for example:
::
$ ndnsec sign-req -k /ndn/test/david/ksk-1396913058196
cert-gen
--------
In order to issue others certificates, you can use command ``cert-gen``.
Such a command requires a signing request (a self-signed certificate).
::
$ ndnsec cert-gen sign_request.cert
You can specify the starting timestamp of the certificate's validity via
option ``-S`` and the ending timestamp of the certificate's validity via
option ``-E``. You can specify the name of the certificate owner via
option ``-N`` and other information about the certificate owner via
option ``-I``. At last, you may also specify the signing identity of the
certificate via option ``-s``, the default key and certificate of the
signing identity will be used to generate the requested certificate. If
``-s`` is missing, the system default identity will be used. A complete
example of ``cert-gen`` command could be:
::
$ ndnsec cert-gen -S 20140401000000 -E 20150331235959 -N "David" -I "2.5.4.10 'Some Organization'" -s /ndn/test sign_request.cert
Bv0C9wc9CANuZG4IBHRlc3QIA0tFWQgFZGF2aWQIEWtzay0xMzk2OTEzMDU4MTk2
CAdJRC1DRVJUCAgAAAFFPp2g3hQDGAECFf0BdjCCAXIwIhgPMjAxNDA0MDEwMDAw
MDBaGA8yMDE1MDMzMTIzNTk1OVowKDAMBgNVBCkTBURhdmlkMBgGA1UEChMRU29t
ZSBPcmdhbml6YXRpb24wggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQC0
urnS2nKcnXnMTESH2XqO+H8c6bCE6mmv+FMQ9hSfZVOHbX4kkiDmkcAAf8NCvwGr
kEat0NQIhKHFLFtofC5rXLheAo/UxgFA/9bNwiEjMH/c8EN2YTSMzdCDrK6TwE7B
623cLTsa3Bb11+BpzC1oLb3Egedgp+vIf+AFIgNQhvfwzsgsgOBB4iJBwcYegU7w
JsO0pjY69WQU2DGjABFef6C2Qh8x0TvtnynRLbWlh928+4ilVUvLuWcV3AbPIKLe
eZu13+v01JN6kFzNZDPMFtOFPvJ943IdYu7Q9k93PzhSk0+wFp3cHH21PfWeghWe
3zLIER8RTWPIQhWSbxRVAgERFjMbAQEcLgcsCANuZG4IA0tFWQgEdGVzdAgRa3Nr
LTEzOTQxMjk2OTQ3ODgIB0lELUNFUlQX/QEABUGcl7U+F8cwMHKckerv+1H2Nvsd
OfeqX0+4RzWU+wRx2emMGMZZdHSx8M/i45hb0P5hbNEF99L35/SrSTSzhTZdOriD
t/LQOcKBoNXY+iw3EUFM0gvRGU0kaEVBKAHtbYhtoHc48QLEyrsVaMqmrjCmpeF/
JOcClhzJfFW3cZ/SlhcTEayF0ntogYLR2cMzIwQhhSj5L/Kl7I7uxNxZhK1DS98n
q8oGAxHufEAluPrRpDQfI+jeQ4h/YYKcXPW3Vn7VQAGOqIi6gTlUxrmEbyCDF70E
xj5t3wfSUmDa1N+hLRMdEAI+IjRRHDSx2Lhj/QcoPIZPWwKjBz9CBL92og==
The output of ``cert-gen`` is the generated certificate with base64
encoding.
cert-install
------------
On receiving the requested certificate, you can install the certificate
in your system via command ``cert-install``.
::
$ ndnsec cert-install cert_file.cert
By default, the installed certificate will be set to be the default
certificate of its corresponding identity. And this identity will become
the system default identity. If this is not your intention, you can
specify option ``-N`` to install the certificate without changing any
default setting; or you can specify option ``-K`` to set the installed
certificate to be the default certificate of its corresponding key; or
option ``-I`` to set the installed certificate to be the default
certificate of its corresponding identity.
cert-dump
---------
If you want to display a certificate in stdout, you can use command
``cert-dump``.
::
$ ndnsec cert-dump /ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
By default, a base64 encoded certificate is displayed. You can specify
option ``-p`` to display a decoded certificate:
::
$ ndnsec cert-dump -p /ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
Certificate name:
/ndn/test/KEY/david/ksk-1396913058196/ID-CERT/%00%00%01E%3E%9D%A0%DE
Validity:
NotBefore: 20140401T000000
NotAfter: 20150331T235959
Subject Description:
2.5.4.41: David
2.5.4.10: Some Organization
Public key bits:
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAtLq50tpynJ15zExEh9l6
jvh/HOmwhOppr/hTEPYUn2VTh21+JJIg5pHAAH/DQr8Bq5BGrdDUCIShxSxbaHwu
a1y4XgKP1MYBQP/WzcIhIzB/3PBDdmE0jM3Qg6yuk8BOwett3C07GtwW9dfgacwt
aC29xIHnYKfryH/gBSIDUIb38M7ILIDgQeIiQcHGHoFO8CbDtKY2OvVkFNgxowAR
Xn+gtkIfMdE77Z8p0S21pYfdvPuIpVVLy7lnFdwGzyCi3nmbtd/r9NSTepBczWQz
zBbThT7yfeNyHWLu0PZPdz84UpNPsBad3Bx9tT31noIVnt8yyBEfEU1jyEIVkm8U
VQIB
delete
------
If you want to delete identities, keys, or certificates, you can use
command ``delete``. You need to supply a name to this command. By
default the name should be the identity to delete. For example:
::
$ ndnsec delete /ndn/test/david
If option ``-K`` or ``-k`` is specified, the name should be the name of
the key to delete. If option ``-C`` or ``-c`` is specified, the name
should be the name of the certificate to delete.
export/import
-------------
You can export or import security data of a specified identity. The
security data may even include private key (which is protected by
encryption).
In order to export security data of an identity, you can use command:
::
$ ndnsec export /ndn/test/alice
This will output all the public security data of the specified identity
to ``stdout``. If you want to export private keys, you need to specify
option ``-p``. If you want to export security data into a file, you can
specify the file name with option ``-o``.
If you can also import security data of a particular identity from a
file, you can use command:
::
$ ndnsec import input_file
If input\_file is ``-``, the command will import security data from
``stdin``. If the security to import contains private key, you need to
specify option ``-p``.
unlock-tpm
----------
Depending on the internal implementation, the Trusted Platform Module
(TPM) which manages private keys may be locked. If you want to
explicitly unlock the TPM, you can use ``unlock-tpm`` command.
.. _ndnsec-list: ndnsec-list.html
.. _ndnsec-get-default: ndnsec-get-default.html
.. _ndnsec-set-default: ndnsec-set-default.html
.. _ndnsec-key-gen: ndnsec-key-gen.html
.. _ndnsec-sign-req: ndnsec-sign-req.html
.. _ndnsec-cert-gen: ndnsec-cert-gen.html
.. _ndnsec-cert-dump: ndnsec-cert-dump.html
.. _ndnsec-cert-install: ndnsec-cert-install.html
.. _ndnsec-delete: ndnsec-delete.html
.. _ndnsec-export: ndnsec-export.html
.. _ndnsec-import: ndnsec-import.html
.. _ndnsec-set-acl: ndnsec-set-acl.html
.. _ndnsec-unlock-tpm: ndnsec-unlock-tpm.html
.. _ndnsec-op-tool: ndnsec-op-tool.html
+46
View File
@@ -0,0 +1,46 @@
tlvdump
=======
``tlvdump`` is a simple application allowing to decode structure of TLV-encoded packet.
Usage
-----
::
tlvdump [filename]
Description
-----------
If filename is specified, ``tlvdump`` will attempt to read and decode content of the file,
otherwise data will be read from standard input.
Example
-------
::
$ tlvdump interest.tlv
5 (Interest) (size: 89)
7 (Name) (size: 20)
8 (NameComponent) (size: 5) [[local]]
8 (NameComponent) (size: 3) [[ndn]]
8 (NameComponent) (size: 6) [[prefix]]
9 (Selectors) (size: 55)
13 (MinSuffixComponents) (size: 1) [[%01]]
14 (MaxSuffixComponents) (size: 1) [[%01]]
28 (KeyLocatorDigest) (size: 22)
7 (Name) (size: 20)
8 (NameComponent) (size: 4) [[test]]
8 (NameComponent) (size: 3) [[key]]
8 (NameComponent) (size: 7) [[locator]]
16 (Exclude) (size: 20)
8 (NameComponent) (size: 4) [[alex]]
8 (NameComponent) (size: 4) [[xxxx]]
19 (Any) (size: 0) [[...]]
8 (NameComponent) (size: 4) [[yyyy]]
17 (ChildSelector) (size: 1) [[%01]]
10 (Nonce) (size: 1) [[%01]]
11 (Scope) (size: 1) [[%01]]
12 (InterestLifetime) (size: 2) [[%03%E8]]
+8
View File
@@ -453,3 +453,11 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
margin-top: -10pt;
}
@@ -10,7 +10,7 @@ pre {
padding: 10px;
background-color: #fafafa;
color: #222;
line-height: 1.0em;
/* line-height: 1.0em; */
border: 2px solid #C6C9CB;
font-size: 0.9em;
/* margin: 1.5em 0 1.5em 0; */
+48 -29
View File
@@ -1,76 +1,95 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
* Copyright (C) 2013 Regents of the University of California.
* Copyright (c) 2013-2014 Regents of the University of California.
* @author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
* See COPYING for copyright and distribution information.
* BSD License, see COPYING for copyright and distribution information.
*/
// correct way to include NDN-CPP headers
// #include <ndn-cpp-dev/face.hpp>
// #include <ndn-cpp-dev/util/scheduler.hpp>
#include "face.hpp"
#include "util/scheduler.hpp"
// Enclosing code in ndn simplifies coding (can also use `using namespace ndn`)
namespace ndn {
// Additional nested namespace could be used to prevent/limit name contentions
namespace examples {
void
onData(ndn::Face &face,
const ndn::Interest& interest, ndn::Data& data)
onData(Face& face,
const Interest& interest, Data& data)
{
std::cout << "I: " << interest.toUri() << std::endl;
std::cout << "D: " << data.getName().toUri() << std::endl;
}
void
onTimeout(ndn::Face &face,
const ndn::Interest& interest)
onTimeout(Face& face,
const Interest& interest)
{
std::cout << "Timeout" << std::endl;
}
void
delayedInterest(ndn::Face &face)
delayedInterest(Face& face)
{
std::cout << "One more Interest, delayed by the scheduler" << std::endl;
ndn::Interest i(ndn::Name("/localhost/testApp/randomData"));
Interest i(Name("/localhost/testApp/randomData"));
i.setScope(1);
i.setInterestLifetime(ndn::time::milliseconds(1000));
i.setInterestLifetime(time::milliseconds(1000));
i.setMustBeFresh(true);
face.expressInterest(i,
ndn::bind(&onData, boost::ref(face), _1, _2),
ndn::bind(&onTimeout, boost::ref(face), _1));
bind(&onData, boost::ref(face), _1, _2),
bind(&onTimeout, boost::ref(face), _1));
}
int main()
int
main(int argc, char** argv)
{
try {
// Explicitly create io_service object, which can be shared between
// Face and Scheduler
ndn::shared_ptr<boost::asio::io_service> io =
ndn::make_shared<boost::asio::io_service>();
ndn::Interest i(ndn::Name("/localhost/testApp/randomData"));
// Explicitly create io_service object, which can be shared between Face and Scheduler
shared_ptr<boost::asio::io_service> io = make_shared<boost::asio::io_service>();
Interest i(Name("/localhost/testApp/randomData"));
i.setScope(1);
i.setInterestLifetime(ndn::time::seconds(1));
i.setInterestLifetime(time::seconds(1));
i.setMustBeFresh(true);
ndn::Face face(io);
// Create face with io_service object
Face face(io);
face.expressInterest(i,
ndn::bind(&onData, boost::ref(face), _1, _2),
ndn::bind(&onTimeout, boost::ref(face), _1));
bind(&onData, boost::ref(face), _1, _2),
bind(&onTimeout, boost::ref(face), _1));
ndn::Scheduler scheduler(*io);
scheduler.scheduleEvent(ndn::time::seconds(2),
ndn::bind(&delayedInterest, boost::ref(face)));
// Create scheduler object
Scheduler scheduler(*io);
// Schedule a new event
scheduler.scheduleEvent(time::seconds(2),
bind(&delayedInterest, boost::ref(face)));
// io->run() will block until all events finished or io->stop() is called
io->run();
// Alternatively, a helper face.processEvents() also can be called
// processEvents will block until the requested data received or timeout occurs
// face.processEvents();
}
catch(std::exception &e) {
catch(std::exception& e) {
std::cerr << "ERROR: " << e.what() << std::endl;
}
return 0;
}
} // namespace examples
} // namespace ndn
int
main(int argc, char** argv)
{
return ndn::examples::main(argc, argv);
}
+29 -13
View File
@@ -1,47 +1,63 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
* Copyright (C) 2013 Regents of the University of California.
* Copyright (c) 2013-2014 Regents of the University of California.
* @author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
* See COPYING for copyright and distribution information.
* BSD License, see COPYING for copyright and distribution information.
*/
// correct way to include NDN-CPP headers
// #include <ndn-cpp-dev/face.hpp>
#include "face.hpp"
// Enclosing code in ndn simplifies coding (can also use `using namespace ndn`)
namespace ndn {
// Additional nested namespace could be used to prevent/limit name contentions
namespace examples {
void
onData(ndn::Face &face,
const ndn::Interest& interest, ndn::Data& data)
onData(Face& face,
const Interest& interest, Data& data)
{
std::cout << "I: " << interest.toUri() << std::endl;
std::cout << "D: " << data.getName().toUri() << std::endl;
}
void
onTimeout(ndn::Face &face,
const ndn::Interest& interest)
onTimeout(Face& face,
const Interest& interest)
{
std::cout << "Timeout" << std::endl;
}
int main()
int
main(int argc, char** argv)
{
try {
ndn::Interest i(ndn::Name("/localhost/testApp/randomData"));
Interest i(Name("/localhost/testApp/randomData"));
i.setScope(1);
i.setInterestLifetime(ndn::time::milliseconds(1000));
i.setInterestLifetime(time::milliseconds(1000));
i.setMustBeFresh(true);
ndn::Face face;
Face face;
face.expressInterest(i,
ndn::bind(onData, boost::ref(face), _1, _2),
ndn::bind(onTimeout, boost::ref(face), _1));
bind(onData, boost::ref(face), _1, _2),
bind(onTimeout, boost::ref(face), _1));
// processEvents will block until the requested data received or timeout occurs
face.processEvents();
}
catch(std::exception &e) {
catch(std::exception& e) {
std::cerr << "ERROR: " << e.what() << std::endl;
return 1;
}
return 0;
}
} // namespace examples
} // namespace ndn
int
main(int argc, char** argv)
{
return ndn::examples::main(argc, argv);
}
+41 -26
View File
@@ -1,8 +1,8 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
* Copyright (C) 2013 Regents of the University of California.
* Copyright (c) 2013-2014 Regents of the University of California.
* @author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
* See COPYING for copyright and distribution information.
* BSD License, see COPYING for copyright and distribution information.
*/
// correct way to include NDN-CPP headers
@@ -12,61 +12,76 @@
#include "face.hpp"
#include "security/key-chain.hpp"
using namespace ndn;
// Enclosing code in ndn simplifies coding (can also use `using namespace ndn`)
namespace ndn {
// Additional nested namespace could be used to prevent/limit name contentions
namespace examples {
class Producer
{
public:
Producer()
{}
void
onInterest(const Name& name, const Interest& interest)
{
std::cout << "<< I: " << interest << std::endl;
ndn::Data data(ndn::Name(interest.getName()).append("testApp").appendVersion());
data.setFreshnessPeriod(ndn::time::seconds(10));
// Create new name, based on Interest's name
Name dataName(interest.getName());
dataName
.append("testApp") // add "testApp" component to Interest name
.appendVersion(); // add "version" component (current UNIX timestamp in milliseconds)
data.setContent((const uint8_t*)"HELLO KITTY", sizeof("HELLO KITTY"));
static const std::string content = "HELLO KITTY";
keyChain_.sign(data);
// Create Data packet
Data data;
data.setName(dataName);
data.setFreshnessPeriod(time::seconds(10));
data.setContent(Block(content.c_str(), content.size()));
// Sign Data packet with default identity
m_keyChain.sign(data);
// m_keyChain.sign(data, <identityName>);
// m_keyChain.sign(data, <certificate>);
// Return Data packet to the requester
std::cout << ">> D: " << data << std::endl;
face_.put(data);
m_face.put(data);
}
void
onRegisterFailed (const ndn::Name& prefix, const std::string& reason)
onRegisterFailed(const Name& prefix, const std::string& reason)
{
std::cerr << "ERROR: Failed to register prefix in local hub's daemon (" << reason << ")" << std::endl;
face_.shutdown ();
m_face.shutdown();
}
void
listen()
run()
{
face_.setInterestFilter("/localhost/testApp",
func_lib::bind(&Producer::onInterest, this, _1, _2),
func_lib::bind(&Producer::onRegisterFailed, this, _1, _2));
face_.processEvents();
m_face.setInterestFilter("/localhost/testApp",
bind(&Producer::onInterest, this, _1, _2),
bind(&Producer::onRegisterFailed, this, _1, _2));
m_face.processEvents();
}
private:
ndn::Face face_;
KeyChain keyChain_;
Buffer ndndId_;
Face m_face;
KeyChain m_keyChain;
};
int main()
} // namespace examples
} // namespace ndn
int
main(int argc, char** argv)
{
try {
Producer producer;
producer.listen();
ndn::examples::Producer producer;
producer.run();
}
catch(std::exception &e) {
catch (std::exception& e) {
std::cerr << "ERROR: " << e.what() << std::endl;
}
return 0;