diff options
author | sappho <sappho@sappho.io> | 2023-07-14 07:19:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-14 07:19:14 -0400 |
commit | 7b92e4acf6dea29348efeb4c0cc89e3071aee56e (patch) | |
tree | 069032a9c6eb3ccc8f0089d8bbbb9ffe8ccacdd3 /extension/opensslthread.cpp | |
parent | 581d1e994692f9ce4e5d8071e8edba1e71412bac (diff) |
ci fixes and repo cleanup + small tweaks and first release (#2)v2.0.0-beta
* Update docker_build.yml
* Update docker_build.yml
* Update docker_build.yml
* attempt to lint
* use tags
* Update docker_build.yml
* reorganize repo
* correct typo with build dir
* hacky chmod/chown for docker builds
* more hacks for chmod
* try to hack docker to work again
* fix invalid syntax
* remove extension in repo, remove spaces, fixup gitignore
* twiddle around with making releases with commits
* more ci testing to use non deprecated actions
* Update docker_build.yml
* more ci twiddling (ugh)
* more lint and run the actual job now
* lint more and use deb slim
* autogen rel notes (?)
* fixup bad quotes
* sigh. fix quotes again
* save beta autotagging for a later date
* gitignore
* fix so users don't use removed hash funcs
* add max dbg info to ext
* update versionings
Diffstat (limited to 'extension/opensslthread.cpp')
-rw-r--r-- | extension/opensslthread.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/extension/opensslthread.cpp b/extension/opensslthread.cpp new file mode 100644 index 0000000..84e2286 --- /dev/null +++ b/extension/opensslthread.cpp @@ -0,0 +1,100 @@ +#include "opensslthread.h" + + +OpensslThread::OpensslThread(void *_data, OpensslThread_Type _type): +type(_type),data(_data) +{ + assert((type > OpensslThread_Type_NOTHING && type < OpensslThread_Type_LAST)); + assert((data != NULL)); +} + + +OpensslThread::~OpensslThread() +{ + +} + +static void openssl_hash_FramAction(void *data) +{ + if(data == NULL) + return; + + Openssl_Hash_pack *handle = (Openssl_Hash_pack *)data; + + IPluginFunction *pFunc = handle->hash_callback; + assert((pFunc != NULL)); + if(pFunc != NULL) + { + pFunc->PushCell(handle->success); + if(handle->output == NULL) + pFunc->PushString(""); + else + pFunc->PushString(handle->output); + pFunc->PushCell(handle->UserData); + pFunc->Execute(NULL); + } + + if(handle->output != NULL) + delete handle->output; + if(handle->path != NULL) + delete handle->path; + delete handle; +} + +void OpensslThread::RunFileHash() +{ + Openssl_Hash_pack *handle = (Openssl_Hash_pack *)data; + handle->success = false; + + assert((handle->path != NULL)); + + char realpath[PLATFORM_MAX_PATH]; + g_pSM->BuildPath(Path_Game, realpath, sizeof(realpath), "%s", handle->path); + FILE *pFile = fopen(realpath, "rb"); + if(!pFile) + return; + + unsigned char *output = NULL; + int outlength; + + if(!g_OpensslManager.HashFile(handle->algorithm, pFile, &output, &outlength)) + goto clean; + + assert((output != NULL)); + if(output != NULL) + { + handle->output = new char[outlength*2+1]; + int pos = 0; + for(int i=0; i<outlength; i++) + { + sprintf(&handle->output[pos],"%02x",(unsigned char)output[i]); + pos+=2; + } + handle->success = true; + } + +clean: + if(output != NULL) + delete output; + + fclose(pFile); +} + +void OpensslThread::RunThread(IThreadHandle *pHandle) +{ + if(type == OpensslThread_Type_HASH_FILE) + { + RunFileHash(); + } +} + +void OpensslThread::OnTerminate(IThreadHandle *pHandle, bool cancel) +{ + if(type == OpensslThread_Type_HASH_FILE) + { + smutils->AddFrameAction(openssl_hash_FramAction, data); + } + + delete this; +} + |