mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-11 07:10:36 +00:00
871c3e3281
* wintun vpn platform for windows * bundle config snippets into nsis installer for exit node, keyfile persisting, reduced hops mode. * use wintun for vpn platform * isolate all windows platform specific code into their own compilation units and libraries * split up internal libraries into more specific components * rename liblokinet.a target to liblokinet-amalgum.a to elimiate ambiguity with liblokinet.so * DNS platform for win32 * rename llarp/ev/ev_libuv.{c,h}pp to llarp/ev/libuv.{c,h}pp as the old name was idiotic * split up net platform into win32 and posix specific compilation units * rename lokinet_init.c to easter_eggs.cpp as that is what they are for and it does not need to be a c compilation target * add cmake option STRIP_SYMBOLS for seperating out debug symbols for windows builds * intercept dns traffic on all interfaces on windows using windivert and feed it into lokinet
28 lines
798 B
C++
28 lines
798 B
C++
#pragma once
|
|
|
|
#include <llarp/crypto/crypto.hpp>
|
|
#include <windows.h>
|
|
#include <type_traits>
|
|
|
|
namespace llarp::win32
|
|
{
|
|
/// @brief given a container of data hash it and make it into a GUID so we have a way to
|
|
/// deterministically generate GUIDs
|
|
template <typename Data>
|
|
inline GUID
|
|
MakeDeterministicGUID(Data data)
|
|
{
|
|
ShortHash h{};
|
|
auto hash = [&h](auto data) { CryptoManager::instance()->shorthash(h, data); };
|
|
|
|
if constexpr (std::is_same_v<Data, std::string>)
|
|
hash(llarp_buffer_t{reinterpret_cast<const byte_t*>(data.data()), data.size()});
|
|
else
|
|
hash(llarp_buffer_t{data});
|
|
GUID guid{};
|
|
std::copy_n(
|
|
h.begin(), std::min(sizeof(GUID), sizeof(ShortHash)), reinterpret_cast<uint8_t*>(&guid));
|
|
return guid;
|
|
}
|
|
} // namespace llarp::win32
|