mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-01-18 19:47:15 +01:00
Implement a hashing function.
This commit is contained in:
parent
2a5dbb1c0d
commit
fe27504972
@ -58,7 +58,6 @@ add_library(SqModule MODULE SqBase.hpp Main.cpp
|
|||||||
Library/Chrono/Time.cpp Library/Chrono/Time.hpp
|
Library/Chrono/Time.cpp Library/Chrono/Time.hpp
|
||||||
Library/Chrono/Timer.cpp Library/Chrono/Timer.hpp
|
Library/Chrono/Timer.cpp Library/Chrono/Timer.hpp
|
||||||
Library/Chrono/Timestamp.cpp Library/Chrono/Timestamp.hpp
|
Library/Chrono/Timestamp.cpp Library/Chrono/Timestamp.hpp
|
||||||
Library/Crypt.cpp Library/Crypt.hpp
|
|
||||||
Library/CURL.cpp Library/CURL.hpp
|
Library/CURL.cpp Library/CURL.hpp
|
||||||
Library/IO.cpp Library/IO.hpp
|
Library/IO.cpp Library/IO.hpp
|
||||||
Library/IO/Buffer.cpp Library/IO/Buffer.hpp
|
Library/IO/Buffer.cpp Library/IO/Buffer.hpp
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
// ------------------------------------------------------------------------------------------------
|
|
||||||
#include "Library/Crypt.hpp"
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
|
||||||
namespace SqMod {
|
|
||||||
|
|
||||||
// ================================================================================================
|
|
||||||
void Register_Crypt(HSQUIRRELVM vm)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} // Namespace:: SqMod
|
|
@ -1,9 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
|
||||||
#include "Core/Common.hpp"
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
|
||||||
namespace SqMod {
|
|
||||||
|
|
||||||
} // Namespace:: SqMod
|
|
@ -6,12 +6,50 @@ namespace SqMod {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
static SQInteger SqGetHash(HSQUIRRELVM vm)
|
||||||
|
{
|
||||||
|
// Attempt to retrieve the digest from the stack as a string
|
||||||
|
StackStrF dig(vm, 2);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(dig.Proc(false)))
|
||||||
|
{
|
||||||
|
return dig.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Attempt to retrieve the value from the stack as a string
|
||||||
|
StackStrF val(vm, 3);
|
||||||
|
// Have we failed to retrieve the string?
|
||||||
|
if (SQ_FAILED(val.Proc(true)))
|
||||||
|
{
|
||||||
|
return val.mRes; // Propagate the error!
|
||||||
|
}
|
||||||
|
// Prevent any exceptions from reach the VM
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Create the digest engine instance
|
||||||
|
Poco::Crypto::DigestEngine dg(dig.ToStr());
|
||||||
|
// Attempt to digest the given value
|
||||||
|
dg.update(val.mPtr, static_cast< size_t >(val.mLen));
|
||||||
|
// Retrieve the data as hex string
|
||||||
|
std::string hex = Poco::Crypto::DigestEngine::digestToHex(dg.digest());
|
||||||
|
// Push the result on the stack
|
||||||
|
Var< String >::push(vm, hex);
|
||||||
|
}
|
||||||
|
catch (const std::exception & e)
|
||||||
|
{
|
||||||
|
return sq_throwerrorf(vm, _SC("Failed to hash: %s"), e.what());
|
||||||
|
}
|
||||||
|
// At this point we have a valid string on the stack
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
void Register_POCO_Crypto(HSQUIRRELVM vm)
|
void Register_POCO_Crypto(HSQUIRRELVM vm)
|
||||||
{
|
{
|
||||||
Table ns(vm);
|
Table ns(vm);
|
||||||
|
|
||||||
|
ns.SquirrelFunc(_SC("Hash"), &SqGetHash);
|
||||||
|
|
||||||
RootTable(vm).Bind(_SC("SqCrypto"), ns);
|
RootTable(vm).Bind(_SC("SqCrypto"), ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
#include "Core/Common.hpp"
|
#include "Core/Common.hpp"
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
#include "Poco/Crypto/DigestEngine.h"
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
namespace SqMod {
|
namespace SqMod {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // Namespace:: SqMod
|
} // Namespace:: SqMod
|
||||||
|
@ -32,7 +32,6 @@ extern void Register_CVehicle(HSQUIRRELVM vm);
|
|||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
extern void Register_Chrono(HSQUIRRELVM vm);
|
extern void Register_Chrono(HSQUIRRELVM vm);
|
||||||
extern void Register_Crypt(HSQUIRRELVM vm);
|
|
||||||
extern void Register_CURL(HSQUIRRELVM vm);
|
extern void Register_CURL(HSQUIRRELVM vm);
|
||||||
extern void Register_IO(HSQUIRRELVM vm);
|
extern void Register_IO(HSQUIRRELVM vm);
|
||||||
extern void Register_Job(HSQUIRRELVM vm);
|
extern void Register_Job(HSQUIRRELVM vm);
|
||||||
@ -48,6 +47,7 @@ extern void Register_Worker(HSQUIRRELVM vm);
|
|||||||
extern void Register_Web(HSQUIRRELVM vm);
|
extern void Register_Web(HSQUIRRELVM vm);
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
extern void Register_POCO_Crypto(HSQUIRRELVM vm);
|
||||||
extern void Register_POCO_Data(HSQUIRRELVM vm);
|
extern void Register_POCO_Data(HSQUIRRELVM vm);
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
@ -89,7 +89,6 @@ bool RegisterAPI(HSQUIRRELVM vm)
|
|||||||
Register_CVehicle(vm);
|
Register_CVehicle(vm);
|
||||||
|
|
||||||
Register_Chrono(vm);
|
Register_Chrono(vm);
|
||||||
Register_Crypt(vm);
|
|
||||||
Register_CURL(vm);
|
Register_CURL(vm);
|
||||||
Register_IO(vm);
|
Register_IO(vm);
|
||||||
//Register_Job(vm);
|
//Register_Job(vm);
|
||||||
@ -104,6 +103,7 @@ bool RegisterAPI(HSQUIRRELVM vm)
|
|||||||
//Register_Worker(vm);
|
//Register_Worker(vm);
|
||||||
//Register_Web(vm);
|
//Register_Web(vm);
|
||||||
|
|
||||||
|
Register_POCO_Crypto(vm);
|
||||||
Register_POCO_Data(vm);
|
Register_POCO_Data(vm);
|
||||||
|
|
||||||
Register_Constants(vm);
|
Register_Constants(vm);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user