diff --git a/README.adoc b/README.adoc
index 63171433..85471d13 100644
--- a/README.adoc
+++ b/README.adoc
@@ -246,6 +246,7 @@ The following scripts need to be run prior to building the project for the tests
$ ./src/test/bash/install_vault.sh
$ ./src/test/bash/create_certificates.sh
+ $ ./src/test/bash/env.sh
$ ./src/test/bash/local_run_vault.sh
Changes to the documentation should be made to the adocs found under `src/main/asciidoc/`
diff --git a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitOperations.java b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitOperations.java
index d30db770..89a3b196 100644
--- a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitOperations.java
+++ b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitOperations.java
@@ -20,6 +20,10 @@ import java.util.List;
import org.springframework.lang.Nullable;
import org.springframework.vault.support.RawTransitKey;
import org.springframework.vault.support.TransitKeyType;
+import org.springframework.vault.support.VaultDecryptionPayload;
+import org.springframework.vault.support.VaultDecryptionResult;
+import org.springframework.vault.support.VaultEncryptionPayload;
+import org.springframework.vault.support.VaultEncryptionResult;
import org.springframework.vault.support.VaultTransitContext;
import org.springframework.vault.support.VaultTransitKey;
import org.springframework.vault.support.VaultTransitKeyConfiguration;
@@ -30,6 +34,7 @@ import org.springframework.vault.support.VaultTransitKeyCreationRequest;
*
* @author Mark Paluch
* @author Sven Schürmann
+ * @author Praveendra Singh
* @see Transit
* Secret Backend
*/
@@ -126,6 +131,19 @@ public interface VaultTransitOperations {
*/
String encrypt(String keyName, byte[] plaintext, VaultTransitContext transitRequest);
+ /**
+ * Encrypts the provided list of plaintext using the named key and context.
+ * The encryption is done using transit backend's batch operation.
+ *
+ * works with Vault 0.6.5 and later.
+ *
+ * @param keyName must not be empty or {@literal null}.
+ * @param batchRequest a list of VaultEncryptionPayload which includes plaintext and optional context
+ * @return list of cipher text in the same order as in plaintexts.
+ * throws VaultException in case of not matching context found.
+ */
+ List encrypt(String keyName, List batchRequest);
+
/**
* Decrypts the provided plaintext using the named key.
*
@@ -147,6 +165,19 @@ public interface VaultTransitOperations {
*/
byte[] decrypt(String keyName, String ciphertext, VaultTransitContext transitContext);
+ /**
+ * Decrypts the provided list of ciphertext using the named key and context.
+ * The decryption is done using transit backend's batch operation.
+ *
+ * works with Vault 0.6.5 and later.
+ *
+ * @param keyName must not be empty or {@literal null}.
+ * @param batchRequest a list of VaultDecryptionPayload which includes plaintext and optional context
+ * @return list of plain text in the same order as in ciphertexts.
+ * throws VaultException in case of not matching context found.
+ */
+ List decrypt(String keyName, List batchRequest);
+
/**
* Rewrap the provided ciphertext using the latest version of the named key. Because
* this never returns plaintext, it is possible to delegate this functionality to
diff --git a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitTemplate.java b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitTemplate.java
index 725270e6..74c0a578 100644
--- a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitTemplate.java
+++ b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultTransitTemplate.java
@@ -15,6 +15,7 @@
*/
package org.springframework.vault.core;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
@@ -29,6 +30,11 @@ import org.springframework.util.Base64Utils;
import org.springframework.util.ObjectUtils;
import org.springframework.vault.support.RawTransitKey;
import org.springframework.vault.support.TransitKeyType;
+import org.springframework.vault.support.VaultDecryptionPayload;
+import org.springframework.vault.support.VaultDecryptionResult;
+import org.springframework.vault.support.VaultEncryptionDecryptionResultHelper;
+import org.springframework.vault.support.VaultEncryptionPayload;
+import org.springframework.vault.support.VaultEncryptionResult;
import org.springframework.vault.support.VaultResponse;
import org.springframework.vault.support.VaultResponseSupport;
import org.springframework.vault.support.VaultTransitContext;
@@ -36,11 +42,16 @@ import org.springframework.vault.support.VaultTransitKey;
import org.springframework.vault.support.VaultTransitKeyConfiguration;
import org.springframework.vault.support.VaultTransitKeyCreationRequest;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.Data;
+
/**
* Default implementation of {@link VaultTransitOperations}.
*
* @author Mark Paluch
* @author Sven Schürmann
+ * @author Praveendra Singh
*/
public class VaultTransitTemplate implements VaultTransitOperations {
@@ -176,6 +187,37 @@ public class VaultTransitTemplate implements VaultTransitOperations {
.getRequiredData().get("ciphertext");
}
+ @Override
+ public List encrypt(String keyName, List batchRequest) {
+
+ Assert.hasText(keyName, "KeyName must not be empty");
+ Assert.notEmpty(batchRequest, "batchRequest must not be null and should have at least one entry");
+
+ List