diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPCryptoHash.h b/ObjectivePGP.framework/PrivateHeaders/PGPCryptoHash.h
index ff0d94bc312bf88695d6fe04c46a17f65b3761b5..d51b836b095ef05ac1b74522b38dc6912267f834 100644
--- a/ObjectivePGP.framework/PrivateHeaders/PGPCryptoHash.h
+++ b/ObjectivePGP.framework/PrivateHeaders/PGPCryptoHash.h
@@ -13,14 +13,14 @@ NS_ASSUME_NONNULL_BEGIN
 
 typedef void (^PGPUpdateBlock)(void (^update)(const void *data, int lenght));
 
-NSData *_Nullable PGPCalculateHash(PGPHashAlgorithm algorithm, PGP_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPCalculateHash(PGPHashAlgorithm algorithm, NS_NOESCAPE PGPUpdateBlock update);
 
-NSData *_Nullable PGPmd5(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPsha1(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPsha224(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPsha256(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPsha384(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPsha512(PGP_NOESCAPE PGPUpdateBlock update);
-NSData *_Nullable PGPripemd160(PGP_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPmd5(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPsha1(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPsha224(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPsha256(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPsha384(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPsha512(NS_NOESCAPE PGPUpdateBlock update);
+NSData *_Nullable PGPripemd160(NS_NOESCAPE PGPUpdateBlock update);
 
 NS_ASSUME_NONNULL_END
diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPElgamal.h b/ObjectivePGP.framework/PrivateHeaders/PGPElgamal.h
new file mode 100644
index 0000000000000000000000000000000000000000..c03acaef7b6792a6ee330ac60101ebf193635759
--- /dev/null
+++ b/ObjectivePGP.framework/PrivateHeaders/PGPElgamal.h
@@ -0,0 +1,32 @@
+//
+//
+//  Copyright (C) Marcin Krzyżanowski <marcin@krzyzanowskim.com>
+//  This software is provided 'as-is', without any express or implied warranty.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY
+//  INTERNATIONAL COPYRIGHT LAW. USAGE IS BOUND TO THE LICENSE AGREEMENT.
+//  This notice may not be removed from this file.
+//
+//
+
+#import "PGPMPI.h"
+#import "PGPTypes.h"
+#import "PGPKeyMaterial.h"
+#import "PGPPublicKeyPacket.h"
+#import "PGPSecretKeyPacket.h"
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface PGPElgamal : NSObject
+
+PGP_EMPTY_INIT_UNAVAILABLE;
+
+// encryption
++ (nullable NSArray<PGPBigNum *> *)publicEncrypt:(NSData *)toEncrypt withPublicKeyPacket:(PGPPublicKeyPacket *)publicKeyPacket;
++ (nullable NSData *)privateDecrypt:(NSData *)toDecrypt withSecretKeyPacket:(PGPSecretKeyPacket *)secretKeyPacket gk:(PGPMPI *)gkMPI;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPMarkerPacket.h b/ObjectivePGP.framework/PrivateHeaders/PGPMarkerPacket.h
new file mode 100644
index 0000000000000000000000000000000000000000..5efb89b146a7711b06fde8527e08798634c7dbd5
--- /dev/null
+++ b/ObjectivePGP.framework/PrivateHeaders/PGPMarkerPacket.h
@@ -0,0 +1,21 @@
+//
+//  Copyright (c) Marcin Krzyżanowski. All rights reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY
+//  INTERNATIONAL COPYRIGHT LAW. USAGE IS BOUND TO THE LICENSE AGREEMENT.
+//  This notice may not be removed from this file.
+//
+
+#import <ObjectivePGP/PGPMacros.h>
+#import <ObjectivePGP/PGPPacket.h>
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface PGPMarkerPacket : PGPPacket
+
+PGP_EMPTY_INIT_UNAVAILABLE
+
+@end
+
+NS_ASSUME_NONNULL_END