| 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"] |