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://named-data.net/doc/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.
