adds .local/share/millennium and easyeffects
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
-- HMAC Context for computing MACs on Chrome preferences
|
||||
|
||||
local logger = require("logger")
|
||||
local json_helpers = require("install_extension.json_helpers")
|
||||
local sha2 = require("install_extension.sha2")
|
||||
|
||||
---@class HmacContext
|
||||
---@field sid string
|
||||
---@field seed_hex string
|
||||
---@field seed_bytes string
|
||||
local HmacContext = {}
|
||||
HmacContext.__index = HmacContext
|
||||
|
||||
---@param sid string
|
||||
---@param seed_hex string
|
||||
---@return HmacContext
|
||||
function HmacContext.new(sid, seed_hex)
|
||||
local self = setmetatable({}, HmacContext)
|
||||
self.sid = sid or ""
|
||||
self.seed_hex = seed_hex or "" -- Empty for Steam CEF
|
||||
self.seed_bytes = sha2.hex_to_bin(seed_hex or "")
|
||||
return self
|
||||
end
|
||||
|
||||
---@param json_path string
|
||||
---@param value any
|
||||
---@return string|nil
|
||||
function HmacContext:compute_mac(json_path, value)
|
||||
local cleaned = json_helpers.remove_empty_children(value)
|
||||
-- Use sorted JSON for consistent key ordering (must match JS JSON.stringify)
|
||||
local json_value = json_helpers.encode_sorted(cleaned)
|
||||
json_value = json_helpers.escape_for_hmac(json_value)
|
||||
|
||||
local message = self.sid .. json_path .. json_value
|
||||
logger:info("[install] Computing MAC for path: " .. json_path)
|
||||
logger:info("[install] Message length: " .. #message)
|
||||
logger:info("[install] JSON preview: " .. json_value:sub(1, 100) .. "...")
|
||||
|
||||
local mac = string.upper(sha2.hmac(sha2.sha256, self.seed_bytes, message))
|
||||
if mac then
|
||||
logger:info("[install] MAC: " .. mac:sub(1, 16) .. "...")
|
||||
else
|
||||
logger:error("[install] MAC computation returned nil!")
|
||||
end
|
||||
return mac
|
||||
end
|
||||
|
||||
---@param macs table
|
||||
---@return string|nil
|
||||
function HmacContext:compute_super_mac(macs)
|
||||
-- Use sorted JSON for consistent key ordering
|
||||
local macs_json = json_helpers.encode_sorted(macs)
|
||||
local message = self.sid .. macs_json
|
||||
|
||||
logger:info("[install] Computing super MAC...")
|
||||
logger:info("[install] MACs JSON: " .. macs_json:sub(1, 100) .. "...")
|
||||
|
||||
local mac = string.upper(sha2.hmac(sha2.sha256, self.seed_bytes, message))
|
||||
if mac then
|
||||
logger:info("[install] Super MAC: " .. mac:sub(1, 16) .. "...")
|
||||
else
|
||||
logger:error("[install] Super MAC computation returned nil!")
|
||||
end
|
||||
return mac
|
||||
end
|
||||
|
||||
return HmacContext
|
||||
Reference in New Issue
Block a user