Implement machine fingerprint hashing (T-501)

This commit is contained in:
ila
2026-07-20 00:19:13 +08:00
parent 94ea334d1c
commit 8d81276fd9
16 changed files with 465 additions and 9 deletions
@@ -0,0 +1,33 @@
package windows
import (
"errors"
"softbox.local/core/licensing"
)
// ErrMachineFingerprintUnavailable reports that a required identifier could
// not be safely read or normalized. It intentionally contains no source value.
var ErrMachineFingerprintUnavailable = errors.New("machine fingerprint is unavailable")
type machineGUIDReader func() (string, error)
type systemVolumeSerialReader func() (uint32, error)
func machineHashFrom(readMachineGUID machineGUIDReader, readSystemVolumeSerial systemVolumeSerialReader) (string, error) {
if readMachineGUID == nil || readSystemVolumeSerial == nil {
return "", ErrMachineFingerprintUnavailable
}
machineGUID, err := readMachineGUID()
if err != nil {
return "", ErrMachineFingerprintUnavailable
}
systemVolumeSerial, err := readSystemVolumeSerial()
if err != nil {
return "", ErrMachineFingerprintUnavailable
}
machineHash, err := licensing.DeriveMachineHash(machineGUID, systemVolumeSerial)
if err != nil {
return "", ErrMachineFingerprintUnavailable
}
return machineHash, nil
}