Repository: wultra/powerauth-crypto
Pull request #739 (2025-04-10 09:43:30)

Fix #738: Cleanup activation methods for v3


Patch:
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/client/activation/PowerAuthClientActivation.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/client/activation/PowerAuthClientActivation.java
index d3f74847..d6498c7b 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/client/activation/PowerAuthClientActivation.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/client/activation/PowerAuthClientActivation.java
@@ -32,77 +32,59 @@ import java.security.KeyPair;
 import java.security.PublicKey;
 import java.security.interfaces.ECPublicKey;
 import java.util.Arrays;
-import java.util.Base64;
 
 /**
  * Class implementing a cryptography used on the client side in order
  * to complete the PowerAuth Client activation.
  *
- * @author Petr Dvorak
- *
+ * @author Petr Dvorak, petr@wultra.com
+ * @author Roman Strobl, roman.strobl@wultra.com
  */
 public class PowerAuthClientActivation {
 
-    private final SignatureUtils signatureUtils = new SignatureUtils();
-    private final KeyGenerator keyGenerator = new KeyGenerator();
-    private final KeyConvertor keyConvertor = new KeyConvertor();
-
-    /**
-     * Verify the signature of activation code using Master Public Key.
-     *
-     * @param activationCode Activation code.
-     * @param signature Activation data signature.
-     * @param masterPublicKey Master Public Key.
-     * @return Returns "true" if the signature matches activation data, "false" otherwise.
-     * @throws InvalidKeyException If provided master public key is invalid.
-     * @throws GenericCryptoException In case signature computation fails.
-     * @throws CryptoProviderException In case cryptography provider is incorrectly initialized.
-     */
-    public boolean verifyActivationCodeSignature(String activationCode, byte[] signature, PublicKey masterPublicKey) throws InvalidKeyException, GenericCryptoException, CryptoProviderException {
-        byte[] bytes = activationCode.getBytes(StandardCharsets.UTF_8);
-        return signatureUtils.validateECDSASignature(EcCurve.P256, bytes, signature, masterPublicKey);
-    }
+    private static final SignatureUtils SIGNATURE_UTILS = new SignatureUtils();
+    private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
 
     /**
      * Generate a device related activation key pair.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @return A new device key pair.
      * @throws CryptoProviderException In case cryptography provider is incorrectly initialized.
      */
     public KeyPair generateDeviceKeyPair() throws CryptoProviderException {
-        return keyGenerator.generateKeyPair(EcCurve.P256);
+        return KEY_GENERATOR.generateKeyPair(EcCurve.P256);
     }
 
     /**
-     * Generate a new activation nonce.
+     * Verify the signature of activation code using Master Public Key.
      *
-     * @return A new activation nonce.
-     * @throws CryptoProviderException In case key cryptography provider is incorrectly initialized.
-     */
-    public byte[] generateActivationNonce() throws CryptoProviderException {
-        return keyGenerator.generateRandomBytes(16);
-    }
-
-
-    /**
-     * Verify signature of the encrypted activation ID and server public key
-     * using a Master Public Key.
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
      *
-     * @param activationId Activation ID
-     * @param C_serverPublicKey Encrypted server public key.
-     * @param signature Encrypted server public key signature.
+     * @param activationCode Activation code.
+     * @param signature Activation data signature.
      * @param masterPublicKey Master Public Key.
-     * @return Returns "true" if signature matches encrypted data, "false" otherwise.
+     * @return Returns "true" if the signature matches activation data, "false" otherwise.
      * @throws InvalidKeyException If provided master public key is invalid.
      * @throws GenericCryptoException In case signature computation fails.
      * @throws CryptoProviderException In case cryptography provider is incorrectly initialized.
      */
-    public boolean verifyServerDataSignature(String activationId, byte[] C_serverPublicKey, byte[] signature, PublicKey masterPublicKey) throws InvalidKeyException, GenericCryptoException, CryptoProviderException {
-        byte[] activationIdBytes = activationId.getBytes(StandardCharsets.UTF_8);
-        String activationIdBytesBase64 = Base64.getEncoder().encodeToString(activationIdBytes);
-        String C_serverPublicKeyBase64 = Base64.getEncoder().encodeToString(C_serverPublicKey);
-        byte[] result = (activationIdBytesBase64 + "&" + C_serverPublicKeyBase64).getBytes(StandardCharsets.UTF_8);
-        return signatureUtils.validateECDSASignature(EcCurve.P256, result, signature, masterPublicKey);
+    public boolean verifyActivationCodeSignature(String activationCode, byte[] signature, PublicKey masterPublicKey) throws InvalidKeyException, GenericCryptoException, CryptoProviderException {
+        byte[] bytes = activationCode.getBytes(StandardCharsets.UTF_8);
+        return SIGNATURE_UTILS.validateECDSASignature(EcCurve.P256, bytes, signature, masterPublicKey);
     }
 
     /**
@@ -113,6 +95,7 @@ public class PowerAuthClientActivation {
      *     <li>3.0</li>
      *     <li>3.1</li>
      *     <li>3.2</li>
+     *     <li>3.3</li>
      * </ul>
      *
      * @param devicePublicKey Device public key.
@@ -129,6 +112,14 @@ public class PowerAuthClientActivation {
     /**
      * Compute a fingerprint for the activation. The fingerprint can be used for visual validation of exchanged public keys.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param devicePublicKey Device public key.
      * @param serverPublicKey Server public key.
      * @param activationId Activation ID.
@@ -144,6 +135,14 @@ public class PowerAuthClientActivation {
     /**
      * Returns an activation status from the encrypted activation blob as described in PowerAuth Specification.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param cStatusBlob Encrypted activation status blob.
      * @param challenge Challenge for activation status blob encryption. If non-null, then also {@code nonce} parameter must be provided.
      * @param nonce Nonce for activation status blob encryption. If non-null, then also {@code challenge} parameter must be provided.
@@ -204,6 +203,14 @@ public class PowerAuthClientActivation {
      * received from the server is already hashed, so the function has to calculate hash from the client's counter
      * and then compare both values.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param receivedCtrDataHash Value received from the server, containing hash, calculated from hash based counter.
      * @param expectedCtrData Expected hash based counter.
      * @param transportKey Transport key.
@@ -216,4 +223,5 @@ public class PowerAuthClientActivation {
             throws CryptoProviderException, InvalidKeyException, GenericCryptoException {
         return new HashBasedCounterUtils().verifyHashForHashBasedCounter(receivedCtrDataHash, expectedCtrData, transportKey);
     }
+
 }
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/AeadUtils.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/AeadUtils.java
index 27716ba3..c828753e 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/AeadUtils.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/AeadUtils.java
@@ -19,11 +19,13 @@ package com.wultra.security.powerauth.crypto.lib.util;
 import com.wultra.security.powerauth.crypto.lib.encryptor.model.EncryptorScope;
 import com.wultra.security.powerauth.crypto.lib.v4.encryptor.exception.AeadException;
 import com.wultra.security.powerauth.crypto.lib.v4.hash.Sha3;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.CustomString;
 import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kmac;
 
 import javax.crypto.SecretKey;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
+import java.util.Base64;
 
 /**
  * A utility class for handling AEAD data.
@@ -32,7 +34,7 @@ import java.nio.charset.StandardCharsets;
  */
 public final class AeadUtils {
 
-    private static final byte[] CRYPTO4_SH2_CUSTOM_BYTES = "PA4SH2".getBytes(StandardCharsets.UTF_8);
+    private static final byte[] CRYPTO4_SH2_CUSTOM_BYTES = CustomString.PA4SH2.value().getBytes(StandardCharsets.UTF_8);
 
     private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
 
@@ -91,7 +93,7 @@ public final class AeadUtils {
         if (applicationSecret == null) {
             throw new AeadException("Missing applicationSecret parameter");
         }
-        final byte[] applicationSecretBytes = applicationSecret.getBytes(StandardCharsets.UTF_8);
+        final byte[] applicationSecretBytes = Base64.getDecoder().decode(applicationSecret);
         if (scope == EncryptorScope.APPLICATION_SCOPE) {
             // Application scope
             return Sha3.hash256(applicationSecretBytes);
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/TokenUtils.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/TokenUtils.java
index 9689731c..fb1529d0 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/TokenUtils.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/util/TokenUtils.java
@@ -19,6 +19,7 @@ package com.wultra.security.powerauth.crypto.lib.util;
 import com.wultra.security.powerauth.crypto.lib.generator.KeyGenerator;
 import com.wultra.security.powerauth.crypto.lib.model.exception.CryptoProviderException;
 import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoException;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.CustomString;
 import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kmac;
 
 import javax.crypto.SecretKey;
@@ -33,7 +34,7 @@ import java.util.UUID;
  */
 public class TokenUtils {
 
-    private static final byte[] KMAC_TOKEN_DIGEST_CUSTOM_BYTES = "PA4DIGEST".getBytes(StandardCharsets.UTF_8);
+    private static final byte[] KMAC_TOKEN_DIGEST_CUSTOM_BYTES = CustomString.PA4DIGEST.value().getBytes(StandardCharsets.UTF_8);
 
     private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
     private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/Aead.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/Aead.java
index 9629518a..18337778 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/Aead.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/Aead.java
@@ -23,7 +23,8 @@ import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoExc
 import com.wultra.security.powerauth.crypto.lib.util.AESEncryptionUtils;
 import com.wultra.security.powerauth.crypto.lib.util.ByteUtils;
 import com.wultra.security.powerauth.crypto.lib.util.SideChannelUtils;
-import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kdf;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.CustomString;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.KeyFactory;
 import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kmac;
 
 import javax.crypto.SecretKey;
@@ -38,12 +39,9 @@ import java.security.InvalidKeyException;
 public class Aead {
 
     private static final int NONCE_LENGTH = 12;
-    private static final int KEY_LENGTH = 32;
     private static final int TAG_LENGTH = 32;
 
-    private static final String KMAC_AEAD_CUSTOM_STRING = "PA4MAC-AEAD";
-    private static final String KEY_ENC_CUSTOM_STRING = "aead/enc";
-    private static final String KEY_MAC_CUSTOM_STRING = "aead/mac";
+    private static final byte[] KMAC_AEAD_CUSTOM_BYTES = CustomString.PA4MAC_AEAD.value().getBytes(StandardCharsets.UTF_8);
 
     private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
     private static final AESEncryptionUtils aes = new AESEncryptionUtils();
@@ -67,11 +65,11 @@ public class Aead {
         } else if (nonce.length != NONCE_LENGTH) {
             throw new GenericCryptoException("Invalid nonce length: " + nonce.length);
         }
-        final SecretKey keyEncryption = Kdf.derive(key, KEY_ENC_CUSTOM_STRING, keyContext, KEY_LENGTH);
-        final SecretKey keyMac = Kdf.derive(key, KEY_MAC_CUSTOM_STRING, keyContext, TAG_LENGTH);
+        final SecretKey keyEncryption = KeyFactory.deriveKeyAeadEnc(key, keyContext);
+        final SecretKey keyMac = KeyFactory.deriveKeyAeadMac(key, keyContext);
         final byte[] iv = ByteUtils.concat(nonce, ByteUtils.zeroBytes(4));
         final byte[] encrypted = aes.encrypt(plaintext, iv, keyEncryption, "AES/CTR/NoPadding");
-        final byte[] mac = Kmac.kmac256(keyMac, ByteUtils.concat(nonce, associatedData, encrypted), KMAC_AEAD_CUSTOM_STRING.getBytes(StandardCharsets.UTF_8), TAG_LENGTH);
+        final byte[] mac = Kmac.kmac256(keyMac, ByteUtils.concat(nonce, associatedData, encrypted), KMAC_AEAD_CUSTOM_BYTES, TAG_LENGTH);
         return ByteUtils.concat(nonce, mac, encrypted);
     }
 
@@ -94,9 +92,9 @@ public class Aead {
         final byte[] nonce = ByteUtils.subarray(ciphertext, 0, NONCE_LENGTH);
         final byte[] tag = ByteUtils.subarray(ciphertext, NONCE_LENGTH, TAG_LENGTH);
         final byte[] encrypted = ByteUtils.subarray(ciphertext, NONCE_LENGTH + TAG_LENGTH, ciphertext.length - NONCE_LENGTH - TAG_LENGTH);
-        final SecretKey keyEncryption = Kdf.derive(key, KEY_ENC_CUSTOM_STRING, keyContext, KEY_LENGTH);
-        final SecretKey keyMac = Kdf.derive(key, KEY_MAC_CUSTOM_STRING, keyContext, TAG_LENGTH);
-        byte[] mac = Kmac.kmac256(keyMac, ByteUtils.concat(nonce, associatedData, encrypted), KMAC_AEAD_CUSTOM_STRING.getBytes(StandardCharsets.UTF_8), TAG_LENGTH);
+        final SecretKey keyEncryption = KeyFactory.deriveKeyAeadEnc(key, keyContext);
+        final SecretKey keyMac = KeyFactory.deriveKeyAeadMac(key, keyContext);
+        byte[] mac = Kmac.kmac256(keyMac, ByteUtils.concat(nonce, associatedData, encrypted), KMAC_AEAD_CUSTOM_BYTES, TAG_LENGTH);
         if (!SideChannelUtils.constantTimeAreEqual(mac, tag)) {
             throw new GenericCryptoException("Invalid MAC");
         }
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/CustomString.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/CustomString.java
new file mode 100644
index 00000000..2728103b
--- /dev/null
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/CustomString.java
@@ -0,0 +1,85 @@
+/*
+ * PowerAuth Crypto Library
+ * Copyright 2025 Wultra s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.wultra.security.powerauth.crypto.lib.v4.kdf;
+
+/**
+ * Enumeration of custom strings used during key derivation.
+ *
+ * @author Roman Strobl, roman.strobl@wultra.com
+ */
+public enum CustomString {
+
+    /**
+     * Key derivation using label.
+     */
+    PA4KDF("PA4KDF"),
+
+    /**
+     * Key derivation using password.
+     */
+    PA4PBKDF("PA4PBKDF"),
+
+    /**
+     * Key derivation for authentication codes.
+     */
+    PA4CODE("PA4CODE"),
+
+    /**
+     * Key derivation for MAC tokens.
+     */
+    PA4DIGEST("PA4DIGEST"),
+
+    /**
+     * Key derivation for data digests.
+     */
+    PA4DIGEST_DATA("PA4DIGEST-DATA"),
+
+    /**
+     * Key derivation for sharedInfo2 parameter.
+     */
+    PA4SH2("PA4SH2"),
+
+    /**
+     * Key derivation for MAC in AEAD.
+     */
+    PA4MAC_AEAD("PA4MAC-AEAD");
+
+    private final String customString;
+
+    /**
+     * Custom string enumeration constructor.
+     * @param customString Custom string value.
+     */
+    CustomString(String customString) {
+        this.customString = customString;
+    }
+
+    /**
+     * Get the custom string.
+     * @return Custom string.
+     */
+    public String value() {
+        return customString;
+    }
+
+    @Override
+    public String toString() {
+        return customString;
+    }
+
+}
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/Kdf.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/Kdf.java
index 3f61b80d..0ce1da68 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/Kdf.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/Kdf.java
@@ -31,13 +31,13 @@ import java.nio.charset.StandardCharsets;
  */
 public class Kdf {
 
-    private static final byte[] KDF_CUSTOM_BYTES_PREFIX = "PA4KDF:".getBytes(StandardCharsets.UTF_8);
-    private static final byte[] PBKDF_CUSTOM_BYTES = "PA4PBKDF".getBytes(StandardCharsets.UTF_8);
+    private static final byte[] KDF_CUSTOM_BYTES_PREFIX = (CustomString.PA4KDF.value() + ":").getBytes(StandardCharsets.UTF_8);
+    private static final byte[] PBKDF_CUSTOM_BYTES = CustomString.PA4PBKDF.value().getBytes(StandardCharsets.UTF_8);
 
     private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
 
     /**
-     * Derive a secret key based on an input key, numeric key index, requested key size and optional context.
+     * Derive a secret key based on an input key, label, and diversifier.
      *
      * @param key Secret key to be used for key derivation.
      * @param label Label allows derivation of multiple keys from the same source key material.
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyFactory.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyFactory.java
new file mode 100644
index 00000000..eecb4287
--- /dev/null
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyFactory.java
@@ -0,0 +1,387 @@
+/*
+ * PowerAuth Crypto Library
+ * Copyright 2025 Wultra s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.wultra.security.powerauth.crypto.lib.v4.kdf;
+
+import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoException;
+
+import javax.crypto.SecretKey;
+
+/**
+ * KeyFactory is a utility class for deriving keys from provided source keys using the KMAC-based KDF function.
+ * Keys are derived using specific derivation paths, as defined in the V4 key index registry.
+ * The default key length is 32 bytes, and it is used for all the derived keys.
+ *
+ * @author Roman Strobl, roman.strobl@wultra.com
+ */
+public class KeyFactory {
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_POSSESSION} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived possession factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyAuthenticationCodePossession(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkAuthenticationCode = deriveKdkAuthenticationCode(keyActivationSecret);
+        return deriveKeyAuthenticationCodePossessionFromKdk(kdkAuthenticationCode);
+    }
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_KNOWLEDGE} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived knowledge factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyAuthenticationCodeKnowledge(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkAuthenticationCode = deriveKdkAuthenticationCode(keyActivationSecret);
+        return deriveKeyAuthenticationCodeKnowledgeFromKdk(kdkAuthenticationCode);
+    }
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_BIOMETRY} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived biometry factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyAuthenticationCodeBiometry(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkAuthenticationCode = deriveKdkAuthenticationCode(keyActivationSecret);
+        return deriveKeyAuthenticationCodeBiometryFromKdk(kdkAuthenticationCode);
+    }
+
+    /**
+     * Derives {@code KEY_SHARED_SECRET} from {@code KEY_SHARED_SECRET_ECDHE_BASE} for algorithm EC_P384.
+     *
+     * @param keySharedSecretEcdheBase Shared secret from ECDHE key exchange.
+     * @return Derived shared secret key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeySharedSecretEcdhe(SecretKey keySharedSecretEcdheBase) throws GenericCryptoException {
+        return derive(keySharedSecretEcdheBase, KeyLabel.SHARED_SECRET_EC_P384);
+    }
+
+    /**
+     * Derives {@code KEY_SHARED_SECRET} from {@code KEY_SHARED_SECRET_HYBRID_BASE} for algorithm EC_P384_ML_L3.
+     *
+     * @param keySharedSecretHybridBase Shared secret from hybrid key exchange.
+     * @return Derived hybrid shared secret key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeySharedSecretHybrid(SecretKey keySharedSecretHybridBase) throws GenericCryptoException {
+        return derive(keySharedSecretHybridBase, KeyLabel.SHARED_SECRET_EC_P384_ML_L3);
+    }
+
+    /**
+     * Derives {@code KEY_ENC} from {@code KEY_BASE}.
+     *
+     * @param keyBase     Base key for AEAD encryption.
+     * @param diversifier Diversifier for additional key separation.
+     * @return Derived AEAD encryption key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyAeadEnc(SecretKey keyBase, byte[] diversifier) throws GenericCryptoException {
+        return derive(keyBase, KeyLabel.AEAD_ENC, diversifier);
+    }
+
+    /**
+     * Derives {@code KEY_MAC} from {@code KEY_BASE}.
+     *
+     * @param keyBase     Base key for AEAD MAC.
+     * @param diversifier Diversifier for additional key separation.
+     * @return Derived AEAD MAC key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyAeadMac(SecretKey keyBase, byte[] diversifier) throws GenericCryptoException {
+        return derive(keyBase, KeyLabel.AEAD_MAC, diversifier);
+    }
+
+    /**
+     * Derives {@code VAULT_KEK_DEVICE_PRIVATE} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived KEK that encrypts {@code KEY_DEVICE_PRIVATE}.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyKekDevicePrivate(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkVault = deriveKdkVault(keyActivationSecret);
+        return deriveKekDevicePrivateFromKdk(kdkVault);
+    }
+
+    /**
+     * Derives {@code KDK_APP_VAULT_KNOWLEDGE} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived KDK for vault used after knowledge-based 2FA authorization.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyKdkAppVaultKnowledge(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkVault = deriveKdkVault(keyActivationSecret);
+        return deriveKeyKdkAppVaultKnowledgeFromKdk(kdkVault);
+    }
+
+    /**
+     * Derives {@code KDK_APP_VAULT_2FA} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived vault KDK provided after any 2FA authorization.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyKdkAppVault2fa(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkVault = deriveKdkVault(keyActivationSecret);
+        return deriveKeyKdkAppVault2faFromKdk(kdkVault);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_CTR_DATA} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived MAC key for counter data.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyMacCtrData(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkUtility = deriveKdkUtility(keyActivationSecret);
+        return deriveKeyMacCtrDataFromKdk(kdkUtility);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_STATUS} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived MAC key for activation status.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyMacStatus(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkUtility = deriveKdkUtility(keyActivationSecret);
+        return deriveKeyMacStatusFromKdk(kdkUtility);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_GET_APP_TEMP_KEY} from {@code APP_SECRET}.
+     *
+     * @param keyAppSecret Application secret.
+     * @return Derived MAC key for signing requests for application-scoped temporary keys.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyMacGetAppTempKey(SecretKey keyAppSecret) throws GenericCryptoException {
+        return derive(keyAppSecret, KeyLabel.UTIL_MAC_GET_APP_TEMP_KEY);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_GET_ACT_TEMP_KEY} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived MAC key for signing requests for activation-scoped temporary keys.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyMacGetActTempKey(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkUtility = deriveKdkUtility(keyActivationSecret);
+        return deriveKeyMacGetActTempKeyFromKdk(kdkUtility);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_PERSONALIZED_DATA} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived MAC key for personalized data.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyMacPersonalizedData(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkUtility = deriveKdkUtility(keyActivationSecret);
+        return deriveKeyMacPersonalizedDataFromKdk(kdkUtility);
+    }
+
+    /**
+     * Derives {@code KEY_E2EE_SHARED_INFO2} from {@code KEY_ACTIVATION_SECRET}.
+     *
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived E2EE SHARED_INFO_2 key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    public static SecretKey deriveKeyE2eeSharedInfo2(SecretKey keyActivationSecret) throws GenericCryptoException {
+        SecretKey kdkUtility = deriveKdkUtility(keyActivationSecret);
+        return deriveKeyE2eeSharedInfo2FromKdk(kdkUtility);
+    }
+
+    /**
+     * Derives {@code KDK_AUTHENTICATION_CODE} from {@code KEY_ACTIVATION_SECRET}.
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived KDK for authentication codes.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKdkAuthenticationCode(SecretKey keyActivationSecret) throws GenericCryptoException {
+        return derive(keyActivationSecret, KeyLabel.AUTH);
+    }
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_POSSESSION} from {@code KDK_AUTHENTICATION_CODE}.
+     * @param kdkAuthenticationCode KDK for authentication codes.
+     * @return Derived possession factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyAuthenticationCodePossessionFromKdk(SecretKey kdkAuthenticationCode) throws GenericCryptoException {
+        return derive(kdkAuthenticationCode, KeyLabel.AUTH_POSSESSION);
+    }
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_KNOWLEDGE} from {@code KDK_AUTHENTICATION_CODE}.
+     * @param kdkAuthenticationCode KDK for authentication codes.
+     * @return Derived knowledge factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyAuthenticationCodeKnowledgeFromKdk(SecretKey kdkAuthenticationCode) throws GenericCryptoException {
+        return derive(kdkAuthenticationCode, KeyLabel.AUTH_KNOWLEDGE);
+    }
+
+    /**
+     * Derives {@code KEY_AUTHENTICATION_CODE_BIOMETRY} from {@code KDK_AUTHENTICATION_CODE}.
+     * @param kdkAuthenticationCode KDK for authentication codes.
+     * @return Derived biometry factor key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyAuthenticationCodeBiometryFromKdk(SecretKey kdkAuthenticationCode) throws GenericCryptoException {
+        return derive(kdkAuthenticationCode, KeyLabel.AUTH_BIOMETRY);
+    }
+
+    /**
+     * Derives {@code KDK_VAULT} from {@code KEY_ACTIVATION_SECRET}.
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived KDK for vault.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKdkVault(SecretKey keyActivationSecret) throws GenericCryptoException {
+        return derive(keyActivationSecret, KeyLabel.VAULT);
+    }
+
+    /**
+     * Derives {@code KEK_DEVICE_PRIVATE} from {@code KDK_VAULT}.
+     * @param kdkVault KDK for vault.
+     * @return Derived KEK for device private key.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKekDevicePrivateFromKdk(SecretKey kdkVault) throws GenericCryptoException {
+        return derive(kdkVault, KeyLabel.VAULT_KEK_DEVICE_PRIVATE);
+    }
+
+    /**
+     * Derives {@code KDK_APP_VAULT_KNOWLEDGE} from {@code KDK_VAULT}.
+     * @param kdkVault KDK for vault.
+     * @return Derived KEK for vault used after 2FA with knowledge factor.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyKdkAppVaultKnowledgeFromKdk(SecretKey kdkVault) throws GenericCryptoException {
+        return derive(kdkVault, KeyLabel.KDK_APP_VAULT_KNOWLEDGE);
+    }
+
+    /**
+     * Derives {@code KDK_APP_VAULT_2FA} from {@code KDK_VAULT}.
+     * @param kdkVault KDK for vault.
+     * @return Derived KEK for vault used after any 2FA authentication.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyKdkAppVault2faFromKdk(SecretKey kdkVault) throws GenericCryptoException {
+        return derive(kdkVault, KeyLabel.KDK_APP_VAULT_2FA);
+    }
+
+    /**
+     * Derives {@code KDK_UTILITY} from {@code KEY_ACTIVATION_SECRET}.
+     * @param keyActivationSecret The activation secret key.
+     * @return Derived KDK for utility purposes.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKdkUtility(SecretKey keyActivationSecret) throws GenericCryptoException {
+        return derive(keyActivationSecret, KeyLabel.UTIL);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_CTR_DATA} from {@code KDK_UTILITY}.
+     * @param kdkUtility KDK for utility purposes.
+     * @return Derived key for counter data MAC.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyMacCtrDataFromKdk(SecretKey kdkUtility) throws GenericCryptoException {
+        return derive(kdkUtility, KeyLabel.UTIL_MAC_CTR_DATA);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_STATUS} from {@code KDK_UTILITY}.
+     * @param kdkUtility KDK for utility purposes.
+     * @return Derived key for activation status MAC.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyMacStatusFromKdk(SecretKey kdkUtility) throws GenericCryptoException {
+        return derive(kdkUtility, KeyLabel.UTIL_MAC_STATUS);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_GET_ACT_TEMP_KEY} from {@code KDK_UTILITY}.
+     * @param kdkUtility KDK for utility purposes.
+     * @return Derived MAC key for signing requests for activation-scoped temporary keys.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyMacGetActTempKeyFromKdk(SecretKey kdkUtility) throws GenericCryptoException {
+        return derive(kdkUtility, KeyLabel.UTIL_MAC_GET_ACT_TEMP_KEY);
+    }
+
+    /**
+     * Derives {@code KEY_MAC_PERSONALIZED_DATA} from {@code KDK_UTILITY}.
+     * @param kdkUtility KDK for utility purposes.
+     * @return Derived key for MAC of personalized data.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyMacPersonalizedDataFromKdk(SecretKey kdkUtility) throws GenericCryptoException {
+        return derive(kdkUtility, KeyLabel.UTIL_MAC_PERSONALIZED_DATA);
+    }
+
+    /**
+     * Derives {@code KEY_E2EE_SHARED_INFO2} from {@code KDK_UTILITY}.
+     * @param kdkUtility KDK for utility purposes.
+     * @return Derived key for sharedInfo2 computation.
+     * @throws GenericCryptoException In case of cryptographic failure.
+     */
+    private static SecretKey deriveKeyE2eeSharedInfo2FromKdk(SecretKey kdkUtility) throws GenericCryptoException {
+        return derive(kdkUtility, KeyLabel.UTIL_KEY_E2EE_SH2);
+    }
+
+    /**
+     * Derive a key using KDF with no diversifier and default length of 32 bytes.
+     *
+     * @param sourceKey Secret key used as input for the derivation.
+     * @param label     Label used to uniquely identify the derived key purpose.
+     * @return Derived secret key.
+     * @throws GenericCryptoException Thrown in case of any cryptographic error.
+     */
+    private static SecretKey derive(SecretKey sourceKey, KeyLabel label) throws GenericCryptoException {
+        return Kdf.derive(sourceKey, label.value(), null, 32);
+    }
+
+    /**
+     * Derive a key using KDF with diversifier and default length of 32 bytes.
+     *
+     * @param sourceKey   Secret key used as input for the derivation.
+     * @param label       Label used to uniquely identify the derived key purpose.
+     * @param diversifier Diversifier bytes.
+     * @return Derived secret key.
+     * @throws GenericCryptoException Thrown in case of any cryptographic error.
+     */
+    private static SecretKey derive(SecretKey sourceKey, KeyLabel label, byte[] diversifier) throws GenericCryptoException {
+        return Kdf.derive(sourceKey, label.value(), diversifier, 32);
+    }
+
+}
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyLabel.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyLabel.java
new file mode 100644
index 00000000..95b0b270
--- /dev/null
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/kdf/KeyLabel.java
@@ -0,0 +1,106 @@
+/*
+ * PowerAuth Crypto Library
+ * Copyright 2025 Wultra s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.wultra.security.powerauth.crypto.lib.v4.kdf;
+
+/**
+ * Enumeration of key labels used during key derivation.
+ *
+ * @author Roman Strobl, roman.strobl@wultra.com
+ */
+public enum KeyLabel {
+
+    /** Label for deriving {@code KDK_AUTHENTICATION_CODE} from {@code KEY_ACTIVATION_SECRET}. */
+    AUTH("auth"),
+
+    /** Label for deriving {@code KEY_AUTHENTICATION_CODE_POSSESSION} from {@code KDK_AUTHENTICATION_CODE}. */
+    AUTH_POSSESSION("auth/possession"),
+
+    /** Label for deriving {@code KEY_AUTHENTICATION_CODE_KNOWLEDGE} from {@code KDK_AUTHENTICATION_CODE}. */
+    AUTH_KNOWLEDGE("auth/knowledge"),
+
+    /** Label for deriving {@code KEY_AUTHENTICATION_CODE_BIOMETRY} from {@code KDK_AUTHENTICATION_CODE}. */
+    AUTH_BIOMETRY("auth/biometry"),
+
+    /** Label for deriving {@code KEY_SHARED_SECRET} from {@code KEY_SHARED_SECRET_ECDHE} (algorithm EC_P384). */
+    SHARED_SECRET_EC_P384("shared-secret/ec-p384"),
+
+    /** Label for deriving {@code KEY_SHARED_SECRET} from {@code KEY_SHARED_SECRET_HYBRID} (algorithm EC_P384_ML_L3). */
+    SHARED_SECRET_EC_P384_ML_L3("shared-secret/ec-p384-ml-l3"),
+
+    /** Label for deriving {@code KEY_ENC} from {@code BASE_KEY}. */
+    AEAD_ENC("aead/enc"),
+
+    /** Label for deriving {@code KEY_MAC} from {@code BASE_KEY}. */
+    AEAD_MAC("aead/mac"),
+
+    /** Label for deriving {@code KDK_VAULT} from {@code KEY_ACTIVATION_SECRET}. */
+    VAULT("vault"),
+
+    /** Label for deriving {@code KEK_DEVICE_PRIVATE} from {@code KDK_VAULT}. */
+    VAULT_KEK_DEVICE_PRIVATE("vault/kek-device-private"),
+
+    /** Label for deriving {@code KDK_APP_VAULT_KNOWLEDGE} from {@code KDK_VAULT}. */
+    KDK_APP_VAULT_KNOWLEDGE("vault/kdk-app-vault-knowledge"),
+
+    /** Label for deriving {@code KDK_APP_VAULT_2FA} from {@code KDK_VAULT}. */
+    KDK_APP_VAULT_2FA("vault/kdk-app-vault-2fa"),
+
+    /** Label for deriving {@code KDK_UTILITY} from {@code KEY_ACTIVATION_SECRET}. */
+    UTIL("util"),
+
+    /** Label for deriving {@code KEY_MAC_CTR_DATA} from {@code KDK_UTILITY}. */
+    UTIL_MAC_CTR_DATA("util/mac/ctr-data"),
+
+    /** Label for deriving {@code KEY_MAC_STATUS} from {@code KDK_UTILITY}. */
+    UTIL_MAC_STATUS("util/mac/status"),
+
+    /** Label for deriving {@code KEY_MAC_GET_APP_TEMP_KEY} from {@code APP_SECRET}. */
+    UTIL_MAC_GET_APP_TEMP_KEY("util/mac/get-app-temp-key"),
+
+    /** Label for deriving {@code KEY_MAC_GET_ACT_TEMP_KEY} from {@code KDK_UTILITY}. */
+    UTIL_MAC_GET_ACT_TEMP_KEY("util/mac/get-act-temp-key"),
+
+    /** Label for deriving {@code KEY_MAC_PERSONALIZED_DATA} from {@code KDK_UTILITY}. */
+    UTIL_MAC_PERSONALIZED_DATA("util/mac/personalized-data"),
+
+    /** Label for deriving {@code KEY_E2EE_SHARED_INFO2} from {@code KDK_UTILITY}. */
+    UTIL_KEY_E2EE_SH2("util/key-e2ee-sh2");
+
+    private final String label;
+
+    /**
+     * Key label enumeration constructor.
+     * @param label Key label.
+     */
+    KeyLabel(String label) {
+        this.label = label;
+    }
+
+    /**
+     * Get the key label.
+     * @return Key label.
+     */
+    public String value() {
+        return label;
+    }
+
+    @Override
+    public String toString() {
+        return label;
+    }
+}
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretEcdhe.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretEcdhe.java
index d5d9b274..b37ac023 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretEcdhe.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretEcdhe.java
@@ -24,7 +24,7 @@ import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoExc
 import com.wultra.security.powerauth.crypto.lib.util.KeyConvertor;
 import com.wultra.security.powerauth.crypto.lib.v4.api.SharedSecret;
 import com.wultra.security.powerauth.crypto.lib.v4.api.SharedSecretClientContext;
-import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kdf;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.KeyFactory;
 import com.wultra.security.powerauth.crypto.lib.v4.model.*;
 import com.wultra.security.powerauth.crypto.lib.v4.model.context.SharedSecretAlgorithm;
 import com.wultra.security.powerauth.crypto.lib.v4.model.request.RequestCryptogram;
@@ -47,8 +47,6 @@ import java.util.Base64;
  */
 public class SharedSecretEcdhe implements SharedSecret<SharedSecretRequestEcdhe, SharedSecretResponseEcdhe, SharedSecretClientContextEcdhe> {
 
-    private static final String KEY_SHARED_SECRET_CUSTOM_STRING = "shared-secret/ec-p384";
-
     private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
     private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
 
@@ -81,7 +79,7 @@ public class SharedSecretEcdhe implements SharedSecret<SharedSecretRequestEcdhe,
             final PublicKey ecClientPublicKey = KEY_CONVERTOR.convertBytesToPublicKey(EcCurve.P384, ecClientPublicKeyRaw);
             final KeyPair ecServerKeyPair = KEY_GENERATOR.generateKeyPair(EcCurve.P384);
             final SecretKey ecSharedKey = KEY_GENERATOR.computeSharedKey(ecServerKeyPair.getPrivate(), ecClientPublicKey, true);
-            final SecretKey sharedSecret = Kdf.derive(ecSharedKey, KEY_SHARED_SECRET_CUSTOM_STRING, null, 32);
+            final SecretKey sharedSecret = KeyFactory.deriveKeySharedSecretEcdhe(ecSharedKey);
             final byte[] ecServerPublicKey = KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P384, ecServerKeyPair.getPublic());
             final String ecServerPublicKeyBase64 = Base64.getEncoder().encodeToString(ecServerPublicKey);
             final SharedSecretResponseEcdhe serverResponse = new SharedSecretResponseEcdhe(ecServerPublicKeyBase64);
@@ -101,7 +99,7 @@ public class SharedSecretEcdhe implements SharedSecret<SharedSecretRequestEcdhe,
             final PublicKey ecServerPublicKey = KEY_CONVERTOR.convertBytesToPublicKey(EcCurve.P384, ecServerPublicKeyRaw);
             final PrivateKey ecClientPrivateKey = clientContext.getPrivateKey();
             final SecretKey sharedKey = KEY_GENERATOR.computeSharedKey(ecClientPrivateKey, ecServerPublicKey, true);
-            return Kdf.derive(sharedKey, KEY_SHARED_SECRET_CUSTOM_STRING, null, 32);
+            return KeyFactory.deriveKeySharedSecretEcdhe(sharedKey);
         } catch (InvalidKeySpecException | CryptoProviderException | InvalidKeyException e) {
             throw new GenericCryptoException("Shared secret generation failed", e);
         }
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybrid.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybrid.java
index db47105b..45f17e18 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybrid.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybrid.java
@@ -27,7 +27,7 @@ import com.wultra.security.powerauth.crypto.lib.util.PqcKemKeyConvertor;
 import com.wultra.security.powerauth.crypto.lib.v4.PqcKem;
 import com.wultra.security.powerauth.crypto.lib.v4.api.SharedSecret;
 import com.wultra.security.powerauth.crypto.lib.v4.api.SharedSecretClientContext;
-import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kdf;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.KeyFactory;
 import com.wultra.security.powerauth.crypto.lib.v4.model.*;
 import com.wultra.security.powerauth.crypto.lib.v4.model.context.SharedSecretAlgorithm;
 import com.wultra.security.powerauth.crypto.lib.v4.model.request.RequestCryptogram;
@@ -51,8 +51,6 @@ import java.util.Base64;
  */
 public class SharedSecretHybrid implements SharedSecret<SharedSecretRequestHybrid, SharedSecretResponseHybrid, SharedSecretClientContextHybrid> {
 
-    private static final String KEY_SHARED_SECRET_CUSTOM_STRING = "shared-secret/ec-p384-ml-l3";
-
     private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
     private static final KeyConvertor KEY_CONVERTOR_EC = new KeyConvertor();
     private static final PqcKemKeyConvertor KEY_CONVERTOR_PQC = new PqcKemKeyConvertor();
@@ -98,7 +96,7 @@ public class SharedSecretHybrid implements SharedSecret<SharedSecretRequestHybri
             final byte[] pqcSharedKeyBytes = pqcKeyWithEncaps.getEncoded();
             final byte[] hybridKeyBytes = ByteUtils.concat(ecSharedKeyBytes, pqcSharedKeyBytes);
             final SecretKey hybridKey = KEY_CONVERTOR_EC.convertBytesToSharedSecretKey(hybridKeyBytes);
-            final SecretKey sharedSecret = Kdf.derive(hybridKey, KEY_SHARED_SECRET_CUSTOM_STRING, null, 32);
+            final SecretKey sharedSecret = KeyFactory.deriveKeySharedSecretHybrid(hybridKey);
             final byte[] ecServerPublicKey = KEY_CONVERTOR_EC.convertPublicKeyToBytes(EcCurve.P384, ecServerKeyPair.getPublic());
             final String ecServerPublicKeyBase64 = Base64.getEncoder().encodeToString(ecServerPublicKey);
             final String encapsBase64 = Base64.getEncoder().encodeToString(pqcKeyWithEncaps.getEncapsulation());
@@ -126,7 +124,7 @@ public class SharedSecretHybrid implements SharedSecret<SharedSecretRequestHybri
             final byte[] pqcSharedKeyBytes = KEY_CONVERTOR_PQC.convertSharedSecretKeyToBytes(pqcSharedKey);
             final byte[] hybridKeyBytes = ByteUtils.concat(ecSharedKeyBytes, pqcSharedKeyBytes);
             final SecretKey hybridKey = KEY_CONVERTOR_EC.convertBytesToSharedSecretKey(hybridKeyBytes);
-            return Kdf.derive(hybridKey, KEY_SHARED_SECRET_CUSTOM_STRING, null, 32);
+            return KeyFactory.deriveKeySharedSecretHybrid(hybridKey);
         } catch (CryptoProviderException | InvalidKeySpecException | InvalidKeyException e) {
             throw new GenericCryptoException("Shared secret generation failed", e);
         }
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/activation/PowerAuthServerActivation.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/activation/PowerAuthServerActivation.java
index e131c9c9..de92bd0a 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/activation/PowerAuthServerActivation.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/activation/PowerAuthServerActivation.java
@@ -17,15 +17,12 @@
 package com.wultra.security.powerauth.crypto.server.activation;
 
 import com.wultra.security.powerauth.crypto.lib.enums.EcCurve;
-import com.wultra.security.powerauth.crypto.lib.generator.IdentifierGenerator;
 import com.wultra.security.powerauth.crypto.lib.generator.KeyGenerator;
 import com.wultra.security.powerauth.crypto.lib.model.ActivationStatusBlobInfo;
 import com.wultra.security.powerauth.crypto.lib.model.ActivationVersion;
 import com.wultra.security.powerauth.crypto.lib.model.exception.CryptoProviderException;
 import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoException;
 import com.wultra.security.powerauth.crypto.lib.util.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import javax.crypto.SecretKey;
 import java.nio.ByteBuffer;
@@ -36,53 +33,35 @@ import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.security.interfaces.ECPublicKey;
 import java.util.Arrays;
-import java.util.Base64;
 
 /**
  * Class implementing cryptography used on a server side in order to assure
  * PowerAuth Server activation related processes.
  *
- * @author Petr Dvorak
- *
+ * @author Petr Dvorak, petr@wultra.com
+ * @author Roman Strobl, roman.strobl@wultra.com
  */
 public class PowerAuthServerActivation {
 
-    private static final Logger logger = LoggerFactory.getLogger(PowerAuthServerActivation.class);
-
-    private final IdentifierGenerator identifierGenerator = new IdentifierGenerator();
-    private final SignatureUtils signatureUtils = new SignatureUtils();
-    private final KeyGenerator keyGenerator = new KeyGenerator();
-    private final KeyConvertor keyConvertor = new KeyConvertor();
-
-    /**
-     * Generate a pseudo-unique activation ID. Technically, this is UUID level 4
-     * identifier. PowerAuth Server implementation should validate uniqueness in
-     * database, for the very unlikely case of collision.
-     *
-     * @return A new activation ID (UUID level 4).
-     */
-    public String generateActivationId() {
-        return identifierGenerator.generateActivationId();
-    }
-
-    /**
-     * Generate a pseudo-unique activation code. The format of activation code is "ABCDE-FGHIJ-KLMNO-PQRST".
-     *
-     * @return A new activation code.
-     * @throws CryptoProviderException In case key cryptography provider is incorrectly initialized.
-     */
-    public String generateActivationCode() throws CryptoProviderException {
-        return identifierGenerator.generateActivationCode();
-    }
+    private static final KeyGenerator KEY_GENERATOR = new KeyGenerator();
+    private static final SignatureUtils SIGNATURE_UTILS = new SignatureUtils();
 
     /**
      * Generate a server related activation key pair.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @return A new server key pair.
      * @throws CryptoProviderException In case cryptography provider is incorrectly initialized.
      */
     public KeyPair generateServerKeyPair() throws CryptoProviderException {
-        return keyGenerator.generateKeyPair(EcCurve.P256);
+        return KEY_GENERATOR.generateKeyPair(EcCurve.P256);
     }
 
     /**
@@ -90,6 +69,14 @@ public class PowerAuthServerActivation {
      * <p>
      * Signature is then computed using the master private key.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param activationCode Short activation ID.
      * @param masterPrivateKey Master Private Key.
      * @return Signature of activation data using Master Private Key.
@@ -100,22 +87,20 @@ public class PowerAuthServerActivation {
     public byte[] generateActivationSignature(String activationCode,
                                               PrivateKey masterPrivateKey) throws InvalidKeyException, GenericCryptoException, CryptoProviderException {
         byte[] bytes = activationCode.getBytes(StandardCharsets.UTF_8);
-        return signatureUtils.computeECDSASignature(EcCurve.P256, bytes, masterPrivateKey);
-    }
-
-    /**
-     * Generate a new server activation nonce.
-     *
-     * @return A new server activation nonce.
-     * @throws CryptoProviderException In case key cryptography provider is incorrectly initialized.
-     */
-    public byte[] generateActivationNonce() throws CryptoProviderException {
-        return keyGenerator.generateRandomBytes(16);
+        return SIGNATURE_UTILS.computeECDSASignature(EcCurve.P256, bytes, masterPrivateKey);
     }
 
     /**
      * Returns an encrypted status blob as described in PowerAuth Specification.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param statusBlobInfo {@link ActivationStatusBlobInfo} object with activation status data to be encrypted.
      * @param challenge Challenge for activation status blob encryption. If non-null, then also {@code nonce} parameter must be provided.
      * @param nonce Nonce for activation status blob encryption. If non-null, then also {@code challenge} parameter must be provided.
@@ -144,7 +129,7 @@ public class PowerAuthServerActivation {
             if (statusBlobInfo.getCtrDataHash() == null) {
                 throw new GenericCryptoException("Missing ctrDataHash in statusBlobInfo object");
             }
-            reserved = keyGenerator.generateRandomBytes(5);
+            reserved = KEY_GENERATOR.generateRandomBytes(5);
             ctrDataHash = statusBlobInfo.getCtrDataHash();
             ctrByte = statusBlobInfo.getCtrByte();
             ctrLookAhead = statusBlobInfo.getCtrLookAhead();
@@ -155,7 +140,7 @@ public class PowerAuthServerActivation {
             // mobile clients don't use them. The older protocols also use zero-IV for the encryption, so the first
             // block encrypted by AES should have as much entropy as possible.
             //
-            final byte[] randomBytes = keyGenerator.generateRandomBytes(5 + 2 + 16);
+            final byte[] randomBytes = KEY_GENERATOR.generateRandomBytes(5 + 2 + 16);
             reserved = Arrays.copyOf(randomBytes, 5);
             ctrDataHash = Arrays.copyOfRange(randomBytes, 5 + 2, 5 + 2 + 16);
             ctrByte = randomBytes[5];
@@ -183,6 +168,14 @@ public class PowerAuthServerActivation {
      * Calculate hash from value representing the hash based counter. HMAC-SHA256 is currently used as a hashing
      * function.
      *
+     * <p><b>PowerAuth protocol versions:</b>
+     * <ul>
+     *     <li>3.0</li>
+     *     <li>3.1</li>
+     *     <li>3.2</li>
+     *     <li>3.3</li>
+     * </ul>
+     *
      * @param ctrData Hash-based counter.
      * @param transportKey Transport key.
      * @return Hash calculated from provided hash-based counter.
@@ -195,27 +188,6 @@ public class PowerAuthServerActivation {
         return new HashBasedCounterUtils().calculateHashFromHashBasedCounter(ctrData, transportKey);
     }
 
-    /**
-     * Compute an activation ID and encrypted server public key signature
-     * using the Master Private Key.
-     *
-     * @param activationId Activation ID
-     * @param C_serverPublicKey Encrypted server public key.
-     * @param masterPrivateKey Master Private Key.
-     * @return Signature of the encrypted server public key.
-     * @throws InvalidKeyException If master private key is invalid.
-     * @throws GenericCryptoException In case signature computation fails.
-     * @throws CryptoProviderException In case cryptography provider is incorrectly initialized.
-     */
-    public byte[] computeServerDataSignature(String activationId, byte[] C_serverPublicKey, PrivateKey masterPrivateKey)
-            throws InvalidKeyException, GenericCryptoException, CryptoProviderException {
-        byte[] activationIdBytes = activationId.getBytes(StandardCharsets.UTF_8);
-        String activationIdBytesBase64 = Base64.getEncoder().encodeToString(activationIdBytes);
-        String C_serverPublicKeyBase64 = Base64.getEncoder().encodeToString(C_serverPublicKey);
-        byte[] result = (activationIdBytesBase64 + "&" + C_serverPublicKeyBase64).getBytes(StandardCharsets.UTF_8);
-        return signatureUtils.computeECDSASignature(EcCurve.P256, result, masterPrivateKey);
-    }
-
     /**
      * Compute a fingerprint for the version 3 activation. The fingerprint can be used for visual validation of exchanged device public key.
      *
@@ -224,6 +196,7 @@ public class PowerAuthServerActivation {
      *     <li>3.0</li>
      *     <li>3.1</li>
      *     <li>3.2</li>
+     *     <li>3.3</li>
      * </ul>
      *
      * @param devicePublicKey Device public key.
diff --git a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/util/DataDigest.java b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/util/DataDigest.java
index 5c0ce515..017b1ccd 100644
--- a/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/util/DataDigest.java
+++ b/powerauth-java-crypto/src/main/java/com/wultra/security/powerauth/crypto/server/util/DataDigest.java
@@ -20,6 +20,7 @@ import com.wultra.security.powerauth.crypto.lib.generator.KeyGenerator;
 import com.wultra.security.powerauth.crypto.lib.model.exception.CryptoProviderException;
 import com.wultra.security.powerauth.crypto.lib.model.exception.GenericCryptoException;
 import com.wultra.security.powerauth.crypto.lib.util.HMACHashUtilities;
+import com.wultra.security.powerauth.crypto.lib.v4.kdf.CustomString;
 import com.wultra.security.powerauth.crypto.lib.v4.kdf.Kmac;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +36,7 @@ import java.util.List;
  */
 public class DataDigest {
 
-    private static final byte[] KMAC_DATA_DIGEST_CUSTOM_BYTES = "PA4DIGEST_DATA".getBytes(StandardCharsets.UTF_8);
+    private static final byte[] KMAC_DATA_DIGEST_CUSTOM_BYTES = CustomString.PA4DIGEST_DATA.value().getBytes(StandardCharsets.UTF_8);
 
     private static final Logger logger = LoggerFactory.getLogger(DataDigest.class);
 


Test patch:
diff --git a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/activation/PowerAuthActivationTest.java b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/activation/PowerAuthActivationTest.java
index 3edb86e7..755e4a53 100644
--- a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/activation/PowerAuthActivationTest.java
+++ b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/activation/PowerAuthActivationTest.java
@@ -41,7 +41,8 @@ import static org.junit.jupiter.api.Assertions.*;
  */
 public class PowerAuthActivationTest {
 
-    private final KeyConvertor keyConvertor = new KeyConvertor();
+    private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
+    private static final IdentifierGenerator IDENTIFIER_GENERATOR = new IdentifierGenerator();
 
     /**
      * Add crypto providers.
@@ -59,8 +60,8 @@ public class PowerAuthActivationTest {
     public void testGenerateKeys() throws CryptoProviderException {
         KeyGenerator keyGenerator = new KeyGenerator();
         KeyPair kp = keyGenerator.generateKeyPair(EcCurve.P256);
-        System.out.println("Private Key: " + Base64.getEncoder().encodeToString(keyConvertor.convertPrivateKeyToBytes(kp.getPrivate())));
-        System.out.println("Public Key: " + Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, kp.getPublic())));
+        System.out.println("Private Key: " + Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPrivateKeyToBytes(kp.getPrivate())));
+        System.out.println("Public Key: " + Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, kp.getPublic())));
     }
 
     /**
@@ -93,8 +94,8 @@ public class PowerAuthActivationTest {
         for (int i = 0; i < 20; i++) {
 
             // SERVER: Generate data for activation
-            String activationId = new IdentifierGenerator().generateActivationId();
-            String activationCode = serverActivation.generateActivationCode();
+            String activationId = IDENTIFIER_GENERATOR.generateActivationId();
+            String activationCode = IDENTIFIER_GENERATOR.generateActivationCode();
             byte[] activationSignature = serverActivation.generateActivationSignature(activationCode, masterPrivateKey);
             KeyPair serverKeyPair = serverActivation.generateServerKeyPair();
             PrivateKey serverPrivateKey = serverKeyPair.getPrivate();
@@ -166,8 +167,8 @@ public class PowerAuthActivationTest {
             byte[] devicePublicKeyBytes = Base64.getDecoder().decode(devicePublicKeysBase64[i]);
             byte[] serverPublicKeyBytes = Base64.getDecoder().decode(serverPublicKeysBase64[i]);
             String activation1 = activationId[i];
-            PublicKey devicePublicKey = keyConvertor.convertBytesToPublicKey(EcCurve.P256, devicePublicKeyBytes);
-            PublicKey serverPublicKey = keyConvertor.convertBytesToPublicKey(EcCurve.P256, serverPublicKeyBytes);
+            PublicKey devicePublicKey = KEY_CONVERTOR.convertBytesToPublicKey(EcCurve.P256, devicePublicKeyBytes);
+            PublicKey serverPublicKey = KEY_CONVERTOR.convertBytesToPublicKey(EcCurve.P256, serverPublicKeyBytes);
             final String fingerprintClient = clientActivation.computeActivationFingerprint(devicePublicKey, serverPublicKey, activation1);
             final String fingerprintServer = serverActivation.computeActivationFingerprint(devicePublicKey, serverPublicKey, activation1);
             assertEquals(publicKeyFingerprint[i], fingerprintClient);
diff --git a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/util/GenerateVectorDataTest.java b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/util/GenerateVectorDataTest.java
index 8c3d02cb..89e20aca 100644
--- a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/util/GenerateVectorDataTest.java
+++ b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/util/GenerateVectorDataTest.java
@@ -59,7 +59,7 @@ public class GenerateVectorDataTest {
     private static File testVectorFolder;
     private static ObjectMapper objectMapper;
 
-    private final KeyConvertor keyConvertor = new KeyConvertor();
+    private static final KeyConvertor KEY_CONVERTOR = new KeyConvertor();
 
     /**
      * Register crypto providers
@@ -111,8 +111,8 @@ public class GenerateVectorDataTest {
 
             Map<String, String> input = new LinkedHashMap<>();
             input.put("activationCode", activationCode);
-            input.put("masterPrivateKey", Base64.getEncoder().encodeToString(keyConvertor.convertPrivateKeyToBytes(masterPrivateKey)));
-            input.put("masterPublicKey", Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, masterPublicKey)));
+            input.put("masterPrivateKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPrivateKeyToBytes(masterPrivateKey)));
+            input.put("masterPublicKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, masterPublicKey)));
             Map<String, String> output = new LinkedHashMap<>();
             output.put("activationSignature", Base64.getEncoder().encodeToString(activationSignature));
             testSet.addData(input, output);
@@ -147,12 +147,12 @@ public class GenerateVectorDataTest {
             SecretKey masterSecretKey = new KeyGenerator().computeSharedKey(deviceKeyPair.getPrivate(), serverKeyPair.getPublic());
 
             Map<String, String> input = new LinkedHashMap<>();
-            input.put("devicePrivateKey", Base64.getEncoder().encodeToString(keyConvertor.convertPrivateKeyToBytes(deviceKeyPair.getPrivate())));
-            input.put("devicePublicKey", Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, deviceKeyPair.getPublic())));
-            input.put("serverPrivateKey", Base64.getEncoder().encodeToString(keyConvertor.convertPrivateKeyToBytes(serverKeyPair.getPrivate())));
-            input.put("serverPublicKey", Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, serverKeyPair.getPublic())));
+            input.put("devicePrivateKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPrivateKeyToBytes(deviceKeyPair.getPrivate())));
+            input.put("devicePublicKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, deviceKeyPair.getPublic())));
+            input.put("serverPrivateKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPrivateKeyToBytes(serverKeyPair.getPrivate())));
+            input.put("serverPublicKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, serverKeyPair.getPublic())));
             Map<String, String> output = new LinkedHashMap<>();
-            output.put("masterSecretKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(masterSecretKey)));
+            output.put("masterSecretKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(masterSecretKey)));
             testSet.addData(input, output);
         }
         writeTestVector(testSet);
@@ -188,13 +188,13 @@ public class GenerateVectorDataTest {
             PowerAuthClientKeyFactory keyFactory = new PowerAuthClientKeyFactory();
 
             Map<String, String> input = new LinkedHashMap<>();
-            input.put("masterSecretKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(masterSecretKey)));
+            input.put("masterSecretKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(masterSecretKey)));
             Map<String, String> output = new LinkedHashMap<>();
-            output.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(keyFactory.generateClientSignaturePossessionKey(masterSecretKey))));
-            output.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(keyFactory.generateClientSignatureKnowledgeKey(masterSecretKey))));
-            output.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(keyFactory.generateClientSignatureBiometryKey(masterSecretKey))));
-            output.put("transportKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(keyFactory.generateServerTransportKey(masterSecretKey))));
-            output.put("vaultEncryptionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(keyFactory.generateServerEncryptedVaultKey(masterSecretKey))));
+            output.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(keyFactory.generateClientSignaturePossessionKey(masterSecretKey))));
+            output.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(keyFactory.generateClientSignatureKnowledgeKey(masterSecretKey))));
+            output.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(keyFactory.generateClientSignatureBiometryKey(masterSecretKey))));
+            output.put("transportKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(keyFactory.generateServerTransportKey(masterSecretKey))));
+            output.put("vaultEncryptionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(keyFactory.generateServerEncryptedVaultKey(masterSecretKey))));
             testSet.addData(input, output);
         }
         writeTestVector(testSet);
@@ -256,9 +256,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -278,9 +278,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession_knowledge";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -300,9 +300,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession_knowledge_biometry";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -374,9 +374,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -396,9 +396,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession_knowledge";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -418,9 +418,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession_knowledge_biometry";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
                     input.put("data", Base64.getEncoder().encodeToString(data));
@@ -481,9 +481,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("signatureComponentLength", String.valueOf(j));
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
@@ -504,9 +504,9 @@ public class GenerateVectorDataTest {
                     String signatureType = "possession_knowledge";
 
                     Map<String, String> input = new LinkedHashMap<>();
-                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signaturePossessionKey)));
-                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
-                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(keyConvertor.convertSharedSecretKeyToBytes(signatureBiometryKey)));
+                    input.put("signaturePossessionKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signaturePossessionKey)));
+                    input.put("signatureKnowledgeKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureKnowledgeKey)));
+                    input.put("signatureBiometryKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertSharedSecretKeyToBytes(signatureBiometryKey)));
                     input.put("signatureType", signatureType);
                     input.put("signatureComponentLength", String.valueOf(j));
                     input.put("counterData", Base64.getEncoder().encodeToString(ctrData));
@@ -560,8 +560,8 @@ public class GenerateVectorDataTest {
             byte[] serverPublicKeyBytes = toByteArray(serverPublicKey);
 
             Map<String, String> input = new LinkedHashMap<>();
-            input.put("devicePublicKey", Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, devicePublicKey)));
-            input.put("serverPublicKey", Base64.getEncoder().encodeToString(keyConvertor.convertPublicKeyToBytes(EcCurve.P256, serverPublicKey)));
+            input.put("devicePublicKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, devicePublicKey)));
+            input.put("serverPublicKey", Base64.getEncoder().encodeToString(KEY_CONVERTOR.convertPublicKeyToBytes(EcCurve.P256, serverPublicKey)));
             Map<String, String> output = new LinkedHashMap<>();
             output.put("devicePublicKeyCoordX", Base64.getEncoder().encodeToString(devicePublicKeyBytes));
             output.put("serverPublicKeyCoordX", Base64.getEncoder().encodeToString(serverPublicKeyBytes));
@@ -595,7 +595,7 @@ public class GenerateVectorDataTest {
             byte[] transportKey = keyGenerator.generateRandomBytes(16);
             byte[] challenge = keyGenerator.generateRandomBytes(16);
             byte[] nonce = keyGenerator.generateRandomBytes(16);
-            byte[] iv = keyDerivationUtils.deriveIvForStatusBlobEncryption(challenge, nonce, keyConvertor.convertBytesToSharedSecretKey(transportKey));
+            byte[] iv = keyDerivationUtils.deriveIvForStatusBlobEncryption(challenge, nonce, KEY_CONVERTOR.convertBytesToSharedSecretKey(transportKey));
             Map<String, String> input = new LinkedHashMap<>();
             input.put("transportKey", Base64.getEncoder().encodeToString(transportKey));
             input.put("challenge", Base64.getEncoder().encodeToString(challenge));
@@ -639,7 +639,7 @@ public class GenerateVectorDataTest {
         for (final ActivationStatusBlobInfoBuilder builder : testData) {
 
             final SecretKey transportKey = keyGenerator.generateRandomSecretKey(16);
-            final byte[] transportKeyBytes = keyConvertor.convertSharedSecretKeyToBytes(transportKey);
+            final byte[] transportKeyBytes = KEY_CONVERTOR.convertSharedSecretKeyToBytes(transportKey);
             final byte[] ctrData = keyGenerator.generateRandomBytes(16);
             final byte[] challenge = keyGenerator.generateRandomBytes(16);
             final byte[] nonce = keyGenerator.generateRandomBytes(16);
diff --git a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybridTest.java b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybridTest.java
index 510045c2..4b476fd1 100644
--- a/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybridTest.java
+++ b/powerauth-java-crypto/src/test/java/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/SharedSecretHybridTest.java
@@ -88,7 +88,7 @@ public class SharedSecretHybridTest {
     }
 
     private static Stream<Map<String, String>> jsonDataEcdhe_P384_Mlkem_768_Provider() throws IOException {
-        InputStream stream = SharedSecretEcdheTest.class.getResourceAsStream("/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/ECDHE_P384_MLKEM_768_Test_Vectors.json");
+        InputStream stream = SharedSecretHybridTest.class.getResourceAsStream("/com/wultra/security/powerauth/crypto/lib/v4/sharedsecret/ECDHE_P384_MLKEM_768_Test_Vectors.json");
         Map<String, List<Map<String, String>>> testData = MAPPER.readValue(stream, new TypeReference<>() {});
         return testData.get("ecdhe_mlkem_test_vectors").stream();
     }
diff --git a/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Activation_Scope_Test_Vectors.json b/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Activation_Scope_Test_Vectors.json
index f046a9f2..e77be723 100644
--- a/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Activation_Scope_Test_Vectors.json
+++ b/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Activation_Scope_Test_Vectors.json
@@ -1,429 +1,429 @@
 {
   "e2ee_test_vectors": [
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "ZK6167RfUYgIbnG6o1JZzA==",
-      "applicationSecret": "oWOf380fH0uDbGzRlB8uPw==",
-      "temporaryKeyId": "27e90d49-8cf5-4d8c-ba21-52d5380b3022",
-      "activationId": "c094a5f2-fa63-4645-b451-687e4d1a220f",
-      "envelopeKey": "BnjQVy+3B5sHBWgaRYjrd/cJBw6g7SlCMw9mhbTj8zY=",
-      "sharedInfo2Key": "Je7NdMBTj0EKJOH37hISXIOxTLMZeIiR2vKQ5v+Nn6U=",
+      "activationId": "33e8dec2-f582-4441-9912-5fd661d06d7a",
+      "applicationKey": "LgwH5tEcWmI9ycpSefqfSg==",
+      "applicationSecret": "snp5fzN03OWNvo1QzhM5Sw==",
+      "temporaryKeyId": "556fdc49-b876-4f07-aeda-5723ca31fd4a",
+      "envelopeKey": "1YFwyMLH7ByPOLBTddLz9KnFb3Y8y/mygrAgAWF4UDY=",
+      "sharedInfo2Key": "Zxyziq96l1od1IeZvkawh545Ez1xKHdgQ5v76FE98Fc=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400544",
-      "nonce": "Ra/i+StQA6CDNPX6abWP6unkwuHPhwQP",
-      "encryptedDataRequest": "Ra/i+StQA6CDNPX68kg1RrZTiAy8jvZP4Hkgk51Lj3D1ivLXGI8N5uRkaTwpTELYbtLasY6D88E=",
+      "timestampRequest": "1743702696961",
+      "nonce": "1DdJmDBDdvEv4FbF0wmOXqrXe/+LM4Gm",
+      "encryptedDataRequest": "1DdJmDBDdvEv4FbF7aKfW5dczj+WVTQjuj+V66Q7rVactMRQhdm416JIxBncRj/1CT2aIJ6XyFM=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400561",
-      "encryptedDataResponse": "abWP6unkwuHPhwQP62QINAfX+kRe5msyhCM3lsk+nzs8HUkmKc0erfV8QdF1Y1CeElams0LVtbtw"
+      "timestampResponse": "1743702696977",
+      "encryptedDataResponse": "0wmOXqrXe/+LM4Gm8LstFB0s6nGdWTxZdxVZ2UBJ9oOCurlrpmAyeC4ch93NelK946kP0s6RLQox"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "JP0HzRcKzcx33u2RrO0Rzw==",
-      "applicationSecret": "9JZYJ8JGrbOi29KxR4VJng==",
-      "temporaryKeyId": "645ba9a8-93a2-4c03-9441-a665b1ede83e",
-      "activationId": "e2efe616-205e-4ed1-b69c-99635e7d6548",
-      "envelopeKey": "klg4EywZBlhyY9oN2NTCnMkM1yXB0T4rBa70SXu8PzA=",
-      "sharedInfo2Key": "BKTNCnFBNbZxdLbqwPDPWwb95SP4ofRjpGxLURMzdGc=",
+      "activationId": "f06d87ce-b1e2-4de1-8e75-b6fd46b6723b",
+      "applicationKey": "KQLuNzBi8KGra9U1gj9Zkw==",
+      "applicationSecret": "bpW/nCpbErA0H2+RRB3R2Q==",
+      "temporaryKeyId": "a723c3c6-4cd7-4f18-9ec3-a5397f14f94a",
+      "envelopeKey": "4flTF0wD12K84VDZ3h1DQ8F+hNdEx7NqqH/giS9VMcw=",
+      "sharedInfo2Key": "yRDY8fJIhwjByQGocFm2USYOLUxCiUxuHC2L13w74Hk=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400586",
-      "nonce": "ZIZ2yNOMz1xUllWSxyEpAS2cfjuZ3vt+",
-      "encryptedDataRequest": "ZIZ2yNOMz1xUllWSo1pvRYkV5aGTFccMJ3+xWXskYRU6u/Xa7tLputcJgsFyO108V16VL0edOZY=",
+      "timestampRequest": "1743702696999",
+      "nonce": "Q42za1NDGY55FXpDh1qth8Y9hwgKGLbB",
+      "encryptedDataRequest": "Q42za1NDGY55FXpD9H9Nqc+FcOszjJqWOXzpSqnOTrK1Sxd9ljfkzof+/2C1c/q6SDSKBtt7Ky8=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400587",
-      "encryptedDataResponse": "xyEpAS2cfjuZ3vt+m7h5HWoTGbvij3PpCwCdN1IbwdhyszVcLM1KQBa5efAUJUIrbmVTo26t/dt2"
+      "timestampResponse": "1743702696999",
+      "encryptedDataResponse": "h1qth8Y9hwgKGLbBnu/hq8fvPwd6c5JqDMC0DX0w6PFBfFPLppVwrkS8Rf49+aR1qrADm2SRn+M8"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "wZDOIIUwgje5ZhwgV/dgWA==",
-      "applicationSecret": "4w2Mj+TEXTXOiTvtUzKB+Q==",
-      "temporaryKeyId": "6f04c42a-a4da-4804-8fe1-723e124d40d3",
-      "activationId": "62a8ba40-dbda-4cd4-92cb-13663ab9fb20",
-      "envelopeKey": "6nD9fQpP6SW7wqCKbTsvxCFmxj3lqbyDs+bgiQj8rjw=",
-      "sharedInfo2Key": "afeOpUAym7wXlcAbyY8pJDpI9ZBeykSLj2Kf08luKgo=",
+      "activationId": "c8d20206-90ea-4d69-8a8b-7d2d18e91300",
+      "applicationKey": "ZbUmitwNXiuTcERir45a/A==",
+      "applicationSecret": "ClBflEgkEVMAfzKLvpQWng==",
+      "temporaryKeyId": "a9659c75-06b8-4df4-af01-9183265b07e8",
+      "envelopeKey": "dTn4nJseA1gBBu0c81/bc7MqG74nT0t7dXoQ6JQjnXE=",
+      "sharedInfo2Key": "t0GX07hsYhudz6AZw04OuU1/VJyBDp/OHXcgT6yQBd8=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400602",
-      "nonce": "iefJbY8u/4v7ZNWzuAqygC/s1DwNFZwT",
-      "encryptedDataRequest": "iefJbY8u/4v7ZNWzU0SjvC/DU/4aWqyiibUYkjwG4Pfw1yfS+ek4I4FuUWJbhAYrSCZGPWjWKT8=",
+      "timestampRequest": "1743702697014",
+      "nonce": "g9cxm6sqesZrlBPLKt6phgCilMejrXgu",
+      "encryptedDataRequest": "g9cxm6sqesZrlBPL8pToxZmYBppQCltPw4hHcXItJdUEg4zsAxCadOBg0y7Am+yC2mnFYfrI0js=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400603",
-      "encryptedDataResponse": "uAqygC/s1DwNFZwTQAKvfqqoHFCAi2kDaNXNes0hEVW5E4n4OScbkkHoAJFr+S1nDs56DFGWjuSC"
+      "timestampResponse": "1743702697015",
+      "encryptedDataResponse": "Kt6phgCilMejrXguXrAQ5EppIYn7TqSyYixSq7gn4N7KtX+78em2AEa5fDyPuNcabtmwSQd1wCpY"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "RIkHnxv2DwDLn/TMNps9Iw==",
-      "applicationSecret": "IEInOO0+MeEWcCTZGSmwkw==",
-      "temporaryKeyId": "1eaccfee-b6d5-46f1-babe-1cde9701c137",
-      "activationId": "dfc1c0a0-a537-4fde-9290-259f9cbae444",
-      "envelopeKey": "JNFDQsgUfK7nMOOOzlpjIMj1H5AWkkgNC13CVlq0FjQ=",
-      "sharedInfo2Key": "QUae9D1608bweYUHOitLM6OUp1sdYsx5ksY0KDVeRYQ=",
+      "activationId": "32d1df60-a68d-4c5f-95dc-c956ec493f30",
+      "applicationKey": "dlHG7V4X0DronVFO6Abe9Q==",
+      "applicationSecret": "Ksc4nFkZ5nuC1q91PZ50MA==",
+      "temporaryKeyId": "ba464e9f-3f95-426a-b94d-7b0a610a402c",
+      "envelopeKey": "XKUZDF9C2zHJklj7Aw891wc1m7CqJFONLz/DEnwyWco=",
+      "sharedInfo2Key": "lMd+rpDKpLhHNYUgWw3zc5Cyz0kFrSMmzmtx6TCCAZo=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400616",
-      "nonce": "7njAHkjt0yBsvGqdFHOaFlYDst3KugRD",
-      "encryptedDataRequest": "7njAHkjt0yBsvGqdWgfw2a4qJiyqR18SiU1cQ/CYoPaRoYHY1dCyqQa0cEo53JCxMq2SH3YZDvI=",
+      "timestampRequest": "1743702697027",
+      "nonce": "I1e6sdRm/U9ButLm0ZOBcSL/pKHLEesz",
+      "encryptedDataRequest": "I1e6sdRm/U9ButLm3xZsh2z6R/S0JgN6nh4aYLFjywmXBE/1igS803IkVr+oOXCg1gXmnCDRFzk=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400616",
-      "encryptedDataResponse": "FHOaFlYDst3KugRDHhx1CAhKQ/f3xSmffMUUwLmcgwtXUQFRCtcz7SZp7IDa27UeZuBScMGIlp1j"
+      "timestampResponse": "1743702697028",
+      "encryptedDataResponse": "0ZOBcSL/pKHLEeszoejA29+1BrGHcliR4M/ihWXpFnDyvatMmUL8h0xHt+dpze0hgsZVDX+sEz4D"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "sifO52pUbdYwJ+gB+8KBvw==",
-      "applicationSecret": "7AvkCjDC/xz5FsZAjYXqTA==",
-      "temporaryKeyId": "993121b8-52b2-478c-a064-af8ff80eb2f3",
-      "activationId": "a35ff015-4633-4ba2-825a-c8d59c848153",
-      "envelopeKey": "+kFU1aOBZvWnUwAnSH/Rhpc9B8al1hv2nd82oz56FVk=",
-      "sharedInfo2Key": "AfZjuOQISmQLxbnFOv7vsnj2Z+CzOObngD0nY8DDcyw=",
+      "activationId": "85acb7df-b9eb-477c-ae64-1762657f983c",
+      "applicationKey": "QGao2uSArVkwepRVPlEcEg==",
+      "applicationSecret": "lUPuU+fsFUy6OJW5EGHzXA==",
+      "temporaryKeyId": "837006ae-cd64-4562-ae55-b17491094904",
+      "envelopeKey": "meKeytPoDzYdPzUvCDRelqiOGAUFUx1DnTMqSINXerw=",
+      "sharedInfo2Key": "2mua6HfTirnA6qcATkzXH42ZE7nlRt7JVagXXhIvzes=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400630",
-      "nonce": "D8DaB6I6fZoLXPSl454eMSJu2YX+Ow+T",
-      "encryptedDataRequest": "D8DaB6I6fZoLXPSlCNKZlAWEURgaIkwx7X2Y2EYEDRU8skVMeeWZQXHvIl3NU+e/ikHu9KFKb/U=",
+      "timestampRequest": "1743702697038",
+      "nonce": "yLgDa4MUzMwaV1G1fvTnLwCe9+x/8l9D",
+      "encryptedDataRequest": "yLgDa4MUzMwaV1G1WGTAMe5Mj/iwi1y645lqZDOrnlUaha4RIJ/0Ge0iZMAieM3CZRJWuH5Y5dg=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400630",
-      "encryptedDataResponse": "454eMSJu2YX+Ow+TruuIHNC2XMBzCsi03+DyNkDHHW8NNXdmtmscG1/WkUY3+KHER695QzlYy8m/"
+      "timestampResponse": "1743702697039",
+      "encryptedDataResponse": "fvTnLwCe9+x/8l9D/hO/PYLsur8HHMuEWxLVyv5MqboJUBu/yWQnyy6bVz5Ef2m8w/EYL0QWJ3TA"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "PDOCNqC2itI15bWvOMYo4w==",
-      "applicationSecret": "zl7iMQ9xc1niF7llaRxpgg==",
-      "temporaryKeyId": "74758dcb-5ad6-44ef-8167-c607b4daee37",
-      "activationId": "e1ed5148-a664-4954-b821-f34bb0023d13",
-      "envelopeKey": "TRaU2pagvNsWXQ0YXGq4u5Qlr1TO3aJCjSE9Awg+AF8=",
-      "sharedInfo2Key": "WecnFqNJvmScjy1PLEQmVSdQn7oevwU+T5ZdE9WH5vY=",
+      "activationId": "9b450361-8971-49f1-9ae6-1397a59cf8ce",
+      "applicationKey": "VAE0ziTYKSx9aqNnrszbyA==",
+      "applicationSecret": "nGT5UrsTZrW+uDAeE4VZow==",
+      "temporaryKeyId": "a4519b5b-3fc9-4ea7-9888-0214e769f24b",
+      "envelopeKey": "NdLzzeRHfvpxc6fVEHUQuCUOwrIi5umZUCfKFePF3Nw=",
+      "sharedInfo2Key": "slVO5Vzk1U+ojC6BDKWP9iEabhd5LnNybr0ChNf4TOw=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400642",
-      "nonce": "wYHhICZUEnUPwaF5Jdepqy8WkX+1QqIj",
-      "encryptedDataRequest": "wYHhICZUEnUPwaF5faCfjcxSX+I1bKkql4XvmR1xp3OTZzasOW5GQnO2XsaQYhHGMMZqKUui7gE=",
+      "timestampRequest": "1743702697049",
+      "nonce": "0zmOx7hOGQwUBWrmv1JFfRQSfh37B40M",
+      "encryptedDataRequest": "0zmOx7hOGQwUBWrmcl7DGLx/80FnAU+pqelUj0rPJ2NT90tkUHGd9YFXbqDpL5ST8LO5MZ98mJI=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400642",
-      "encryptedDataResponse": "Jdepqy8WkX+1QqIjQ7zCEcZnG/hmw2QPvkO1cHKEi5M8a7YXNvmLIFI1j+yw3FBwKwrOxKfePRdt"
+      "timestampResponse": "1743702697049",
+      "encryptedDataResponse": "v1JFfRQSfh37B40MOnPAdqTEfnHpxQPZY0t9jh5gBHmi8sqjm6MiekXoVrtArTSVKlRXx0ePzPQU"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "OlkGVOLvbbkMoYetzB6KPA==",
-      "applicationSecret": "t5bDsddm+85K1h3+CK66kw==",
-      "temporaryKeyId": "0a6c03aa-dfb9-4f90-8909-5db17d5cc54f",
-      "activationId": "be0fd044-a695-4643-be55-306b3d22781e",
-      "envelopeKey": "SkFRoNkL+varOTqLsRAq+32x/KnSaqoIYxwySyFDbTY=",
-      "sharedInfo2Key": "Y6A5oIX0encoM8zqi9oFhOEn5jcRmoWwMaSXVSK9KYQ=",
+      "activationId": "3d8acedb-4151-4902-bba7-af869cf5c49e",
+      "applicationKey": "G5Q6NpS75dYwEGZ9EjApiQ==",
+      "applicationSecret": "JHJzhOuEiPpI7iOA+JkpyQ==",
+      "temporaryKeyId": "29c4e9db-474d-4d81-9d63-a92e4cf8e122",
+      "envelopeKey": "GaRb10omo10tC+nsE+pErsWOpeL7yxi13MvUtRNGBY8=",
+      "sharedInfo2Key": "XasnYLNJnxOHZjyQLDshHsd5kgw68mNTI/uhAb424d8=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400653",
-      "nonce": "vT+6vvq3KqB9mn8ShS7YobM+W/dFUTuX",
-      "encryptedDataRequest": "vT+6vvq3KqB9mn8SwjHfEE0OHHK0hxUP2ZgjlFeW4L+AIqQCQCWW8m3YPL3KuOh+WLRS1qrBfPQ=",
+      "timestampRequest": "1743702697058",
+      "nonce": "yB6D8nKcSnQZUZclW8iuHjBcXy9swbuQ",
+      "encryptedDataRequest": "yB6D8nKcSnQZUZcljlEEhD8zV4wsg0OS7DeU0ID082SBbjpJS6c/XZizZQNqcEjcE1/XcwlV4Vc=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400654",
-      "encryptedDataResponse": "hS7YobM+W/dFUTuXVCIXnQH8lrgKV6OL+HVrhdAvZ5XMaPaqaN4u+PnF2Ho6F6ONZUcEQFJJM3P+"
+      "timestampResponse": "1743702697058",
+      "encryptedDataResponse": "W8iuHjBcXy9swbuQNlpF54fPOwAY2tsfoihsOzac7LrAny8oPRCd/pNr+TgX8llCXqIPEjWYXXeQ"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "KgTdUNYCLiPvyyqElTAOog==",
-      "applicationSecret": "BrZtM0AldA9nLSLxEXQ7fQ==",
-      "temporaryKeyId": "1726592e-4c5b-4c74-8d87-dd97400f5fd9",
-      "activationId": "85535008-1a08-45e9-8a1c-5bec6d6ff9ee",
-      "envelopeKey": "QqjptjXFaRPSMA6aGy4a21AXSMudPEtOr4mbhOCxhv0=",
-      "sharedInfo2Key": "WamnbSm3ynF2KeJ69fUj3wUCL4rtlaGaYqqyruDmQZs=",
+      "activationId": "26674637-19fa-4f72-b1a0-1a0df854a37e",
+      "applicationKey": "FKQ26/OXCM9knhU65aA1tA==",
+      "applicationSecret": "GljMo5tcO2RP+yEA9lqsXg==",
+      "temporaryKeyId": "1ab816a9-4ece-4c97-952d-f1d6311ed2b0",
+      "envelopeKey": "wlZiJH5khXy+x0RzlsXEHfLmExyxb0Y0YNnxpPUX26A=",
+      "sharedInfo2Key": "kM0aQJCROzpeR88oNFmkbGg0Yep+RUNuanfSS3/UEok=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400664",
-      "nonce": "XOxp8aS24kxRNkRd71Hb2h4cxfkhU3Dj",
-      "encryptedDataRequest": "XOxp8aS24kxRNkRdDVBnZIyibRDQGSyiLROCztceDqlQO+M1ap3naMD/6riElc75C/FMFyjvS7Q=",
+      "timestampRequest": "1743702697068",
+      "nonce": "8q4KHOF5fGDVsPlRA0S9ypFcUUj3wara",
+      "encryptedDataRequest": "8q4KHOF5fGDVsPlRYyJDttPN70p5ZA5MroeRAjNZVoYRDB9pGJP+uCZwAPXny52STxIe1sRB3yU=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400665",
-      "encryptedDataResponse": "71Hb2h4cxfkhU3DjEpXdqzFWb64VnhxLDSH2lWLx5JK5zcN8k4XKoFPbz1AaXpnawbQc2LULqOH6"
+      "timestampResponse": "1743702697068",
+      "encryptedDataResponse": "A0S9ypFcUUj3waragzw/Qab0fZNwB3nE2FYNlgT7FNSlt+oT4FS1UsjPwqNX/BgHkxLhq19R4Jtj"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "W5sCLCDnbhQMs35U4Bon8A==",
-      "applicationSecret": "AX6l75k60RHB/UAFKaRntQ==",
-      "temporaryKeyId": "15295f0c-f7a5-48c4-86ae-7f3a2c95deea",
-      "activationId": "7008fa69-7706-460d-a896-0aef858f2087",
-      "envelopeKey": "0Rjqy7xLIXFV7V6tNJwEqPOnVsN+jEhoPLQGd/G2v7E=",
-      "sharedInfo2Key": "SI/1HUzATMQatjkUjfwUFMVnDDl27ejvREfU5Q/MVr8=",
+      "activationId": "7a798e23-35da-459b-b4ec-1355b809dd4e",
+      "applicationKey": "A/ZisvdGZRmdibcro0HRqw==",
+      "applicationSecret": "knSERP/cVBvapMUULbcwTA==",
+      "temporaryKeyId": "27824d5b-e1c4-45eb-8d20-b88fb11201e7",
+      "envelopeKey": "yBraiXV7kru6RfTsYe1ccoffpA9XGNrtZEiOdKfg6tw=",
+      "sharedInfo2Key": "NAo8o6sfCMomHU6XuWKsttipQizmtRLtGf05AdUXMec=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400674",
-      "nonce": "fkh6Wmm6DTxHj5StNkyZKjdPS+2W7Rx4",
-      "encryptedDataRequest": "fkh6Wmm6DTxHj5StvY+qhfsgKAAOIV3IIYkr8m1Dd1c/aKf1aCQ7hWuvXse4TL0dpRJIrHPaqO0=",
+      "timestampRequest": "1743702697077",
+      "nonce": "biQKk/7oN3KuUYpMF2k5P14paQdyxnDV",
+      "encryptedDataRequest": "biQKk/7oN3KuUYpMX4pSM5TmPPeu0lTt0AmtbIZb9Lpofo5dfStHUxkEKFCV/BuyzTbxHb+ov6s=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400674",
-      "encryptedDataResponse": "NkyZKjdPS+2W7Rx4Uku5bxJ8MAmgXRKtS2zqQk3AHoi3UIbccLkn6YkCAxKNsrARQ4tY2uPzbVxI"
+      "timestampResponse": "1743702697077",
+      "encryptedDataResponse": "F2k5P14paQdyxnDVLyOPVTy3zOB3Ab7Ay35dSGrva37LqKkirylQ9wqHvMA2qZqzWaWYWsngjZf0"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "dJLUQI5QdQXAV8BCP+SVFw==",
-      "applicationSecret": "yvC+PDuutnUJ9DnDoyqW+Q==",
-      "temporaryKeyId": "a4a67778-d91a-4102-9e57-53731b207f85",
-      "activationId": "4f4f6a8a-8e6e-4019-a4a1-0cccac896156",
-      "envelopeKey": "u4Ah59PkVZV83f4Bs5T0Iopt91pWfWRpYyvDbrOWL5w=",
-      "sharedInfo2Key": "TjZ5tk+FPUHRTbjbeJkI0fjazqUWwloodMBHp63E2EU=",
+      "activationId": "bc301f13-3b1e-4cc5-adf7-8ada66fbe505",
+      "applicationKey": "RVO/4Y6J7lfxHwu2XR+5dg==",
+      "applicationSecret": "BMLYjsV5Kz/xCYE3WnSXfw==",
+      "temporaryKeyId": "b48952eb-a3f1-4dea-9009-e34be2c645fc",
+      "envelopeKey": "VTHCu3DN59Dd0WF7aWUEiomiiclVcJy11RN67+HbQDI=",
+      "sharedInfo2Key": "usyivXvi3UCNaaHHAFsr2RaalcSdu7gOlZ/K06x4ZZE=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400685",
-      "nonce": "BSFC49wRx7z1BZrpO6Fl1vNohVI2J9lC",
-      "encryptedDataRequest": "BSFC49wRx7z1BZrpp/RGNX5UUIs0qElw8N+3IspB8U8vkql4p7TNR5n2kgG6JEdwm69XJuoAPto=",
+      "timestampRequest": "1743702697086",
+      "nonce": "ZAPEC6extwif7w44Kye3G5MY4LYOkdMm",
+      "encryptedDataRequest": "ZAPEC6extwif7w44uG8abZrdvKWg4OePYqoq/MYnbudJTJM9SD13pTsQQa1k2c2O0a6n9Sep4Ug=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400685",
-      "encryptedDataResponse": "O6Fl1vNohVI2J9lCmmtl38bV442Qnp9E2/ypcUVYLU3/EDMbpt6YZQRvvK9dpnw359XMjhr8iE3w"
+      "timestampResponse": "1743702697087",
+      "encryptedDataResponse": "Kye3G5MY4LYOkdMmKBSqdhZ4sqqoAsOBFAcr2jItcjlmLv9SIZY3UDuiSKqLMkVcROl26Mla/bYF"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "4L1ARTIAdXlRUGmvpHvvpA==",
-      "applicationSecret": "0pfgqBAZfAoLpUWQPciEvQ==",
-      "temporaryKeyId": "a1dcd0f7-121b-479d-b8cd-374c920fda0e",
-      "activationId": "d4aefbdd-bf5d-4ef4-96e4-1e5c8cd8ec9d",
-      "envelopeKey": "lPyHijFRnWxeGW/cAIqMb8CxYp/qx0BpyjwcqcINWGw=",
-      "sharedInfo2Key": "cpTDHnfup4jkv8owN3mTPp/Uqo1m8qOmGB91QykcuEs=",
+      "activationId": "228597b3-a372-40c2-b6bd-6a87f7c264b9",
+      "applicationKey": "iKmwninFtD2fhoNPoEXyug==",
+      "applicationSecret": "4+LmtbfGHvqlO+CDCny4+A==",
+      "temporaryKeyId": "e4387268-cf00-4458-b8f7-283fe2b48363",
+      "envelopeKey": "hgfB2ySiDLpjtoAxPU2F5AGD0gF+sDyJYYzRxi0lSA8=",
+      "sharedInfo2Key": "njjHlxZlyddGgp5seZBZza1+PgQ6gwUWDWDqi3fswBc=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400695",
-      "nonce": "g2Qjx/myF/vy5wzXcZ9IW7y/PtMX1jr4",
-      "encryptedDataRequest": "g2Qjx/myF/vy5wzXiBAvmqpKLGkTT16AnH6p3Y3MCTzuihvlrnGawzXtC4A4QwGO4Jbq4ZONUqU=",
+      "timestampRequest": "1743702697095",
+      "nonce": "iOHRBwiVtSb6Ik52y3CXwskkYFQCJab/",
+      "encryptedDataRequest": "iOHRBwiVtSb6Ik5231SFDyf2vopZ5eHDKh1Kd3Y6FJjYhJ8L4Q6Q5/HyMFeUzhLHfJHM3qNP7n8=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400695",
-      "encryptedDataResponse": "cZ9IW7y/PtMX1jr4xVEHA1XkxFGsbxICcZw1RgMC92oOTCij+u5UgUxjvBKZlryZ349u9DPUehut"
+      "timestampResponse": "1743702697095",
+      "encryptedDataResponse": "y3CXwskkYFQCJab/hzdUqkCRY/QcEs/gJriBmtPD8ulPmU2wXnfhshxc7R+CGr9QC8rwYlTJnK9K"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "3YAmBrgn3tw9WXiB8HUU3Q==",
-      "applicationSecret": "HhM/xTtASo+Fhj+8VywtEg==",
-      "temporaryKeyId": "a1c7bffc-4d6f-4932-898d-5b8c27ba8a3d",
-      "activationId": "1255f3c3-0d58-4b7f-91db-c5a8795265d8",
-      "envelopeKey": "1uO1z1/JhsxCMZG6FmhcdQPHCUrQDeuJjAaUBornauk=",
-      "sharedInfo2Key": "U79NGDj3IN8jIkfuUs6g4JB/FgELaw/2k5xR52oAmzs=",
+      "activationId": "27cf30dd-dabb-4234-8f12-6403c03af67c",
+      "applicationKey": "TUh+V1cXhUzOWdnpqej3vA==",
+      "applicationSecret": "Ar073mhOpq0/gzOqXQSwSg==",
+      "temporaryKeyId": "2e6de4da-4056-4d7a-9696-f66814a81c8c",
+      "envelopeKey": "x2H5M8Nv7iwnBwOLsYqE/5UEk2r+ZSVlvBggDu8bTC4=",
+      "sharedInfo2Key": "X6fqkaB6wSaU4HhC46WJGqUbc/fG5Mc//ruhqKvP10w=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400705",
-      "nonce": "2UHf9xOno27eQQCkT/numRaMDiEV79Pa",
-      "encryptedDataRequest": "2UHf9xOno27eQQCkchRiET4A4WoWsXDKIk0SupuM/GEr0Fg3G8wEwehSkbjs8ZYlDxjvDKcQkXA=",
+      "timestampRequest": "1743702697104",
+      "nonce": "/zTrkpeVW/LeSTpxQd/fDajqwYnc1N9j",
+      "encryptedDataRequest": "/zTrkpeVW/LeSTpxJzewOCp8Y4z42GBUtPB8eCLutVUNjUuP6agMEsUZSsOKVwd2ImO4EzeMxIA=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400705",
-      "encryptedDataResponse": "T/numRaMDiEV79Paa27R4sir8pOGkOnq302gsCSnPU/Rox4DrLkpOijjqRULJ5a1v4bG57JFZAIP"
+      "timestampResponse": "1743702697104",
+      "encryptedDataResponse": "Qd/fDajqwYnc1N9jbMVNr4tttKIYdOB4Px/XxaScD+KcQwWoAE1RTNC/TWPpFNQ7Xdn3C0p7kdmr"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "n0eT1BtBjIe2t2RlG2Xotw==",
-      "applicationSecret": "6a0GV5mwZteBhwqADQG66A==",
-      "temporaryKeyId": "b51e363a-23b8-4a97-8495-bfdc2f484ae3",
-      "activationId": "ecf91b6f-0110-4e96-8d76-d66a568d83eb",
-      "envelopeKey": "dGPw5C4G/HxKGcHPUIhxFmMf8IZPL4INfAjg4F8mKSs=",
-      "sharedInfo2Key": "sXTUtZVk1xU6FrKeZa6/0Vzu9+qCm/zxqDXx0LTvrE0=",
+      "activationId": "10b88a43-43b0-489d-8784-e37983dc4e62",
+      "applicationKey": "Z379yVGM+i8lvELhiM2QCA==",
+      "applicationSecret": "hW7UKPpXYjzfOtceUvDiMA==",
+      "temporaryKeyId": "28b3eb40-def5-48de-99f2-7849377ef717",
+      "envelopeKey": "e69SBkdvYrKeIjdCvuaNXmlYyr5XQkhftzZFR8hoDO8=",
+      "sharedInfo2Key": "L+O0Zg9/81Lp3PjHiTvF0+4kOlSg95I7+WTnzonz9CE=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400716",
-      "nonce": "l9oW5hWn6WKOYLkIPlai4OydOA8ZYY0x",
-      "encryptedDataRequest": "l9oW5hWn6WKOYLkIsfg7DCeYX+2eD8kYQd9OA+cEeAwJiOwvIEs6yf5bPCHek0qqWOX/RKDNBi0=",
+      "timestampRequest": "1743702697116",
+      "nonce": "0dLtUTUHUWJx3aaOsGDA6KTTuwNjkNKX",
+      "encryptedDataRequest": "0dLtUTUHUWJx3aaOxfQIejQCWsNGW7Tgdn8OT8GEYbRARY3zUwz0o7IBkSUpI8GM9PNxhsFVau8=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400716",
-      "encryptedDataResponse": "Plai4OydOA8ZYY0xVX9uIQHnk0Z5xAN3C8eq5PhFDc93NYu9ipBOmkvucR0zWVjwh0Hs3gk6kXMu"
+      "timestampResponse": "1743702697117",
+      "encryptedDataResponse": "sGDA6KTTuwNjkNKXxntB3o8rJ+aY9JD6B8eQKL9j+Oj8SJuG2cCcbQCruGTAN/djGpJx2/L4uUqk"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "wHcPRxDOmt73nAQI5lJbAw==",
-      "applicationSecret": "lyt8rAyp+QnBJPiQm8WwWg==",
-      "temporaryKeyId": "d86cd115-db50-4160-86e7-235c0263873f",
-      "activationId": "58879a48-7af1-4cd7-967d-964cd97c1640",
-      "envelopeKey": "TDPzgRJVltUahheWmFzGwzi6mnszFyuAXZVdWKRkK5Y=",
-      "sharedInfo2Key": "cpgXLHCFwT21Z/HaVEMOR3a2KrCb+DQfBxg2Yj+vaWA=",
+      "activationId": "42cea783-c6a5-4f97-9737-6bdde79c5d07",
+      "applicationKey": "5tF3vc5nR5C1gyBmjLWqLA==",
+      "applicationSecret": "SrJ25kzQqQ2t+L4vsvTFFQ==",
+      "temporaryKeyId": "58759976-e48b-4969-9103-d677254ba96a",
+      "envelopeKey": "CZpxI5wwG+SiY3w6nIIET32B4ANfo1IXevyzauHUz+o=",
+      "sharedInfo2Key": "3IiNe4s3CDh+WE33YHQ3XMZAKFLeMVmflJ3NQBqn86g=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400725",
-      "nonce": "jEYREHEoDgb1TtyWEf+uwiIxQzOQzG1m",
-      "encryptedDataRequest": "jEYREHEoDgb1TtyWQsEadk653H/bKCaFpOjEv26pfzVICMU/f1A26Q4mcR/XM2GMf+ep+Desmy4=",
+      "timestampRequest": "1743702697125",
+      "nonce": "/oVkNFn/8fn7rGy1LFJu/zCqAnLyQi/+",
+      "encryptedDataRequest": "/oVkNFn/8fn7rGy1uN61wZetgUFwn/vULGHjb1rmIDFugH6za+2xzgIDo3SSB7O4yn69rpEl1xU=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400725",
-      "encryptedDataResponse": "Ef+uwiIxQzOQzG1ms5dPO6qtisKf4oHZXXLULT3A2nNTQx+PsKolMV7g4iq1HbfXYmJg5KYOz0lJ"
+      "timestampResponse": "1743702697126",
+      "encryptedDataResponse": "LFJu/zCqAnLyQi/+MSdrUutg/nTZMu3tPBfTWh0VmY+hQMuQwzxelDmY4U/HwRXNS45kB9WunmMs"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "eWCPfB5NkdRCxyVN7kgemQ==",
-      "applicationSecret": "if9jdcfi0/D4TIQIDcLTMA==",
-      "temporaryKeyId": "0cb58841-870f-40b8-a10e-3abc51f15d55",
-      "activationId": "3209a86c-a1e8-4184-b023-51534dfa3ea0",
-      "envelopeKey": "2jJqVorcFQ8pxGbHYtGvOjrm8vVWFSCNa+MCE08XTFg=",
-      "sharedInfo2Key": "QMk0iKSc5hcslNKZJi6Dyvs5uLCtFDjzhIS8ljUfBEw=",
+      "activationId": "1f15b9ed-f405-4d5d-9848-7b4329c16405",
+      "applicationKey": "cQFleATQvkzf4y8bG0MolA==",
+      "applicationSecret": "j7DXLnNAkt5q5x2Y9DiZZA==",
+      "temporaryKeyId": "4a797794-d5af-4b07-8c15-86a1c3f4b4d0",
+      "envelopeKey": "3XHHWQfZYu7EbKZugnKMuJze74Rz96iTEHux9wQGmTE=",
+      "sharedInfo2Key": "JKwywed9ty4RLCzLzO6vVFTyPS/3nI99bAk+zfjlbkM=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400733",
-      "nonce": "NQgri4XyGMjsC1VolMzZJZ/Ju2JGo6No",
-      "encryptedDataRequest": "NQgri4XyGMjsC1VotuyqgjF0Vgc6vCTr6rKJeDkkLjLj0hAl/U4j/I2IibZASSdEsW518ePx4+0=",
+      "timestampRequest": "1743702697134",
+      "nonce": "Gu+mjqmxFtT/1zsSHP62lLQ+RMqlj/Rr",
+      "encryptedDataRequest": "Gu+mjqmxFtT/1zsSmX+Wj42VHzZAEy8W/29WYb277r4wHa3bhqcFwEFdfsQ5CHKNpvlxBSoNMhM=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400734",
-      "encryptedDataResponse": "lMzZJZ/Ju2JGo6NohPK/7fyqOE4BtL0/K4voTKd8G+nrlmz+AnSPCHbEIBxQpdgjPEnqSX+CSg8m"
+      "timestampResponse": "1743702697134",
+      "encryptedDataResponse": "HP62lLQ+RMqlj/RrPGqD3xwf18DJKjLd/k+W07HHqV1lQ9vhVEviaDAEupx7VVUDcuTGN+uWCSiO"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "yQGrHXd7AqxU8FVHrAe6cA==",
-      "applicationSecret": "NUPcbOkNWlO1g6QyRNOlRA==",
-      "temporaryKeyId": "1c938550-883a-4020-b7f5-edf0e4226ec6",
-      "activationId": "8b86af41-cca6-408f-8bc3-1850201b28f2",
-      "envelopeKey": "BusztV2h0pwVQCP/LKQHjJ9HGNNYh3xXpdfStKNpLTE=",
-      "sharedInfo2Key": "ZhsFL5cl1RJo+mkYx0+0dDvHscPcQ51TgQmUG5KVdhY=",
+      "activationId": "78f2da6a-3649-4796-ac1d-268d0d30eb14",
+      "applicationKey": "sXuwM5Imr700JZcdaHUpyQ==",
+      "applicationSecret": "Ib8R9s7iDMmFiqW2qTMPrQ==",
+      "temporaryKeyId": "848f4ea0-8e93-4074-a6ab-6fa2e3826e82",
+      "envelopeKey": "U/bnsrGuMK53dB1Ty6NxjxeMYZxgoTLWelwqZNbm854=",
+      "sharedInfo2Key": "3RdHV7j8Iaqa7K1ye7IhVQ7zs+ElFj/05OI5rCbnuLM=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400744",
-      "nonce": "QGDxdvBz5E+lHaaGEEWkiqbveca8Trsy",
-      "encryptedDataRequest": "QGDxdvBz5E+lHaaGVUWx+5o+wxXQu/SEEmomNc335KwY9JBq8LSorSzTIvLAEfW33yiLUj/aKU4=",
+      "timestampRequest": "1743702697144",
+      "nonce": "VtJG0FU+8zKRIwNbCE2G/quI70osXJIf",
+      "encryptedDataRequest": "VtJG0FU+8zKRIwNbxosz8IR5jF8QqEtOMgEDm8H/g6Nn3HTPLtaR70l2qlngsDUtgHu+bRda8pY=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400744",
-      "encryptedDataResponse": "EEWkiqbveca8TrsyKPBOgEMXCnKu8aQ3hkUnO5plxx/TbiFCoEwQI8u8I4vDhh+EoJd1SD7DUgqc"
+      "timestampResponse": "1743702697144",
+      "encryptedDataResponse": "CE2G/quI70osXJIf3hLXCqMkCdMPjxk7zmPxAV8aAORyu0Tv0C+kbgSJBhreZrmJpdU3j16zyx5S"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "3TgOdkthVkphczlf1EWTzw==",
-      "applicationSecret": "zTp47NVZpQB4hecvFJ+NMw==",
-      "temporaryKeyId": "655ac66f-47ba-43ae-8967-03109f6759ff",
-      "activationId": "9e40679b-710a-44e0-bf4e-2b451ec372ad",
-      "envelopeKey": "MUnh9CnZqmbPwGXmHivx4EPFGeMDA2tpNi9FXwcrTbE=",
-      "sharedInfo2Key": "nP6jOsgPktMq9K+hhStyG5F93Zgns1edHul06tWF4/o=",
+      "activationId": "1752c96a-d8df-418f-aced-cfa7513ab2f1",
+      "applicationKey": "wpcC057Gsg7QmrLlAbLMdQ==",
+      "applicationSecret": "8nsHK35eyvZm32+Q2PtUgA==",
+      "temporaryKeyId": "e1335fb6-5334-4e2a-bb38-a32cb11dc86a",
+      "envelopeKey": "UYPRk3eBTj5o9wHU1iBMW0hSa9qpNA2Ey7cnz+chVIc=",
+      "sharedInfo2Key": "U/kodLJFy62NhbN49U2YjNaG/y7drBgnE7zHLjfprFU=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400752",
-      "nonce": "O6FGg+DpyJXosIug0EpcYJW1TO4hmUXR",
-      "encryptedDataRequest": "O6FGg+DpyJXosIugMXutXffUHH0ZIr4gXk7lzFi/q+uOItscjd/jevWm6AbCvyu4jx/DqTEXoqs=",
+      "timestampRequest": "1743702697153",
+      "nonce": "bxBWbID6HhS4fYO0uGzvRUXIg4bLtegF",
+      "encryptedDataRequest": "bxBWbID6HhS4fYO0dOEcDZjR+OGKmKumqaRMIC9ZSkA7LT6fYU8F/OidkYlXJbP3T5bzQ1TBpp4=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400752",
-      "encryptedDataResponse": "0EpcYJW1TO4hmUXRAgJN1h1OKmF84Ijhr5tzef0cOo36HrCJgsaOivq4HxGGe0UJXfCV66qjy+Ra"
+      "timestampResponse": "1743702697153",
+      "encryptedDataResponse": "uGzvRUXIg4bLtegFoejd2W9RBRKpDn8c59fxzCwOxa55V5S3DMPG8sHEq/dZaQ6o+Z4mr5NSK6vV"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "gKYxfDbIL8SMOxaw5fkl5A==",
-      "applicationSecret": "WnrhC9aDvKGtjme3MuDbFA==",
-      "temporaryKeyId": "02a2f18c-e681-417f-8332-29b2c249e7ca",
-      "activationId": "78562db6-5ddb-432b-a453-35fa7fd0377a",
-      "envelopeKey": "uSkSLOeCLdiQDpDFWkhwE3BA9dxPv5Tz9RSiUfx9Mdk=",
-      "sharedInfo2Key": "H5zWiv7lGqf/Lyk3wYHH/i8NoohV+3Od77iqmyBpUMs=",
+      "activationId": "6f117a2c-5692-4db0-b5d7-e3445862effb",
+      "applicationKey": "HN0TUSX20RDLXRzwCPpEQw==",
+      "applicationSecret": "wz6HNHpoPS6IXsFzFHBcaQ==",
+      "temporaryKeyId": "765fe8a4-705b-48e2-89e1-adc887790bab",
+      "envelopeKey": "QUH4dMzgz8SmLotDkluB0o1GHHr4SdkvP3vF/x3T0zQ=",
+      "sharedInfo2Key": "BUPb5wvVddKa6SBWHX0UytQfK73uZr85I+J1HswBpAY=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400760",
-      "nonce": "JgMud5bmMWbRZbiGLMkSJe6rubZRkRwd",
-      "encryptedDataRequest": "JgMud5bmMWbRZbiGxG9uxXB9/TVWvZJhjDTd3f8XWaLTdCwV9+7IHLBUrbkIMUITQelBJNHCn8I=",
+      "timestampRequest": "1743702697161",
+      "nonce": "Qf4TwsRf/0FDtW2/4LpRmUj6w9UAUyMj",
+      "encryptedDataRequest": "Qf4TwsRf/0FDtW2/JDdISjogxBMg8OFA/b63Zj3ylx2IKWkzjdYRXSfyzd1SeHaIIwj7P8agBj8=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400761",
-      "encryptedDataResponse": "LMkSJe6rubZRkRwderxsu48OxA90HqImMynPfmGSx3iW80y1HlIedDWYnkErT+4OBv80GBQ/X/Uu"
+      "timestampResponse": "1743702697162",
+      "encryptedDataResponse": "4LpRmUj6w9UAUyMj/ywnos3C5bhSt4QLb2YMRXAt4RLkrzCk4+1e2Pt2A77zbbkmbBykiAWz9D5u"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "vDVJAxw0lmWpphImskFt5A==",
-      "applicationSecret": "rn3tQyaw5vtKwXwiNspAdg==",
-      "temporaryKeyId": "c5737c1b-9c49-47e8-9966-1fb04f96e5cb",
-      "activationId": "4bd1895f-0fc2-417a-9007-4afde3fb8657",
-      "envelopeKey": "MYKDmtIkH/5Ha6dWxSTcizRQBNLOsNWOITapYJWSMR4=",
-      "sharedInfo2Key": "aFGwahRmPjlfl+Nq6eKfRhhLdSTPOsdorkfiPtLy2rk=",
+      "activationId": "7d1ffd72-dbff-43e8-81a4-d27bf2a2e49f",
+      "applicationKey": "1Oz7mOn3PoU7OpQPTX08AA==",
+      "applicationSecret": "EBIPRjEeXS3PB+NdRzkC9A==",
+      "temporaryKeyId": "6d114218-9aed-41fb-ab82-b1abafa174b7",
+      "envelopeKey": "bYTCyBx4kEQ9klru5wXRCHfxmwjeypL2bfh52doNPzg=",
+      "sharedInfo2Key": "R6+oQ9/FG1tZ4tK2cTufRlkZtSOz5XLvPRw5/bESzXE=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400768",
-      "nonce": "hSGtCIsWllPIflU71/NNZLHjA4eF7tCp",
-      "encryptedDataRequest": "hSGtCIsWllPIflU7KwD8l3gtJj0MayLEJ9J0t33hhAvBfdT1xxZl0rfzlznJSo8lv6uMuMQxTWA=",
+      "timestampRequest": "1743702697169",
+      "nonce": "nyZ42jlZzqkW0aA2ZNVfLxzCNsjXWPTq",
+      "encryptedDataRequest": "nyZ42jlZzqkW0aA2tA18tMmASwmpESSJ96VJuRv5jMQzwxLnCY6h/pG2chNeJ8uoAxQL8FyKz8A=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400768",
-      "encryptedDataResponse": "1/NNZLHjA4eF7tCp9XcEdCoU2Jb1ldBPjHg67nPh/GTyhnkLsxJZ8EbOJdJykx1MtLUpOPakOsKY"
+      "timestampResponse": "1743702697169",
+      "encryptedDataResponse": "ZNVfLxzCNsjXWPTqsDg/rvpt5ByFrUivuIH3bqUDaktN3+JclppclMTxpHc/A0St7SlFqQyBdgXQ"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "Qdj7pVGn4b+mCcGp75LzvA==",
-      "applicationSecret": "eSGkpAsaRRgof6ZSydsn/w==",
-      "temporaryKeyId": "8102bb8b-c2fb-48e9-9daa-d54855ca59ee",
-      "activationId": "70362ee9-e4ae-4d8d-aa5e-c369916e5a3d",
-      "envelopeKey": "JvbottcCn+O3/beu1Nyq7W0PkmiMKH2qCUPvRUpZHgY=",
-      "sharedInfo2Key": "rxiNBJoHNAT2Ykx5w4ToldObXbk4LOXUyheaQUAAIXE=",
+      "activationId": "39c4b587-47cc-4600-bbed-7ba9e4a65865",
+      "applicationKey": "KIGl2WJW72cO6MNNDO4xwA==",
+      "applicationSecret": "Ri4f84JlMOg5ZqgbS0oq7g==",
+      "temporaryKeyId": "9ec8171c-6865-4a2b-bbee-b3b92ec50467",
+      "envelopeKey": "GC7ykES5NP1R6DNfiMa88KAIoj7zHVuampQSWwhTofc=",
+      "sharedInfo2Key": "5O6K1sEh3t1ocfyTzsoPpicsYDFU/HOZblLQswZWPrw=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400776",
-      "nonce": "nc6GS5tq/ihJ4IewgDK+hmYKb1JqL1af",
-      "encryptedDataRequest": "nc6GS5tq/ihJ4IewE+2fR5x8rVTgg8w69suqzz6F1eEEJQRzeB0JFAderWFKICGRRrHQIuC2Y9I=",
+      "timestampRequest": "1743702697177",
+      "nonce": "7GYeTe4mgh4TMfG3S3lb2WKO9S/wxJdl",
+      "encryptedDataRequest": "7GYeTe4mgh4TMfG3SSLVbjsZXv5h5QnzFuJy8gEKGp5+jHAqFZUNYl31f906/tTNqmA1QrkL0Gg=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400776",
-      "encryptedDataResponse": "gDK+hmYKb1JqL1af6ZuKwU+Ip07eraP+VR1KlRYXCylWONjl1X/4Eb52ki1dRMVR84L3BJaJf3Tl"
+      "timestampResponse": "1743702697177",
+      "encryptedDataResponse": "S3lb2WKO9S/wxJdlDfK9f4x4acRXHRz14sBtluGZ0K2lhvZwDp2vUzjZ/YUXOAEc62PzDssxcyQ8"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "5Q1eWgsSv0C9u8QA0yH40g==",
-      "applicationSecret": "zcpbktMySx/2p5oUwFZ7VA==",
-      "temporaryKeyId": "55dd8aec-df63-4898-a39e-a3bcb7b6efde",
-      "activationId": "c95602bf-adad-40bb-ae6f-18598aaebe62",
-      "envelopeKey": "iX7LS40e4v9qYSpQZNrO83Y6yzh1laOj53IUCr9CLdY=",
-      "sharedInfo2Key": "8cHnfqX/jtSzJOnO1XxDlZb6dDvrYUZAXD5BRt99IdI=",
+      "activationId": "8ef16734-15c8-4c66-9337-0250bc72a8de",
+      "applicationKey": "QzK7RXMIyqt+Kgrw/Cg0bw==",
+      "applicationSecret": "1i1tlMo4ZCCoOsLlSsbBLw==",
+      "temporaryKeyId": "16238a66-5a18-422e-8f92-3e787b060251",
+      "envelopeKey": "UASpxaYX5pHfOapSk1F2UyvxsR+xJLdhNtEcaVXK+pM=",
+      "sharedInfo2Key": "26w310ICmho1U2Lnrn+MYBZKUrgfDyHvthW3H4l+0jg=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400784",
-      "nonce": "puYg4k1+lAC6xP9D/nppjdyP033/nYvW",
-      "encryptedDataRequest": "puYg4k1+lAC6xP9De5KeRLGUyNheu1Axx/20Frqyn+py/IoygsbfgZQl9u9kiefyczTW/MxxbaY=",
+      "timestampRequest": "1743702697185",
+      "nonce": "SJA16OV6IbWdVhQBqNgYdgRALb0DsB6Q",
+      "encryptedDataRequest": "SJA16OV6IbWdVhQBNCRIfFbJVNIijXMxjRReu+OsGiexMpL5a75FgM4RUueZ0mNLVtSWYwJ+PD8=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400784",
-      "encryptedDataResponse": "/nppjdyP033/nYvWYIt1fSnPyCj/Kxuw2Z0DX081yTLruKiES6dZ1BR98ibvr5G+5qSIRANo1yAU"
+      "timestampResponse": "1743702697186",
+      "encryptedDataResponse": "qNgYdgRALb0DsB6QamdtXKT/BpF74ngvvd5JBBWTM1x1jbFxCjUCldUEUPO9dpNgkOHGGxND1YUU"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "OHZcOvLdO7vZ9zbrVyNGhw==",
-      "applicationSecret": "YCso/lRlF8EKrSzCxGRiLQ==",
-      "temporaryKeyId": "812b39c8-6223-43c2-8b47-8d4574e00b12",
-      "activationId": "f957d5f2-f95b-475d-9a03-4f85fca176ed",
-      "envelopeKey": "rpVIR7qHaMYFYN3R0x8FR4IONZv+2BeESue7KREi6NY=",
-      "sharedInfo2Key": "s64yX3OidH2XURiDI6Dlx7NXkNkFbVoBlEZXk8yrh4c=",
+      "activationId": "4c6bbe76-a23d-4ea7-8786-fbe5c8d9f7bb",
+      "applicationKey": "2R8HIU7/NuwSmVo+FEgubQ==",
+      "applicationSecret": "rQEgTN4YwvVWB+zch/Y8EA==",
+      "temporaryKeyId": "aaea982a-ad3a-42f3-a1aa-424ba0e66d7c",
+      "envelopeKey": "B89Rs5lfhPz6q5xqza/3SoSQyh2MWuiSrK4/D4SZOZ8=",
+      "sharedInfo2Key": "29YIye8Rhs1PJTcF9/AGGfySvpjA6YjPTjlhnVynYIA=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400792",
-      "nonce": "N1cTd+BmR9tIQPB+YT3gZ8s7AW0ds07X",
-      "encryptedDataRequest": "N1cTd+BmR9tIQPB+f5h0AZ6monLhv2/2L8q1XDPj02xxOo9JLkrLIdQ3Pu5SQg0DJvc4QDyitEY=",
+      "timestampRequest": "1743702697193",
+      "nonce": "j8C68s8bbphJDnma1yn6yT3zNSU+2mBV",
+      "encryptedDataRequest": "j8C68s8bbphJDnmam4ngJsPPSS2mI/jGFppPZyEQfo+qJbUHkK82GamYWvwts3hnZECqtrwTdZo=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400792",
-      "encryptedDataResponse": "YT3gZ8s7AW0ds07Xb2r3nkF2i0DgDVAvGn4CxvMywXFem6gJJItMAt5NTFXkESMUXX+2gRXaSBno"
+      "timestampResponse": "1743702697193",
+      "encryptedDataResponse": "1yn6yT3zNSU+2mBVkHJStgBE4GbBjaFvSX0OU6PQ932DmY82dNKBXlV4Ysms9YnMIfsy3vU9/D0R"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "iMM9QEJz0RGyXAfq7FT4dA==",
-      "applicationSecret": "ULvswS9sDhckOW8kckzO0A==",
-      "temporaryKeyId": "0d682c22-cc65-4a31-9a22-7f606b44f85f",
-      "activationId": "dff200c0-f934-4040-a8e1-373046c83af5",
-      "envelopeKey": "juUCJukssmSpnOPtwrCuEfSqhkm2pua13Y0CU08zTy0=",
-      "sharedInfo2Key": "TmwoIOTz/pXi8XITaN4lCKVtgUf4hveFmy0hj2sYJTI=",
+      "activationId": "2f407f8f-710c-4172-ad7b-c5570a634fdf",
+      "applicationKey": "N94e2WLG0O7frZsQ4w7mGQ==",
+      "applicationSecret": "lVHj8iG5iyyypmjuAofSkA==",
+      "temporaryKeyId": "57f082c4-b7a8-49fc-8183-539bdeb430e5",
+      "envelopeKey": "OWo5spBHLr8dOIoHYbUD3NRdw0LJ0JW0XFRTO42X3jo=",
+      "sharedInfo2Key": "e0gFAa3ra6rN/9unF9ZLkIZjYYp5IBTsFbcdAKhPsLk=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400800",
-      "nonce": "PubBlwI7H1SKDm77wdXVB7WubuBomOm/",
-      "encryptedDataRequest": "PubBlwI7H1SKDm77HiOFtcuwgaB3Ir2yeVkykBsf5aCSLytlP+lKryvECtQyVa1J8PVErfNtNNU=",
+      "timestampRequest": "1743702697201",
+      "nonce": "LEMw+/pu0I2yuHkdhiguc6Xxkip032SI",
+      "encryptedDataRequest": "LEMw+/pu0I2yuHkdIKC8d+XYgbJGSoPeAiwryjhsHfQb1mQWl+2mBTbH6R+7DSDpprA6z78xUFs=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400801",
-      "encryptedDataResponse": "wdXVB7WubuBomOm/xUzn8quIR4Zj5DygBIggmatHIg7Ti2GXfzpZdvL1tbMIzXpGek7Kx9+m01Ou"
+      "timestampResponse": "1743702697201",
+      "encryptedDataResponse": "higuc6Xxkip032SIQibkB//U3Vmpw5HmrUY6TyEc+C0jHvL5/5JvazWNM8ls9kAX70y8Faus/yWl"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "gz4cpXuZD0SGFryJqsrS3g==",
-      "applicationSecret": "016HT10gkI4CMqO8m4SH3w==",
-      "temporaryKeyId": "73a271fe-eae8-4b25-9268-88f388fb6ee6",
-      "activationId": "6c68c559-1bfa-47b3-b031-7eb0ff592086",
-      "envelopeKey": "kXbInje+9Bmb85AGzaEgd7tn2G1CayPEs8NGumzPK6I=",
-      "sharedInfo2Key": "Lzb1IbTNIUERmmeDLGz/VGJ9F4YAHC4hwfdeRg5wfmQ=",
+      "activationId": "4aef6994-2bf0-4fd3-95de-405822038e00",
+      "applicationKey": "Lh1GgJW3OfBqppPg1b4jjA==",
+      "applicationSecret": "9kHLYyrHKf744Hix4QJ5Rw==",
+      "temporaryKeyId": "075859df-3bc6-412e-a7fd-1bc50d486bc6",
+      "envelopeKey": "WQywJf92BE0LwlalTfu3zlLmnBHCnkHQqc5pztPCM9E=",
+      "sharedInfo2Key": "qof9rkutz1FK1pqrcYJ31eowxsIYkYMMhAH90a8Ivtc=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400808",
-      "nonce": "99xaq45F3twYKokcsYWdgTPnNJsxSiys",
-      "encryptedDataRequest": "99xaq45F3twYKokc8tE7pjep7pKyhxV08/XuO6oEz39Nf77ZBFSHtkqW1cXMn2RmkHGUFOAdKys=",
+      "timestampRequest": "1743702697209",
+      "nonce": "0YE6QY1j7Mq2AUYE7H4t7tFZk54S8oRG",
+      "encryptedDataRequest": "0YE6QY1j7Mq2AUYE4W/ND1qufvmAUzyII8M7/BSw5ExDgApTblHhQpF+NP9X/dpyuiSwtSpXrUQ=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400808",
-      "encryptedDataResponse": "sYWdgTPnNJsxSiysiOxQS8XsvEj5hKEsjXwnrkZEUerovgyJGidVc13X4WCwEu3sG3b7raFFt98g"
+      "timestampResponse": "1743702697209",
+      "encryptedDataResponse": "7H4t7tFZk54S8oRGvHzfUJFtHlk6e/TpgKSQj/+TEIyzJXQ3A53offzszS7FHfW47+dXpx6SBMzT"
     },
     {
-      "encryptorId": "/pa/generic/activation",
+      "encryptorId": "ACTIVATION_SCOPE_GENERIC",
       "encryptorScope": "ACTIVATION_SCOPE",
-      "applicationKey": "9mqSPXYTZBJjUStJJNcP6g==",
-      "applicationSecret": "YpRkQFWBJD2KjKJG0V/ACA==",
-      "temporaryKeyId": "119b078e-34ee-49f6-b77b-edd7c26f5959",
-      "activationId": "7d39ca95-fca0-47ea-961f-1407dd3789d4",
-      "envelopeKey": "BaypOL4xw3dvRTYrdRfmjbejr0B8YFY2SPxNuxtIJNU=",
-      "sharedInfo2Key": "8KyM0ui93i5N2vxkO3VdwLZ4Et0tUk9vfFzo8EyevvU=",
+      "activationId": "e83fe31b-ddf0-44e2-bf41-54eab399ce01",
+      "applicationKey": "jgGlT0s97oyksXWXLdLAMg==",
+      "applicationSecret": "isIw/bNQyL2AcDMnSS7loQ==",
+      "temporaryKeyId": "aa78e2b0-f35a-46b8-a395-a9ed9bf862c7",
+      "envelopeKey": "iUn3U7smollcfq5SVFSC6t6rO+c5RNnQGq/En2dEHTg=",
+      "sharedInfo2Key": "TjELnARf8blk3ZCzgHiNTPGGgxoC2FLaQ9Dp3vfLm7c=",
       "requestData": "test_request",
-      "timestampRequest": "1739276400816",
-      "nonce": "0UN37rfKLW3EMMfq9lTs3EZlHTbqb/rr",
-      "encryptedDataRequest": "0UN37rfKLW3EMMfqzau7Fdgt4fij6BHMOxZO6TzYc8jCchfY80hjfmqmZptpwUmDsZyN634zH1c=",
+      "timestampRequest": "1743702697217",
+      "nonce": "pQm5gnsbmGHjxqAkwKfAwFMQLAz45VyE",
+      "encryptedDataRequest": "pQm5gnsbmGHjxqAkyTg3HWpvV/ynZgAuNcNRqZuk+BfllZNk9qNEDdRyHDyt0br/GGrmwhgNVbg=",
       "responseData": "test_response",
-      "timestampResponse": "1739276400816",
-      "encryptedDataResponse": "9lTs3EZlHTbqb/rrPDDn2rIYhpwutsW5VLfpwpEOHlbROIimwI9ZlPxGXyV7rdafYzvbLu7Ll5ke"
+      "timestampResponse": "1743702697218",
+      "encryptedDataResponse": "wKfAwFMQLAz45VyEiVfEX5pwQvkgtTnFs2E+gknQV0IjIgWFaNNhh4u/eyMWp5tEi/I8MozGTzdk"
     }
   ]
 }
\ No newline at end of file
diff --git a/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Application_Scope_Test_Vectors.json b/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Application_Scope_Test_Vectors.json
index 4cb8b998..ecfb14c6 100644
--- a/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Application_Scope_Test_Vectors.json
+++ b/powerauth-java-crypto/src/test/resources/com/wultra/security/powerauth/crypto/lib/v4/encryptor/E2ee_Application_Scope_Test_Vectors.json
@@ -3,377 +3,377 @@
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "YhbaY4Oj7rO4Q0FPTNtJfA==",
-      "applicationSecret": "V0pMK9luQ/rbVa5dfIEsKQ==",
-      "temporaryKeyId": "f8716cff-e1ba-451b-9a9b-155078813d41",
-      "envelopeKey": "SJzSCla0Tv7F0qla/WggZv++OXE08z8GlhKi4Ea733c=",
+      "applicationKey": "8qWVB/xbHgDRP16LaQXFFA==",
+      "applicationSecret": "M05qj0HpgB7c2l07KfiqjQ==",
+      "temporaryKeyId": "b7271e06-e119-42d4-8420-bcf542176bd4",
+      "envelopeKey": "KPCyodIXll2BUGEUD9BkYUcPaq3kE0B1wNhoQjG72JQ=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592900",
-      "nonce": "bOvuDVWDNvBok5FtjLxBspmEJerNYU1R",
-      "encryptedDataRequest": "bOvuDVWDNvBok5FtBetCGkj27he8iMF0YajUrrOUGyT7JjbKdcT6aSUrDoo39yoVq8G7/FeUVzw=",
+      "timestampRequest": "1743701942273",
+      "nonce": "Zw/kIQZgrgjoz0wojk6MCrV935BhSn3g",
+      "encryptedDataRequest": "Zw/kIQZgrgjoz0wolWhfWtQwUOdk9CK7wuZ7R/+DEpixMHhfiz9rdrmpC2sUR/wGofubg7D5sMc=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592915",
-      "encryptedDataResponse": "jLxBspmEJerNYU1RncKB3c0x3CnpTFpGgxllrhogdNzvMQIRu1kKEyLKKm4kU13LE06FGXjrhTYZ"
+      "timestampResponse": "1743701942288",
+      "encryptedDataResponse": "jk6MCrV935BhSn3g21Dv/x8F1zWgwGCjg9FayyPoVliVqHRIIXAx0pX39K/ID2rUnLBsz7Ez28um"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "9MAqK10xEfRzsfZlBerBFg==",
-      "applicationSecret": "07rwqrRZAqEiR7r4fK7Ygw==",
-      "temporaryKeyId": "cf1e97d1-0650-40ea-b3a8-53975004888d",
-      "envelopeKey": "eN81HlEvg7UpgMvIAyjy+poN9H+xrv0zB7cEYp9ycGw=",
+      "applicationKey": "ecoLhwjh6f+KsbpCsPN9nA==",
+      "applicationSecret": "7pT37tMuJ61+qKha+WbdQg==",
+      "temporaryKeyId": "a6b4618e-5bda-4bd3-8608-6c5d4c8378b4",
+      "envelopeKey": "tvio2tsFRbDZHRrpmu2C68LDspnaRpKrBFSN+Y2l1U8=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592939",
-      "nonce": "ZFgQD4RTjqRO5E/KZN4sNiez2IBOccLr",
-      "encryptedDataRequest": "ZFgQD4RTjqRO5E/K9qnNQnvwmuT16UHrd3rB0UZ/cUjKKsc9ZKeri3csA+Z7PIza2A8FdJRPh0g=",
+      "timestampRequest": "1743701942310",
+      "nonce": "hqDkIDxQiR27UvFMBjppGqZ2Z/szrkLj",
+      "encryptedDataRequest": "hqDkIDxQiR27UvFMgxqrnp6yX0RCvjzuaTVfaeP0+oRJRpsB0dNNDKBp3Mm9DaYwm31/NPYPSWk=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592939",
-      "encryptedDataResponse": "ZN4sNiez2IBOccLrJ6BS36oBqqNdJ2jnd0iwls+vZM3t8GZbTaGg1jEnFHd0SaVGAjeIZHrUNxnY"
+      "timestampResponse": "1743701942311",
+      "encryptedDataResponse": "BjppGqZ2Z/szrkLjMIDuBvHs/b1bw6/0GAYC2O0Y/aRYDjJOSa3bvSShC0okXONm+ne7dGSOkD8j"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "4wuNyepANF8IWL7OP/oAVQ==",
-      "applicationSecret": "plBgbqQqmqqiBGd3uwBUfQ==",
-      "temporaryKeyId": "21d887c6-7675-4004-a481-4f96a7f6a533",
-      "envelopeKey": "9DDw9dv9ZsimKKZy5b1X2SCSzSiecUGaOSpg1bU5c5o=",
+      "applicationKey": "CGFDvGW7byEt21FjyIjPGw==",
+      "applicationSecret": "aufRd5PmfBeMFjeTr2A7tg==",
+      "temporaryKeyId": "7215acad-8b0f-419a-8f4a-f45bfd17d541",
+      "envelopeKey": "d5ngex6lxt6PsBh/vePkO1XcHENhygyyjiJSgePFBxg=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592954",
-      "nonce": "z8sgD5eD5kNLQ94ONKJZzFzT8myhmzsI",
-      "encryptedDataRequest": "z8sgD5eD5kNLQ94Ohwx85EqbQ9yv4Oa4X6tbY52ALNq8IZ4dckiJ/V32AkL9QMfyDKVp3Sb4eFo=",
+      "timestampRequest": "1743701942325",
+      "nonce": "fGMVyoRhBnOkk/MsLu4bHGueLF7pc/7Q",
+      "encryptedDataRequest": "fGMVyoRhBnOkk/MsboJwQbYEGoS+D8F+yCJeZwElJNwP6paMumFwHBzqSZ0PHydCY0hp95hTf5k=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592955",
-      "encryptedDataResponse": "NKJZzFzT8myhmzsIbvm2Svwun4fSzSw4YdKvVFKrekQpcTXf7uhhpxiz/xD297CWU9fVljL/yRhs"
+      "timestampResponse": "1743701942326",
+      "encryptedDataResponse": "Lu4bHGueLF7pc/7QYz4tXl5C0cxFTl/q9XOqJtVLNnl18zRtktJUHIU3oTVxTUK4R769EZRBuH1g"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "52eKxMwRCGvE0SdNzEIgVg==",
-      "applicationSecret": "dq08BOzXR2zg9MD4WthVpA==",
-      "temporaryKeyId": "d3bca508-9b36-4fdb-a743-56af6bb00326",
-      "envelopeKey": "xulDzcfekDw/3Rr8AL18tM6CJAyb3XejzhTRCX1Yvs0=",
+      "applicationKey": "aKGbqpyCGU+A9gmteSoeLw==",
+      "applicationSecret": "eblADQPCdEEYRcGPGTDy5Q==",
+      "temporaryKeyId": "1ccbbad8-8abe-4562-8df8-6d0d44cd5d0e",
+      "envelopeKey": "RsF1lnKtApZXWvgepRCkXAfEzWUHWSjpHsV7PL+veMc=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592967",
-      "nonce": "CyNTIUxjT0ZyLPPo+xZRqjgbHaeBZQ9V",
-      "encryptedDataRequest": "CyNTIUxjT0ZyLPPoPAzVjQ9qX6/guSS1FnR/AemfO/V7vwTpfsYHwGBIUpisaBbSa2HiwAnmpDI=",
+      "timestampRequest": "1743701942338",
+      "nonce": "l98i+p5pqiOT4cD1KiWvNAS1mXBfVqe4",
+      "encryptedDataRequest": "l98i+p5pqiOT4cD1dqEPmeySzT/bxlW2bC4XRWo4U7I7kROGiDOep8MWjkMQjljOwBSz+pdn58E=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592967",
-      "encryptedDataResponse": "+xZRqjgbHaeBZQ9VYtZ2jKmxeijFsa7zTPVLoY2M4m7prXUCV3lypQY17mPCpVoPuQQuF0FHnZA9"
+      "timestampResponse": "1743701942338",
+      "encryptedDataResponse": "KiWvNAS1mXBfVqe4Oh3iLgWiaStUYNOkrq9hKhp90fCjVok+QGZvPlX/Xy0HIzGjTLlUKSOviT5F"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "FA0c/5HwYjNxNqysrEtPQA==",
-      "applicationSecret": "dzW6QpZEbjq4hFlLstI3iA==",
-      "temporaryKeyId": "1974c15c-341f-4ce0-b85b-c44acdd17f70",
-      "envelopeKey": "YJEMIVbj2E+R3aoIOhVAwoNOoQ5Wqvq6Jb2wzrU/CQA=",
+      "applicationKey": "d2pcQDdb7opKRQzeGBxV/A==",
+      "applicationSecret": "fLWyYz3/O3/foNLeAHryow==",
+      "temporaryKeyId": "f4044ca4-de7f-4796-8b5f-8757c4ad4643",
+      "envelopeKey": "Wr5u0mU0hLumm69UFn5n7KeoQEIBJIfuo8HXubGAz/g=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592978",
-      "nonce": "aCWCDq/ofjflc2APerzMH7v4m91NceSB",
-      "encryptedDataRequest": "aCWCDq/ofjflc2APijBdL/8ifzGDMP2q4M45FAxd026cwYPDwjuRNuIadfZuzXgYHhxHB7d9bQg=",
+      "timestampRequest": "1743701942350",
+      "nonce": "AKDJ8kmhzwSlmx7ux0n5yw5QA+BX15oq",
+      "encryptedDataRequest": "AKDJ8kmhzwSlmx7uO/R+/EAPcBfkZEc/Z2v1TCTWLurA/PqUT95GeqmsXYh60EfHozDdXJCtyPk=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592979",
-      "encryptedDataResponse": "erzMH7v4m91NceSBZyS0QBDENj+sgwhs7tFcU5L+n0X8lDaxc2gzFDHBM0RpjN8ujxKJWcblRuJR"
+      "timestampResponse": "1743701942350",
+      "encryptedDataResponse": "x0n5yw5QA+BX15oqOqq4J1HUI9Yc4LFTqgHgBXfsfInDZR8/VGcAMwFxXuy7nAgsm4/Aom79+A9f"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "32NKKKt6PLj7VdDHNLYZqA==",
-      "applicationSecret": "HZ0mFeftIajM1loTju5YrA==",
-      "temporaryKeyId": "aacce5c1-0b1f-451e-8909-09b3bddcf680",
-      "envelopeKey": "Y304GcQZy2BCksLmnUqQfmFEGztQCcvgxBe6Mej3N28=",
+      "applicationKey": "g/R5prWEES70S3N+Y83lGQ==",
+      "applicationSecret": "vRUnp9SNv2iOVqMk8XWjRw==",
+      "temporaryKeyId": "1f21b85f-3fa9-4f39-9e43-cc5db067918f",
+      "envelopeKey": "TTJSi6MJCXwnTe46MwumrYS/6p4FAfRfpBv7kixRxQs=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592988",
-      "nonce": "VMUE7YxyDwcZWXc2uODB1Ob83vYFB5p5",
-      "encryptedDataRequest": "VMUE7YxyDwcZWXc2UrcTQsViEjlLJgyha9X1Jkd71xWfHSpfHrHOeQQTHuc/1Ixdrd0D9cD76MA=",
+      "timestampRequest": "1743701942360",
+      "nonce": "JFho2m8qwMPhgQBU8xe9QT89fKmKqxWu",
+      "encryptedDataRequest": "JFho2m8qwMPhgQBURHYHHcgLSPgz2+f5vwUpdugjf5UcULX4mclUfPkD+KGFFIBmhkYxUbhT+KQ=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592989",
-      "encryptedDataResponse": "uODB1Ob83vYFB5p5g9OaW6IcdGRJ0icEonZcGLFttFv+vpZrK7lk2fcRh5m/QmPmKFnNkQJKIoYv"
+      "timestampResponse": "1743701942360",
+      "encryptedDataResponse": "8xe9QT89fKmKqxWuKlZycIWi/gFbpBd2uRBRQuD/YdcEfsrkbaNZjbQICpRe5q1vI0T/MoRll1Ow"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "dLIwv0dck+wW59/acfddOw==",
-      "applicationSecret": "1LsMoqhSWeituvnvQMSv8g==",
-      "temporaryKeyId": "50c47fd7-ee0b-491f-8604-67312b5dd3a5",
-      "envelopeKey": "p9Bb2dQdkzCOJLsMGE+g6BNYsxU/93yyLBETRnBsglk=",
+      "applicationKey": "t7QwR/NjXgDYWcwZ0xt4oA==",
+      "applicationSecret": "E9l0BHv3S9WMQZzmo35TMQ==",
+      "temporaryKeyId": "e27ea0f2-b585-4c27-8720-a9bae5eb9eb4",
+      "envelopeKey": "Bqbd/M9PCznfr9Shn6CgxS0zywzXy4qhfylWTSaOJ1I=",
       "requestData": "test_request",
-      "timestampRequest": "1739275592999",
-      "nonce": "KvdwqTAZYIJbwrGPpoYuwnwa1ktfFfQt",
-      "encryptedDataRequest": "KvdwqTAZYIJbwrGPwqvwLh1KbEoXU0OS40e7yEZutPCMxkcbT9INJZRopTGCHnUbozI3Z2G6/Pk=",
+      "timestampRequest": "1743701942369",
+      "nonce": "rhnMBkogoKQTF2zkaHRb4WVKmWz1kls0",
+      "encryptedDataRequest": "rhnMBkogoKQTF2zkDCbGAqImr7/XkrchacPNG+pBTrby8UQjk3Rl0+o+XSImGAxeSKEtzB8Muls=",
       "responseData": "test_response",
-      "timestampResponse": "1739275592999",
-      "encryptedDataResponse": "poYuwnwa1ktfFfQtbV2sjuq1E67jC6d07cGVgGaRgDPUsPG0CTyfvIXAggMIDv8FrZbG12M8XpPw"
+      "timestampResponse": "1743701942370",
+      "encryptedDataResponse": "aHRb4WVKmWz1kls0G+LSSRIM60WxRoTGgJV4DSpIckyymQBWwpF6u8g84O4Ld579hs7Q1oeH/Ldj"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "nC89EaA1mp2aTGlAbU5tfA==",
-      "applicationSecret": "6HWRFiVClqXhLYyK6ViL0Q==",
-      "temporaryKeyId": "f8f9cd0f-115e-43cb-9b01-010e835cddd4",
-      "envelopeKey": "CbUpsEP9PcdiNB+wtH1xi9HbWDuQTBHrj6OG9Wy7PRE=",
+      "applicationKey": "CvSKfhOn0uYCF/J5xEzmkA==",
+      "applicationSecret": "q0ICMK9yZD5bWxe1az9GKw==",
+      "temporaryKeyId": "520fa030-642b-4ecc-b7d7-c0bf228330cc",
+      "envelopeKey": "hd6Ut0JIRzJ/h9raYir0TqCf4FAeW+tpPw3/gvhCHMA=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593010",
-      "nonce": "I3rWU5tXZ+CLjOPqzU8/qCkh/zLzZa/D",
-      "encryptedDataRequest": "I3rWU5tXZ+CLjOPqLh9xMuabq1QcE1LHtjmkKIAo21h9C0zpso1Tle43HSK4e6/FTcLmM1s2nH0=",
+      "timestampRequest": "1743701942379",
+      "nonce": "ftmi7RKG8s6eEpHoKf4pzHvc29w4W6eX",
+      "encryptedDataRequest": "ftmi7RKG8s6eEpHoStHwqNPJvrtpw2DRK0TYky9Ap+BUxGX9LsFw/7l9cVEesubrXzk4ndzgNJs=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593011",
-      "encryptedDataResponse": "zU8/qCkh/zLzZa/D5n32yEs9brvpQaQG1yn3M967MMZsxtKDv2CBhX2JBi8x2eDPgImCHHjk0NFk"
+      "timestampResponse": "1743701942380",
+      "encryptedDataResponse": "Kf4pzHvc29w4W6eXV4nSQPiKoYktqkF80OlP1Lb2mdxYlsPIpPY+sj5UA/lh1FaVv8eoDgC26xMV"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "GoKy+lOou85IwNcnOIsQhA==",
-      "applicationSecret": "dBxEQcS9RPGf4bJbslVG3Q==",
-      "temporaryKeyId": "cc068081-8b7b-4e27-8cae-5af48a2afc0c",
-      "envelopeKey": "KdA8V9oe9O1NOJAHpI5VuB4Hks9mLXGuuyyTaZTh3lw=",
+      "applicationKey": "F2Ofl1VNn3W8LWuUygCTPQ==",
+      "applicationSecret": "FXaCXheV8s/K8yI5U8vaJg==",
+      "temporaryKeyId": "40f7a659-36dc-48d6-852d-0bd0d1817cf7",
+      "envelopeKey": "cWbp5g+ymYIjBdbd/sCjdvSie/UiIJw8Lzzpf1zQtRA=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593020",
-      "nonce": "rXZsE3xwiU8v/xR88eWKjrK2E0U0EUMJ",
-      "encryptedDataRequest": "rXZsE3xwiU8v/xR8nOyWauh2INmnoGDL7wCKik9mq1PzwJTjzWPIozB0q6396RiHtINE8Xn1sFg=",
+      "timestampRequest": "1743701942388",
+      "nonce": "wLJ5M6010tSmft/BvGafzz2NpcTQVz1c",
+      "encryptedDataRequest": "wLJ5M6010tSmft/BPTu/WXMarxh9PkQEclSU62kMeLTr5zklrD7vnNoVH1v63bL0w1oADC77QTA=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593020",
-      "encryptedDataResponse": "8eWKjrK2E0U0EUMJ/ZDPV2rc1mWwIIfdpEFGYECPsHMd0A5CT/cU0anpSqUE1TK/MTURYICjJ87U"
+      "timestampResponse": "1743701942389",
+      "encryptedDataResponse": "vGafzz2NpcTQVz1cw+WX4KUj3sLKJL9GUfg4v1OQvMRWSSTs6qUnHp/xMCfzrG3lXZgT0tDbB7C3"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "Ppfgtc+xqbWwW4SfusW4lA==",
-      "applicationSecret": "GsxYwi+OeMirkXdH9mIReQ==",
-      "temporaryKeyId": "b3026249-00eb-43de-bc4f-07cbc60e158c",
-      "envelopeKey": "4wxjv3pSYUnBkt8QXTkI0tfO7SLuNP4IcIRk5ho+Ipo=",
+      "applicationKey": "7tK5FjB8nKC8uPjd9iXSwA==",
+      "applicationSecret": "0xTzv8g+b7G46MrUD9bGEg==",
+      "temporaryKeyId": "3d90d979-d8a7-4597-be7a-f114dab33f6b",
+      "envelopeKey": "9CKt5DOFdhod2ABYbNuvlpIghfhIuSqBzVpoLvDiFUQ=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593029",
-      "nonce": "6u1p6hrGV5XrQ0Vi9izW4+K/UqUcXSV4",
-      "encryptedDataRequest": "6u1p6hrGV5XrQ0ViF6KqNW9TvDTxaU4k7WK+O6Y0N+sJ+vFqAI0XP2/6UkX3XMlMBf+VoxyGfws=",
+      "timestampRequest": "1743701942398",
+      "nonce": "2Eqx2bjC7fnR/ZDJ/LvGGeCEdkL+xwxH",
+      "encryptedDataRequest": "2Eqx2bjC7fnR/ZDJ748uiHVwxd+LBM3VVHm3VS+3cEEYoGeeHQ+V54hrXehGitEl/mCKdFmZkJ8=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593029",
-      "encryptedDataResponse": "9izW4+K/UqUcXSV4KkJX72Lt3vBSPEixVjNhTcc7Ym0m46JpxadElaWsPYRaCgq6GZVBLDK/XAYD"
+      "timestampResponse": "1743701942398",
+      "encryptedDataResponse": "/LvGGeCEdkL+xwxHkhJaLFIaFSwfIhuCSdJj9ExFTu0t82lfb6GdkuDSP1UKS62XBCUX+UqCpFtg"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "iwCfhsTar78yeF1xPXEYWQ==",
-      "applicationSecret": "eyhCCC4765txxEzIVR1n/g==",
-      "temporaryKeyId": "f262a126-4d88-4506-83a5-d25750ff9c36",
-      "envelopeKey": "IvjeQw4rAbdgbE1CFo9j1EA6lNxWjOUJMc9hx4T1/Sw=",
+      "applicationKey": "pGrK6lZzsK6jXB1MzJAxpQ==",
+      "applicationSecret": "wHk2m/2sdf6xknDOaQf3hg==",
+      "temporaryKeyId": "9cc1c83c-bc9f-4b76-a1e9-6329394e4e7b",
+      "envelopeKey": "oglGdwKBdi2I8fWbgGj4f/zeFoaEdrY3WAVffojnT+k=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593040",
-      "nonce": "A9n+75rros0gfw+rkMbsFsNJzOA4pkzi",
-      "encryptedDataRequest": "A9n+75rros0gfw+rjUiMBrFGx2tg6LcbbisLiREWbtwF7lEZs3eC9/3dcIzBYsDjglvaDfWcJHs=",
+      "timestampRequest": "1743701942408",
+      "nonce": "J21yudDx96ioKdQYVfFSfeutbs5OS2Lb",
+      "encryptedDataRequest": "J21yudDx96ioKdQYM/8pOgXKlR8WCrjpJBrtNpwKJ3FL4VvX2n7piU8IpNoPWK34HSKztd3Lkb4=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593040",
-      "encryptedDataResponse": "kMbsFsNJzOA4pkzih0dBZ0h22gYR7XIQf7RF+sB2fXvpZxCT1wPgFZMY2pyyiPIWLK/69mks2DNy"
+      "timestampResponse": "1743701942408",
+      "encryptedDataResponse": "VfFSfeutbs5OS2Lbuv8TwXJlCcK3SjU8nx2paS//Om/1NJ7WbmoTO6JRGkT1LwybiNfyyxJhqe8m"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "wxd4BOBeonwpG6Xuvz9z/A==",
-      "applicationSecret": "feWllnjlSFrI+J83ksqwIg==",
-      "temporaryKeyId": "82fb06e9-a527-43c1-ba91-8f0f6549a509",
-      "envelopeKey": "N0PHm+4pIFh9lKYaDlMgB9uUWlFDrEk4DPaiMy51BpM=",
+      "applicationKey": "Yxz5QmH+i9u8LXtQ4KwjHQ==",
+      "applicationSecret": "QGCQEYqEFqUdbTTt9Bq9Eg==",
+      "temporaryKeyId": "0a1f811f-b2dc-4a18-81e7-d40c45d49f48",
+      "envelopeKey": "LFP1OAFnrp4H7y1q5sfxxEpZNm1pIoF6PwdyyI2EQO4=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593049",
-      "nonce": "muAbDwY1b+s9DJqSdkknS/vUoBNcJ0ff",
-      "encryptedDataRequest": "muAbDwY1b+s9DJqS3Qz8oUCp5/uexlR4n54NBqeyzbpAUY5df1AVcFLGo0IsYF3WgtLgcpagsfA=",
+      "timestampRequest": "1743701942417",
+      "nonce": "DZo5aJobDfEyuNRkHbrwvA+gL40pvo7C",
+      "encryptedDataRequest": "DZo5aJobDfEyuNRkO8WISjqaklVJh/jBaC87WpDE6QV2A4VS7licfj0jnZ/dNCzwgT6w/xG1N7c=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593049",
-      "encryptedDataResponse": "dkknS/vUoBNcJ0ffSZ+npiFrFSD+KPv0M80ejNQZIacwf/0y4k/zSc9pyOcGK38dL/eIybdXHTOR"
+      "timestampResponse": "1743701942417",
+      "encryptedDataResponse": "HbrwvA+gL40pvo7CZPLZj4aIinxoOzVAdV70H109PFrMTiH+Ppge6ZzmqvDuuZV/gTi5WAn0bueM"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "cXBWseuLSTlGNaCE9Cadow==",
-      "applicationSecret": "Rn0P+m69UjFxBrItUt1Z0Q==",
-      "temporaryKeyId": "ed46b425-abf3-43f1-94e3-14cc3a17f423",
-      "envelopeKey": "BJJMwzXEhm0msLtcAZU1XwRtcXVZ7qXqpFa46F2q08U=",
+      "applicationKey": "WzvygDu/NzmTJD3itV2wfA==",
+      "applicationSecret": "AJCumoHpDoKwouMCO/PBrQ==",
+      "temporaryKeyId": "61eacb6e-f1b6-4a19-969d-b8db4770ba9f",
+      "envelopeKey": "Kecx9zo1Y7BHEJPRGorCbH3/TphyvXdGJEV8gl8n9KA=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593061",
-      "nonce": "WyA4LmHceUYHeGYODRtwjx1sOccpwnpU",
-      "encryptedDataRequest": "WyA4LmHceUYHeGYO26cw7HOkVGkdT9W7TswisiKsSYj1Zsrtx/rRRNaueMO1r4Zaep12NUbQmFo=",
+      "timestampRequest": "1743701942427",
+      "nonce": "nksga+kAhkwepNkCW0nw1o/PZ2mc5ly+",
+      "encryptedDataRequest": "nksga+kAhkwepNkCaiMKM8DvjCzYePHm0M6//rtHOfFGbfFtsuyBLCzbeHqmxzGcMkmv8WOTQd4=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593062",
-      "encryptedDataResponse": "DRtwjx1sOccpwnpU4cE3mjqRHJBcgYETnFPNOAah/XHFbKmVY9pYEDhU0dcGQznbeGS/YnnY+ol7"
+      "timestampResponse": "1743701942427",
+      "encryptedDataResponse": "W0nw1o/PZ2mc5ly+lZSQ9yVvPj1N8DI5lMZCY8QWvS1ug2lk/rXFLihYj0EuLNz2vHlwuSNRpbdb"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "SW9UB7iYcyh7uAIWvkqAiA==",
-      "applicationSecret": "BcDL+wUe1dU86JW/18hIxA==",
-      "temporaryKeyId": "3306bb6e-5147-40af-b2e5-2e19aa62bcaa",
-      "envelopeKey": "6imBRa6SJP/nlYzwaNwfamWnZJSxhygkAC+SaY8B+UM=",
+      "applicationKey": "VGEiB960i71ps+tYjF7Z9g==",
+      "applicationSecret": "oB8ElSKIDVt35UH86V1/2g==",
+      "temporaryKeyId": "8dda188e-759c-4af4-a2f5-7a7b247fab0a",
+      "envelopeKey": "bx+7dATV1xOOycrOjRwVbdQ/9l9e1Ft69fxkPZnf0NE=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593070",
-      "nonce": "jjZj/PreKsvZN54HGGiguRcr6A7o72/c",
-      "encryptedDataRequest": "jjZj/PreKsvZN54HBGtcaBIKNElCs/yvcu7Lx/CTTIlhiSJroZg220Vwfg55AxNa/yTq5jdX1iU=",
+      "timestampRequest": "1743701942435",
+      "nonce": "ShMP5xLEZ+6ISksbZiy4h30SARqzwRjI",
+      "encryptedDataRequest": "ShMP5xLEZ+6ISksbpOEgQWToK1P8XK57mnBDKdYjm2s1mFAO4SLeU7+MCkcuWlMgeBg6zbxY8hA=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593071",
-      "encryptedDataResponse": "GGiguRcr6A7o72/c1pdzqAPqYPWqKJkqIRLBeqN2hAoiLjkLHQ+sHj9CsiQQFOjtrN1X8fRYHf4I"
+      "timestampResponse": "1743701942435",
+      "encryptedDataResponse": "Ziy4h30SARqzwRjICS548wuEiO8PFeucnIstZ34BZJ7hldF60SrXY0x+e4PzJTSzOvgPFIUKObHn"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "CFpix/FDCdpHqqsDiwRuCA==",
-      "applicationSecret": "SI9QzyNpnaQ8nXiRgzE2lw==",
-      "temporaryKeyId": "8634e70d-fb72-4fdc-b8c7-4d82a345533c",
-      "envelopeKey": "FgSa7k6w9JLoKIzXG2NZdNybGjFqo2L7nxIXG90D8NQ=",
+      "applicationKey": "r0xW+Y153Q8KZ7q00aCaMA==",
+      "applicationSecret": "Taft9hCXMI1V09Zu4k3tjA==",
+      "temporaryKeyId": "489aad40-d167-43f2-b817-2ed5fd81402c",
+      "envelopeKey": "F2RFQuhz3MS+V8naZBBmfF+FCSx2kuDuHsHobJYlzg0=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593079",
-      "nonce": "lKlWclZ8IK7kR16K94mFZfc+SqZFhjxB",
-      "encryptedDataRequest": "lKlWclZ8IK7kR16KxxNO7Q8gfiwgxOO80ohrdokKJj+GQE1esOc6b/mzK/WwHsD66WIb1y0vKmE=",
+      "timestampRequest": "1743701942443",
+      "nonce": "xs4R6NRlXSDlcdk4E4R1yL0sHM3c+iu+",
+      "encryptedDataRequest": "xs4R6NRlXSDlcdk4EX0/mYJHC9GZnukv3PVj5BPJrzqIR7NPn6NVPsb1AjUnIBn9vazZ9Qlz8Sk=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593080",
-      "encryptedDataResponse": "94mFZfc+SqZFhjxBSdinfflVt0faSKDsMjIyOUUuDVRMchF3AM/AfVoOZb1GtWU9ad2NQ7msl2wI"
+      "timestampResponse": "1743701942443",
+      "encryptedDataResponse": "E4R1yL0sHM3c+iu+mXanQECDZhyVdIYucE/uFTNeCK+pOyz31ySJ2F375wyZqFTyLzPTscnrChaY"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "Ks4hj1iJP4XLXFp8hOhOwA==",
-      "applicationSecret": "h49KYF4M9M/4JpkAbKHpPw==",
-      "temporaryKeyId": "e038d871-6809-4a7e-9788-79bb099a9042",
-      "envelopeKey": "NhR/qJThDQdawSkHVmqeamTPL98CyV9H0lM4hc58j34=",
+      "applicationKey": "dU5I5sETmCAFxB2y0eZ9KA==",
+      "applicationSecret": "kJ4nWbxOu7/bG0js1amGew==",
+      "temporaryKeyId": "9fd44e4b-f440-4dc8-9e40-78abdd25c2fd",
+      "envelopeKey": "ATq5ZC6GM1e1rEF7pp4j00e8S+hA48V0JqVWR/VuZwY=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593089",
-      "nonce": "loXwHygVKHYcPaBgh/3lDY51f+byEd8n",
-      "encryptedDataRequest": "loXwHygVKHYcPaBgSOJBmCn2p+p/p4+FfO9zLKi4xALipdf429kRo4i34VHK1VfXZ4fqGUJce44=",
+      "timestampRequest": "1743701942453",
+      "nonce": "bVnFuBmYByie1OXv4onU9s2gt+NeEILR",
+      "encryptedDataRequest": "bVnFuBmYByie1OXvlRmxnxq+aM+pxlEnOudXUZN8Ktp9l5AuUVoaYi1UyBb6Jp1I12puyAKN38Q=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593089",
-      "encryptedDataResponse": "h/3lDY51f+byEd8nrOfDLsFqEYLmlJrvMrfti6STGrBo4elnqJKkV2vQuKxnhxhjhf9Co+SxMFOb"
+      "timestampResponse": "1743701942453",
+      "encryptedDataResponse": "4onU9s2gt+NeEILRN/MFlcYMeLaNwCCxp2TndGIcS+NMFxEECmFFTrGpqi5Pgrwup+xkKrpG0hcC"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "29hf9qvbFxSS9kYeXG6arg==",
-      "applicationSecret": "LcLM6LS6Wsh1EOWIr30lFw==",
-      "temporaryKeyId": "2f509ff6-da4c-4645-bbcb-62cb1b873469",
-      "envelopeKey": "eWJ4p/zuvayC8kk/IC8/GtijD9IXQjoY+Ky38bJEkaI=",
+      "applicationKey": "9JGM65Jji9KVBoTtMuhDFQ==",
+      "applicationSecret": "O36bZoxjOItZ0F5HRXzk1A==",
+      "temporaryKeyId": "100e70f6-5680-4330-a769-ecbab59b3ee8",
+      "envelopeKey": "2G3C9h9fuYwAL0/5OZ0HonXMoFyG/+Xgn/GMW8pUi6g=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593097",
-      "nonce": "8hEQcllejUQGupZuAYnBHCb14NasBl4G",
-      "encryptedDataRequest": "8hEQcllejUQGupZuHMTvaXutFILWtmOmxhWsdEFqUPrsQTs6ZjF6XR0eDmgnwSsTFpMfYCf27+8=",
+      "timestampRequest": "1743701942461",
+      "nonce": "vIO9VoYdu6AOU0+li/HBDbJpekoK04ym",
+      "encryptedDataRequest": "vIO9VoYdu6AOU0+lWHzvtOiP1oc1P4OWbZkRBdkHQQoVfdeoGap8OKa1qzdUGmOFJypHscNdw5w=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593097",
-      "encryptedDataResponse": "AYnBHCb14NasBl4GigkJxSf9/tsiuBakSpG+NWVt/hK15sQyzj+hdIH2PjgbwvBfuZe+wRuEAJKC"
+      "timestampResponse": "1743701942461",
+      "encryptedDataResponse": "i/HBDbJpekoK04ymQHeXxa5jOVRk8Cdlh29W+Bnnc/hNXQS+MijOhMzulNW5xyc5L1UQYMHALxxP"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "D981Z0YnZX6GylQjcFFOFQ==",
-      "applicationSecret": "IZgp+ef6n99dG01eO5ctHg==",
-      "temporaryKeyId": "ad2a809d-6f3a-4ee3-8b54-3909ad1c7dbf",
-      "envelopeKey": "T1CJusH6TDJHIVmSxePuZGdsom5my3ijsfSYHl5W9+Y=",
+      "applicationKey": "xrBhE5fZUTAaL2dhC2x2JA==",
+      "applicationSecret": "t2EnH8c9RzBMHDhDZyaBvw==",
+      "temporaryKeyId": "4a46cd86-63a8-4220-a9c4-aedb13c9820a",
+      "envelopeKey": "HJbGgbvK7xxeb3ppkii20gerh5CRvc7umQx3enZh55I=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593105",
-      "nonce": "ic31vj25m9ss/iOSnQSGkiw39oZp9HqE",
-      "encryptedDataRequest": "ic31vj25m9ss/iOSPHonserIG7qH8cM8eEilLek9kmVsT8eM8CXRNr2MicA5ix0Y0LRwEl9BoVY=",
+      "timestampRequest": "1743701942469",
+      "nonce": "rNODxPa4y8s+zagI3qKtgAUi7pFtfswY",
+      "encryptedDataRequest": "rNODxPa4y8s+zagIoYUwu7PF62EQVHUxTHw3IUBuDEGWWnxbe5NdOq2z8KLB/UM58sEtCvRhocU=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593105",
-      "encryptedDataResponse": "nQSGkiw39oZp9HqEWjKJeojX5k+PyZBSNiZ8+2fQs4PJaxaZ4AFmL65+y3chVnzZP8inXC0fn79Y"
+      "timestampResponse": "1743701942469",
+      "encryptedDataResponse": "3qKtgAUi7pFtfswYe3Fa23ivI95suzUTRmu6JVBUDmxptgoXEKzkshEXcq3FUbzTZAdzDy2W+xJI"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "j0SaLrzMNqZA/WwwsyfErA==",
-      "applicationSecret": "Ttprf3+vVOhm4BdZ6Z7f2Q==",
-      "temporaryKeyId": "0e835f99-759c-4c8f-a9b7-881c86a567aa",
-      "envelopeKey": "GQvdqiKFQfwS8VenuWnl39CqY+oRkc3ZV2+LHP1FUV8=",
+      "applicationKey": "heY3yIYxOadjWzKFt8zZlw==",
+      "applicationSecret": "pqnIMrSKSjD8HrgZoLvx1g==",
+      "temporaryKeyId": "28fea791-b5c6-47e7-aff9-cbe43f00a674",
+      "envelopeKey": "hFeiMBHE0E29faLFO7WCOillfj/ZF0zPWwfqT06Wh2Q=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593112",
-      "nonce": "j2xtus2RdsWz3yVJqvIia62JOdUOvGuo",
-      "encryptedDataRequest": "j2xtus2RdsWz3yVJjO6Nm6vXKRW/r5De21G8oYae7afq9qafy5r3fyECirifcmrpeh2w67HFAyU=",
+      "timestampRequest": "1743701942477",
+      "nonce": "LUZnaKWGXf07SRPxb7BraRSztdsU4C/4",
+      "encryptedDataRequest": "LUZnaKWGXf07SRPxUqrn3SA1gC0+7YQP7bfnRXkCLtDAVekb9QfoNcZFQgcKMt4G3lArfFAmDYA=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593113",
-      "encryptedDataResponse": "qvIia62JOdUOvGuoffCt18uT5c7NwAeZWdTkYM5kFNSsOQXTzyd/75jfM2WjZQ78DcXjCJaBb94a"
+      "timestampResponse": "1743701942477",
+      "encryptedDataResponse": "b7BraRSztdsU4C/44yUmeoGeJvHlWSaoD1Yjpwoi1i1HBnHF3dmOFajH8q5+YwND6Fr4PuJAm/Da"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "PtNhvZY1LsvNatcicn1w+Q==",
-      "applicationSecret": "pW2W7ntguxEdOXqDTWd7oA==",
-      "temporaryKeyId": "9061ed2d-0a4d-4088-ac1f-5d28bc9e4dda",
-      "envelopeKey": "Uv+SJJsuH5C54I0CAt7CBH2D0NzRYunyNtOhhtMVifk=",
+      "applicationKey": "wy2+ip/tnT2NNb49yuy6yg==",
+      "applicationSecret": "4+E6IJr2W57QnJUJpVbEFA==",
+      "temporaryKeyId": "d3863464-142c-43d0-a0ee-66279ff2bdb9",
+      "envelopeKey": "DVFzi0jm8XTV3tTn2ySbDjAGxu8sOybXpCJ3FtcVJUY=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593120",
-      "nonce": "ugUI7LwTdNk15pAYUdN8FnN1NdtYJoCn",
-      "encryptedDataRequest": "ugUI7LwTdNk15pAYxvTeZQzwHFqwDEv/EEBVYBr0m/vtJANeFuZkaZWCs9d1BztU+WK5PnHDRjc=",
+      "timestampRequest": "1743701942485",
+      "nonce": "qewwEOBHxeTFFrpdPMTqBT07eq+gRV/4",
+      "encryptedDataRequest": "qewwEOBHxeTFFrpd1ToBNQ6HF7ptCw3rNkQisIR8b5PiIU/LeDONPP34H1z94iyKCffvjYih3Ww=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593120",
-      "encryptedDataResponse": "UdN8FnN1NdtYJoCnQsBhxf99w/ZD23hlGJx6TkITy61PrROIRrqJdo1WAP8J52XPst8vBkKxtEpy"
+      "timestampResponse": "1743701942486",
+      "encryptedDataResponse": "PMTqBT07eq+gRV/4SSdIZ5rQOrH6t5GCx3dFBXZIt42oYGqxju545n3K9EcuJyhm3tqeOnyXe+Tm"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "P/Aqc2PgvxiwS9StZCJ6Mg==",
-      "applicationSecret": "pWGkgdrSREurw62NBbUYuQ==",
-      "temporaryKeyId": "d2458bbc-76f5-4379-a3ce-c41be185c297",
-      "envelopeKey": "gjJDLlmrpLtTB19TweR5YXMPzCnQjMehRed5xlcxegQ=",
+      "applicationKey": "Rt3shMh4n0u/fxm7UNX7Ug==",
+      "applicationSecret": "AA2+ZV3r+DTSvf6spv0Kew==",
+      "temporaryKeyId": "448cd7df-d8ce-40de-a301-443d896881ca",
+      "envelopeKey": "BpGszA/24OFFEgl3U6xPgo9Oj3X58DeoXvpZvD9N3Go=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593128",
-      "nonce": "t4I3NT9Y7QCCvzdU1Vkqmmoj47VwzR2z",
-      "encryptedDataRequest": "t4I3NT9Y7QCCvzdUQirHe2U1IARURBN6ZB7jhLnV0jE5+RjpevMAAQ78VPNWwNshyGtcyMEt4rQ=",
+      "timestampRequest": "1743701942493",
+      "nonce": "r5A2mJixmEg7eu5yFn9B8Du8psH0Ru8H",
+      "encryptedDataRequest": "r5A2mJixmEg7eu5yfGhfriDYtFcmt69YaWH/AkfmmkW2YPfZcOcHmsnLyMChQR9vokP1Crdceqg=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593128",
-      "encryptedDataResponse": "1Vkqmmoj47VwzR2zpd6/dYfko4zFpbViB/iBdATyuZ+WLgw6e3aTTGnCKC+fS+jetkeIGJyr81o5"
+      "timestampResponse": "1743701942493",
+      "encryptedDataResponse": "Fn9B8Du8psH0Ru8HIAlV4O4lVNzsqlI1LMag8x5qQX7UsR71W3/ft2rDCAp2ldk/51TYbFW9GUSu"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "AP3F4ezkul7YQrRk1zuA1w==",
-      "applicationSecret": "zmP1dSxMAlpXygsBwlma6Q==",
-      "temporaryKeyId": "8157d37a-3c96-4591-9991-88f615c223a0",
-      "envelopeKey": "6ccMBDro36qmLWsnZrS1JYKVcAf0oNrI8ojK6H4I240=",
+      "applicationKey": "cJM/rDNAOrQPsSbR+fOJcA==",
+      "applicationSecret": "yk76oc/kiG1waEMLFCgLSA==",
+      "temporaryKeyId": "4efda7cc-9d32-4c0b-9ebb-c90db8239b6a",
+      "envelopeKey": "DMh99icRcsYhabDxFo84K/49hNYSrDxVkQkMG1Odrf4=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593136",
-      "nonce": "hc6tGXaSFPtRqO8YZiOd9LIglz1kOD1v",
-      "encryptedDataRequest": "hc6tGXaSFPtRqO8YINkCi3eszPF30+ZWiWAAv/Z2ykxUJYlLeFvjET007ydFa7h+g06jK104DZ8=",
+      "timestampRequest": "1743701942502",
+      "nonce": "Nv0jRomK/CjJcQ8UIfe2sPK8Z6JsOOjm",
+      "encryptedDataRequest": "Nv0jRomK/CjJcQ8U4VdS/KFrod4V8J5qq5xNFbHfd4e61zaElJLV0LKkxmpeAxa1nxwL2WROGtY=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593136",
-      "encryptedDataResponse": "ZiOd9LIglz1kOD1vbRkNDwSbBfgqpXK5D4F9QyAvD41aOK5Y/XR7s4cjK3lMOfrjuGbN30eFkY/5"
+      "timestampResponse": "1743701942502",
+      "encryptedDataResponse": "Ife2sPK8Z6JsOOjm7ICPxMsJr1vmJ09HU+qQg9+VdZUl/0kKt0eH/JIx9QPDyFotxnIwQAsjcvFA"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "Uk5cC2IERKlWfdbN03iNeA==",
-      "applicationSecret": "rEEj81ZOO/BHaxkLEk41Yg==",
-      "temporaryKeyId": "d7a85591-0b22-4a22-a4cb-b18cc9a64bf8",
-      "envelopeKey": "bmc+S7aD4GqvriymHMWeFQlIyQBqg5qtplfDeusuzKU=",
+      "applicationKey": "sJWNCQHAVPNikCSjqaBoKg==",
+      "applicationSecret": "1RyYvlnw8MCSNdi4rb1YnQ==",
+      "temporaryKeyId": "103e9494-2d2c-49a1-9a1e-502959899444",
+      "envelopeKey": "7jZ3FqLvQ5i8DzB6jImamhGjl/wJ9sg4ztQHsd99oRc=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593146",
-      "nonce": "abryNXSkF8XsBOd+0bX6lJVdYb//j0hX",
-      "encryptedDataRequest": "abryNXSkF8XsBOd+mYJXXG/OwjiMJScfECbsfJJl1vcpigwR9LndMQHXVdfFc9sCKjPyroHVumc=",
+      "timestampRequest": "1743701942510",
+      "nonce": "ekKM6CgHyWu7macYL+HGDI0mpcKfAlQs",
+      "encryptedDataRequest": "ekKM6CgHyWu7macYsEQsfxbVbRP71yW9cAOa9QIudrIvDK9ve5Pka6uCJOcUjs8zc2UZkoD4QRU=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593146",
-      "encryptedDataResponse": "0bX6lJVdYb//j0hXpaStZbK2wbUMzTOzOQunTvc+bSbpqpD2b5wnrBs+qbYM/+97+6PcLBU678pG"
+      "timestampResponse": "1743701942511",
+      "encryptedDataResponse": "L+HGDI0mpcKfAlQsDhsxnrZVmJx00j0FkDN/VEWD9lp9dZHzBCDRpPEFfDuLBQGOnVEZRv+EBV2z"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "EaRFA+VmdBhb5Lm/ku0/rA==",
-      "applicationSecret": "my+NcZdWIjTslnFMaueFjA==",
-      "temporaryKeyId": "404840e1-0efb-4cdd-8dbf-3e5ea3be3e3d",
-      "envelopeKey": "zMRWr+k4B81rF6J1F41GvLU5J3X510NlxsOWHFldhf8=",
+      "applicationKey": "IK6roNkuVMnlgF2QvOfMdg==",
+      "applicationSecret": "/ON2bbgECDKaAujHpXpjhQ==",
+      "temporaryKeyId": "82435f79-c7b2-4e93-9445-d2474ed60bf1",
+      "envelopeKey": "SYxgX2mrJFraEUr7DcXq5Fd2VIhLVlpdsQ5lIEIoD/k=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593153",
-      "nonce": "FVrYaODEBXr38CJJdmW03u9XwN2Z7Ola",
-      "encryptedDataRequest": "FVrYaODEBXr38CJJccBOVLU7dECbG/FO0oNNjJOgMt0Tsbin4IVyz4K0MKD+W5wb6ChWICsa8NE=",
+      "timestampRequest": "1743701942519",
+      "nonce": "PPGyWLJcMyTZZt4+v3O6nvWZhOrWWylc",
+      "encryptedDataRequest": "PPGyWLJcMyTZZt4+NKqF3cAHK6sv9CZvN49pAs3k07JVSzg4O11Axq5wYK/kwoerGPD3M5qZDe0=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593154",
-      "encryptedDataResponse": "dmW03u9XwN2Z7OlaNAcZp2BYzOyYQkKrEdCyA/Qr2EV9OEzCtpwfyGl5br+x1ED3I+9lQSn/7xPE"
+      "timestampResponse": "1743701942519",
+      "encryptedDataResponse": "v3O6nvWZhOrWWylc14O4mq23FGcU6CiY8tAPABugCLsH4cEXS+MpjTtCLjfpzjKni37pznR063FE"
     },
     {
       "encryptorId": "/pa/generic/application",
       "encryptorScope": "APPLICATION_SCOPE",
-      "applicationKey": "FULGPc/hVdY4LkvCvjsImw==",
-      "applicationSecret": "uN3HZhrvmmu52FUaoJFXLw==",
-      "temporaryKeyId": "31d6c78d-9822-46f2-a16b-f42bcd9b7658",
-      "envelopeKey": "sIvdCnkjR1+0yI8Vjp8SrKabc42CI3UFVYS95YN8GjU=",
+      "applicationKey": "ESuf7khhImdHzN+LSGfMIA==",
+      "applicationSecret": "lmaVRWflqhKiqX9F2l7SCw==",
+      "temporaryKeyId": "68e50211-893b-4598-bbf6-746925a5aa9b",
+      "envelopeKey": "k9eoUWpABTT8oM4ZoydcodZiaELqPll6mkom4GGE0h4=",
       "requestData": "test_request",
-      "timestampRequest": "1739275593161",
-      "nonce": "ca5gguMiQWzpThjalf8vp6EnlyZLf3yr",
-      "encryptedDataRequest": "ca5gguMiQWzpThjaLFmXso9KYHa9qU1lhiqQHQsk0LDSEoEubeid7ENZ6nu/ov6VSzmGAhL3YrQ=",
+      "timestampRequest": "1743701942526",
+      "nonce": "ehfAVu4MIx5GARcoUDFlKlPW6/o0xwnM",
+      "encryptedDataRequest": "ehfAVu4MIx5GARcoXr13lV14M2+CeqMo/WXCaTf2UsoJbijG152YpKo9EHfhxvY+ln+s9kCrXeg=",
       "responseData": "test_response",
-      "timestampResponse": "1739275593161",
-      "encryptedDataResponse": "lf8vp6EnlyZLf3yrRam4TVwGhcZEcr055OvKhCAj+0iYSf2AvRMu8ZnWh5Sxbhr3wto2RmUsVMjT"
+      "timestampResponse": "1743701942527",
+      "encryptedDataResponse": "UDFlKlPW6/o0xwnMnsKl2GO6tJblsuDC+g+Wwh2uhFYlE+LDsKS+jWB6vKMLJ4yFzj/Eg5F0m+mc"
     }
   ]
 }
\ No newline at end of file