fixed ioctl bugs, added docs
This commit is contained in:
parent
924a443998
commit
075ccc2607
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,4 +3,6 @@ target
|
||||
Cargo.lock
|
||||
client_instance
|
||||
server_instance
|
||||
client.yaml
|
||||
server.yaml
|
||||
lib
|
||||
|
@ -14,7 +14,7 @@ keywords = ["occlum", "rustls", "ratls"]
|
||||
[dependencies]
|
||||
rustls = "0.23"
|
||||
x509-parser = "0.16"
|
||||
occlum-sgx = "0.1" # get/verify quote
|
||||
#occlum-sgx = "0.1" # get/verify quote
|
||||
ring = "0.17" # hash256
|
||||
rcgen = "0.13"
|
||||
log = "0.4"
|
||||
@ -26,13 +26,11 @@ hyper = "1.4.1"
|
||||
hyper-util = "0.1.7"
|
||||
hyper-rustls = { version = "0.27", features = ["http2"] }
|
||||
prost = "0.13"
|
||||
#cfg-if = "1.0"
|
||||
base64 = "0.22"
|
||||
lazy_static = "1.5"
|
||||
|
||||
[dependencies.tonic]
|
||||
version = "0.12"
|
||||
#features = ["rustls-0_23"]
|
||||
optional = true
|
||||
|
||||
[dependencies.actix-web]
|
||||
|
55
README.md
55
README.md
@ -23,6 +23,55 @@ and use the following command:
|
||||
83E8A0C3ED045D9747ADE06C3BFC70FCA661A4A65FF79A800223621162A88B76
|
||||
```
|
||||
|
||||
## Docker Occlum runtime
|
||||
|
||||
To run the project in Docker, you need to install the docker first.
|
||||
On Ubuntu, you can use the following commands:
|
||||
|
||||
```bash
|
||||
# Add docker official GPG key
|
||||
sudo apt update
|
||||
sudo apt install ca-certificates curl
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
|
||||
# Add docker repository to apt sources
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
||||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
sudo apt update
|
||||
|
||||
# Install docker packages
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# Add your user to the docker group
|
||||
sudo groupadd docker
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
```
|
||||
|
||||
Next run the occlum image in the docker environment:
|
||||
|
||||
```bash
|
||||
docker run --rm -it --device /dev/sgx/enclave --device /dev/sgx/provision -v /path/to/occlum-ratls:/root/occlum-ratls occlum/occlum:latest-ubuntu20.04
|
||||
|
||||
# Inside the docker container do env preparation
|
||||
rustup install stable-x86_64-unknown-linux-gnu
|
||||
rustup default stable
|
||||
rustup target add x86_64-unknown-linux-musl
|
||||
# edit /etc/sgx_default_qcnl.conf, so that the PCCS URL is set correctly
|
||||
# "pccs_url": "https://api.trustedservices.intel.com/sgx/certification/v4/"
|
||||
|
||||
cd /root/occlum-ratls
|
||||
./build_server.sh grpcs --run
|
||||
|
||||
# In another terminal exec /bin/bash into the same container
|
||||
cd /root/occlum-ratls
|
||||
./build_client.sh grpcs --run
|
||||
```
|
||||
|
||||
## Running Examples
|
||||
|
||||
Before running make sure you have installed the Occlum and the SGX driver.
|
||||
@ -30,8 +79,10 @@ You should also have the Occlum Rust toolchain installed to get `occlum-cargo`.
|
||||
To test the project just run client and server scripts in different terminals:
|
||||
|
||||
```
|
||||
./build_server.sh
|
||||
./build_client.sh
|
||||
|
||||
./build_server.sh grpcs --run
|
||||
./build_client.sh grpcs --run
|
||||
|
||||
```
|
||||
|
||||
## Mutual RATLS examples
|
||||
|
@ -23,6 +23,10 @@ targets:
|
||||
copy:
|
||||
- files:
|
||||
- ../target/x86_64-unknown-linux-musl/release/examples/mratls_${EXAMPLE}_client
|
||||
- target: /lib
|
||||
copy:
|
||||
- files:
|
||||
- /opt/occlum/toolchains/dcap_lib/musl/libocclum_dcap.so.0.1.0
|
||||
EOF
|
||||
|
||||
rm -rf client_instance && mkdir client_instance && cd client_instance
|
||||
|
@ -23,6 +23,10 @@ targets:
|
||||
copy:
|
||||
- files:
|
||||
- ../target/x86_64-unknown-linux-musl/release/examples/mratls_${EXAMPLE}_server
|
||||
- target: /lib
|
||||
copy:
|
||||
- files:
|
||||
- /opt/occlum/toolchains/dcap_lib/musl/libocclum_dcap.so.0.1.0
|
||||
EOF
|
||||
|
||||
rm -rf server_instance && mkdir server_instance && cd server_instance
|
||||
|
@ -1,7 +0,0 @@
|
||||
includes:
|
||||
- base.yaml
|
||||
targets:
|
||||
- target: /bin
|
||||
copy:
|
||||
- files:
|
||||
- ../target/x86_64-unknown-linux-musl/debug/examples/mratls_https_client
|
@ -1,7 +0,0 @@
|
||||
includes:
|
||||
- base.yaml
|
||||
targets:
|
||||
- target: /bin
|
||||
copy:
|
||||
- files:
|
||||
- ../target/x86_64-unknown-linux-musl/debug/examples/server
|
@ -164,7 +164,7 @@ impl IoctlClient {
|
||||
fn handle(&mut self) -> Result<HandleType, RaTlsError> {
|
||||
if self.fd.is_null() {
|
||||
let handle = unsafe { dcap_quote_open() };
|
||||
if self.fd.is_null() {
|
||||
if handle.is_null() {
|
||||
return Err(RaTlsError::DcapError(
|
||||
"Failed to open DCAP quote device".to_string(),
|
||||
));
|
||||
@ -176,7 +176,7 @@ impl IoctlClient {
|
||||
|
||||
fn get_quote_size(&mut self) -> Result<u32, RaTlsError> {
|
||||
if self.quote_size.is_none() {
|
||||
let size = unsafe { dcap_get_quote_size(self.fd) };
|
||||
let size = unsafe { dcap_get_quote_size(self.handle()?) };
|
||||
trace!("DCAP quote size is {}", size);
|
||||
self.quote_size = Some(size);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user