diff --git a/src/packet/public_key_encrypted_session_key.js b/src/packet/public_key_encrypted_session_key.js
index 79672d8f..2b4d5c58 100644
--- a/src/packet/public_key_encrypted_session_key.js
+++ b/src/packet/public_key_encrypted_session_key.js
@@ -164,7 +164,8 @@ PublicKeyEncryptedSessionKey.prototype.decrypt = async function (key) {
  */
 PublicKeyEncryptedSessionKey.prototype.postCloneTypeFix = function() {
   this.publicKeyId = type_keyid.fromClone(this.publicKeyId);
+  var types = crypto.getEncSessionKeyParamTypes(this.publicKeyAlgorithm);
   for (var i = 0; i < this.encrypted.length; i++) {
-    this.encrypted[i] = type_mpi.fromClone(this.encrypted[i]);
+    this.encrypted[i] = types[i].fromClone(this.encrypted[i]);
   }
 };