summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew2018-05-17 10:58:19 -0500
committerAndrew2018-05-17 10:58:19 -0500
commit10d7b5f7149781a17311a9f14225f052f94130c8 (patch)
tree733f31b9a69fff0b9acffd223374c709d2a7d3c0
downloadaur-10d7b5f7149781a17311a9f14225f052f94130c8.tar.gz
Initial commit of multichain aur
-rw-r--r--.SRCINFO16
-rw-r--r--PKGBUILD32
-rw-r--r--multichain-boost-openssl.patch121
3 files changed, 169 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..cf0160d7e145
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,16 @@
+pkgbase = multichain
+ pkgdesc = MultiChain open source platform for private blockchains
+ pkgver = 2.0
+ pkgrel = 1
+ url = https://github.com/MultiChain/multichain
+ arch = x86_64
+ license = GPLv3
+ depends = db4.8
+ depends = boost
+ depends = openssl
+ provides = multichain
+ source = https://github.com/MultiChain/multichain/archive/2.0-release.tar.gz
+ md5sums = 766ac031265c6ae7c35c14400ea58c78
+
+pkgname = multichain
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..89d1aebe57b7
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Swift Geek
+pkgname=multichain
+pkgver=2.0
+pkgrel=1
+pkgdesc="MultiChain open source platform for private blockchains"
+arch=('x86_64')
+url="https://github.com/MultiChain/multichain"
+license=('GPLv3')
+depends=('db4.8' 'boost' 'openssl')
+provides=('multichain')
+source=("https://github.com/MultiChain/${pkgname}/archive/${pkgver}-release.tar.gz")
+md5sums=('766ac031265c6ae7c35c14400ea58c78')
+
+prepare() {
+ cd "${srcdir}/${pkgname}-${pkgver}-release"
+ # Multichain uses an out of date boost and openssl, patch to fix
+
+ patch -p1 < ${srcdir}/multichain-boost-openssl.patch
+}
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}-release"
+ ./autogen.sh
+ ./configure --prefix="/usr"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}-release"
+ make DESTDIR="${pkgdir}" install
+}
+
diff --git a/multichain-boost-openssl.patch b/multichain-boost-openssl.patch
new file mode 100644
index 000000000000..6de705af4999
--- /dev/null
+++ b/multichain-boost-openssl.patch
@@ -0,0 +1,121 @@
+--- a/src/multichain/multichain-cli.cpp
++++ b/src/multichain/multichain-cli.cpp
+@@ -223,7 +223,7 @@ Object CallRPC(const string& strMethod, const Array& params)
+ // Connect to localhost
+ bool fUseSSL = GetBoolArg("-rpcssl", false);
+ asio::io_service io_service;
+- ssl::context context(io_service, ssl::context::sslv23);
++ ssl::context context(ssl::context::sslv23);
+ context.set_options(ssl::context::no_sslv2 | ssl::context::no_sslv3);
+ asio::ssl::stream<asio::ip::tcp::socket> sslStream(io_service, context);
+ SSLIOStreamDevice<asio::ip::tcp> d(sslStream, fUseSSL);
+--- a/src/rpc/rpcserver.cpp
++++ b/src/rpc/rpcserver.cpp
+@@ -564,8 +564,8 @@ private:
+ void ServiceConnection(AcceptedConnection *conn);
+
+ //! Forward declaration required for RPCListen
+-template <typename Protocol, typename SocketAcceptorService>
+-static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
++template <typename Protocol>
++static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol> > acceptor,
+ ssl::context& context,
+ bool fUseSSL,
+ boost::shared_ptr< AcceptedConnection > conn,
+@@ -574,8 +574,8 @@ static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol,
+ /**
+ * Sets up I/O resources to accept and handle a new connection.
+ */
+-template <typename Protocol, typename SocketAcceptorService>
+-static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
++template <typename Protocol>
++static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol> > acceptor,
+ ssl::context& context,
+ const bool fUseSSL)
+ {
+@@ -585,7 +585,7 @@ static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketA
+ acceptor->async_accept(
+ conn->sslStream.lowest_layer(),
+ conn->peer,
+- boost::bind(&RPCAcceptHandler<Protocol, SocketAcceptorService>,
++ boost::bind(&RPCAcceptHandler<Protocol>,
+ acceptor,
+ boost::ref(context),
+ fUseSSL,
+@@ -597,8 +597,8 @@ static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketA
+ /**
+ * Accept and handle incoming connection.
+ */
+-template <typename Protocol, typename SocketAcceptorService>
+-static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
++template <typename Protocol>
++static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol> > acceptor,
+ ssl::context& context,
+ const bool fUseSSL,
+ boost::shared_ptr< AcceptedConnection > conn,
+@@ -713,7 +713,7 @@ void StartRPCThreads()
+
+ assert(rpc_io_service == NULL);
+ rpc_io_service = new asio::io_service();
+- rpc_ssl_context = new ssl::context(*rpc_io_service, ssl::context::sslv23);
++ rpc_ssl_context = new ssl::context(ssl::context::sslv23);
+
+ const bool fUseSSL = GetBoolArg("-rpcssl", false);
+
+@@ -732,7 +732,7 @@ void StartRPCThreads()
+ else LogPrintf("ThreadRPCServer ERROR: missing server private key file %s\n", pathPKFile.string());
+
+ string strCiphers = GetArg("-rpcsslciphers", "TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH");
+- SSL_CTX_set_cipher_list(rpc_ssl_context->impl(), strCiphers.c_str());
++ SSL_CTX_set_cipher_list(rpc_ssl_context->native_handle(), strCiphers.c_str());
+ }
+
+ std::vector<ip::tcp::endpoint> vEndpoints;
+--- a/src/wallet/crypter.cpp
++++ b/src/wallet/crypter.cpp
+@@ -59,15 +59,16 @@ bool CCrypter::Encrypt(const CKeyingMaterial& vchPlaintext, std::vector<unsigned
+ int nCLen = nLen + AES_BLOCK_SIZE, nFLen = 0;
+ vchCiphertext = std::vector<unsigned char> (nCLen);
+
+- EVP_CIPHER_CTX ctx;
++ EVP_CIPHER_CTX *ctx=EVP_CIPHER_CTX_new();;
+
+ bool fOk = true;
+
+- EVP_CIPHER_CTX_init(&ctx);
+- if (fOk) fOk = EVP_EncryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV) != 0;
+- if (fOk) fOk = EVP_EncryptUpdate(&ctx, &vchCiphertext[0], &nCLen, &vchPlaintext[0], nLen) != 0;
+- if (fOk) fOk = EVP_EncryptFinal_ex(&ctx, (&vchCiphertext[0]) + nCLen, &nFLen) != 0;
+- EVP_CIPHER_CTX_cleanup(&ctx);
++ EVP_CIPHER_CTX_init(ctx);
++ if (fOk) fOk = EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, chKey, chIV) != 0;
++ if (fOk) fOk = EVP_EncryptUpdate(ctx, &vchCiphertext[0], &nCLen, &vchPlaintext[0], nLen) != 0;
++ if (fOk) fOk = EVP_EncryptFinal_ex(ctx, (&vchCiphertext[0]) + nCLen, &nFLen) != 0;
++ EVP_CIPHER_CTX_cleanup(ctx);
++ EVP_CIPHER_CTX_free(ctx);
+
+ if (!fOk) return false;
+
+@@ -86,15 +87,16 @@ bool CCrypter::Decrypt(const std::vector<unsigned char>& vchCiphertext, CKeyingM
+
+ vchPlaintext = CKeyingMaterial(nPLen);
+
+- EVP_CIPHER_CTX ctx;
++ EVP_CIPHER_CTX *ctx=EVP_CIPHER_CTX_new();;
+
+ bool fOk = true;
+
+- EVP_CIPHER_CTX_init(&ctx);
+- if (fOk) fOk = EVP_DecryptInit_ex(&ctx, EVP_aes_256_cbc(), NULL, chKey, chIV) != 0;
+- if (fOk) fOk = EVP_DecryptUpdate(&ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen) != 0;
+- if (fOk) fOk = EVP_DecryptFinal_ex(&ctx, (&vchPlaintext[0]) + nPLen, &nFLen) != 0;
+- EVP_CIPHER_CTX_cleanup(&ctx);
++ EVP_CIPHER_CTX_init(ctx);
++ if (fOk) fOk = EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, chKey, chIV) != 0;
++ if (fOk) fOk = EVP_DecryptUpdate(ctx, &vchPlaintext[0], &nPLen, &vchCiphertext[0], nLen) != 0;
++ if (fOk) fOk = EVP_DecryptFinal_ex(ctx, (&vchPlaintext[0]) + nPLen, &nFLen) != 0;
++ EVP_CIPHER_CTX_cleanup(ctx);
++ EVP_CIPHER_CTX_free(ctx);
+
+ if (!fOk) return false;
+