digitalmars.D - Botan Crypto and TLS for D
- Etienne (13/13) Feb 17 2015 I'd like to announce the first release of Botan, which implements all
- Etienne (1/1) Feb 17 2015 btw link: https://github.com/etcimon/botan
- ketmar (3/20) Feb 17 2015 so you did it. great! so maybe vibe.d can drop that OpenSSL dependency=2...
- Etienne Cimon (11/13) Feb 17 2015 Apart from the debugging experience, there's something empowering about
- ketmar (3/7) Feb 18 2015 very intriguing. this will be interesting thing to play with. and i=20
- ketmar (2/3) Feb 18 2015 "We have such sights to show you!"=
- Jacob Carlborg (4/6) Feb 18 2015 Isn't libevent required?
- Etienne Cimon (3/8) Feb 18 2015 Not anymore. I also wrote libasync and a vibe.d driver for it
- Paolo Invernizzi (8/21) Feb 18 2015 And libasync is another amazing piece of work, we are using it in
- Andrei Alexandrescu (2/20) Feb 18 2015 I'd love to add libasync to Phobos! -- Andrei
- Etienne Cimon (6/7) Feb 18 2015 Even as I add this as a dependency? : https://github.com/etcimon/memutil...
- Andrei Alexandrescu (3/11) Feb 18 2015 This is integration tactics that will need to be resolved. I don't see
- Etienne Cimon (8/10) Feb 18 2015 You're right it did sound like that. It was partly preference and partly...
- Dragos Carp (5/8) Feb 18 2015 Some weeks ago I made a PR [1] which adds popFrontN to
- Martin Nowak (2/3) Feb 18 2015 Glad to hear that.
- Andrei Alexandrescu (3/6) Feb 18 2015 Please consider proposing stdlib additions. We need more of that stuff!
- Rikki Cattermole (5/18) Feb 17 2015 I'm quite excited by this.
- Etienne Cimon (9/33) Feb 17 2015 It looks like this library (using Botan C++) could simply be translated
- Rikki Cattermole (4/38) Feb 17 2015 I saw that, I was worried about the license as well.
- Etienne Cimon (5/8) Feb 17 2015 One thing for sure, on this one the answer books are open. I'm glad I
- Craig Dillabaugh (17/72) Feb 18 2015 Having another project, or two, wouldn't be a issue. I haven't
- Andrei Alexandrescu (2/5) Feb 18 2015 Thanks Craig for taking this and running with it! -- Andrei
- Craig Dillabaugh (17/72) Feb 18 2015 Having another project, or two, wouldn't be a issue. I haven't
- Chris Desjardins (13/68) Mar 25 2015 Just wanted to chime in and say that I intended to take over
- Joakim (4/19) Feb 17 2015 Good work. You should write up a post about the experience,
- ketmar (3/4) Feb 18 2015 it's better to keep silence. dmd was never very good in optimising=20
- Etienne Cimon (13/17) Feb 18 2015 Not really, most of the sensitive code is optimized via native
- Etienne Cimon (7/10) Feb 18 2015 Sure, if you can somehow push this in DMD:
- Paolo Invernizzi (4/20) Feb 17 2015 You just made my day! Great work!!
- Mathias Lang via Digitalmars-d (4/17) Feb 18 2015 That's awesome !
- Etienne (5/5) Feb 18 2015 On Windows, both x64 and x86 builds return a corrupt symbol table when
I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!
Feb 17 2015
On Tue, 17 Feb 2015 16:00:45 -0500, Etienne wrote:I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. =20 I gave special attention to properly translating it to correct D code. =20 It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ =20 I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. =20 All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). =20 I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d nowso you did it. great! so maybe vibe.d can drop that OpenSSL dependency=20 soon. ;-)=
Feb 17 2015
On 2015-02-17 19:11, ketmar wrote:so you did it. great! so maybe vibe.d can drop that OpenSSL dependency soon. ;-)Apart from the debugging experience, there's something empowering about having all the low-level stuff available in Mono-D when writing a website =) Other than that, it's also easier to customize (through inheritance). It also compiles faster 6-7 seconds (D) vs 70 seconds (C++). My favorite part is: vibe.d projects now compiles the entire software stack into a fully-featured standalone executable without any license issues. I'll be working on HTTP/2 with websocket-style full duplex communications once this is done, and then a CMS that has a windows explorer-like desktop front-end with a redis filesystem and distributed node management. So many nice projects :D
Feb 17 2015
On Tue, 17 Feb 2015 20:14:50 -0500, Etienne Cimon wrote:I'll be working on HTTP/2 with websocket-style full duplex communications once this is done, and then a CMS that has a windows explorer-like desktop front-end with a redis filesystem and distributed node management. So many nice projects :Dvery intriguing. this will be interesting thing to play with. and i=20 really like your passion. ;-)=
Feb 18 2015
On Tue, 17 Feb 2015 20:14:50 -0500, Etienne Cimon wrote:So many nice projects :D"We have such sights to show you!"=
Feb 18 2015
On 2015-02-18 02:14, Etienne Cimon wrote:My favorite part is: vibe.d projects now compiles the entire software stack into a fully-featured standalone executable without any license issues.Isn't libevent required? -- /Jacob Carlborg
Feb 18 2015
On 2015-02-18 07:17, Jacob Carlborg wrote:On 2015-02-18 02:14, Etienne Cimon wrote:Not anymore. I also wrote libasync and a vibe.d driver for it https://github.com/etcimon/libasyncMy favorite part is: vibe.d projects now compiles the entire software stack into a fully-featured standalone executable without any license issues.Isn't libevent required?
Feb 18 2015
On Wednesday, 18 February 2015 at 12:28:11 UTC, Etienne Cimon wrote:On 2015-02-18 07:17, Jacob Carlborg wrote:And libasync is another amazing piece of work, we are using it in a product we are developing. I must also add that, IMHO, it's a strategic error not having something like that in the standard library, but well, I know... --- PaoloOn 2015-02-18 02:14, Etienne Cimon wrote:Not anymore. I also wrote libasync and a vibe.d driver for it https://github.com/etcimon/libasyncMy favorite part is: vibe.d projects now compiles the entire software stack into a fully-featured standalone executable without any license issues.Isn't libevent required?
Feb 18 2015
On 2/18/15 5:46 AM, Paolo Invernizzi wrote:On Wednesday, 18 February 2015 at 12:28:11 UTC, Etienne Cimon wrote:I'd love to add libasync to Phobos! -- AndreiOn 2015-02-18 07:17, Jacob Carlborg wrote:And libasync is another amazing piece of work, we are using it in a product we are developing. I must also add that, IMHO, it's a strategic error not having something like that in the standard library, but well, I know...On 2015-02-18 02:14, Etienne Cimon wrote:Not anymore. I also wrote libasync and a vibe.d driver for it https://github.com/etcimon/libasyncMy favorite part is: vibe.d projects now compiles the entire software stack into a fully-featured standalone executable without any license issues.Isn't libevent required?
Feb 18 2015
On 2015-02-18 11:41, Andrei Alexandrescu wrote:I'd love to add libasync to Phobos! -- AndreiEven as I add this as a dependency? : https://github.com/etcimon/memutils Instead of a single ScopedFiberPool, I intend to have ScopedPools with one stack in fiber, another in thread, and using the GC as a fallback. You can find a code example of the idea here: https://github.com/rejectedsoftware/vibe.d/issues/978#issuecomment-73819358
Feb 18 2015
On 2/18/15 9:32 AM, Etienne Cimon wrote:On 2015-02-18 11:41, Andrei Alexandrescu wrote:This is integration tactics that will need to be resolved. I don't see them as showstoppers. -- AndreiI'd love to add libasync to Phobos! -- AndreiEven as I add this as a dependency? : https://github.com/etcimon/memutils Instead of a single ScopedFiberPool, I intend to have ScopedPools with one stack in fiber, another in thread, and using the GC as a fallback. You can find a code example of the idea here: https://github.com/rejectedsoftware/vibe.d/issues/978#issuecomment-73819358
Feb 18 2015
On 2015-02-18 14:50, Andrei Alexandrescu wrote:This is integration tactics that will need to be resolved. I don't see them as showstoppers. -- AndreiYou're right it did sound like that. It was partly preference and partly a need for the circular buffer to solve futures and promises following this issue: https://github.com/etcimon/libasync/pull/11#issue-57401462 I'm going to remove the custom memory stuff and start moving the library into Phobos after I'm done debugging the linking issues for Botan on Windows.
Feb 18 2015
You're right it did sound like that. It was partly preference and partly a need for the circular buffer to solve futures and promises following this issue:Some weeks ago I made a PR [1] which adds popFrontN to std.array.Appender transforming it in a circular buffer. Please provide your feedback, if you find it useful. At the moment the PR is somehow stalled. [1] - https://github.com/D-Programming-Language/phobos/pull/2928
Feb 18 2015
On 02/18/2015 02:14 AM, Etienne Cimon wrote:I'll be working on HTTP/2 with websocket-style full duplex communicationsGlad to hear that.
Feb 18 2015
On 2/18/15 6:18 AM, Martin Nowak wrote:On 02/18/2015 02:14 AM, Etienne Cimon wrote:Please consider proposing stdlib additions. We need more of that stuff! -- AndreiI'll be working on HTTP/2 with websocket-style full duplex communicationsGlad to hear that.
Feb 18 2015
On 18/02/2015 10:00 a.m., Etienne wrote:I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Feb 17 2015
On 2015-02-17 20:54, Rikki Cattermole wrote:On 18/02/2015 10:00 a.m., Etienne wrote:It looks like this library (using Botan C++) could simply be translated to D code: https://github.com/cdesjardins/ne7ssh The only problem I see is that it's licensed QPL. However, the maintainer is missing and I think the library is simple enough to use it as a guideline/reference (along with other RFCs and libraries) and re-write an ssh library from scratch to get something new and original out of it and possibly use a more open licenseI'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Feb 17 2015
On 18/02/2015 5:01 p.m., Etienne Cimon wrote:On 2015-02-17 20:54, Rikki Cattermole wrote:I saw that, I was worried about the license as well. I'll ping Craig. Maybe there is still time for somebody to take it on for GSOC?On 18/02/2015 10:00 a.m., Etienne wrote:It looks like this library (using Botan C++) could simply be translated to D code: https://github.com/cdesjardins/ne7ssh The only problem I see is that it's licensed QPL. However, the maintainer is missing and I think the library is simple enough to use it as a guideline/reference (along with other RFCs and libraries) and re-write an ssh library from scratch to get something new and original out of it and possibly use a more open licenseI'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Feb 17 2015
On 2015-02-17 23:17, Rikki Cattermole wrote:I saw that, I was worried about the license as well. I'll ping Craig. Maybe there is still time for somebody to take it on for GSOC?One thing for sure, on this one the answer books are open. I'm glad I chose Botan. For HTTP/2 I'll probably use nghttp2, I was hesitating with the Go implementation.
Feb 17 2015
On Wednesday, 18 February 2015 at 04:17:16 UTC, Rikki Cattermole wrote:On 18/02/2015 5:01 p.m., Etienne Cimon wrote:Having another project, or two, wouldn't be a issue. I haven't submitted the proposal yet, and I don't think the Google folks will start looking at the idea's pages until early next week, so there is no issue as far as I see adding something as late as this weekend. Having said that I am really busy this week and have been having trouble finding the time simply to fill out the Melange form and submit the proposal, I will get it done, so no need to worry. However, if someone wants to add another idea to the ideas pages I am leaving that up to them! Please try to follow the exiting template as close as possible ... if someone ends up doing this. The following open-source licenses are approved, and I noticed QPL is on there: http://opensource.org/licenses/alphabetical CraigOn 2015-02-17 20:54, Rikki Cattermole wrote:I saw that, I was worried about the license as well. I'll ping Craig. Maybe there is still time for somebody to take it on for GSOC?On 18/02/2015 10:00 a.m., Etienne wrote:It looks like this library (using Botan C++) could simply be translated to D code: https://github.com/cdesjardins/ne7ssh The only problem I see is that it's licensed QPL. However, the maintainer is missing and I think the library is simple enough to use it as a guideline/reference (along with other RFCs and libraries) and re-write an ssh library from scratch to get something new and original out of it and possibly use a more open licenseI'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Feb 18 2015
On 2/18/15 3:43 AM, Craig Dillabaugh wrote:Having said that I am really busy this week and have been having trouble finding the time simply to fill out the Melange form and submit the proposal, I will get it done, so no need to worry.Thanks Craig for taking this and running with it! -- Andrei
Feb 18 2015
On Wednesday, 18 February 2015 at 04:17:16 UTC, Rikki Cattermole wrote:On 18/02/2015 5:01 p.m., Etienne Cimon wrote:Having another project, or two, wouldn't be a issue. I haven't submitted the proposal yet, and I don't think the Google folks will start looking at the idea's pages until early next week, so there is no issue as far as I see adding something as late as this weekend. Having said that I am really busy this week and have been having trouble finding the time simply to fill out the Melange form and submit the proposal, I will get it done, so no need to worry. However, if someone wants to add another idea to the ideas pages I am leaving that up to them! Please try to follow the exiting template as close as possible ... if someone ends up doing this. The following open-source licenses are approved, and I noticed QPL is on there: http://opensource.org/licenses/alphabetical CraigOn 2015-02-17 20:54, Rikki Cattermole wrote:I saw that, I was worried about the license as well. I'll ping Craig. Maybe there is still time for somebody to take it on for GSOC?On 18/02/2015 10:00 a.m., Etienne wrote:It looks like this library (using Botan C++) could simply be translated to D code: https://github.com/cdesjardins/ne7ssh The only problem I see is that it's licensed QPL. However, the maintainer is missing and I think the library is simple enough to use it as a guideline/reference (along with other RFCs and libraries) and re-write an ssh library from scratch to get something new and original out of it and possibly use a more open licenseI'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Feb 18 2015
On Wednesday, 18 February 2015 at 04:17:16 UTC, Rikki Cattermole wrote:On 18/02/2015 5:01 p.m., Etienne Cimon wrote:Just wanted to chime in and say that I intended to take over development of ne7ssh, but after significant work I found that it had some serious problems that made it pretty useless as a general ssh client library. It was more geared toward automated testing (i.e. send a command to a remote host and wait for the response). As such I decided to use it as a rapid prototype for cppssh. Which I intend to use as a general purpose ssh2 client library. Anyways, the library still needs to be hardened, and I am not really going to start using it for anything until botan 1.11 goes stable. But it works fairly well so far, and it is gpl. https://github.com/cdesjardins/cppsshOn 2015-02-17 20:54, Rikki Cattermole wrote:I saw that, I was worried about the license as well. I'll ping Craig. Maybe there is still time for somebody to take it on for GSOC?On 18/02/2015 10:00 a.m., Etienne wrote:It looks like this library (using Botan C++) could simply be translated to D code: https://github.com/cdesjardins/ne7ssh The only problem I see is that it's licensed QPL. However, the maintainer is missing and I think the library is simple enough to use it as a guideline/reference (along with other RFCs and libraries) and re-write an ssh library from scratch to get something new and original out of it and possibly use a more open licenseI'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!I'm quite excited by this. I do hope however that we get an ssh library now. Maybe git + mercurial + svn as well. We could do so much with that!
Mar 25 2015
On Tuesday, 17 February 2015 at 21:02:33 UTC, Etienne wrote:I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d nowGood work. You should write up a post about the experience, perhaps accompanied by benchmarks of the C++ and D code. It will help publicize your project and let others learn from your effort.
Feb 17 2015
On Wed, 18 Feb 2015 06:35:08 +0000, Joakim wrote:accompanied by benchmarks of the C++ and D codeit's better to keep silence. dmd was never very good in optimising=20 code. ;-)=
Feb 18 2015
On 2015-02-18 05:22, ketmar wrote:On Wed, 18 Feb 2015 06:35:08 +0000, Joakim wrote:Not really, most of the sensitive code is optimized via native instructions, the crypto algorithms should be all the same. If you count the seconds for the unit test to run, powermod (public key cryptography) was equal in debug mode. Didn't check release though, but debug was 11sec and GCC optimizes the C++ version to 3 seconds :-p The sensitive parts are AES-NI and GCM, where the processor does the encryption, and I handled with care those native instructions so that should be 600MB/s - 1GB/s regardless of the compiler As for the learning experience, I spent most of the time doing search & replace from C to D types and names, writing utils/simd instructions (__m128i __m256i xmmintrins.h etc), writing memutils (~= STL) because I needed proper containers and allocators to work with.accompanied by benchmarks of the C++ and D codeit's better to keep silence. dmd was never very good in optimising code. ;-)
Feb 18 2015
On 2015-02-18 01:35, Joakim wrote:Good work. You should write up a post about the experience, perhaps accompanied by benchmarks of the C++ and D code. It will help publicize your project and let others learn from your effort.Sure, if you can somehow push this in DMD: http://forum.dlang.org/thread/m9lvn5$28cr$1 digitalmars.com The release build won't work without it, I get an ICE and I didn't have time to isolate this :/ I won't have an LDC/GDC version for a few months, this project is like a big unit test of failing cases for those compilers
Feb 18 2015
On Tuesday, 17 February 2015 at 21:02:33 UTC, Etienne wrote:I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!You just made my day! Great work!! --- Paolo
Feb 17 2015
That's awesome ! Thanks for all the work you put in it, and more generally, in Vibe.d. 2015-02-17 22:00 GMT+01:00 Etienne via Digitalmars-d < digitalmars-d puremagic.com>:I'd like to announce the first release of Botan, which implements all features of v1.11.10 in the C++ library. I gave special attention to properly translating it to correct D code. It only runs with DMD master for now, only tested on Linux x86 or x86_64, and it uses a custom allocator library called memutils which must be placed in ../ I'd also want to underline that Alexander Bothe from Mono-D put some special attention to making sure the IDE runs smoothely with Botan. All tests are passing at the time of this writing (which is thousands of tests for all algorithms, incl x509, pubkeys, tls and so on). I'll let the wiki/api docs/code talk for me, I'm off to writing an TLS driver for vibe.d now Have fun!
Feb 18 2015
On Windows, both x64 and x86 builds return a corrupt symbol table when building with debug symbols, and x64 doesn't work in release. For now I can build release/x86 only (although I get some unrelated bugs). I'm not sure but it seems like a problem with DMD for which I could use some help :-p
Feb 18 2015