blob: 36a42430b3f31cbd0af52950e7872c15d5a735b8 [file] [log] [blame]
FROM golang:1.13-alpine as builder
RUN apk update && apk add --no-cache \
ca-certificates \
cmake \
musl-dev \
g++ \
gcc \
git \
make \
libtool \
automake \
autoconf
ENV BUILD_PATH=/tmp/milagro-dta-build
ENV LIBRARY_PATH=$BUILD_PATH/lib:$BUILD_PATH/lib64
ENV LD_LIBRARY_PATH=$LIBRARY_PATH
ENV C_INCLUDE_PATH=$BUILD_PATH/include
WORKDIR /root
# Milagro Crypto C Library
RUN echo Building Milagro Crypto C library && \
git clone https://github.com/apache/incubator-milagro-crypto-c.git && \
cd incubator-milagro-crypto-c && \
mkdir build && \
cd build && \
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DAMCL_CHUNK=64 \
-DAMCL_CURVE="BLS381,SECP256K1" \
-DAMCL_RSA="" \
-DBUILD_PYTHON=OFF \
-DBUILD_BLS=ON \
-DBUILD_WCC=OFF \
-DBUILD_MPIN=OFF \
-DBUILD_X509=OFF \
-DWORD_SIZE=64 \
-DCMAKE_C_FLAGS="-fPIC" \
-DCMAKE_INSTALL_PREFIX=$BUILD_PATH \
.. && \
make && make install
# LibOQS
RUN echo Building LibOQS && \
git clone https://github.com/open-quantum-safe/liboqs.git && \
cd liboqs && \
git checkout 7cb03c3ce9182790c77e69cd21a6901e270781d6 && \
autoreconf -i && \
./configure \
--prefix=$BUILD_PATH \
--disable-shared \
--disable-aes-ni \
--disable-kem-bike \
--disable-kem-frodokem \
--disable-kem-newhope \
--disable-kem-kyber \
--disable-sig-qtesla \
--disable-doxygen-doc && \
make -j && make install
# Lib pqnist
ADD libs/crypto/libpqnist pqnist/
RUN mkdir -p pqnist/build && \
cd pqnist/build && \
cmake \
-DCMAKE_BUILD_TYPE=Release\
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_INSTALL_PREFIX=$BUILD_PATH \
.. && \
make && make install
RUN go get -u golang.org/x/lint/golint
RUN echo Building Milagro DTA
ENV PROJECT_PATH=/src/github.com/apache/incubator-milagro-dta
ENV CGO_LDFLAGS="-L $LIBRARY_PATH"
ENV CGO_CPPFLAGS="-I $C_INCLUDE_PATH"
WORKDIR $PROJECT_PATH
ADD . $PROJECT_PATH
RUN GO111MODULES=on go mod vendor
RUN ./lint.sh
RUN CGO_ENABLED=1 \
go build \
-ldflags '-w -linkmode external -extldflags "-static"' \
-o $GOPATH/bin/milagro \
github.com/apache/incubator-milagro-dta/cmd/service
RUN go test -cover `go list ./...`
RUN $GOPATH/bin/milagro init
FROM scratch
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /root/.milagro .milagro
COPY --from=builder /go/bin/milagro /
ENTRYPOINT ["/milagro", "daemon"]