Skip to content

Instantly share code, notes, and snippets.

@wizard1066
Created September 26, 2020 13:00
Show Gist options
  • Save wizard1066/b7857b6bf31846b2148e57c6014b7a2c to your computer and use it in GitHub Desktop.
Save wizard1066/b7857b6bf31846b2148e57c6014b7a2c to your computer and use it in GitHub Desktop.
ReceiptValidation1.swift
private func computeHash() {
let identifierData = getDeviceIdentifier()
var ctx = Insecure.SHA1.init()
let identifierBytes: [UInt8] = .init(identifierData)
ctx.update(data: identifierBytes)
let opaqueHex = hexStringToData(string: "53547E14B435DDCBE06ED2BF986F4F5B")
ctx.update(data: opaqueHex)
let bundleIdHex = hexStringToData(string: "0C0F63682E6371642E5469636BC57473")
ctx.update(data: bundleIdHex)
let hash = ctx.finalize()
print("hash ",hash)
}
func hexStringToData(string: String) -> Data {
let stringArray = Array(string)
var data: Data = Data()
for i in stride(from: 0, to: string.count, by: 2) {
let pair: String = String(stringArray[i]) + String(stringArray[i+1])
if let byteNum = UInt8(pair, radix: 16) {
let byte = Data([byteNum])
data.append(byte)
}
else{
fatalError()
}
}
return data
}
func getDeviceIdentifier() -> Data {
let device = UIDevice.current
var uuid = device.identifierForVendor!.uuid
let addr = withUnsafePointer(to: &uuid) { (p) -> UnsafeRawPointer in
UnsafeRawPointer(p)
}
let data = Data(bytes: addr, count: 16)
return data
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment