argon2 experiment

This commit is contained in:
Lera Elvoé 2025-05-22 22:29:58 +03:00
parent 74a0ae5027
commit ddad153875
Signed by: yagich
SSH Key Fingerprint: SHA256:6xjGb6uA7lAVcULa7byPEN//rQ0wPoG+UzYVMfZnbvc
5 changed files with 24 additions and 8 deletions

View File

@ -5,7 +5,7 @@ local constants = require("constants")
local util = require("util") local util = require("util")
local bcrypt = require("bcrypt") local auth = require("lib.auth")
local rand = require("openssl.rand") local rand = require("openssl.rand")
local models = require("models") local models = require("models")
@ -14,7 +14,7 @@ local Sessions = models.Sessions
local Avatars = models.Avatars local Avatars = models.Avatars
local function authenticate_user(user, password) local function authenticate_user(user, password)
return bcrypt.verify(password, user.password_hash) return auth.verify(password, user.password_hash)
end end
local function create_session_key() local function create_session_key()
@ -321,7 +321,7 @@ app:post("user_signup", "/signup", function(self)
local new_user = Users:create({ local new_user = Users:create({
username = username, username = username,
password_hash = bcrypt.digest(password, constants.BCRYPT_ROUNDS), password_hash = auth.digest(password),
permission = constants.PermissionLevel.GUEST, permission = constants.PermissionLevel.GUEST,
}) })

View File

@ -1,4 +1,4 @@
local bcrypt = require("bcrypt") local auth = require("lib.auth")
local models = require("models") local models = require("models")
local constants = require("constants") local constants = require("constants")
@ -29,7 +29,7 @@ local function create_admin()
password = password .. alphabet:sub(randi, randi) password = password .. alphabet:sub(randi, randi)
end end
local hash = bcrypt.digest(password, constants.BCRYPT_ROUNDS) local hash = auth.digest(password)
models.Users:create({ models.Users:create({
username = username, username = username,

16
lib/auth.lua Normal file
View File

@ -0,0 +1,16 @@
local auth = {}
local ls = require "luasodium"
function auth.digest(password)
return ls.crypto_pwhash_str(
password,
ls.crypto_pwhash_OPSLIMIT_INTERACTIVE,
ls.crypto_pwhash_MEMLIMIT_INTERACTIVE)
end
function auth.verify(password, hash)
return ls.crypto_pwhash_str_verify(hash, password)
end
return auth

View File

@ -16,7 +16,7 @@ dependencies = {
"lapis == 1.16.0", "lapis == 1.16.0",
"lsqlite3", "lsqlite3",
"magick", "magick",
"bcrypt", "luasodium",
"luaossl", "luaossl",
} }

View File

@ -7,9 +7,9 @@ start() {
first_launch() { first_launch() {
echo "Setting up for the first time" echo "Setting up for the first time"
touch ".first_launch.$LAPIS_ENVIRONMENT" touch ".first_launch.$LAPIS_ENVIRONMENT"
lua5.1 schema.lua luajit schema.lua
lapis migrate lapis migrate
lua5.1 create_default_accounts.lua luajit create_default_accounts.lua
} }
if [[ $# -ne 1 ]]; then if [[ $# -ne 1 ]]; then