diff options
author | Jack Lloyd <[email protected]> | 2018-05-21 10:58:07 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2018-05-21 10:58:07 -0400 |
commit | 6e3cef104ac3c1108779d7fb494cba672e44da35 (patch) | |
tree | 243d98696363fa083eb4326b796b774101206a37 /doc/manual | |
parent | dca4e87d941c2a5e10e4cd0b48a52c0fe8cd71db (diff) |
Move the roadmap into the handbook so end-users can find it.
Diffstat (limited to 'doc/manual')
-rw-r--r-- | doc/manual/contents.rst | 1 | ||||
-rw-r--r-- | doc/manual/roadmap.rst | 106 | ||||
-rw-r--r-- | doc/manual/support.rst | 10 |
3 files changed, 112 insertions, 5 deletions
diff --git a/doc/manual/contents.rst b/doc/manual/contents.rst index 8fff76550..6b97f7a02 100644 --- a/doc/manual/contents.rst +++ b/doc/manual/contents.rst @@ -43,3 +43,4 @@ Contents fuzzing deprecated abi + roadmap diff --git a/doc/manual/roadmap.rst b/doc/manual/roadmap.rst new file mode 100644 index 000000000..03461da20 --- /dev/null +++ b/doc/manual/roadmap.rst @@ -0,0 +1,106 @@ + +Development Roadmap +======================================== + +Near Term Plans +---------------------------------------- + +Here is an outline for the development plans over the next 12-18 months, as of +November 2017. + +TLS Hardening/Testing +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Leverage TLS-Attacker better, for example using custom workflows. Add tests +using BoringSSL's hacked Go TLS stack. Add interop testing with OpenSSL as part +of CI. Improve fuzzer coverage. + +Expose TLS to C89 and Python +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Exposing TLS to C would allow for many new applications to make use of Botan. + +Interface to PSK and SRP databases +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Adding support for databases storing encrypted PSKs and SRP credentials. +(PSK database support was added in 2.4.0) + +ECC Refactoring +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Refactoring how elliptic curve groups are stored, sharing representation and +allowing better precomputations (eg precomputing base point multiples). +[Completed in 2.5.0] + +Performance Improvements +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The eventual goal would be performance parity with OpenSSL, but initial +target is probably more like "no worse than 30% slower for any algorithm". + +[Major improvements were made in ECC and RSA performance were made +between 2.4.0 and 2.7.0, measurement and optimization work is ongoing.] + +Elliptic Curve Pairings +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These are useful in many interesting protocols. Initially BN curves are the main +target (particularly BN-256 for compatability with Go's bn256 module) but likely +we'll also want BLS curves. + +TLS 1.3 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The RFC process seems to be approaching consensus so hopefully there will be a +final spec soon. The handshake differences are quite substantial, it's an open +question how to implement that without overly complicating the existing TLS +v1.0-v1.2 handshake code. There will also be some API extensions required to +support 0-RTT data. + +Initial work is focused on features which are included in TLS v1.3 but also +available for TLS v1.2 (such as PSS signatures and FFDHE) as well as +refactorings which will make the eventual implementation of v1.3 simpler. +Assuming no source of dedicated funding appears, a full v1.3 implementation will +likely not available until sometime in 2019. + +ASN.1 Redesign +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + + This project has been deferred to 3.x as C++14 extended constexpr + will likely make it much easier to implement. + +The current ASN.1 library (DER_Encoder/BER_Decoder) does make it +roughly possible to write C++ code matching the ASN.1 structures. But +it is not flexible enough for all cases and makes many unnecessary +copies (and thus memory allocations) of the data as it works. + +It would be better to have a system that used (a simple subset of) ASN.1 to +define the types as well as encoding/decoding logic. Then new types could be +easily defined. This could also obviate the current code for handling OIDs, and +allow representing the OIDs using the natural OID tree syntax of ASN.1. + +Another important feature will be supporting copy-free streaming decoding. That +is, given a (ptr,len) range the decoding operation either returns an error +(throws exception) or else the decoded object plus the number of bytes after ptr +that contain the object, and it does so without making any allocations or +copies. + +It will probably be easier to be consistently allocation free in machine +generated code, so the two goals of the redesign seem to reinforce each other. + +Longer View (Future Major Release) +---------------------------------------- + +Eventually (currently estimated for summer 2019), Botan 3.x will be +released. This schedule allows some substantial time with Botan 2.x and 3.x +supported simultaneously, to allow for application switch over. + +This version will adopt C++17 and use new std types such as string_view, +optional, and any, along with adopting memory span and guarded integer +types. Likely C++17 constexpr will also be leveraged. + +In this future 3.x release, all deprecated features/APIs of 2.x will be removed. +However outside of that, breaking API changes should be relatively minimal. diff --git a/doc/manual/support.rst b/doc/manual/support.rst index 209f0d6c7..ca1351736 100644 --- a/doc/manual/support.rst +++ b/doc/manual/support.rst @@ -50,17 +50,17 @@ properly. Branch Support Status ------------------------- -Following table provides the support status for Botan branches. Any branch not -listed here (including 1.11) is no longer supported. Dates in the future are -approximate. +Following table provides the support status for Botan branches as of May 2018. +Any branch not listed here (including 1.11) is no longer supported. +Dates in the future are approximate. ============== ============== ========================== ============ Branch First Release End of Active Development End of Life ============== ============== ========================== ============ 1.8 2008-12-08 2010-08-31 2016-02-13 1.10 2011-06-20 2012-07-10 2018-12-31 -2 2017-01-06 2019-01-01 2021-12-31 -3 (planned) 2019-04-01 2022-01-01 2023-12-31 +2.x 2017-01-06 2019-01-01 2021-12-31 +3.x (planned) 2019-07-01 2022-01-01 2023-12-31 ============== ============== ========================== ============ "Active development" refers to adding new features and optimizations. At the |