34 lines
1.0 KiB
Go
34 lines
1.0 KiB
Go
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
|
||
|
|
}
|