Enclave.edl 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. enclave {
  2. include "stdbool.h"
  3. include "sgx_tcrypto.h"
  4. include "sgx_tseal.h"
  5. include "../Enclave/enclave_api.h"
  6. from "sgx_pthread.edl" import *;
  7. from "sgx_tstdc.edl" import sgx_thread_wait_untrusted_event_ocall, sgx_thread_set_untrusted_event_ocall, sgx_thread_setwait_untrusted_events_ocall, sgx_thread_set_multiple_untrusted_events_ocall;
  8. trusted {
  9. public void ecall_identity_key_new(
  10. [out] sgx_ec256_public_t *outpub,
  11. [out,size=610] sgx_sealed_data_t *outsealedpriv);
  12. public bool ecall_identity_key_load(
  13. [out] sgx_ec256_public_t *outpub,
  14. [in,size=610] const sgx_sealed_data_t *insealedpriv);
  15. public bool ecall_config_load(
  16. threadid_t nthreads,
  17. [in] struct EnclaveAPIParams *apiparams,
  18. [in,count=num_nodes] struct EnclaveAPINodeConfig *apinodeconfigs,
  19. nodenum_t num_nodes, nodenum_t my_node_num);
  20. public void ecall_close();
  21. public bool ecall_comms_start(
  22. [user_check]void *cbpointer);
  23. public bool ecall_message(
  24. nodenum_t node_num, uint32_t message_len);
  25. public bool ecall_chunk(
  26. nodenum_t node_num,
  27. [user_check] const uint8_t *chunkdata,
  28. uint32_t chunklen);
  29. public size_t ecall_precompute_sort(int sizeidx);
  30. public bool ecall_ingest_raw(
  31. [user_check] uint8_t *msgs,
  32. uint32_t num_msgs);
  33. public void ecall_routing_proceed(
  34. [user_check]void *cbpointer);
  35. public bool ecall_ingest_msgbundle(clientid_t cid,
  36. [user_check] uint8_t *msgbundle,
  37. uint32_t num_msgs);
  38. public bool ecall_ingestion_authenticate(clientid_t cid,
  39. [user_check] uint8_t *auth_string);
  40. public bool ecall_storage_authenticate(clientid_t cid,
  41. [user_check] uint8_t *auth_string);
  42. public void ecall_supply_storage_buffers(
  43. [user_check] unsigned char *mailboxes,
  44. uint32_t mailboxes_size,
  45. [user_check] unsigned char *tokens,
  46. uint32_t tokens_size);
  47. };
  48. untrusted {
  49. void ocall_print_string(
  50. [in, string] const char *str);
  51. unsigned long ocall_print_string_with_rtclock(
  52. [in, string] const char *str);
  53. unsigned long ocall_print_string_with_rtclock_diff(
  54. [in, string] const char *str, unsigned long before);
  55. uint8_t *ocall_message(
  56. nodenum_t node_num, uint32_t message_len);
  57. uint8_t *ocall_chunk(
  58. nodenum_t node_num,
  59. [user_check] uint8_t *chunkdata,
  60. uint32_t chunklen);
  61. void ocall_comms_ready(
  62. [user_check] void *cbpointer);
  63. void ocall_routing_round_complete(
  64. [user_check] void *cbpointer,
  65. uint32_t round_num);
  66. };
  67. };