This commit is contained in:
waner
2026-05-09 14:05:32 +08:00
parent 524824bf02
commit 9ccb5147ef
@@ -116,11 +116,10 @@ public class ResourceEnvelopeCryptoServiceImpl implements ResourceEnvelopeCrypto
byte[] wrappedDek = Base64.getDecoder().decode(String.valueOf(envelope.get("wrappedDekBase64"))); byte[] wrappedDek = Base64.getDecoder().decode(String.valueOf(envelope.get("wrappedDekBase64")));
int dekLength = parseInt(envelope.get("dekLength"), 16); int dekLength = parseInt(envelope.get("dekLength"), 16);
// 先验签,再解数字信封,再解 payload;顺序固定,避免篡改包先进入明文处理路径。 // 先验签,再解数字信封,再解 payload;顺序固定,避免篡改包先进入明文处理路径。
EccInternalDecryptRequest decryptRequest = new EccInternalDecryptRequest(); UserKeyDecryptRequest decryptRequest = new UserKeyDecryptRequest();
decryptRequest.setKeyIndex(ResourceCryptoKeyConstants.STORAGE_ENC_KEY_INDEX); decryptRequest.setKeyIndex(ResourceCryptoKeyConstants.STORAGE_ENC_KEY_INDEX);
decryptRequest.setCipherBlob(wrappedDek); decryptRequest.setCipherBlob(wrappedDek);
decryptRequest.setOutBufferSize(dekLength); byte[] sm4Key = normalizeAndWipe(pcieCryptoService.userKeyDecrypt(decryptRequest));
byte[] sm4Key = normalizeAndWipe(pcieCryptoService.sdfeInternalDecryptEcc(decryptRequest));
byte[] iv = Base64.getDecoder().decode(String.valueOf(envelope.get("ivBase64"))); byte[] iv = Base64.getDecoder().decode(String.valueOf(envelope.get("ivBase64")));
try { try {
Cipher cipher = Cipher.getInstance("SM4/CBC/PKCS7Padding", PROVIDER); Cipher cipher = Cipher.getInstance("SM4/CBC/PKCS7Padding", PROVIDER);