@@ -12,8 +12,22 @@ RUN ego-go build -o gaiko-ego ./cmd/gaiko
1212
1313# Sign with our enclave config and private key
1414COPY gaiko/ego/enclave.json .
15- COPY docker/enclave-key.pem private.pem
16- RUN ego sign && ego bundle gaiko-ego gaiko
15+ ARG ENCLAVE_KEY_PUBLIC_SHA256
16+ # CI/local compose builds use a throwaway key; release builds pass a secret and hash.
17+ RUN --mount=type=secret,id=enclave_key,target=/run/secrets/enclave-key.pem \
18+ set -e; \
19+ trap 'rm -f private.pem' EXIT; \
20+ if [ -s /run/secrets/enclave-key.pem ]; then \
21+ if [ -n "${ENCLAVE_KEY_PUBLIC_SHA256}" ]; then \
22+ test "$(openssl rsa -in /run/secrets/enclave-key.pem -pubout 2>/dev/null | openssl sha256 | awk '{print $2}')" = "${ENCLAVE_KEY_PUBLIC_SHA256}" ; \
23+ fi; \
24+ cp /run/secrets/enclave-key.pem private.pem; \
25+ else \
26+ test -z "${ENCLAVE_KEY_PUBLIC_SHA256}" ; \
27+ openssl genrsa -3 -out private.pem 3072; \
28+ fi; \
29+ ego sign && \
30+ ego bundle gaiko-ego gaiko
1731RUN ego uniqueid gaiko-ego 2>&1 | tee /tmp/gaiko_uniqueid.log
1832RUN ego signerid gaiko-ego
1933
@@ -87,13 +101,26 @@ COPY --from=builder /opt/raiko/host/config/chain_spec_list_devnet.json /etc/raik
87101COPY --from=builder /opt/raiko/target/release/sgx-guest ./bin/
88102COPY --from=builder /opt/raiko/target/release/raiko-host ./bin/
89103COPY --from=builder /opt/raiko/target/release/raiko-setup ./bin/
90- COPY --from=builder /opt/raiko/docker/enclave-key.pem /root/.config/gramine/enclave-key.pem
91104
92105ARG EDMM=0
106+ ARG ENCLAVE_KEY_PUBLIC_SHA256
93107ENV EDMM=${EDMM}
94108WORKDIR /opt/raiko/bin
95- RUN gramine-manifest -Dlog_level=error -Ddirect_mode=0 -Darch_libdir=/lib/x86_64-linux-gnu/ ../provers/sgx/config/sgx-guest.local.manifest.template sgx-guest.manifest && \
96- gramine-sgx-sign --manifest sgx-guest.manifest --output sgx-guest.manifest.sgx && \
109+ RUN --mount=type=secret,id=enclave_key,target=/run/secrets/enclave-key.pem \
110+ set -e; \
111+ enclave_key_path=/tmp/enclave-key.pem; \
112+ trap 'rm -f "$enclave_key_path"' EXIT; \
113+ if [ -s /run/secrets/enclave-key.pem ]; then \
114+ if [ -n "${ENCLAVE_KEY_PUBLIC_SHA256}" ]; then \
115+ test "$(openssl rsa -in /run/secrets/enclave-key.pem -pubout 2>/dev/null | openssl sha256 | awk '{print $2}')" = "${ENCLAVE_KEY_PUBLIC_SHA256}" ; \
116+ fi; \
117+ cp /run/secrets/enclave-key.pem "$enclave_key_path" ; \
118+ else \
119+ test -z "${ENCLAVE_KEY_PUBLIC_SHA256}" ; \
120+ openssl genrsa -3 -out "$enclave_key_path" 3072; \
121+ fi; \
122+ gramine-manifest -Dlog_level=error -Ddirect_mode=0 -Darch_libdir=/lib/x86_64-linux-gnu/ ../provers/sgx/config/sgx-guest.local.manifest.template sgx-guest.manifest && \
123+ gramine-sgx-sign --key "$enclave_key_path" --manifest sgx-guest.manifest --output sgx-guest.manifest.sgx && \
97124 gramine-sgx-sigstruct-view "sgx-guest.sig" 2>&1 | tee /tmp/sgx_sigstruct.log
98125
99126
0 commit comments