mirror of https://github.com/kepler155c/opus
59 lines
1.3 KiB
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.geetPublicKey()
|
|
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
|