Skip to content
This repository was archived by the owner on Oct 26, 2021. It is now read-only.

Commit

Permalink
Include aesm-proto in build script
Browse files Browse the repository at this point in the history
This generates a Rust file from Intel's aesm-proto.proto that can be used
as a module to communicate with the AESM daemon.

Signed-off-by: Lily Sturmann <lsturman@redhat.com>
  • Loading branch information
lkatalin committed Nov 11, 2020
1 parent 8b7bdf4 commit 41de671
Show file tree
Hide file tree
Showing 7 changed files with 281 additions and 4 deletions.
33 changes: 30 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,12 @@ anyhow = "1.0"
goblin = "0.2"
libc = "0.2"
lset = "0.1"
protobuf = "2.18"

[build-dependencies]
cc = "1.0"
walkdir = "2"
protobuf-codegen-pure = "2.3"

[dev-dependencies]
process_control = "2.0"
Expand Down
14 changes: 14 additions & 0 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,20 @@ fn main() {
println!("cargo:rerun-if-env-changed=OUT_DIR");
println!("cargo:rerun-if-env-changed=PROFILE");

protobuf_codegen_pure::Codegen::new()
.out_dir("src/protobuf")
.inputs(&["src/protobuf/aesm-proto.proto"])
.include("src/protobuf")
.run()
.expect("Protobuf codegen failed");

Command::new("mv")
.current_dir(&Path::new(CRATE).join("src/protobuf"))
.arg("aesm_proto.rs")
.arg("mod.rs")
.status()
.unwrap_or_else(|_| panic!("Could not rename aesm proto file"));

let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
let out_dir_bin = out_dir.join("bin");

Expand Down
2 changes: 1 addition & 1 deletion internal/shim-sgx/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@

mod backend;
mod binary;
mod protobuf;
mod sallyport;

// workaround for sallyport tests, until we have internal crates
Expand Down
229 changes: 229 additions & 0 deletions src/protobuf/aesm-proto.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
/*
* Copyright (C) 2011-2020 Intel Corporation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

syntax = "proto2";
package aesm.message;
option optimize_for = LITE_RUNTIME;

message Request{

message InitQuoteRequest{
optional uint32 timeout = 9;
}

message GetQuoteRequest{
required bytes report = 1;
required uint32 quote_type = 2;
required bytes spid = 3;
optional bytes nonce = 4;
optional bytes sig_rl = 5;
required uint32 buf_size = 6;
optional bool qe_report = 7;
optional uint32 timeout = 9;
}

message GetLaunchTokenRequest{
required bytes mr_enclave = 1;
required bytes mr_signer = 2;
required bytes se_attributes = 3;
optional uint32 timeout = 9;
}

message ReportAttestationErrorRequest{
required bytes platform_info = 1;
required uint32 attestation_error_code = 2;
required uint32 update_info_size = 3;
optional uint32 timeout = 9;
}

message CheckUpdateStatusRequest{
optional bytes platform_info = 1;
required uint32 update_info_size = 2;
required uint32 config = 3;
optional uint32 timeout = 9;
}

message GetWhiteListSizeRequest{
optional uint32 timeout = 9;
}

message GetWhiteListRequest{
optional uint32 white_list_size = 1;
optional uint32 timeout = 9;
}

message SGXGetExtendedEpidGroupIdRequest{
optional uint32 timeout = 9;
}

message SGXSwitchExtendedEpidGroupRequest{
optional uint32 x_group_id = 1;
optional uint32 timeout = 9;
}

message SGXRegisterRequest{
required bytes buf = 1;
required uint32 data_type = 2;
optional uint32 timeout = 9;
}

message InitQuoteExRequest{
optional bytes att_key_id = 1;
required bool b_pub_key_id = 3;
optional uint64 buf_size = 4;
optional uint32 timeout = 9;
}

message SelectAttKeyIDRequest{
optional bytes att_key_id_list = 1;
optional uint32 timeout = 2;
}

message GetQuoteSizeExRequest{
optional bytes att_key_id = 1;
optional uint32 timeout = 9;
}

message GetQuoteExRequest{
required bytes report = 1;
optional bytes att_key_id = 2;
optional bytes qe_report_info = 3;
required uint32 buf_size = 4;
optional uint32 timeout = 9;
}

optional InitQuoteRequest initQuoteReq = 1;
optional GetQuoteRequest getQuoteReq = 2;
optional GetLaunchTokenRequest getLicTokenReq = 3;
optional ReportAttestationErrorRequest reportErrReq = 4;
optional GetWhiteListSizeRequest getWhiteListSizeReq = 10;
optional GetWhiteListRequest getWhiteListReq = 11;
optional SGXGetExtendedEpidGroupIdRequest sgxGetExtendedEpidGroupIdReq = 12;
optional SGXSwitchExtendedEpidGroupRequest sgxSwitchExtendedEpidGroupReq = 13;
optional SGXRegisterRequest sgxRegisterReq = 14;
optional InitQuoteExRequest initQuoteExReq = 15;
optional GetQuoteSizeExRequest getQuoteSizeExReq = 16;
optional GetQuoteExRequest getQuoteExReq = 17;
optional CheckUpdateStatusRequest checkUpdateStatusReq = 18;
optional SelectAttKeyIDRequest selectAttKeyIDReq = 19;
}

message Response{

message InitQuoteResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes targetInfo = 2;
optional bytes gid = 3;
}

message GetQuoteResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes quote = 2;
optional bytes qe_report = 3;
}

message GetLaunchTokenResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes token = 2;
}

message ReportAttestationErrorResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes platform_update_info = 2;
}

message CheckUpdateStatusResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes platform_update_info = 2;
optional uint32 status = 3;
}

message GetWhiteListSizeResponse{
required uint32 errorCode = 1 [default = 1];
optional uint32 white_list_size = 2;
}

message GetWhiteListResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes white_list = 2;
}

message SGXGetExtendedEpidGroupIdResponse{
required uint32 errorCode = 1 [default = 1];
optional uint32 x_group_id = 2;
}

message SGXSwitchExtendedEpidGroupResponse{
required uint32 errorCode = 1 [ default = 1];
}

message SGXRegisterResponse{
required uint32 errorCode = 1 [ default = 1];
}

message SelectAttKeyIDResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes selected_att_key_id = 2;
}

message InitQuoteExResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes target_info = 2;
optional uint64 pub_key_id_size = 3;
optional bytes pub_key_id = 4;
}

message GetQuoteSizeExResponse{
required uint32 errorCode = 1 [default = 1];
optional uint32 quote_size = 2;
}

message GetQuoteExResponse{
required uint32 errorCode = 1 [default = 1];
optional bytes quote = 2;
optional bytes qe_report_info = 3;
}

optional InitQuoteResponse initQuoteRes = 1;
optional GetQuoteResponse getQuoteRes = 2;
optional GetLaunchTokenResponse getLicTokenRes = 3;
optional ReportAttestationErrorResponse reportErrRes = 4;
optional GetWhiteListSizeResponse getWhiteListSizeRes = 10;
optional GetWhiteListResponse getWhiteListRes = 11;
optional SGXGetExtendedEpidGroupIdResponse sgxGetExtendedEpidGroupIdRes = 12;
optional SGXSwitchExtendedEpidGroupResponse sgxSwitchExtendedEpidGroupRes = 13;
optional SGXRegisterResponse sgxRegisterRes = 14;
optional InitQuoteExResponse initQuoteExRes = 15;
optional GetQuoteSizeExResponse getQuoteSizeExRes = 16;
optional GetQuoteExResponse getQuoteExRes = 17;
optional CheckUpdateStatusResponse checkUpdateStatusRes = 18;
optional SelectAttKeyIDResponse selectAttKeyIDRes = 19;
}
4 changes: 4 additions & 0 deletions src/protobuf/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// SPDX-License-Identifier: Apache-2.0

//! This is a placeholder file for the Rust stuctures generated from
//! aesm-proto.proto during build.

0 comments on commit 41de671

Please sign in to comment.