diff --git a/apps/users.lua b/apps/users.lua index 02bfd42..b065a39 100644 --- a/apps/users.lua +++ b/apps/users.lua @@ -5,7 +5,7 @@ local constants = require("constants") local util = require("util") -local bcrypt = require("bcrypt") +local auth = require("lib.auth") local rand = require("openssl.rand") local models = require("models") @@ -14,7 +14,7 @@ local Sessions = models.Sessions local Avatars = models.Avatars local function authenticate_user(user, password) - return bcrypt.verify(password, user.password_hash) + return auth.verify(password, user.password_hash) end local function create_session_key() @@ -321,7 +321,7 @@ app:post("user_signup", "/signup", function(self) local new_user = Users:create({ username = username, - password_hash = bcrypt.digest(password, constants.BCRYPT_ROUNDS), + password_hash = auth.digest(password), permission = constants.PermissionLevel.GUEST, }) diff --git a/create_default_accounts.lua b/create_default_accounts.lua index 318bbff..184bf64 100644 --- a/create_default_accounts.lua +++ b/create_default_accounts.lua @@ -1,4 +1,4 @@ -local bcrypt = require("bcrypt") +local auth = require("lib.auth") local models = require("models") local constants = require("constants") @@ -29,7 +29,7 @@ local function create_admin() password = password .. alphabet:sub(randi, randi) end - local hash = bcrypt.digest(password, constants.BCRYPT_ROUNDS) + local hash = auth.digest(password) models.Users:create({ username = username, diff --git a/lib/auth.lua b/lib/auth.lua new file mode 100644 index 0000000..d724082 --- /dev/null +++ b/lib/auth.lua @@ -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 diff --git a/porom-dev-1.rockspec b/porom-dev-1.rockspec index e82d4e1..a794dc3 100644 --- a/porom-dev-1.rockspec +++ b/porom-dev-1.rockspec @@ -16,7 +16,7 @@ dependencies = { "lapis == 1.16.0", "lsqlite3", "magick", - "bcrypt", + "luasodium", "luaossl", } diff --git a/start.sh b/start.sh index e2558ed..6cb5f48 100755 --- a/start.sh +++ b/start.sh @@ -7,9 +7,9 @@ start() { first_launch() { echo "Setting up for the first time" touch ".first_launch.$LAPIS_ENVIRONMENT" - lua5.1 schema.lua + luajit schema.lua lapis migrate - lua5.1 create_default_accounts.lua + luajit create_default_accounts.lua } if [[ $# -ne 1 ]]; then