SLUUCA6 October 2021 BQ27Z746
This is a read/write command that changes the Unseal, Full Access, and Lifetime reset keys. To read the keys, send the SecurityKeys() command to either the AltManufacturerAccess() 0x00 or 0x3E, followed by a read from AltManufacturerAccess().
To change the keys, the write operations must be sent through AltManufacturerAccess() 0x3E with the SecurityKeys() followed by the keys. Each parameter entry must be sent in little endian.
Create each access key to be unique; otherwise, the copy key will not execute the intended function.
Example of changing the Unseal key to 0x0123, 0x4567; the Full Access key to 0x89AB, 0xCDEF; and the Lifetime reset key to 0x2244, 0x2131:
Byte 0: Unseal Key LSW
Byte 1: Unseal Key MSW
Byte 2: Full Access Key LSW
Byte 3: Full Access Key MSW
Byte 4: Lifetime Reset Key LSW
Byte 5: Lifetime Reset Key MSW
Write block: command through AltManufacturerAccess() starting address 0x3E:
data block (hex) = [35 00 23 01 67 45 AB 89 EF CD 44 22 31 21].
Starting address 0x60, data block(hex) = [0A 0C] (checksum followed by length)
Checksum = 0x52 = ~(0x35 + 0x00 + 0x23 + 0x01 + 0x67 + 0x45 + 0xAB + 0x89 + 0xEF + 0xCD + 0x44 + 0x22 + 0x31 + 0x21). The checksum is the 8-bit sum of the MSB and LSB of the command plus the (command length) bytes in the buffer. The final sum is the bitwise inversion of the result.