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 the
  ``ndn::security::v1`` namespace in this release and will be removed in the next release.

  * ``v1::KeyChain``; use ``v2::KeyChain`` instead.

  * ``v1::Validator`` interface and all implementations of this interface (``ValidatorRegex``,
    ``ValidatorConfig``, ``ValidatorNull``).  Use ``v2::Validator`` and the corresponding
    implementations of :ndn-cxx:`ValidationPolicy` interfaces (will be introduced before
    the 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``.  ``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 ``v2::Certificate`` and ``AdditionalDescription``
    instead.

  * ``v1::SecuredBag``; use :ndn-cxx:`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.
