fix:主密钥恢复
This commit is contained in:
+11
-7
@@ -1931,7 +1931,7 @@ public class JnaPcieCryptoService implements PcieCryptoService {
|
||||
List<RecoverUserKeyRequest> userKeyRequests = requireUserKeyRequests(req.getUserKeyRequests());
|
||||
|
||||
try {
|
||||
return sessionTemplate.withSession("SDFE_RecoverMasterKeyMaterial", (lib, deviceHandle, sessionHandle) -> {
|
||||
DeviceStatusResult deviceStatus = sessionTemplate.withSession("SDFE_RecoverMasterKeyMaterial", (lib, deviceHandle, sessionHandle) -> {
|
||||
sessionTemplate.ensureSuccess(
|
||||
"SDFE_InitIdentify",
|
||||
lib.SDFE_InitIdentify(sessionHandle, oldPin, oldPin.length, newPin, newPin.length)
|
||||
@@ -1946,19 +1946,23 @@ public class JnaPcieCryptoService implements PcieCryptoService {
|
||||
"SDFE_RecoverIK_EX",
|
||||
lib.SDFE_RecoverIK_EX(sessionHandle, IK_KEY_TYPE_DEVICE, deviceIkComponent)
|
||||
);
|
||||
DeviceStatusResult deviceStatus = readDeviceStatus(lib, sessionHandle);
|
||||
return readDeviceStatus(lib, sessionHandle);
|
||||
});
|
||||
|
||||
byte[] seedMac = sessionTemplate.withSession("SDFE_RecoverUserKey", (lib, deviceHandle, sessionHandle) -> {
|
||||
for (RecoverUserKeyRequest userKeyRequest : userKeyRequests) {
|
||||
recoverUserKeyInCurrentSession(lib, sessionHandle, userKeyRequest);
|
||||
}
|
||||
sessionTemplate.ensureSuccess("SDFE_CheckLMK", lib.SDFE_CheckLMK(sessionHandle));
|
||||
byte[] mac = new byte[LMK_SEED_MAC_LENGTH];
|
||||
sessionTemplate.ensureSuccess("SDFE_ExportLMKSeedMAC", lib.SDFE_ExportLMKSeedMAC(sessionHandle, mac));
|
||||
|
||||
MasterKeyRecoveryResult result = new MasterKeyRecoveryResult();
|
||||
result.setDeviceStatus(deviceStatus);
|
||||
result.setLmkSeedMac(Arrays.copyOf(mac, mac.length));
|
||||
return result;
|
||||
return Arrays.copyOf(mac, mac.length);
|
||||
});
|
||||
|
||||
MasterKeyRecoveryResult result = new MasterKeyRecoveryResult();
|
||||
result.setDeviceStatus(deviceStatus);
|
||||
result.setLmkSeedMac(seedMac);
|
||||
return result;
|
||||
} finally {
|
||||
wipe(oldPin);
|
||||
wipe(newPin);
|
||||
|
||||
Reference in New Issue
Block a user