Bitcoin Forum
November 17, 2024, 11:33:55 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 »  All
  Print  
Author Topic: Why is OpenSSL needed in the official client?  (Read 4114 times)
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 03:31:45 PM
 #1

Simple question, why is OpenSSL needed in the official client?


CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 03:36:30 PM
 #2

It is used to do the ECDSA public/private key generation as well as the SHA256 and RIPEMD hashes.

Oh - yes - also the wallet encryption would be using OpenSSL functions.


With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 03:37:42 PM
 #3

We use it for ECDSA signing and verification, to generate private keys, for the SHA256 and RIPEMD160 hashing functions. and for AES (used in wallet encryption).

I do Bitcoin stuff.
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 03:38:52 PM
 #4

So no actual SSL? Because OpenSSL is a bulky nightmare to build and use. I'm contemplating writing my own bitcoind / GUI front end, but I would much like to avoid OpenSSL at all costs.

Open source libraries for all the operations that you described are available, most of them in cryptopp.
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 03:41:25 PM
 #5

Open source libraries for all the operations that you described are available, most of them in cryptopp.

Indeed I think that it should be possible to go a bit more "minimalist" (I personally don't use boost either for the same reason).

(wow - I just became a "hero")


With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 03:43:23 PM
 #6

Indeed I think that it should be possible to go a bit more "minimalist" (I personally don't use boost either for the same reason).

And that was my next question, why is boost needed?

My preference is to have a repository that requires no external dependencies, just pull the repo and press the "build" button. I find the use of Qt quite disturbing as well. Last I checked "slots:" is not standard C++. And I don't think that the official client can be compiled in either Xcode or Visual Studio (doesn't it require some Qt tools to build?), which is quite shocking.
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 03:50:04 PM
 #7

So no actual SSL? Because OpenSSL is a bulky nightmare to build and use. I'm contemplating writing my own bitcoind / GUI front end, but I would much like to avoid OpenSSL at all costs.

Oh yes, RPC-SSL uses actual SSL, but it's certainly possible to avoid using that (and disabling RPC-SSL support).

Quote
Open source libraries for all the operations that you described are available, most of them in cryptopp.

Certainly - but OpenSSL is also an open-source library, and it does everything we need.

I do Bitcoin stuff.
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 03:50:38 PM
 #8

Seems we are on the same wavelength in regards to 3rd party libraries.

My own project only requires 3rd party libraries for DB, PDF and FCGI (I even wrote my own regex class to avoid the need for an extra library).

Although I do appreciate the quality of code such as boost (I used to contribute to comp.lang.c++.moderated years ago whilst it was being developed) it really can be a pain when a project has so many 3rd party libraries or tools (that's why I currently am not able to build bitcoin).

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 03:53:05 PM
 #9

Indeed I think that it should be possible to go a bit more "minimalist" (I personally don't use boost either for the same reason).

And that was my next question, why is boost needed?

from the top of my head: interprocess communication, threads, locking, filesystem interaction, some datatypes, unions, program options, asio.

Quote
My preference is to have a repository that requires no external dependencies, just pull the repo and press the "build" button. I find the use of Qt quite disturbing as well. Last I checked "slots:" is not standard C++. And I don't think that the official client can be compiled in either Xcode or Visual Studio (doesn't it require some Qt tools to build?), which is quite shocking.

The GUI is a Qt application - obviously it needs Qt to build.

If you just need the daemon, there is no dependency on Qt or the Qt toolchain.

I do Bitcoin stuff.
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 04:05:48 PM
 #10

it really can be a pain when a project has so many 3rd party libraries or tools (that's why I currently am not able to build bitcoin).

I looked at the build steps for the official client and ran home screaming to mommy.

Would there be any interest in a clean C++ implementation that had no external dependencies and could be easily compiled in Xcode / Visual Studio?
Remember remember the 5th of November
Legendary
*
Offline Offline

Activity: 1862
Merit: 1011

Reverse engineer from time to time


View Profile
September 29, 2012, 04:09:49 PM
 #11

Seems we are on the same wavelength in regards to 3rd party libraries.

My own project only requires 3rd party libraries for DB, PDF and FCGI (I even wrote my own regex class to avoid the need for an extra library).

Although I do appreciate the quality of code such as boost (I used to contribute to comp.lang.c++.moderated years ago whilst it was being developed) it really can be a pain when a project has so many 3rd party libraries or tools (that's why I currently am not able to build bitcoin).

Cool, but instead of degrading OpenSSL's image, try to to find a way to remove that monster known as Boost.

BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 04:13:19 PM
 #12

Cool, but instead of degrading OpenSSL's image, try to to find a way to remove that monster known as Boost.

Hmm... I wasn't trying to degrade OpenSSL's image at all (it is a 3rd party library option that I use in my project and I think it is very high quality software).

I don't really have a problem with Boost either apart from the fact I do think it became a little bloated by perhaps trying to become a bit like .net or the like.

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 04:17:33 PM
 #13

Cool, but instead of degrading OpenSSL's image, try to to find a way to remove that monster known as Boost.

Boost is the lesser of these evils. Last time I tried to build OpenSSL there was a rats nest of external dependencies and build tools that I had to install. Boost at least, once you unpack it you just type "bootstrap" followed by "bjam." And if you are using just the header-only module of Boost, there is no need to build at all.
Remember remember the 5th of November
Legendary
*
Offline Offline

Activity: 1862
Merit: 1011

Reverse engineer from time to time


View Profile
September 29, 2012, 04:20:17 PM
 #14

OpenSSL is so easy to build that I've built it for Android, too. Not to mention is builds fine on Windows.

BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 04:31:23 PM
 #15

it really can be a pain when a project has so many 3rd party libraries or tools (that's why I currently am not able to build bitcoin).

I looked at the build steps for the official client and ran home screaming to mommy.

Would there be any interest in a clean C++ implementation that had no external dependencies and could be easily compiled in Xcode / Visual Studio?


Are you talking about Bitcoin-Qt or bitcoind?

We used to maintain a project for Visual Studio, but as none of the current developers use Windows, it got outdated. If someone wants to revive and maintain it, that is very welcome.

Unsure how the OSX builds happen, Gavin does those.

No external dependencies... we currently depend on OpenSSL, BDB, boost, libminiupnpc (optional), Qt (optional). OpenSSL shouldn't be too hard to swap for something else. There are already alternative clients that don't use OpenSSL, afaik. BDB is going to be dropped and replaced by LevelDB (included in the source tree, not a dependency). Boost would be a lot of work to change. The others are optional.

I do Bitcoin stuff.
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 04:35:02 PM
 #16

We used to maintain a project for Visual Studio, but as none of the current developers use Windows, it got outdated. If someone wants to revive and maintain it, that is very welcome.

I could possibly be interested in doing this (I think I can cope with installing Boost but am really not interested in the whole MingW stuff) - does it support just using "nmake" rather than the IDE (I only use the console)?

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
misterbigg (OP)
Legendary
*
Offline Offline

Activity: 1064
Merit: 1001



View Profile
September 29, 2012, 04:41:16 PM
 #17

As far as I know it is not possible to compile a Qt application using the Visual Studio IDE, you need their preprocessing junk to make sense of "slots" and "signals" keywords.
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 04:47:00 PM
 #18

I could possibly be interested in doing this (I think I can cope with installing Boost but am really not interested in the whole MingW stuff) - does it support just using "nmake" rather than the IDE (I only use the console)?

I have no clue about Windows programming or build environments. But if you make it work with nmake, then it will...

The Qt GUI is built using qmake, which supports many environments. Presumably you want to adapt the qmake project file to work on your platform, rather than maintaining a separate one.

I do Bitcoin stuff.
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1086


Ian Knowles - CIYAM Lead Developer


View Profile WWW
September 29, 2012, 04:52:55 PM
 #19

I have no clue about Windows programming or build environments. But if you make it work with nmake, then it will...

Okay - can you give me the repository URL so I can have a look at it (am hoping it is github)?

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1181


View Profile WWW
September 29, 2012, 04:54:45 PM
 #20

Okay - can you give me the repository URL so I can have a look at it (am hoping it is github)?

There's a link on bitcoin.org. The source code is at http://github.com/bitcoin/bitcoin.

I do Bitcoin stuff.
Pages: [1] 2 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!