diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2025-11-11 00:00:43 -0300 |
|---|---|---|
| committer | Marcos Magueta <maguetamarcos@gmail.com> | 2025-11-11 00:00:43 -0300 |
| commit | 3063608df6ff1668f683d9d22c57fea29d728d0d (patch) | |
| tree | 36be7f6c6d901c5984c045d4ce823bd24c37e9af /shared/librelational_engine/library.cpp | |
| parent | b5dbdaa989a86477669aac0bf342029e1d2b6028 (diff) | |
| download | Sakura-3063608df6ff1668f683d9d22c57fea29d728d0d.tar.gz Sakura-3063608df6ff1668f683d9d22c57fea29d728d0d.zip | |
migrating to erlang to attach to mnesia
Diffstat (limited to '')
| -rw-r--r-- | shared/librelational_engine/library.cpp | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/shared/librelational_engine/library.cpp b/shared/librelational_engine/library.cpp deleted file mode 100644 index cab8f93..0000000 --- a/shared/librelational_engine/library.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include <iostream> -#include <merklecpp.h> -#include <openssl/sha.h> -#include <iomanip> -#include <fstream> -#include <iterator> - -#include <sys/stat.h> - -std::vector<uint8_t> read_tree(const char* tree_path) { - std::ifstream file(tree_path, std::ios::binary); - file.unsetf(std::ios::skipws); - file.seekg(0, std::ios::end); - const std::streampos file_size = file.tellg(); - file.seekg(0, std::ios::beg); - std::vector<uint8_t> v; - v.reserve(file_size); - v.insert(v.begin(), std::istream_iterator<uint8_t>(file), std::istream_iterator<uint8_t>()); - return v; -} - -void write_tree(const char* tree_path, const std::vector<uint8_t>& serialized_tree) { - std::ofstream out(tree_path, std::ios::out | std::ios::binary); - out.write(reinterpret_cast<const char*>(serialized_tree.data()), serialized_tree.size()); - out.close(); -} - -extern "C" { -#include "library.h" - extern void register_to_merkle(const char* tree_path, const char* computed_hash) { - struct stat st; - if (stat(tree_path, &st) == 0) { - const std::vector<uint8_t> tree_bytes = read_tree(tree_path); - merkle::Tree tree; - tree.deserialise(tree_bytes); - const merkle::Tree::Hash hash(computed_hash); - tree.insert(hash); - std::vector<uint8_t> target; - tree.serialise(target); - write_tree(tree_path, target); - } else { - merkle::Tree::Hash hash(computed_hash); - merkle::Tree tree; - tree.insert(hash); - std::vector<uint8_t> target; - tree.serialise(target); - write_tree(tree_path, target); - } - } - extern void merkle_generate_root(char** hashes, const int n, char* root) { - merkle::Tree tree; - for (int i = 0; i < n; i++){ - tree.insert(merkle::Hash(hashes[i])); - } - std::memcpy(root, tree.root().to_string().c_str(), HASH_SIZE); - } - extern void compute_hash(char* computed_hash, const char *content) { - - unsigned char hash[SHA256_DIGEST_LENGTH]; - SHA256_CTX sha256; - SHA256_Init(&sha256); - SHA256_Update(&sha256, content, sizeof(content)); - SHA256_Final(hash, &sha256); - std::stringstream ss; - for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) - ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(hash[i]); - - std::memcpy(computed_hash, ss.str().c_str(), HASH_SIZE); - // std::cout << "⚙️ COMPUTED HASH: " << computed_hash << std::endl; - } - - extern int trash() { return 100; } -} |
