This is an automated email from the ASF dual-hosted git repository.

dhavalshah9131 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 6dede819b RANGER-5239: Decrypt and verify before storing newly 
re-encypted key material into DB (#612)
6dede819b is described below

commit 6dede819beb5b376f47d6a63258c81a388e0facd
Author: Vikas Kumar <[email protected]>
AuthorDate: Wed Jul 23 17:23:01 2025 +0530

    RANGER-5239: Decrypt and verify before storing newly re-encypted key 
material into DB (#612)
---
 .../main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java    | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git 
a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java 
b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
index 30b0ee032..24811ce39 100755
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
@@ -308,6 +308,13 @@ public boolean reencryptMKWithFipsAlgo(String mkPassword) {
                 init();
                 PBEKeySpec newPbeKeySpec = getPBEParameterSpec(mkPassword, 
encrCryptoAlgo);
                 byte[] masterKeyToDB = encryptKey(oldKeyMaterial, 
newPbeKeySpec);
+                byte[] decryptedMaterialWithNewAlgo = 
decryptKey(masterKeyToDB, newPbeKeySpec);
+                // This is just a sanity check but important to ensure that 
returned key material after re-encryption is same as old MK key material.
+                if 
(!Base64.encode(oldKeyMaterial).equals(Base64.encode(decryptedMaterialWithNewAlgo)))
 {
+                    String errMsg = "After re-encryption, Latest decrypted 
MasterKey material is different than original.Aborting the re-encryption, DB is 
not updated with new encrypted material.";
+                    logger.error(errMsg);
+                    throw new RuntimeException(errMsg);
+                }
 
                 String encodeMKToDB = Base64.encode(masterKeyToDB);
                 updateEncryptedMK(paddingString + "," + encodeMKToDB);

Reply via email to