ndn-cxx version 0.5.1
---------------------

Release date: January 25, 2017

.. note::
   This is the last release of the library that supports NDN Certificate format version 1 and
   the existing implementations of validators.  The upcoming 0.6.0 release will include
   multiple breaking changes of the security framework.

Changes since version 0.5.0:

New features
^^^^^^^^^^^^

- Add version 2 of the security framework in ``security::v2`` namespace

  * `NDN Certificate Format version 2.0
    <https://docs.named-data.net/NDN-packet-spec/0.3/certificate.html>`__ (:issue:`3103`)
  * New Public Information Base (PIB) and Trusted Platform Module (TPM) framework to manage
    public/private keys and NDN Certificate version 2.0 (:issue:`2948`, :issue:`3202`)
  * New KeyChain implementation (:issue:`2926`)
  * New Validator implementation (:issue:`3289`, :issue:`1872`)
  * New security-supporting utilities: trust anchor container and certificate cache
  * Creation of `Command Interests
    <https://redmine.named-data.net/projects/ndn-cxx/wiki/CommandInterest>`__ delegated to
    ``CommandInterestSigner`` class, while the new KeyChain only :doc:`signs Interests
    </specs/signed-interest>` (:issue:`3912`)

- Enable validator to fetch certificates directly from the signed/command interest sender
  (:issue:`3921`)

- Add UP and DOWN kinds to :ndn-cxx:`FaceEventNotification` (issue:`3794`)

- Add support for NIC-associated permanent faces in FaceUri (:issue:`3522`)

- Add support for CongestionMark and Ack NDNLPv2 fields (:issue:`3797`, :issue:`3931`)

- Add StrategyChoice equality operators and formatted output (:issue:`3903`)

Improvements and bug fixes
^^^^^^^^^^^^^^^^^^^^^^^^^^

- Ensure that NACK callback is called for matching Interests, regardless of their nonce
  (:issue:`3908`)

- Optimize :ndn-cxx:`name::Component::compare` implementation (:issue:`3807`)

- Fix memory leak in ndn-cxx:`Regex` (:issue:`3673`)

- Correct NDNLPv2 rules for whether an unknown field can be ignored (:issue:`3884`)

- Ensure that port numbers in FaceUri are 16 bits wide

- Correct ValidityPeriod::isValid check (:issue:`2868`)

- Fix encoding of type-specific TLV (:issue:`3914`)

- Rename previously incorrectly named EcdsaKeyParams to EcKeyParams (:issue:`3135`)

- Various documentation improvements, including ndn-cxx code style updates (:issue:`3795`, :issue:`3857`)

Deprecated
^^^^^^^^^^

- Old security framework.  All old security framework classes are moved to
  ``ndn::security::v1`` namespace in this release and will be removed in the next release.

  * ``v1::KeyChain``, use :ndn-cxx:`v2::KeyChain` instead

  * ``v1::Validator`` interface and all implementations of this interface (``ValidatorRegex``,
    ``ValidatorConfig``, ``ValidatorNull``).  Use :ndn-cxx:`v2::Validator` and the
    corresponding implementations of :ndn-cxx:`ValidationPolicy` interfaces (will be introduced
    before 0.6.0 release).

  * ``v1::SecPublicInfo`` and its implementation (``SecPublicInfoSqlite``), ``SecTpm`` and its
    implementations (``SecTpmFile``, ``SecTpmOsx``).  These classes are internal implementation
    and not intended to be used without ``v1::KeyChain``.  :ndn-cxx:`v2::KeyChain` internally
    uses the newly introduced :ndn-cxx:`Pib` and :ndn-cxx:`Tpm` interfaces with their
    corresponding implementations.

  * ``v1::Certificate``, ``v1::IdentityCertificate``, ``v1::CertificateExtension``,
    ``v1::CertificateSubjectDescription``, use :ndn-cxx:`v2::Certificate` and
    :ndn-cxx:`AdditionalDescription`

  * ``v1::SecuredBag``, use ``v2::SafeBag`` instead

- Constant ``io::BASE_64``, use ``io::BASE64`` instead (:issue:`3741`)

- Headers ``management/nfd-*``, use ``mgmt/nfd/*`` instead (:issue:`3760`)

- ``ndn::crypto::sha256`` in favor of ``ndn::crypto::computeSha256Digest``

- ``security/cryptopp.hpp`` header. Use ``security/v1/cryptopp.hpp`` when needed, avoid direct
  include as CryptoPP dependency will be removed from future versions of the library.

- ``security/identity-certificate.hpp`` header.  Use ``security/v1/identity-certificate.hpp`` instead.

- ``ndn::PublicKey``, ``ndn::Certificate``, ``ndn::IdentityCertificate``,
  ``ndn::CertificateExtension``, ``ndn::CertificateSubjectDescription``.  When necessary, use
  ``security::v1::PublicKey``, ``security::v1::Certificate``, ``security::v1::IdentityCertificate``,
  ``security::v1::CertificateExtension``, ``security::v1::CertificateSubjectDescription`` instead.
