Don't throw C++ exceptions into Rust

This commit is contained in:
Brian Bowman
2022-07-21 17:46:06 -05:00
parent 7659e9831a
commit aeaa7ef76c
3 changed files with 39 additions and 44 deletions

View File

@@ -53,7 +53,7 @@ bool gen_global_metadata_key(uint8_t* src, size_t srcn) {
return true;
}
extern "C" void decrypt_global_metadata(uint8_t *data, size_t size) {
void decrypt_global_metadata_inner(uint8_t *data, size_t size) {
uint8_t longkey[0xB00];
uint8_t longkeyp[0xB0];
uint8_t shortkey[16];
@@ -87,7 +87,16 @@ extern "C" void decrypt_global_metadata(uint8_t *data, size_t size) {
recrypt_global_metadata_header_string_literals(data, size, literal_dec_key);
}
extern "C" void encrypt_global_metadata(uint8_t* data, size_t size) {
extern "C" int decrypt_global_metadata(uint8_t *data, size_t size) {
try {
decrypt_global_metadata_inner(data, size);
return 0;
} catch (...) {
return -1;
}
}
void encrypt_global_metadata_inner(uint8_t* data, size_t size) {
uint8_t literal_dec_key[0x5000];
gen_global_metadata_key(data + size - 0x4000, 0x4000);
@@ -126,3 +135,12 @@ extern "C" void encrypt_global_metadata(uint8_t* data, size_t size) {
}
}
}
extern "C" int encrypt_global_metadata(uint8_t* data, size_t size) {
try {
encrypt_global_metadata_inner(data, size);
return 0;
} catch (...) {
return -1;
}
}