fix compilation and runtime
This commit is contained in:
		
							parent
							
								
									a8da3ddcfa
								
							
						
					
					
						commit
						c74aa76612
					
				
							
								
								
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,6 +1,5 @@ | |||||||
| target | **/target | ||||||
| build | **/build | ||||||
| detee_challenge_nodes | #detee_challenge_nodes | ||||||
| .cargo |  | ||||||
| .idea | .idea | ||||||
| .tmp | .tmp | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								rewrite/.cargo/config.toml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								rewrite/.cargo/config.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | [net] | ||||||
|  | git-fetch-with-cli = true | ||||||
| @ -8,12 +8,23 @@ Do the following steps to build the challenge: | |||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| # Notice that there is no SGX device mounted | # Notice that there is no SGX device mounted | ||||||
| docker run --rm -it -v /path/to/rewrite:/root/rewrite occlum/occlum:latest-ubuntu20.04 | docker run --rm --name packager -it -v /path/to/rewrite:/root/rewrite occlum/occlum:latest-ubuntu20.04 | ||||||
| # Inside the docker container do env preparation to build the image | # Inside the docker container do env preparation to build the image | ||||||
| rustup install stable-x86_64-unknown-linux-gnu | rustup install stable-x86_64-unknown-linux-gnu | ||||||
| rustup default stable | rustup default stable | ||||||
| rustup target add x86_64-unknown-linux-musl | rustup target add x86_64-unknown-linux-musl | ||||||
| 
 | 
 | ||||||
|  | mkdir -p /root/.ssh | ||||||
|  | 
 | ||||||
|  | # Outside the container copy the ssh keys to the container to download occlum-ratls dependency | ||||||
|  | docker cp ~/.ssh/config packager:/root/.ssh/config | ||||||
|  | docker cp ~/.ssh/gitea_ed25519 packager:/root/.ssh/gitea_ed25519 | ||||||
|  | 
 | ||||||
|  | apt update && apt install openssh-client | ||||||
|  | ssh-keyscan -H gitea.detee.cloud >> ~/.ssh/known_hosts | ||||||
|  | chown -R root:root /root/.ssh | ||||||
|  | chmod 600 /root/.ssh/gitea_ed25519 | ||||||
|  | 
 | ||||||
| cd /root/rewrite && ./scripts/package.sh | cd /root/rewrite && ./scripts/package.sh | ||||||
| # Feel free to exit the container once the challenge was packaged | # Feel free to exit the container once the challenge was packaged | ||||||
| exit | exit | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| FROM occlum/occlum:latest-ubuntu20.04 | FROM occlum/occlum:latest-ubuntu20.04 | ||||||
| COPY challenge.sh /challenge.sh | COPY challenge.sh /challenge.sh | ||||||
| COPY challenge.tar.gz /challenge.tar.gz | COPY challenge.tar.gz /challenge.tar.gz | ||||||
|  | COPY challenge.qcnl.conf /etc/sgx_default_qcnl.conf | ||||||
| WORKDIR / | WORKDIR / | ||||||
| ENTRYPOINT ["/challenge.sh"] | ENTRYPOINT ["/challenge.sh"] | ||||||
|  | |||||||
							
								
								
									
										71
									
								
								rewrite/scripts/challenge.qcnl.conf
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										71
									
								
								rewrite/scripts/challenge.qcnl.conf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | |||||||
|  | { | ||||||
|  |   // *** ATTENTION : This file is in JSON format so the keys are case sensitive. Don't change them. | ||||||
|  |    | ||||||
|  |   //PCCS server address | ||||||
|  |   "pccs_url": "https://api.trustedservices.intel.com/sgx/certification/v4/" | ||||||
|  | 
 | ||||||
|  |   // To accept insecure HTTPS certificate, set this option to false | ||||||
|  |   ,"use_secure_cert": true | ||||||
|  | 
 | ||||||
|  |   // You can use the Intel PCS or another PCCS to get quote verification collateral.  Retrieval of PCK  | ||||||
|  |   // Certificates will always use the PCCS described in pccs_url.  When collateral_service is not defined, both  | ||||||
|  |   // PCK Certs and verification collateral will be retrieved using pccs_url   | ||||||
|  |   //,"collateral_service": "https://api.trustedservices.intel.com/sgx/certification/v4/" | ||||||
|  | 
 | ||||||
|  |   // If you use a PCCS service to get the quote verification collateral, you can specify which PCCS API version is to be used. | ||||||
|  |   // The legacy 3.0 API will return CRLs in HEX encoded DER format and the sgx_ql_qve_collateral_t.version will be set to 3.0, while | ||||||
|  |   // the new 3.1 API will return raw DER format and the sgx_ql_qve_collateral_t.version will be set to 3.1. The pccs_api_version  | ||||||
|  |   // setting is ignored if collateral_service is set to the Intel PCS. In this case, the pccs_api_version is forced to be 3.1  | ||||||
|  |   // internally.  Currently, only values of 3.0 and 3.1 are valid.  Note, if you set this to 3.1, the PCCS use to retrieve  | ||||||
|  |   // verification collateral must support the new 3.1 APIs. | ||||||
|  |   //,"pccs_api_version": "3.1" | ||||||
|  | 
 | ||||||
|  |   // Maximum retry times for QCNL. If RETRY is not defined or set to 0, no retry will be performed. | ||||||
|  |   // It will first wait one second and then for all forthcoming retries it will double the waiting time. | ||||||
|  |   // By using retry_delay you disable this exponential backoff algorithm | ||||||
|  |   ,"retry_times": 6 | ||||||
|  | 
 | ||||||
|  |   // Sleep this amount of seconds before each retry when a transfer has failed with a transient error | ||||||
|  |   ,"retry_delay": 10 | ||||||
|  | 
 | ||||||
|  |   // If local_pck_url is defined, the QCNL will try to retrieve PCK cert chain from local_pck_url first, | ||||||
|  |   // and failover to pccs_url as in legacy mode. | ||||||
|  |   //,"local_pck_url": "http://localhost:8081/sgx/certification/v4/" | ||||||
|  | 
 | ||||||
|  |   // If local_pck_url is not defined, set pck_cache_expire_hours to a none-zero value will enable local cache.  | ||||||
|  |   // The PCK certificates will be cached in memory and then to the disk drive.  | ||||||
|  |   // ===== Important: Once the local cache files are created, currently there is no other way to clean them other | ||||||
|  |   //                  than to delete them manually, or wait for them to expire after "pck_cache_expire_hours" hours. | ||||||
|  |   //                  To delete the cache files manually, go to these foders: | ||||||
|  |   //                       Linux : $AZDCAP_CACHE, $XDG_CACHE_HOME, $HOME, $TMPDIR, /tmp/ | ||||||
|  |   //                       Windows : $AZDCAP_CACHE, $LOCALAPPDATA\..\..\LocalLow | ||||||
|  |   //                  If there is a folder called .dcap-qcnl, delete it. Restart the service after all cache  | ||||||
|  |   //                  folders were deleted. The same method applies to "verify_collateral_cache_expire_hours" | ||||||
|  |   ,"pck_cache_expire_hours": 168 | ||||||
|  | 
 | ||||||
|  |   // To set cache expire time for quote verification collateral in hours | ||||||
|  |   // See the above comment for pck_cache_expire_hours for more information on the local cache. | ||||||
|  |   ,"verify_collateral_cache_expire_hours": 168 | ||||||
|  | 
 | ||||||
|  |   // When the "local_cache_only" parameter is set to true, the QPL/QCNL will exclusively use PCK certificates  | ||||||
|  |   // from local cache files and will not request any PCK certificates from service providers, whether local or remote.  | ||||||
|  |   // To ensure that the PCK cache is available for use, an administrator must pre-populate the cache folders with  | ||||||
|  |   // the appropriate cache files. To generate these cache files for specific platforms, the administrator can use  | ||||||
|  |   // the PCCS admin tool. Once the cache files are generated, the administrator must distribute them to each platform  | ||||||
|  |   // that requires provisioning. | ||||||
|  |   ,"local_cache_only": false | ||||||
|  | 
 | ||||||
|  |   // You can add custom request headers and parameters to the get certificate API. | ||||||
|  |   // But the default PCCS implementation just ignores them.  | ||||||
|  |   //,"custom_request_options" : { | ||||||
|  |   //  "get_cert" : { | ||||||
|  |   //    "headers": { | ||||||
|  |   //      "head1": "value1" | ||||||
|  |   //    }, | ||||||
|  |   //    "params": { | ||||||
|  |   //      "param1": "value1", | ||||||
|  |   //      "param2": "value2" | ||||||
|  |   //    } | ||||||
|  |   //  } | ||||||
|  |   //} | ||||||
|  | } | ||||||
							
								
								
									
										0
									
								
								rewrite/scripts/package.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										0
									
								
								rewrite/scripts/package.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @ -2,23 +2,26 @@ | |||||||
| set -e | set -e | ||||||
| 
 | 
 | ||||||
| # WARNING: Build and package the hacker-challenge first, see README.md | # WARNING: Build and package the hacker-challenge first, see README.md | ||||||
|  | # TODO: check if scripts/challenge.tar.gz exists, if not tell to build first | ||||||
| 
 | 
 | ||||||
| script_dir=$(dirname "$0") | script_dir=$(dirname "$0") | ||||||
| cd "${script_dir}/.." | cd "${script_dir}/.." | ||||||
| 
 | 
 | ||||||
|  | rm -rf build && mkdir build | ||||||
|  | 
 | ||||||
| cp scripts/challenge.* build/ && cd build | cp scripts/challenge.* build/ && cd build | ||||||
| docker build -t hacker-challenge:latest . | docker build -f challenge.Dockerfile -t hacker-challenge:latest . | ||||||
| 
 | 
 | ||||||
| docker ps -a | grep 'hacker-challenge' | awk '{ print $NF }' | xargs docker rm -f || true | docker ps -a | grep 'hacker-challenge' | awk '{ print $NF }' | xargs docker rm -f || true | ||||||
| 
 | 
 | ||||||
| docker run -d --name "hacker-challenge_0" \ | docker run --device /dev/sgx/enclave --device /dev/sgx/provision -d --name "hacker-challenge_0" \ | ||||||
|   hacker-challenge:latest |   hacker-challenge:latest | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| cd "../${script_dir}/../../mint_sol" | cd "../${script_dir}/../../mint_sol" | ||||||
|  | # TODO: build the mint_sol as part of the build process | ||||||
| cargo build --release | cargo build --release | ||||||
| 
 | 
 | ||||||
| sleep 1 | sleep 3 | ||||||
| 
 | 
 | ||||||
| address=$(docker logs hacker-challenge_0 | grep 'SOL' | awk '{ print $NF }') | address=$(docker logs hacker-challenge_0 | grep 'SOL' | awk '{ print $NF }') | ||||||
| 
 | 
 | ||||||
| @ -35,11 +38,12 @@ done | |||||||
| # for i in {1..10} | # for i in {1..10} | ||||||
| for i in {11..20} | for i in {11..20} | ||||||
| do | do | ||||||
|   docker run -d --name "hacker-challenge_$i" -p 313${i}:31372 \ |   docker run --device /dev/sgx/enclave --device /dev/sgx/provision -d --name "hacker-challenge_$i" -p 313${i}:31372 \ | ||||||
|     --env INIT_NODES="172.17.0.2 172.17.0.3 172.17.0.4" \ |     --env INIT_NODES="172.17.0.2 172.17.0.3 172.17.0.4" \ | ||||||
|     hacker-challenge:latest |     hacker-challenge:latest | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
|  | sleep 3 | ||||||
| 
 | 
 | ||||||
| for i in {11..20} | for i in {11..20} | ||||||
| do | do | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user