Decryptor.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include <map>
  2. #include "ECDSASignatureBox.h"
  3. #include "HybridEncryptionBox.h"
  4. #include "LocalAttestationTrusted.h"
  5. class Decryptor {
  6. static ECDSASignatureBox signatureBox;
  7. static HybridEncryptionBox hybridEncryptionBoxClient;
  8. // static LocalAttestationTrusted localAttestation;
  9. static uint8_t verifier_mr_enclave[32]; // = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  10. static SymmetricEncryptionBox symmetricEncryptionBoxApache;
  11. static SymmetricEncryptionBox symmetricEncryptionBoxVerifier;
  12. static uint8_t apache_mr_signer[32]; // = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  13. static uint32_t create_mitigator_token_M(uint8_t* token);
  14. static uint32_t create_mitigator_header_H(uint8_t* signature_data, uint8_t* signature);
  15. static uint32_t create_long_term_signing_keypair(uint8_t* private_public_key_string);
  16. static uint32_t initialize_symmetric_key_decrypt_client_data(uint8_t* plaintext_client_public_key_plus_encrypted_data_plus_tag, uint32_t total_length, uint8_t* plaintext_client_data, uint32_t* plaintext_client_data_length);
  17. public:
  18. static void calculate_sealed_keypair_size(uint32_t* output_length);
  19. static uint32_t verify_peer_enclave_trust(uint8_t* given_mr_enclave, uint8_t* given_mr_signer, uint8_t* dhaek);
  20. static uint32_t create_and_seal_long_term_signing_key_pair(uint32_t* sealed_data_length, uint8_t* sealed_data);
  21. static uint32_t create_and_encrypt_mitigator_header_H(uint8_t* ciphertext_token_H_plus_tag);
  22. static uint32_t unseal_and_restore_long_term_signing_key_pair(uint8_t* sealed_data, uint32_t* sgx_sealed_data_length);
  23. static uint32_t decrypt_verifiers_message_set_apache_mrsigner(uint8_t* ciphertext_plus_tag);
  24. static uint32_t process_apache_message_generate_response(uint8_t* input_ciphertext, uint32_t input_ciphertext_plus_tag_length, uint8_t* output_ciphertext, uint32_t* output_ciphertext_plus_tag_length);
  25. };
  26. //ECDSASignatureBox Decryptor::signatureBox();
  27. //HybridEncryptionBox Decryptor::hybridEncryptionBoxClient();
  28. //SymmetricEncryptionBox Decryptor::symmetricEncryptionBoxApache();
  29. //SymmetricEncryptionBox Decryptor::symmetricEncryptionBoxVerifier();
  30. //uint8_t Decryptor::verifier_mr_enclave = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  31. //uint8_t Decryptor::apache_mr_signer = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};