Size: a a a

2019 October 24

Д

Дмитрий in pro.lua
Totiks Vlad
учту и это. буду ходить ща возбужденым по магазу. и шеф будет удивлятся что со мной. я два дня не мог понять что тут не так
Кто в школе
источник

AS

Anatoliy S in pro.lua
Но в итоге нужны потому что одно тянет за собой другое
источник

I

Igor725 in pro.lua
У тебя получится 2 динамики на выходе
источник

Д

Дмитрий in pro.lua
кто в школе ща
источник

I

Igor725 in pro.lua
libcrypto, и твоя библиотека на Lua, у которой этот самый libcrypto будет в зависимостях
источник

AS

Anatoliy S in pro.lua
Вот код:
// Hm512.cpp: определяет экспортированные функции для приложения DLL.
//

#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <iostream>
#include "hmac_sha512.hpp"
#include <ctime>
#include <cassert>
#include <string>
#include <map>




#define LUA_LIB
#define LUA_BUILD_AS_DLL


extern "C" {

#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <luaconf.h>
//#include <compat-5.3.h>
}


//
// Пример простой библиотеки на C++ для вызова ее из LUA
// http://quik2dde.ru/viewtopic.php?id=18
//



// в случае вызова функций из LUA-кода во внешней DLL
// необходимо определить эти константы до подключения заголовочных файлов LUA




BOOL APIENTRY Hm512(HMODULE hModule,
 DWORD  ul_reason_for_call,
 LPVOID lpReserved
)
{
 switch (ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:
 case DLL_THREAD_ATTACH:
 case DLL_THREAD_DETACH:
 case DLL_PROCESS_DETACH:
   break;
 }
 return TRUE;
}


static int forLua_Hmacsha512(lua_State *L) {

 const std::size_t l = 0;
 std::string secret = luaL_checklstring(L, 1, l);
 std::string params = luaL_checklstring(L, 2, l);

 HMAC_SHA512 hmac_sha512(secret, params);
 std::string d = hmac_sha512.hex_digest();

 lua_pushstring(L, d.c_str());

 return(1);
}


static struct luaL_reg ls_lib[] = { { "Hm512", forLua_Hmacsha512 }, { NULL, NULL }};

extern "C" LUALIB_API int luaopen_Hm512(lua_State *L) {
 luaL_openlib(L, "Hm512", ls_lib, 0);
 return 0;
}
источник

AS

Anatoliy S in pro.lua
Эта библиотека принимает в качестве аргумента любую строку и возвращает мне её хэш по алгоритмам Hmac - Sha512
источник

AS

Anatoliy S in pro.lua
hmac_sha512.hpp :

#ifndef HMAC_SHA512_HPP
#define HMAC_SHA512_HPP

#include <openssl/hmac.h>
#include <string>
#include <vector>

class HMAC_SHA512 {
public:
 HMAC_SHA512(const std::string& key, const std::string& msg) {
   HMAC_CTX ctx;
   HMAC_CTX_init(&ctx);

   // Set HMAC key.
   HMAC_Init_ex(&ctx, reinterpret_cast<const unsigned char*>(key.c_str()), key.size(), EVP_sha512(), NULL);

   // May be called repeatedly to insert all your data.
   HMAC_Update(&ctx, reinterpret_cast<const unsigned char*>(msg.c_str()), msg.size());

   // Finish HMAC computation and fetch result.
   unsigned char* result = new unsigned char[129];
   unsigned int result_len = 129;
   HMAC_Final(&ctx, result, &result_len);
   for (unsigned int i = 0; i < result_len; i++) {
     digest_.push_back(int(result[i]));
   }
   HMAC_CTX_cleanup(&ctx);
 }

 std::string hex_digest() {
   std::string str;
   const char hex_chars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
   for (auto i : digest_) {
     const char byte = i;
     str.push_back(hex_chars[(byte & 0xF0) >> 4]);
     str.push_back(hex_chars[(byte & 0x0F) >> 0]);
   }
   return str;
 }

private:
 std::vector<unsigned char> digest_;
};

#endif // HMAC_SHA512_HPP


Hmac_sha512.hpp подключает за собой hmac.h и дальше пошло поехало
источник

AS

Anatoliy S in pro.lua
Вообщем я бы мог тебе файлики эти кинуть может у тебя и получится что, а то у меня уже от Сишки крыша поехала, мне проще на луа с нуля все это написать ))))))))
источник

AS

Anatoliy S in pro.lua
источник

AS

Anatoliy S in pro.lua
источник

I

Igor725 in pro.lua
Карочи
источник

I

Igor725 in pro.lua
Кинь сразу проект весь
источник

I

Igor725 in pro.lua
Вместе с VS файлом
источник

I

Igor725 in pro.lua
Мне быстрее поправить самому
источник

I

Igor725 in pro.lua
Пока я дома
источник

AS

Anatoliy S in pro.lua
Да толку то от проекта, проект ты и сам можешь сделать, ладно сейчас кину, только тебе придется в папку инклюд которая в визуал студио по умолчанию установлена установить все хедеры опенссл, но ты их можешь и в проект закинуть и просто на них проекту указать, сейчас все кину и проект и хедеры
источник

I

Igor725 in pro.lua
Я проект уже настроенный тебе обратно скину
источник

I

Igor725 in pro.lua
Так, минут через 20 кину
источник

I

Igor725 in pro.lua
Если что у меня 14ой студии нет, я проект до 16ой проапгрейдил, там потом поменяешь тулсет
источник