opus/sys/modules/opus/security.lua

59 lines
1.3 KiB
Lua

local Config = require('opus.config')
local Util = require('opus.util')
local ECC = require('opus.crypto.ecc')
local Security = { }
function Security.verifyPassword(password)
local current = Security.getPassword()
return current and password == current
end
function Security.hasPassword()
return not not Security.getPassword()
end
local function genKey()
local key = { }
for _ = 1, 32 do
table.insert(key, ("%02x"):format(math.random(0, 0xFF)))
end
return table.concat(key)
end
function Security.generateKeyPair()
local privateKey = Util.hexToByteArray(genKey())
return privateKey, ECC.publicKey(privateKey)
end
function Security.getIdentifier()
return Security.getPublicKey()
end
-- deprecate - will use getIdentifier
function Security.getSecretKey()
local config = Config.load('os')
if not config.secretKey then
config.secretKey = genKey()
Config.update('os', config)
end
return Util.hexToByteArray(config.secretKey)
end
function Security.getPublicKey()
local secretKey = Security.getSecretKey()
return ECC.publicKey(secretKey)
end
function Security.updatePassword(password)
local config = Config.load('os')
config.password = password
Config.update('os', config)
end
function Security.getPassword()
return Config.load('os').password
end
return Security