Giter VIP home page Giter VIP logo

apache / incubator-teaclave Goto Github PK

View Code? Open in Web Editor NEW
738.0 55.0 156.0 133.62 MB

Apache Teaclave (incubating) is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.

Home Page: https://teaclave.apache.org

License: Apache License 2.0

CMake 2.13% Shell 2.64% Python 3.83% Rust 86.17% C 1.59% Dockerfile 1.80% Makefile 0.07% Objective-C 0.07% Swift 1.43% Ruby 0.09% Jinja 0.17%
rust sgx faas universal-secure-computing trusted-execution-environment function-as-a-service secure-multiparty-computation tee confidential-computing trustzone

incubator-teaclave's Introduction

Teaclave: A Universal Secure Computing Platform

License Release Coverage Status Homepage

Apache Teaclave (incubating) is an open source universal secure computing platform, making computation on privacy-sensitive data safe and simple.

Highlights

  • Secure and Attestable: Teaclave adopts multiple security technologies to enable secure computing. In particular, Teaclave uses Intel SGX to serve the most security-sensitive tasks with hardware-based isolation, memory encryption and attestation. Also, Teaclave is written in Rust to prevent memory-safety issues.
  • Function-as-a-Service: Teaclave is provided as a function-as-a-service platform. With many built-in functions, it supports tasks like machine learning, private set intersection, crypto computation, etc. In addition, developers can also deploy and execute Python scripts in Teaclave. More importantly, unlike traditional FaaS, Teaclave supports both general secure computing tasks and flexible single- and multi-party secure computation.
  • Ease of Use: Teaclave builds its components in containers, therefore, it supports deployment both locally and within cloud infrastructures. Teaclave also provides convenient endpoint APIs, client SDKs and command line tools.
  • Flexible: Components in Teaclave are designed in a modular manner, and features like remote attestation can be easily embedded in other projects. In addition, Teaclave SGX SDK and Teaclave TrustZone SDK can also be used separately to write TEE apps for other purposes.

Getting Started

Try Teaclave

Design

Contribute to Teaclave

API References

Teaclave Projects

This is the main repository for the Teaclave FaaS platform. There are several sub-projects under Teaclave:

Contributing

Teaclave is open source in The Apache Way, we aim to create a project that is maintained and owned by the community. All kinds of contributions are welcome. Read this document to learn more about how to contribute. Thanks to our contributors.

Community

incubator-teaclave's People

Contributors

bigdata-memory avatar clauverjat avatar dependabot[bot] avatar devashishdxt avatar dingelish avatar dtorfs avatar duanbing avatar geminicarrie avatar hello2mao avatar henrysun007 avatar hi-t0day avatar hiroki-chen avatar jedisct1 avatar litongxin1991 avatar m3ngyang avatar m3ngzhang avatar m4sterchain avatar mengyuan-l avatar mssun avatar qinkunbao avatar raullenchai avatar rdzhou avatar renxingliang avatar sarutak avatar stanplatinum avatar tshepang avatar uraj avatar ya0guang avatar yulongzhang avatar z1queue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

incubator-teaclave's Issues

Refactoring build time configuration

The current configuration mixes build time and runtime config. To separate them, here is what I can come up for build time configuration:

# Certificate to verify SGX enclaves
mr_signer_path = "cert/mr_signer"

# Service provider's root CA certificate to verify clients
sp_root_ca_cert_path = "cert/ca.crt"

# Intel Attestation Service root CA certificate to verify attestation report
ias_root_ca_cert_path = "cert/AttestationReportSigningCACert.pem"

# Auditors' public keys to verify their endorsement signatures
auditors_public_key_path = [
    "auditors/godzilla/godzilla.public.der",
    "auditors/optimus_prime/optimus_prime.public.der",
    "auditors/albus_dumbledore/albus_dumbledore.public.der"
]

# RPC max message size
rpc_max_message_size = 409600

This is also related to #131.

Impossible to use bulid deps from crates-io but not crates-sgx for SGX trusted lib

Because of the limitation of cargo, we cannot do source replacement only for deps but not build deps [1]. Therefore, you may see two kinds of work-around: config_gen (https://github.com/apache/incubator-mesatee/tree/bd9ca1e/mesatee_config/config_gen) and prost-build-fake (#104).

This issue relies on the upstream cargo to fix.

[1] https://users.rust-lang.org/t/source-replacement-for-dependencies-only-but-not-for-build-dependencies

Loading runtime config should not be lazy static

If loading code of runtime config is lazy static, it will be automatically called when there is code related with mesatee_config. This is not correct since SDK does not need to read config.toml (runtime). However, SDK code uses RPC module which may involve code of mesatee_config and causing loading runtime config automatically in client side.

We should abandon this lazy static and use function call instead. Services should explicitly call this loading config function in their initial functions.

mesapy create two files when once call mesatee_save_file_for_xxx

run examples\py_file\py_file.sh, mesapy will create six result files.

The following three functions will create two files with the same content when they are executed:
mesatee.mesatee_save_file_for_task_creator
mesatee.mesatee_save_file_for_all_participants
mesatee.mesatee_save_file_for_file_owner

In this sample, it should create only three files

Support protected_fs in services

Protected_fs is ready but not supported in services. To support protected_fs in services, following modifications are needed:

  1. KMS should support both AEAD and protected_fs keys.
  2. RPC messages for KMS should be modified accordingly.
  3. TDFS client should be modified accordingly to save/read files with protected_fs.

Besides, I am planning to use prost to design KMS RPC messages.

This issue is related to another issue #60

[WIP] Change interface between FNS and Worker

Current interface between FNS and Worker needs to be changed.

  1. Provide global functions for data reading/writing
    To support mesapy and splited workers, global functions are needed. Then the worker can directly read/write data with context-id/context-token.
  2. A structure for Running Task.
    The structure will hold the task information, store results and enforce some security policies.
    The instances of the structure will be saved to the global area. So the above global functions can retrieve the instance and then read/write data.
  3. A structure for Worker Info and a structure for Worker
  4. Worker queue
    The FNS should maintain the available workers

Test Apache GitBox

This is a test of Apache GitBox, the issue should be synced to the mailing list.

ERROR mesatee_core::rpc::sgx::ra RACACHE renewal failed

I have 2 computers, When i run mesatee service in Ubuntu 18.04, Occasionally, such a mistake occur:

RACACHE renewal failed

ERROR mesatee_core::rpc::sgx::ra RACACHE renewal failed
thread panicked at 'explicit panic', mesatee_core/src/rpc/sgx/ra.rs:548:9
statck backtrace:
.....
.....
.....
fatal runtime error: failed to initiate panic, error 5
Illegal instructioin (core dumped)

I try to restart the computer, pull the code and make the project again,it‘s still not work.
I ues Shadowsocks to config the network proxy, it works.

so, i think this error is related to the network environment, such as DNS cache or other problem.
I try this command in the other computer

sudo /etc/init.d/dns-clean start

it works!

Maybe we can add this command to the service.sh

[RFC] Roadmap (towards first public release)

Recently, we (some core contributors) have a small offline discussion on the roadmap towards first public release. In this meeting, we discussed what components and features are still missing as a boarder public release.

Here is a brief summary of features and components need to be designed and implemented. I'm trying to outline in bullet points, so some may not be very concise.

These are things we'd better to have in the first release:

  • support function and data registration
    • input data of a function can be fetched from external storage
    • a better function attestation mechanism to attest Python script
    • reuse registered function in new tasks
  • redesign function development workflow
    • developers only need to write python script with native libraries written in Rust
  • provide persistent database implementation
    • port rusty-leveldb
    • add dedicated database service for data persistency
  • support protobuf compatible RPC protocol
    • refactor existing service protocol with .proto files
  • provide a more flexible access control mechanism with ACS
    • multi-owner for data fusion results
  • support distributed workers
    • support docker deployment
  • support customized workers
    • service provider can deploy with other kinds of customized workers besides builtin worker
  • support TPM-based workers
  • support basic automatic Rust code auditing
  • better documentation
  • better error handling
    • errors can be propagated through RPC
    • better error triage
  • testsuite cleanup/refactoring
  • implement more built-in functions
  • community
    • more external contributors (regularly code/doc contributions and feedbacks)
    • accessibility (docs, guideline, open roadmap, etc)
    • meetup

These are nice to have in the first release:

  • k8s deployment
  • support more flexible attestation mechanisms (DCAP)
  • provide trusted logging service for better auditing
  • RPC enhancement
    • HTTP-based RPC
    • multi-language client
  • workload evaluation benchmark

Improve error handling logic in current RPC.

In the existing RPC serve loop, we didn't handle the error in the following cases,

  1. receive_vec failed
  2. request serialization failed
  3. handle_invoke returned an error
  4. response deserialization failed
  5. send_vec failed

Case 1 and 5 are related to io error, under these circumstances, the communication channel is broken, we cannot inform the client about errors. We can wrap the internal error with MesaTEE::RPCError, and log the error on the server side in handle_ecall functions before discarding the error.

Case 2 and 4 are related to request/response data format error, we can inform client the error info and exit the loop gracefully.

Case 3 is related to "business logic error", we can introduce a new response type in the service proto file to represent this information, instead of treating it as an actual Err().

Contributors meetup: call for participants

Hi folks, recently I posted an outline of features and components we are missing towards a first public release (#121). Therefore, it's a good time to propose a meetup in recent days to discuss some of the details in the outline. I think this is a good way to align with the project roadmap for all contributors and then we can focus on some core building blocks.

I don't have a specific date and time right now, but I'd like to see responses of the community. Also, I think an online meetup is more approachable since we don't have a very large community at this stage.

So, if you are interested in the topics, please feel free to reply this thread to discuss topics, date and time here. Thank you!

the master branch failed to build

environment

  • mesatee: cd75585
  • rustc: 1.36.0-nightly
  • OS: macOS 10.14.5

what i saw

error: name `cfg` is reserved in macro namespace
  --> /cargo_home/git/checkouts/rust-sgx-sdk-fc8771c5c45bde9a/de01b63/sgx_tstd/src/prelude/v1.rs:55:5
   |
55 |     cfg,
   |     ^^^

error[E0432]: unresolved imports `core::prelude::v1::__rust_unstable_column`, `core::prelude::v1::asm`, `core::prelude::v1::assert`, `core::prelude::v1::cfg`, `core::prelude::v1::column`, `core::prelude::v1::compile_error`, `core::prelude::v1::concat`, `core::prelude::v1::concat_idents`, `core::prelude::v1::env`, `core::prelude::v1::file`, `core::prelude::v1::format_args`, `core::prelude::v1::format_args_nl`, `core::prelude::v1::global_asm`, `core::prelude::v1::include`, `core::prelude::v1::include_bytes`, `core::prelude::v1::include_str`, `core::prelude::v1::line`, `core::prelude::v1::log_syntax`, `core::prelude::v1::module_path`, `core::prelude::v1::option_env`, `core::prelude::v1::stringify`, `core::prelude::v1::trace_macros`
  --> /cargo_home/git/checkouts/rust-sgx-sdk-fc8771c5c45bde9a/de01b63/sgx_tstd/src/prelude/v1.rs:52:5
   |
52 |     __rust_unstable_column,
   |     ^^^^^^^^^^^^^^^^^^^^^^ no `__rust_unstable_column` in `prelude::v1`
53 |     asm,
   |     ^^^ no `asm` in `prelude::v1`
54 |     assert,
   |     ^^^^^^ no `assert` in `prelude::v1`
55 |     cfg,
   |     ^^^ no `cfg` in `prelude::v1`
56 |     column,
   |     ^^^^^^ no `column` in `prelude::v1`
57 |     compile_error,
   |     ^^^^^^^^^^^^^ no `compile_error` in `prelude::v1`
58 |     concat,
   |     ^^^^^^ no `concat` in `prelude::v1`
59 |     concat_idents,
   |     ^^^^^^^^^^^^^ no `concat_idents` in `prelude::v1`
60 |     env,
   |     ^^^ no `env` in `prelude::v1`
61 |     file,
   |     ^^^^ no `file` in `prelude::v1`
62 |     format_args,
   |     ^^^^^^^^^^^
63 |     format_args_nl,
   |     ^^^^^^^^^^^^^^
64 |     global_asm,
   |     ^^^^^^^^^^
65 |     include,
   |     ^^^^^^^
66 |     include_bytes,
   |     ^^^^^^^^^^^^^
67 |     include_str,
   |     ^^^^^^^^^^^
68 |     line,
   |     ^^^^
69 |     log_syntax,
   |     ^^^^^^^^^^
70 |     module_path,
   |     ^^^^^^^^^^^
71 |     option_env,
   |     ^^^^^^^^^^
72 |     stringify,
   |     ^^^^^^^^^
73 |     trace_macros,
   |     ^^^^^^^^^^^^

error[E0432]: unresolved imports `core::prelude::v1::Debug`, `core::prelude::v1::Decodable`, `core::prelude::v1::Encodable`, `core::prelude::v1::Hash`, `core::prelude::v1::RustcDecodable`, `core::prelude::v1::RustcEncodable`, `core::prelude::v1::bench`, `core::prelude::v1::global_allocator`, `core::prelude::v1::test`, `core::prelude::v1::test_case`
  --> /cargo_home/git/checkouts/rust-sgx-sdk-fc8771c5c45bde9a/de01b63/sgx_tstd/src/prelude/v1.rs:83:5
   |
83 |     Debug,
   |     ^^^^^ no `Debug` in `prelude::v1`
84 |     Decodable,
   |     ^^^^^^^^^ no `Decodable` in `prelude::v1`
85 |     Default,
86 |     Encodable,
   |     ^^^^^^^^^ no `Encodable` in `prelude::v1`
87 |     Eq,
88 |     Hash,
   |     ^^^^ no `Hash` in `prelude::v1`
...
92 |     RustcDecodable,
   |     ^^^^^^^^^^^^^^ no `RustcDecodable` in `prelude::v1`
93 |     RustcEncodable,
   |     ^^^^^^^^^^^^^^ no `RustcEncodable` in `prelude::v1`
94 |     bench,
   |     ^^^^^ no `bench` in `prelude::v1`
95 |     global_allocator,
   |     ^^^^^^^^^^^^^^^^ no `global_allocator` in `prelude::v1`
96 |     test,
   |     ^^^^ no `test` in `prelude::v1`
97 |     test_case,
   |     ^^^^^^^^^ no `test_case` in `prelude::v1`

error[E0425]: cannot find function `take` in module `mem`
   --> /cargo_home/git/checkouts/rust-sgx-sdk-fc8771c5c45bde9a/de01b63/sgx_tstd/src/panicking.rs:273:33
    |
273 |             let contents = mem::take(self.fill());
    |                                 ^^^^ not found in `mem`

error[E0603]: struct `VaListImpl` is private
  --> /cargo_home/git/checkouts/rust-sgx-sdk-fc8771c5c45bde9a/de01b63/sgx_tstd/src/ffi/mod.rs:42:29
   |
42 | pub use core::ffi::{VaList, VaListImpl};
   |                             ^^^^^^^^^^

error: aborting due to 5 previous errors

reproducing the error

  1. pull the project
  2. build a docker image using the Dockerfile for local development in SIM mode

    let's say, the built image is named as mesatee:dev

  3. mount the project into the container
docker run -it --name mesatee -v ${PWD}:/root/mesatee --workdir=/root/mesatee mesatee:dev bash
  1. build the project
mkdir build 
cd build 
cmake -DSGX_MODE=SW ..
make VERBOSE=1 -j

With all above, the error should be triggered ~
Really appreciate for any kind help ~

Reorganize release dir

Current organization of release dir is not consistent. I suggest to have the following dir structure:

release/
  service/
     tms, kms, ..., *.enclave.so
     enclave_info.txt
     auditors/
   examples/
   lib/

The original bin can be abandoned. The out can be still used as a temporary dir if still needed.

Vendor all third-party crates for untrusted part

Similar with crates-sgx, we should also vendor all third-party rust crates in crates.io. There are several benefits:

  • have more control of third-party libraries
  • potentially make compilation faster

tms&fns&tdfs crash when send request by python

tms&fns&tdfs crash when send request by python3 script

mesatee: b78ae14
os: ubuntu-18.04 LTS
sgxsdk: v2.6.100.51363
rust:
nightly-2019-08-01-x86_64-unknown-linux-gnu (default)
rustc 1.38.0-nightly (8a58268b5 2019-07-31)
python: v3.6.8

for fns:
image-fns

for tdfs:
image-tdfs

for tms:
image-tms

script:
python

script file:
crash.zip

crash when reading large files

When reading large files, enclave will panic and print "thread '<unknown>' has overflowed its stack fatal runtime error: stack overflow".

The crash is caused by "fs::read" and "fs::write" apis.

To fix the issue:
Read/Write data with small buffer.

loop {
           let result = f.read(&mut buffer);
           ....
} 

After the issue is fixed, to support large files:
Change "mesatee_services/fns/sgx_trusted_lib/Enclave.config.xml" and enlarge HeapMaxSize and StackMaxSize

protected_fs's tests module is not tracked by cmake

Current protected_fs's tests module is built in source dir. Because it is not tracked by cmake, this may cause some issues:

$ cat module_test.sh
#!/bin/bash
trap "pkill -2 -P $$; wait" SIGINT SIGTERM EXIT

echo "[+] Running module test: protected_fs_rs ..."
cd ../mesatee_utils/protected_fs_rs
cargo test

I encounter this issue when building protected_fs_rs with 18.04 and 16.04. I only delete the build dir which does not clean up protected_fs's built.

root@443183963ae6:/mesatee/build# make sgx-test
[+] Running module test: protected_fs_rs ...
    Updating crates.io index
  Downloaded cfg-if v0.1.10
  Downloaded rand_core v0.4.2
  Downloaded rdrand v0.6.0
  Downloaded libc v0.2.66
    Finished dev [unoptimized + debuginfo] target(s) in 15.72s
     Running target/debug/deps/protected_fs-5cf4f9815b6d6596
/mesatee/mesatee_utils/protected_fs_rs/target/debug/deps/protected_fs-5cf4f9815b6d6596: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
error: test failed, to rerun pass '--lib'
CMakeFiles/sgx-test.dir/build.make:57: recipe for target 'CMakeFiles/sgx-test' failed
make[3]: *** [CMakeFiles/sgx-test] Error 127
CMakeFiles/Makefile2:1257: recipe for target 'CMakeFiles/sgx-test.dir/all' failed
make[2]: *** [CMakeFiles/sgx-test.dir/all] Error 2
CMakeFiles/Makefile2:1264: recipe for target 'CMakeFiles/sgx-test.dir/rule' failed
make[1]: *** [CMakeFiles/sgx-test.dir/rule] Error 2
Makefile:612: recipe for target 'sgx-test' failed
make: *** [sgx-test] Error 2

The `functional_test.enclave.signed.so` file is put in the wrong dir

I found that the functional_test.enclave.signed.so file is put in the wrong release dir. Right now the release dir is like this:

├── services
│   ├── acs
│   ├── acs.enclave.signed.so
│   ├── auditors
│   ├── enclave_info.txt
│   ├── fns
│   ├── fns.enclave.signed.so
│   ├── functional_test.enclave.signed.so
│   ├── kms
│   ├── kms.enclave.signed.so
│   ├── tdfs
│   ├── tdfs.enclave.signed.so
│   ├── tms
│   └── tms.enclave.signed.so
└── tests
    ├── functional_test
    └── integration_test

However, the functional_test.enclave.signed.so file should be put in the release/tests/ directory along with the functional_test binary.

Add build Dockerfile for Ubuntu 16.04

A lot people are still using Ubuntu 16.04 for development. It's better to add another Dockerfile (say Dockerfile.ubuntu-16.04.build and Dockerfile.ubuntu-18.04.build) or Ubuntu 16.04. Also, our make sgx-test can be run in Ubuntu 16.04 image to ensure the functionality.

Question about adding a new function

Hello,

I'm checking the document of "how to add a function" https://github.com/mesalock-linux/mesatee/blob/master/docs/how_to_add_your_function.md

I have several questions:

  1. after I create a new function, where should I put it?
    should I put it into the folder "mesatee_services/fns/sgx_trusted_lib/src/trusted_worker" or some other place?

  2. after registering the new function, should I rebuild the entire MesaTEE framework to make it work? If not, what should I build for the newly registered function?

  3. I guess the newly created function will finally become a part of MesaTEE, and this function will run inside the trusted execution environment as a SGX enclave. Is my understanding correct?

  4. I'm curious about the event management part of MesaTEE.
    e.g., "On data uploading or new events coming, MesaTEE function services are immediately triggered." mentioned in Examples - https://github.com/mesalock-linux/mesatee/blob/master/examples/README.md
    I was wondering how does the MesaTEE framework work for handling the coming events?

Thanks in advance!

Rewrite docs

Current docs are outdated. We need to rewrite the whole docs and readme. This can be started after our renaming.

Use PyLint to check Python code

As more and more python code committed to the repo, we need a standard way to unify the code style. We might leverage the existing tools like pylint with the PEP8 style.

sgx-test fails on executing sim-debug docker pipeline

Hello.

I am trying to build and run mesaTEE inside docker. I want to develop and debug the capabilities on a non SGX machine (GCP VM).

I execute the drone pipeline with this command:

sudo drone exec --pipeline sim_release --trusted

And I receive an assertion error in the protected_fs.rs test as called by sgx-test
Lines 285-286 in protected_fs.rs

let opt = ProtectedFile::open_ex("/dev/isgx", &key);
            assert_eq!(opt.is_ok(), true); 

This code is looking for sgx installation in the machine, which I don't have.
And in the sim_debug pipeline in .drone.yml , the volume to isgx ('/dev/isgx') is not attached.

My question is, can I skip this assertion, or
Is there anyway I can test and develop on mesaTEE on a non SGX machine in some sort of a simulator like in Asylo ?

Thanks

Decouple existing worker logic from FNS as a seperate deployable component

Service providers need customized workers in different security levels. Currently all existing workers are running inside the FNS process with limited flexibility.
We can decouple the worker logic from FNS as a separate deployable component, and make workflow as follows:

  • Worker can only communicate with FNS during its lifetime
  • Worker instances registered to FNS upon launch
  • Worker instances talks to FNS actively for getting task info, running tasks and updating its status
  • FNS manages all registered workers for load balancing and status tracking

Add a trusted storage service

We need a trusted storage service to persistent state in a database. Currently, we only have memdb for KMS [1], TMS [2], TDFS [3].

Therefore, we can add another trusted service called mesatee storage service (/mesatee_services/storage) to support persistent storage. The storage service can support multiple backends. In our first implementation, we can start with a Rust implementation Level DB (https://bitbucket.org/dermesser/leveldb-rs/src/default/) to show the capabilities first.

Auto-generated `prost_generated/kms_proto.rs` file is not same as the file checked in the repo

The generated kms_proto.rs file is not exact same with the source checked in the repo. After a fresh compilation, the diff is like this:

diff --git a/mesatee_services/kms/proto/src/prost_generated/kms_proto.rs b/mesatee_services/kms/proto/src/prost_generated/kms_proto.rs
index 44484d6..b78054a 100644
--- a/mesatee_services/kms/proto/src/prost_generated/kms_proto.rs
+++ b/mesatee_services/kms/proto/src/prost_generated/kms_proto.rs
@@ -1,67 +1,75 @@
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct CreateKeyRequest {
-    #[prost(enumeration = "EncType", required, tag = "1")]
+    #[prost(enumeration="EncType", required, tag="1")]
     pub enc_type: i32,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct AeadConfig {
-    #[prost(bytes, required, tag = "1")]
+    #[prost(bytes, required, tag="1")]
     #[serde(with = "crate::base64_coder")]
     pub key: std::vec::Vec<u8>,
-    #[prost(bytes, required, tag = "2")]
+    #[prost(bytes, required, tag="2")]
     #[serde(with = "crate::base64_coder")]
     pub nonce: std::vec::Vec<u8>,
-    #[prost(bytes, required, tag = "3")]
+    #[prost(bytes, required, tag="3")]
     #[serde(with = "crate::base64_coder")]
     pub ad: std::vec::Vec<u8>,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct ProtectedFsConfig {
-    #[prost(bytes, required, tag = "1")]
+    #[prost(bytes, required, tag="1")]
     #[serde(with = "crate::base64_coder")]
     pub key: std::vec::Vec<u8>,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct KeyConfig {
-    #[prost(oneof = "key_config::Config", tags = "1, 2")]
+    #[prost(oneof="key_config::Config", tags="1, 2")]
     pub config: ::std::option::Option<key_config::Config>,
 }
 pub mod key_config {
-    #[derive(
-        Clone, PartialEq, ::prost::Oneof, serde_derive::Serialize, serde_derive::Deserialize,
-    )]
+    #[derive(Clone, PartialEq, ::prost::Oneof)]
+    #[derive(serde_derive::Serialize, serde_derive::Deserialize)]
     pub enum Config {
-        #[prost(message, tag = "1")]
+        #[prost(message, tag="1")]
         Aead(super::AeadConfig),
-        #[prost(message, tag = "2")]
+        #[prost(message, tag="2")]
         ProtectedFs(super::ProtectedFsConfig),
     }
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct CreateKeyResponse {
-    #[prost(string, required, tag = "1")]
+    #[prost(string, required, tag="1")]
     pub key_id: std::string::String,
-    #[prost(message, required, tag = "2")]
+    #[prost(message, required, tag="2")]
     pub config: KeyConfig,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct GetKeyRequest {
-    #[prost(string, required, tag = "1")]
+    #[prost(string, required, tag="1")]
     pub key_id: std::string::String,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct GetKeyResponse {
-    #[prost(message, required, tag = "1")]
+    #[prost(message, required, tag="1")]
     pub config: KeyConfig,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct DeleteKeyRequest {
-    #[prost(string, required, tag = "1")]
+    #[prost(string, required, tag="1")]
     pub key_id: std::string::String,
 }
-#[derive(Clone, PartialEq, ::prost::Message, serde_derive::Serialize, serde_derive::Deserialize)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
 pub struct DeleteKeyResponse {
-    #[prost(message, required, tag = "1")]
+    #[prost(message, required, tag="1")]
     pub config: KeyConfig,
 }
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -72,8 +80,7 @@ pub enum EncType {
     ProtectedFs = 1,
 }
 #[derive(Clone, serde_derive::Serialize, serde_derive::Deserialize, Debug)]
-#[serde(tag = "type")]
-pub enum KMSRequest {
+#[serde(tag = "type")]pub enum KMSRequest {
     GetKey(GetKeyRequest),
     DelKey(DeleteKeyRequest),
     CreateKey(CreateKeyRequest),
@@ -91,10 +98,7 @@ pub trait KMSService {
     fn create_key(req: CreateKeyRequest) -> mesatee_core::Result<CreateKeyResponse>;
     fn dispatch(&self, req: KMSRequest) -> mesatee_core::Result<KMSResponse> {
         match req {
-            KMSRequest::GetKey(req) => Self::get_key(req).map(KMSResponse::GetKey),
-            KMSRequest::DelKey(req) => Self::del_key(req).map(KMSResponse::DelKey),
-            KMSRequest::CreateKey(req) => Self::create_key(req).map(KMSResponse::CreateKey),
-        }
+            KMSRequest::GetKey(req) => Self::get_key(req).map(KMSResponse::GetKey),            KMSRequest::DelKey(req) => Self::del_key(req).map(KMSResponse::DelKey),            KMSRequest::CreateKey(req) => Self::create_key(req).map(KMSResponse::CreateKey),        }
     }
 }
 pub struct KMSClient {
@@ -106,10 +110,7 @@ impl KMSClient {
         let addr = target.addr;
         let channel = match target.desc {
             mesatee_core::config::OutboundDesc::Sgx(enclave_addr) => {
-                mesatee_core::rpc::channel::SgxTrustedChannel::<KMSRequest, KMSResponse>::new(
-                    addr,
-                    enclave_addr,
-                )?
+                mesatee_core::rpc::channel::SgxTrustedChannel::<KMSRequest, KMSResponse>::new(addr, enclave_addr)?
             }
         };
         Ok(KMSClient { channel })
@@ -121,9 +122,7 @@ impl KMSClient {
         let resp = self.channel.invoke(req)?;
         match resp {
             KMSResponse::GetKey(resp) => Ok(resp),
-            _ => Err(mesatee_core::Error::from(
-                mesatee_core::ErrorKind::RPCResponseError,
-            )),
+            _ => Err(mesatee_core::Error::from(mesatee_core::ErrorKind::RPCResponseError)),
         }
     }
 
@@ -132,9 +131,7 @@ impl KMSClient {
         let resp = self.channel.invoke(req)?;
         match resp {
             KMSResponse::DelKey(resp) => Ok(resp),
-            _ => Err(mesatee_core::Error::from(
-                mesatee_core::ErrorKind::RPCResponseError,
-            )),
+            _ => Err(mesatee_core::Error::from(mesatee_core::ErrorKind::RPCResponseError)),
         }
     }
 
@@ -143,9 +140,7 @@ impl KMSClient {
         let resp = self.channel.invoke(req)?;
         match resp {
             KMSResponse::CreateKey(resp) => Ok(resp),
-            _ => Err(mesatee_core::Error::from(
-                mesatee_core::ErrorKind::RPCResponseError,
-            )),
+            _ => Err(mesatee_core::Error::from(mesatee_core::ErrorKind::RPCResponseError)),
         }
     }
 }

sgxapp-kms target won't cache build results

The build system doesn't cache the output of the sgxapp-kms target. It guess this is caused by autogenerated protocol file introduced in this PR (#112).

$ make
[  0%] Built target prep
[  7%] Built target pycomponent
[  9%] Building unixapp-config_gen
    Finished release [optimized] target(s) in 0.13s
[  9%] Built target unixapp-config_gen
[ 12%] Building sgxapp-acs
    Finished release [optimized] target(s) in 0.09s
[ 12%] Built target sgxapp-acs
[ 14%] Building sgxlib-acs
    Finished release [optimized] target(s) in 1.08s
[ 14%] Built target sgxlib-acs
[ 17%] Building sgxapp-functional_test
    Finished release [optimized] target(s) in 0.09s
[ 17%] Built target sgxapp-functional_test
[ 19%] Building sgxlib-functional_test
   Compiling functional_test_enclave v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/tests/functional_test/sgx_trusted_lib)
    Finished release [optimized] target(s) in 1.74s
[ 19%] Built target sgxlib-functional_test
[ 21%] Building sgxapp-fns
    Finished release [optimized] target(s) in 0.09s
[ 21%] Built target sgxapp-fns
[ 24%] Building sgxlib-fns
   Compiling kms_proto v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/kms/proto)
   Compiling tdfs_internal_proto v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/tdfs/internal/proto)
   Compiling tdfs_internal_client v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/tdfs/internal/client)
   Compiling fns_enclave v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/fns/sgx_trusted_lib)
    Finished release [optimized] target(s) in 10.30s
[ 24%] Built target sgxlib-fns
[ 26%] Building sgxapp-kms
   Compiling kms_proto v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_untrusted_app/mesatee_services/kms/proto)
   Compiling kms v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_untrusted_app/mesatee_services/kms/sgx_app)
    Finished release [optimized] target(s) in 2.33s
[ 26%] Built target sgxapp-kms
[ 29%] Building sgxlib-kms
   Compiling kms_proto v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/kms/proto)
   Compiling kms_enclave v0.1.0 (/home/mssun/incubator-mesatee/build/cmake_tomls/sgx_trusted_lib/mesatee_services/kms/sgx_trusted_lib)
    Finished release [optimized] target(s) in 3.35s

Move file access control from FNS to TDFS

Now whether a work can read/write a file is checked in FNS. It's better to move the access control from FNS to TDFS.

It has following advantages:

  1. Access control should be enforced by the data holder just before the action.
  2. Access control server can use it as an example.
  3. It will allow TMS to prepare data if the input/output files are known before task execution.

sgxlib-kms target can only cache the build results after the second build

I think the reason may be that the sgxlib-kms will be compiled twice.

One is for mesatee_services and the other is for functional_test.

find . -name libkms_proto*
./target/untrusted/release/deps/libkms_proto-a7be2c8b74ba8ed9.rlib
./target/untrusted/release/deps/libkms_proto-a7be2c8b74ba8ed9.rmeta
./target/trusted/release/deps/libkms_proto-59ba18a444583694.rmeta
./target/trusted/release/deps/libkms_proto-35647b5ef0f9d552.rlib
./target/trusted/release/deps/libkms_proto-35647b5ef0f9d552.rmeta
./target/trusted/release/deps/libkms_proto-59ba18a444583694.rlib

HOW TO deploy MesaTEE in k8s

Hello,
In this document Case Study / sensitive-data-computing-over-public-cloud, you wrote:

Multiple TEE server nodes are grouped together to serve as a cloud cluster, which can be scheduled by orchestration framework like Kubernetes.

I want to build MesaTEE cluster in Kubernetes, just like what you did.
Could you provide some documents or suggestions about how to deploy MesaTEE in k8s.

Thanks!

What's the purpose of the `cert/mr_signer` file?

I understand mr_signer means the SHA256 digest of the big endian format modulus of the RSA public key of the enclave's signing key. And I can config it as build configuration here: https://github.com/apache/incubator-mesatee/blob/9c6d1e40bf3d8a73f80b119138c3219ee713590d/build.toml#L7

config_gen will include it in bytes at compile time:

lazy_static! {
    pub static ref MESATEE_SECURITY_CONSTANTS: MesateeSecurityConstants =
    MesateeSecurityConstants {
        mr_signer: include_bytes!("/home/mssun/incubator-mesatee/cert/mr_signer"),
        root_ca_bin: include_bytes!("/home/mssun/incubator-mesatee/cert/ca.crt"),
        ias_report_ca: include_bytes!("/home/mssun/incubator-mesatee/cert/AttestationReportSigningCACert.pem"),

        client_cert: include_bytes!("/home/mssun/incubator-mesatee/cert/client.crt"),
        client_pkcs8_key: include_bytes!("/home/mssun/incubator-mesatee/cert/client.pkcs8"),

        audited_enclave_pubkey_a: include_bytes!("/home/mssun/incubator-mesatee/auditors/godzilla/godzilla.public.der"),
        audited_enclave_pubkey_b: include_bytes!("/home/mssun/incubator-mesatee/auditors/optimus_prime/optimus_prime.public.der"),
        audited_enclave_pubkey_c: include_bytes!("/home/mssun/incubator-mesatee/auditors/albus_dumbledore/albus_dumbledore.public.der"),

        max_msg_size: 0x64000,
    };

}

However, I didn't find any code use this constant value.

From my understanding, the MRSIGNER value is written in the enclave_info.txt and will be loaded at runtime for verification instead of build time config:

mesatee_core/src/config/mod.rs:

lazy_static! {
    pub static ref ENCLAVE_IDENTITIES: HashMap<String, (SgxMeasure, SgxMeasure)> =
        load_presigned_enclave_info();
}

The question is can we remove this file and do we need this as build time config?

Remove deprecated Makefile

Since the commit 2ce0173, the functionality of cmake is well tested. We should consider to remove the already deprecated Makefile. This includes remove Makefile and environment, and update documentation, etc.

make operation failed

jhon@jhon-ThinkPad-X270-W10DG:/Desktop/mesatee$ source ./environment
jhon@jhon-ThinkPad-X270-W10DG:
/Desktop/mesatee$ make
INFO: Need to reinitialize git submodules
子模组 'third_party/crates-sgx' (https://github.com/mesalock-linux/crates-sgx.git) 未对路径 'third_party/crates-sgx' 注册
子模组 'third_party/rust-sgx-sdk' (https://github.com/baidu/rust-sgx-sdk.git) 未对路径 'third_party/rust-sgx-sdk' 注册
正克隆到 'third_party/crates-sgx'...
remote: Enumerating objects: 9869, done.
remote: Counting objects: 100% (9869/9869), done.
remote: Compressing objects: 100% (4851/4851), done.
remote: Total 9869 (delta 5424), reused 9199 (delta 4754), pack-reused 0
接收对象中: 100% (9869/9869), 17.95 MiB | 2.49 MiB/s, 完成.
处理 delta 中: 100% (5424/5424), 完成.
检查连接... 完成。
子模组路径 'third_party/crates-sgx':检出 '7e8f16a19cbd979e48b622e71991d2ad870bf59a'
正克隆到 'third_party/rust-sgx-sdk'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 15147 (delta 2), reused 7 (delta 2), pack-reused 15135
接收对象中: 100% (15147/15147), 37.73 MiB | 2.49 MiB/s, 完成.
处理 delta 中: 100% (7918/7918), 完成.
检查连接... 完成。
子模组路径 'third_party/rust-sgx-sdk':检出 '8af3cd9e8d08bc64410332e074f4982704a766e9'
子模组 'samplecode/wasmi/test_input' (https://github.com/WebAssembly/testsuite) 未对路径 'samplecode/wasmi/test_input' 注册
正克隆到 'samplecode/wasmi/test_input'...
remote: Enumerating objects: 45, done.
remote: Counting objects: 100% (45/45), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 1242 (delta 17), reused 25 (delta 7), pack-reused 1197
接收对象中: 100% (1242/1242), 850.30 KiB | 479.00 KiB/s, 完成.
处理 delta 中: 100% (848/848), 完成.
检查连接... 完成。
子模组路径 'third_party/rust-sgx-sdk/samplecode/wasmi/test_input':检出 'c6a690f89a0dda3c79700aa6377d8b5d8a970eba'
[*] Building config_gen
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /home/jhon/Desktop/mesatee/mesatee_cli/Cargo.toml
workspace: /home/jhon/Desktop/mesatee/Cargo.toml
Updating git repository https://github.com/mesalock-linux/sgx-fake-profiler-bu Finished release [optimized] target(s) in 2m 29s [*] Building sgx_untrusted Finished release [optimized] target(s) in 3m 18s [*] Building mesatee_services/kms_enclave error: failed to run custom build command for sgx_unwind v0.0.1 (https://github.com/baidu/rust-sgx-sdk?rev=v1.0.9#8af3cd9e)`

Caused by:
process didn't exit successfully: /home/jhon/Desktop/mesatee/target/trusted/release/build/sgx_unwind-2beca3cfa2d13dcf/build-script-build (exit code: 1)
--- stdout
cargo:rerun-if-changed=build.rs
cargo:rustc-link-lib=gcc_s
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/README
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/configure.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/NEWS
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/autogen-linux.sh
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/TODO
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/acinclude.m4
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/AUTHORS
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/dwarf_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/x86/jmpbuf.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/mempool.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/libunwind-common.h.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/libunwind.h.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep/jmpbuf.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep/libunwind_i.h.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep/dwarf-config.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/remote.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/libunwind-dynamic.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/libunwind_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/dwarf-eh.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/libunwind-x86_64.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/unwind.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep-x86_64/jmpbuf.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep-x86_64/libunwind_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/tdep-x86_64/dwarf-config.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/pthread_compat.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/config.h.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/include/dwarf.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/INSTALL
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/Makefile.am
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/configure
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/config.sub
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/missing
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/ltmain.sh
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/compile
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/config.guess
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/depcomp
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/config/install-sh
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/COPYING
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/os-linux.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elfxx.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elf32.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/Makefile.am
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lfind_dynamic_proc_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/flush_cache.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gget_reg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gdyn-extract.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Ldyn-extract.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/dyn-cancel.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lset_reg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Ldestroy_addr_space.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gget_fpreg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lset_caching_policy.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lset_fpreg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Ldyn-remote.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lput_dynamic_unwind_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/dyn-info-list.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/dyn-register.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gget_accessors.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/strerror.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/_ReadULEB.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lget_reg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gput_dynamic_unwind_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gfind_dynamic_proc_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gset_fpreg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lget_proc_name.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lget_accessors.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gset_caching_policy.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gdestroy_addr_space.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/mempool.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lget_fpreg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gget_proc_info_by_ip.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/backtrace.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Lget_proc_info_by_ip.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gget_proc_name.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gdyn-remote.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/Gset_reg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/_ReadSLEB.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/mi/init.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elfxx.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lstash_frame.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lstep.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Ginit_local.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lregs.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lget_save_loc.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gos-freebsd.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/siglongjmp.S
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/is_fpreg.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/init.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gregs.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gos-linux.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Ltrace.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gstash_frame.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/offsets.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/regname.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Ginit.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lget_proc_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/ucontext_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Linit.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lresume.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Linit_remote.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Ginit_remote.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lcreate_addr_space.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gcreate_addr_space.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/setcontext.S
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Linit_local.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gglobal.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lglobal.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/longjmp.S
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Los-freebsd.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gresume.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/unwind_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/getcontext.S
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gstep.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Los-linux.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Lis_signal_frame.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gtrace.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gget_proc_info.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/x86_64/Gget_save_loc.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elf64.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/se-iterate-phdr.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elf32.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/elf64.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/os-linux.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/SetGR.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/Backtrace.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/DeleteException.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/unwind-internal.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetLanguageSpecificData.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/ForcedUnwind.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetDataRelBase.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/SetIP.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetGR.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetIPInfo.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetIP.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/FindEnclosingFunction.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetBSP.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/RaiseException.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetRegionStart.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/Resume_or_Rethrow.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/Resume.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetCFA.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/unwind/GetTextRelBase.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/Makefile.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/setjmp/longjmp.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/setjmp/setjmp.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/setjmp/siglongjmp.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/setjmp/setjmp_i.h
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/setjmp/sigsetjmp.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lpe.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lstep.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gpe.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lexpr.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gfind_unwind_table.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gexpr.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lfind_unwind_table.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gfde.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gparser.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lfind_proc_info-lsb.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/global.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lfde.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Lparser.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gstep.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/dwarf/Gfind_proc_info-lsb.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/src/se-libc-stubs.c
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/Makefile.in
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/LICENSE
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/ChangeLog
cargo:rerun-if-changed=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/aclocal.m4
cargo:rustc-link-lib=static=unwind
cargo:rustc-link-search=native=/home/jhon/Desktop/mesatee/target/trusted/release/build/sgx_unwind-a6da6ed8965a050c/out/libunwind/src/.libs
running: "sh" "/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/autogen-linux.sh" "--host=x86_64-unknown-linux-gnu" "--build=x86_64-unknown-linux-gnu"

command did not execute successfully: "sh" "/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/autogen-linux.sh" "--host=x86_64-unknown-linux-gnu" "--build=x86_64-unknown-linux-gnu"
expected success, got: exit code: 1

--- stderr

  • dirname /home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind/autogen-linux.sh
  • srcdir=/home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind
  • [ -z /home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind ]
  • pwd
  • ORIGDIR=/home/jhon/Desktop/mesatee/target/trusted/release/build/sgx_unwind-a6da6ed8965a050c/out/libunwind
  • cd /home/jhon/Desktop/mesatee/third_party/crates-sgx/vendor/sgx_unwind/../sgx_unwind/libunwind
  • autoreconf -v --install
    autoreconf: Entering directory `.'
    autoreconf: configure.in: not using Gettext
    autoreconf: running: aclocal
    aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
    configure.in:20: warning: macro 'AM_PROG_LIBTOOL' not found in library
    autoreconf: configure.in: tracing
    autoreconf: configure.in: not using Libtool
    autoreconf: running: /usr/bin/autoconf
    configure.in:20: error: possibly undefined macro: AM_PROG_LIBTOOL
    If this token and others are legitimate, please use m4_pattern_allow.
    See the Autoconf documentation.
    autoreconf: /usr/bin/autoconf failed with exit status: 1
  • exit 1

warning: build failed, waiting for other jobs to finish...
error: build failed
Makefile:239: recipe for target 'sgx_trusted' failed
make: *** [sgx_trusted] Error 1

Upgrade mesatee_utils/protected_fs

We have already got the protected_fs library ready here, which supports running in both sgx and non-sgx environments. It's time to upgrade the existing one in mesatee_utils.

After the upgrade, we can support more customized interface for the ProtectedFile.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.