add code to cmake to enable shared build
1 file changed
tree: 3f0f2928358c9b050ae70e3e75dc3b412c8a2413
  1. cmd/
  2. libs/
  3. pkg/
  4. plugins/
  5. .dockerignore
  6. .gitignore
  7. build-static.sh
  8. build.sh
  9. DISCLAIMER
  10. Dockerfile
  11. Dockerfile-alpine
  12. go.mod
  13. go.sum
  14. LICENSE
  15. lint.sh
  16. NOTICE
  17. open-api.yaml
  18. README.md
  19. test.sh
README.md

Milagro-Custody-DTA


Maintenance

Milagro Custody DTA creates an ecosystem in which service providers can issue and protect secrets. When a node is connected to the network it is able to discover service providers who are able to offer secure long term storage of highly sensitive digital assets. It is written in Go and uses REST services based on the GoKit microservices framework: https://gokit.io/

Dependencies

To correctly build the software on Ubuntu 18.04 you need to install the following packages;

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
     ca-certificates \
     cmake \
     g++ \
     gcc \
     git \
     make \
     libtool \
     automake \
     libssl-dev
sudo apt-get clean

liboqs

liboqs is a C library for quantum-resistant cryptographic algorithms. It is a API level on top of the NIST round two submissions.

git clone https://github.com/open-quantum-safe/liboqs.git
cd liboq
git checkout 7cb03c3ce9182790c77e69cd21a6901e270781d6 
autoreconf -i
./configure --disable-shared --disable-aes-ni --disable-kem-bike --disable-kem-frodokem --disable-kem-newhope --disable-kem-kyber --disable-sig-qtesla 
make clean
make -j
sudo make install

AMCL

AMCL is required

Build and install the AMCL library

git clone https://github.com/apache/incubator-milagro-crypto-c.git
cd incubator-milagro-crypto-c
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=OFF -D AMCL_CHUNK=64 -D AMCL_CURVE="BLS381,SECP256K1" -D AMCL_RSA="" -D BUILD_PYTHON=OFF -D BUILD_BLS=ON  -D BUILD_WCC=OFF -D BUILD_MPIN=OFF -D BUILD_X509=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
make test
sudo make install

Install pqnist

cd incubator-milagro-dta/libs/crypto/libpqnist mkdir build cd build cmake -D CMAKE_INSTALL_PREFIX=/usr/local .. make make test sudo make install

golang

The code is written in golang primarily with a wrapper around some C code.

wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
tar -xzf go1.12.linux-amd64.tar.gz
sudo cp -r go /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin' >> ${HOME}/.bashrc

configure GO

mkdir -p ${HOME}/go/bin 
mkdir -p ${HGME}/go/pkg 
mkdir -p ${HOME}/go/src 
echo 'export GOPATH=${HOME}/go' >> ${HOME}/.bashrc 
echo 'export PATH=$GOPATH/bin:$PATH' >> ${HOME}/.bashrc

This package is needed for testing.

go get github.com/stretchr/testify/assert

Run service

This script will build the service

./build.sh

To run the service

./target/service

Developer Notes

You need to install protobufs

If you change the portobufs definition run

$ protoc -I=. --go_out=. ./docs.proto

To add a new endpoint to the goKit Microservices framework

  1. First define the contract in milagro/pkg/milagroservice/proto.go

Add structs for http transport Add responses to milagro/swagger/swagger.config,yaml

  1. Add an endpoint definition

milagro/pkg/milagroendpoints/endpoints.go

  1. Create a handler factory

Crypto Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The Apache Software Foundation has classified this software as Export Commodity Control Number (ECCN) 5D002, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the “publicly available” Section 742.15(b) exemption (see the BIS Export Administration Regulations, Section 742.15(b)) for both object code and source code.

Disclaimer

Apache Milagro is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.