Size: a a a

2019 December 03

I

Igor725 in pro.lua
Yuriy Gorlichenko
Всем доброго дня. кто нить пользуется этой либой для openssl?
https://github.com/zhaozg/lua-openssl

ну могу понять как  спользовать aes-256-gcm
точнее не могу найти пример, мб есть у кого завалялся
Создаёшь объект через cipher.new("aes-256-gcm") инициализируешь объект функцией encrypt/decrypt и дальше дёргаешь шифрофункции, которые нужны update/final/... Если что-то не понятно, в любой момент можно заглянуть в исходники lua-openssl, в гугле найти пример работы с этим алгоритмом на Си и адаптировать код под Lua. Это не сложно, но я заниматься этим не сильно то и горю желанием, моё дело направить по верной дорожке. При самом говёном раскладе потратишь на это всё около часа, если не знаком с Lua C API и самим OpenSSL.
источник

YG

Yuriy Gorlichenko in pro.lua
Igor725
Создаёшь объект через cipher.new("aes-256-gcm") инициализируешь объект функцией encrypt/decrypt и дальше дёргаешь шифрофункции, которые нужны update/final/... Если что-то не понятно, в любой момент можно заглянуть в исходники lua-openssl, в гугле найти пример работы с этим алгоритмом на Си и адаптировать код под Lua. Это не сложно, но я заниматься этим не сильно то и горю желанием, моё дело направить по верной дорожке. При самом говёном раскладе потратишь на это всё около часа, если не знаком с Lua C API и самим OpenSSL.
да в том то и дело что я так и сделал. адаптировал Cишный encode
local C = cipher.get(key.as_rs_alg) 
local evp_cipher_ctx = C:encrypt_new()
evp_cipher_ctx:init(mac, key_realm)
local str = assert(evp_cipher_ctx:update(key.realm,true)) -- it fails here with UNKNOWN error
local str = assert(evp_cipher_ctx:update(key.ikm_key)) str = str..evp_cipher_ctx:final()
источник

YG

Yuriy Gorlichenko in pro.lua
если я переключаю alg на aes-256-cbc например - то все норм
источник

YG

Yuriy Gorlichenko in pro.lua
но это не тот метод который мне нуен
источник

YG

Yuriy Gorlichenko in pro.lua
По идее лист чиперов должен быть везде одинаоквый
источник

YG

Yuriy Gorlichenko in pro.lua
он  же экспортится из openssl либы
источник

I

Igor725 in pro.lua
Yuriy Gorlichenko
да в том то и дело что я так и сделал. адаптировал Cишный encode
local C = cipher.get(key.as_rs_alg) 
local evp_cipher_ctx = C:encrypt_new()
evp_cipher_ctx:init(mac, key_realm)
local str = assert(evp_cipher_ctx:update(key.realm,true)) -- it fails here with UNKNOWN error
local str = assert(evp_cipher_ctx:update(key.ikm_key)) str = str..evp_cipher_ctx:final()
Я с OpenSSL знаком только поверхностно, а с aes-256-gcm тем более. В чём может быть проблема я не знаю, могу только предложить поставить брейкпоинт в модуле lua-openssl на EVP_CipherUpdate и другие, посмотреть, что идёт в аргументы при вызовах. Так уж точно ошибка всплывёт.
источник

YG

Yuriy Gorlichenko in pro.lua
Igor725
Я с OpenSSL знаком только поверхностно, а с aes-256-gcm тем более. В чём может быть проблема я не знаю, могу только предложить поставить брейкпоинт в модуле lua-openssl на EVP_CipherUpdate и другие, посмотреть, что идёт в аргументы при вызовах. Так уж точно ошибка всплывёт.
Да понятно. Я просто спрашиваю  - думал мб кто уже поел этого за меня )
источник

I

Igor725 in pro.lua
Yuriy Gorlichenko
Да понятно. Я просто спрашиваю  - думал мб кто уже поел этого за меня )
Тут по openssl вообще мало отвечают, если отвечают вообще. Так что проще самому в обнимку с дебаггером посидеть
источник

AS

Anatoliy S in pro.lua
Yuriy Gorlichenko
Всем доброго дня. кто нить пользуется этой либой для openssl?
https://github.com/zhaozg/lua-openssl

ну могу понять как  спользовать aes-256-gcm
точнее не могу найти пример, мб есть у кого завалялся
Если там в описании к lua-openssl автор непривел такого примера, а там много примеров есть, то самый верный вариант - открыть issue там его репе и написать об этом, я ему уже так писал и автор отзывался
источник

YG

Yuriy Gorlichenko in pro.lua
Anatoliy S
Если там в описании к lua-openssl автор непривел такого примера, а там много примеров есть, то самый верный вариант - открыть issue там его репе и написать об этом, я ему уже так писал и автор отзывался
Да. Я открыл. Нашёл у себя косяк. Норм работает все)
источник

YG

Yuriy Gorlichenko in pro.lua
Но спасибо за отзыв
источник

MT

Monsieur Taishín in pro.lua
Добрый день. Как сделать такое правильно: Есть экран, на экране можно ловить координаты кликов. Хочу написать функцию чтобы она умела рисовать на экране и были сразу предопределены координаты. (чтобы не высчитывать руками).  Что родил:
function createBtn(x,y,w,h,txt) 
   html = [[<div style="position:absolute; top:]]..y..[[; left:]]..x..[[vw; width:]]..w..[[vw; height: ]]..h..[[vh">]]..text..[[</div>]]
   screen.setHTML(x,y,html)
   return {x=x,y=y,x1=w+x,y1=h+y}
end
btn1 = createBtn(1,1,2,2, "Hello")
btn2 = createBtn(5,4,2,2, "Hello")
----вызывается при нажатии
if x<btn1.x  and x<btn1.x1 and y > btn1.y and btn1.y1 then
   --do
end
--- и все другие функции  вызывать на остальные кнопки

Но кажется это не очень оптимальный код.
источник

ШТ

Шмель Тяжеловес in pro.lua
local buttons = {}
function createBtn(x,y,w,h,txt, handler)
   html = [[<div style="position:absolute; top:]]..y..[[; left:]]..x..[[vw; width:]]..w..[[vw; height: ]]..h..[[vh">]]..text..[[</div>]]
   screen.setHTML(x,y,html)
   buttons[buttons + 1] = {x=x,y=y,x1=w+x,y1=h+y, handler = handler}
end
createBtn(1,1,2,2, "Hello", function() end)
createBtn(5,4,2,2, "Hello", function() end)

for _, but in pairs(buttons) do
 if x<but.x  and x<but.x1 and y > but.y and but.y1 then
    but.handler()
 end
end
источник

ШТ

Шмель Тяжеловес in pro.lua
Если правильно понял что нужно
источник

MT

Monsieur Taishín in pro.lua
Шмель Тяжеловес
local buttons = {}
function createBtn(x,y,w,h,txt, handler)
   html = [[<div style="position:absolute; top:]]..y..[[; left:]]..x..[[vw; width:]]..w..[[vw; height: ]]..h..[[vh">]]..text..[[</div>]]
   screen.setHTML(x,y,html)
   buttons[buttons + 1] = {x=x,y=y,x1=w+x,y1=h+y, handler = handler}
end
createBtn(1,1,2,2, "Hello", function() end)
createBtn(5,4,2,2, "Hello", function() end)

for _, but in pairs(buttons) do
 if x<but.x  and x<but.x1 and y > but.y and but.y1 then
    but.handler()
 end
end
О! красивее моего решения выглядит. А если как модуль использовать?
источник

ШТ

Шмель Тяжеловес in pro.lua
-- buttons.lua
local buttons = {}
function createBtn(x,y,w,h,txt, handler)
   html = [[<div style="position:absolute; top:]]..y..[[; left:]]..x..[[vw; width:]]..w..[[vw; height: ]]..h..[[vh">]]..text..[[</div>]]
   screen.setHTML(x,y,html)
   buttons[buttons + 1] = {x=x,y=y,x1=w+x,y1=h+y, handler = handler}
end
for _, but in pairs(buttons) do
 if x<but.x  and x<but.x1 and y > but.y and but.y1 then
    but.handler()
 end
end
return { createBtn = createBtn }
-- other file
local createBtn = require "buttons".createBtn
createBtn(1,1,2,2, "Hello", function() end)
createBtn(5,4,2,2, "Hello", function() end)
источник

ШТ

Шмель Тяжеловес in pro.lua
Как один из вариантов
источник

MT

Monsieur Taishín in pro.lua
Шмель Тяжеловес
Как один из вариантов
Спасибо
источник

I

Igor725 in pro.lua
У таблицы buttons, кстати, как я понял, последовательные индексы, pairs можно не использовать, он помедленнее обычного цикла будет. Хоть внутри хендлера кнопки это не так уж и критично, но всё же
источник