diff --git a/ObjectivePGP.framework/Headers/ObjectivePGPObject.h b/ObjectivePGP.framework/Headers/ObjectivePGPObject.h index 0a1a923b6b818e9498e28f6c1f3996ac1d3bc1b5..c448e10960a5b940a5c8cd59f891d8715454ade8 100644 --- a/ObjectivePGP.framework/Headers/ObjectivePGPObject.h +++ b/ObjectivePGP.framework/Headers/ObjectivePGPObject.h @@ -62,16 +62,21 @@ NS_ASSUME_NONNULL_BEGIN + (nullable NSData *)sign:(NSData *)data detached:(BOOL)detached usingKeys:(NSArray<PGPKey *> *)keys passphraseForKey:(nullable NSString * _Nullable(^NS_NOESCAPE)(PGPKey *key))passphraseBlock error:(NSError * __autoreleasing _Nullable *)error; /** - Verify signed data using given key. + Verify signed data using given keys. @param data Signed data. - @param detached Detached signature data (Optional). If not provided, `data` is expected to be signed. + @param signature Detached signature data (Optional). If not provided, `data` is expected to be signed. @param keys Public keys. The provided keys should match the signatures. @param passphraseBlock Optional. Handler for passphrase protected keys. Return passphrase for a key in question. @param error Optional. Check error code for details about the error. @return YES on success. */ -+ (BOOL)verify:(NSData *)data withSignature:(nullable NSData *)detached usingKeys:(NSArray<PGPKey *> *)keys passphraseForKey:(nullable NSString * _Nullable(^NS_NOESCAPE)(PGPKey *key))passphraseBlock error:(NSError * __autoreleasing _Nullable *)error; ++ (BOOL)verify:(NSData *)data withSignature:(nullable NSData *)signature usingKeys:(NSArray<PGPKey *> *)keys passphraseForKey:(nullable NSString * _Nullable(^NS_NOESCAPE)(PGPKey *key))passphraseBlock error:(NSError * __autoreleasing _Nullable *)error; + +/** + Verify if signature was signed with one of the given keys. + */ ++ (BOOL)verifySignature:(NSData *)signature usingKeys:(NSArray<PGPKey *> *)keys passphraseForKey:(nullable NSString * _Nullable(^NS_NOESCAPE)(PGPKey *key))passphraseBlock error:(NSError * __autoreleasing _Nullable *)error; /** Encrypt data using given keys. Output in binary. diff --git a/ObjectivePGP.framework/Headers/PGPPartialKey.h b/ObjectivePGP.framework/Headers/PGPPartialKey.h index 3a6c58994b5a74e57499b6c4392eef306c21e195..506fa90ce53a1fb1b44bba7127602291c4b315a1 100644 --- a/ObjectivePGP.framework/Headers/PGPPartialKey.h +++ b/ObjectivePGP.framework/Headers/PGPPartialKey.h @@ -27,6 +27,7 @@ NS_SWIFT_NAME(PartialKey) @interface PGPPartialKey : NSObject <PGPExportable, NS @property (nonatomic, readonly) PGPKeyType type; @property (nonatomic, copy) PGPPacket *primaryKeyPacket; @property (nonatomic, copy) NSArray<PGPUser *> *users; +@property (nonatomic, copy, nullable, readonly) PGPUser *primaryUser; @property (nonatomic, copy, readonly) NSArray<PGPPartialSubKey *> *subKeys; @property (nonatomic, copy, readonly) NSArray<PGPSignaturePacket *> *directSignatures; @property (nonatomic, nullable, copy, readonly) PGPSignaturePacket *revocationSignature; diff --git a/ObjectivePGP.framework/Headers/PGPTypes.h b/ObjectivePGP.framework/Headers/PGPTypes.h index 6f6139a1520ea6f88b9134b8c578bb0116685106..db9217a42c330aab900b0d48aa387c5ea262cd5b 100644 --- a/ObjectivePGP.framework/Headers/PGPTypes.h +++ b/ObjectivePGP.framework/Headers/PGPTypes.h @@ -12,7 +12,14 @@ #define NS_DESIGNATED_INITIALIZER #endif -#define PGP_NOESCAPE __attribute__((noescape)) +#ifdef NS_NOESCAPE +#undef NS_NOESCAPE +#endif + +#ifndef NS_NOESCAPE +#define NS_NOESCAPE __attribute__((noescape)) +#endif + static const UInt32 PGPUnknownLength = UINT32_MAX; static NSString *const PGPErrorDomain = @"com.objectivepgp"; @@ -53,7 +60,7 @@ typedef NS_ENUM(UInt8, PGPPacketTag) { PGPSecretSubkeyPacketTag = 7, PGPCompressedDataPacketTag = 8, PGPSymmetricallyEncryptedDataPacketTag = 9, - PGPMarkerPacketTag = 10, // Ignored (Obsolete Literal Packet) + PGPMarkerPacketTag = 10, // (Obsolete Literal Packet) PGPLiteralDataPacketTag = 11, PGPTrustPacketTag = 12, PGPUserIDPacketTag = 13, @@ -61,6 +68,10 @@ typedef NS_ENUM(UInt8, PGPPacketTag) { PGPUserAttributePacketTag = 17, PGPSymmetricallyEncryptedIntegrityProtectedDataPacketTag = 18, PGPModificationDetectionCodePacketTag = 19, + PGPExperimentalPacketTag1 = 60, + PGPExperimentalPacketTag2 = 61, + PGPExperimentalPacketTag3 = 62, + PGPExperimentalPacketTag4 = 63 }; typedef NS_ENUM(UInt8, PGPUserAttributeSubpacketType) { diff --git a/ObjectivePGP.framework/Info.plist b/ObjectivePGP.framework/Info.plist index 820bd0f02dea0c14260f8c62e2bacc75631dc6a1..9f5bf076f56372e4dbca2fabbaa911fc1faba030 100644 Binary files a/ObjectivePGP.framework/Info.plist and b/ObjectivePGP.framework/Info.plist differ diff --git a/ObjectivePGP.framework/LICENSE.txt b/ObjectivePGP.framework/LICENSE.txt index 0c16858c7f766620f86675fdd6c88addbe9186d6..12bceadedb4bc679b21f78bb965ebcbdeb1289f4 100644 --- a/ObjectivePGP.framework/LICENSE.txt +++ b/ObjectivePGP.framework/LICENSE.txt @@ -8,6 +8,8 @@ Copyright (C) 2014-2017, Marcin Krzyżanowski All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +- Non-commercial use + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. diff --git a/ObjectivePGP.framework/ObjectivePGP b/ObjectivePGP.framework/ObjectivePGP index d1ada8e13bd0885950ae87cbbb471baff8a10d09..2713e559545f5d72e88cd3b89959d5a43521b315 100755 Binary files a/ObjectivePGP.framework/ObjectivePGP and b/ObjectivePGP.framework/ObjectivePGP differ diff --git a/ObjectivePGP.framework/PrivateHeaders/NSArray+PGPUtils.h b/ObjectivePGP.framework/PrivateHeaders/NSArray+PGPUtils.h index 376e5e9239b4dbd7c004910124e85d6bd9a6a2aa..69ff9fadcfd52947c1786cef40a64d9e66bc37aa 100644 --- a/ObjectivePGP.framework/PrivateHeaders/NSArray+PGPUtils.h +++ b/ObjectivePGP.framework/PrivateHeaders/NSArray+PGPUtils.h @@ -18,7 +18,8 @@ NS_ASSUME_NONNULL_BEGIN @interface NSArray <ObjectType> (PGPUtils) -- (NSArray<ObjectType> *)pgp_objectsPassingTest:(BOOL (^)(ObjectType obj, BOOL *stop))predicate; +- (NSArray<ObjectType> *)pgp_objectsPassingTest:(NS_NOESCAPE BOOL (^)(ObjectType obj, BOOL *stop))predicate; +- (NSArray *)pgp_flatMap:(NS_NOESCAPE NSArray *_Nullable (^)(ObjectType obj))block; @end diff --git a/ObjectivePGP.framework/PrivateHeaders/NSData+PGPUtils.h b/ObjectivePGP.framework/PrivateHeaders/NSData+PGPUtils.h index 790b762d78c9b00f327233a489f507dc5cad8a11..52e091e5f312dd2299a82142755e1d7a1ec7ff1e 100644 --- a/ObjectivePGP.framework/PrivateHeaders/NSData+PGPUtils.h +++ b/ObjectivePGP.framework/PrivateHeaders/NSData+PGPUtils.h @@ -23,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSData *)pgp_SHA512; - (NSData *)pgp_RIPEMD160; +// xor up to the last byte of the shorter data + (NSData *)xor:(NSData *)d1 d2:(NSData *)d2; + (NSData *)dataWithValue:(NSValue *)value; diff --git a/ObjectivePGP.framework/PrivateHeaders/ObjectivePGP-Private.h b/ObjectivePGP.framework/PrivateHeaders/ObjectivePGP-Private.h index c2b3ae2ddb79cb194d1bac7554b0c13c4085f672..a40d6e9f3effe9b45cae097c84eac276077b4f06 100644 --- a/ObjectivePGP.framework/PrivateHeaders/ObjectivePGP-Private.h +++ b/ObjectivePGP.framework/PrivateHeaders/ObjectivePGP-Private.h @@ -21,6 +21,7 @@ FOUNDATION_EXPORT const unsigned char ObjectivePGPVersionString[]; #import <ObjectivePGP/PGPCryptoUtils.h> #import <ObjectivePGP/PGPRSA.h> #import <ObjectivePGP/PGPS2K.h> +#import <ObjectivePGP/PGPElgamal.h> #import <ObjectivePGP/NSArray+PGPUtils.h> #import <ObjectivePGP/PGPUserIDPacket.h> #import <ObjectivePGP/PGPSymetricKeyEncryptedSessionKeyPacket.h> @@ -51,6 +52,7 @@ FOUNDATION_EXPORT const unsigned char ObjectivePGPVersionString[]; #import <ObjectivePGP/PGPModificationDetectionCodePacket.h> #import <ObjectivePGP/PGPEncryptedSessionKeyPacketProtocol.h> #import <ObjectivePGP/PGPSymmetricallyEncryptedDataPacket.h> +#import <ObjectivePGP/PGPMarkerPacket.h> #import <ObjectivePGP/PGPPKCSEmsa.h> #import <ObjectivePGP/PGPPKCSEme.h> #import <ObjectivePGP/PGPCryptoCFB.h> diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPCryptoUtils.h b/ObjectivePGP.framework/PrivateHeaders/PGPCryptoUtils.h index 99e0a096c570729ab5fec9aa3b89a4fd2cb9e81e..da7c5e5f7f04183a6b72d78e5248ca23b6c04f99 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPCryptoUtils.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPCryptoUtils.h @@ -18,7 +18,7 @@ NS_ASSUME_NONNULL_BEGIN + (NSUInteger)keySizeOfSymmetricAlgorithm:(PGPSymmetricAlgorithm)symmetricAlgorithm; + (NSUInteger)hashSizeOfHashAlhorithm:(PGPHashAlgorithm)hashAlgorithm; + (NSData *)randomData:(NSUInteger)length; -+ (nullable NSData *)decrypt:(NSData *)data usingSecretKeyPacket:(PGPSecretKeyPacket *)keyPacket; ++ (nullable NSData *)decrypt:(NSData *)data usingSecretKeyPacket:(PGPSecretKeyPacket *)keyPacket encryptedMPIs:(NSArray <PGPMPI *> *)encryptedMPIs; @end diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPKeyMaterial.h b/ObjectivePGP.framework/PrivateHeaders/PGPKeyMaterial.h index 7a3d53da33f473b65d27c1f6ca20b12b12e1c0d3..e58774c10cc3bfb771241c39bec86bc385e7f32e 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPKeyMaterial.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPKeyMaterial.h @@ -11,15 +11,15 @@ @interface PGPKeyMaterial: NSObject -@property (nonatomic) PGPMPI *n; -@property (nonatomic) PGPMPI *e; -@property (nonatomic) PGPMPI *d; -@property (nonatomic) PGPMPI *p; -@property (nonatomic) PGPMPI *q; -@property (nonatomic) PGPMPI *r; -@property (nonatomic) PGPMPI *g; -@property (nonatomic) PGPMPI *u; -@property (nonatomic) PGPMPI *x; -@property (nonatomic) PGPMPI *y; +@property (nonatomic, copy) PGPMPI *n; +@property (nonatomic, copy) PGPMPI *e; +@property (nonatomic, copy) PGPMPI *d; +@property (nonatomic, copy) PGPMPI *p; +@property (nonatomic, copy) PGPMPI *q; +@property (nonatomic, copy) PGPMPI *r; +@property (nonatomic, copy) PGPMPI *g; +@property (nonatomic, copy) PGPMPI *u; +@property (nonatomic, copy) PGPMPI *x; +@property (nonatomic, copy) PGPMPI *y; @end diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPLogging.h b/ObjectivePGP.framework/PrivateHeaders/PGPLogging.h index 839acd251e7cfed783a18a49f65b02c29db00db9..5b14e1797cefbb642657ee10a04ab9b8ada56763 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPLogging.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPLogging.h @@ -10,24 +10,46 @@ NS_ASSUME_NONNULL_BEGIN -#define PGPLogMacro(_level, _tag, _message) NSLog(@"[%s] %@ %s/%tu %@", _tag, @(_level), __PRETTY_FUNCTION__, __LINE__, _message()) +#define PGP_NO_LOG 0x00 +#define PGP_ERROR_LEVEL 0x01 +#define PGP_WARNING_LEVEL 0x02 +#define PGP_DEBUG_LEVEL 0x03 -#ifdef DEBUG +#ifndef PGP_LOG_LEVEL + #ifdef DEBUG + #define PGP_LOG_LEVEL PGP_DEBUG_LEVEL + #else + #define PGP_LOG_LEVEL PGP_WARNING_LEVEL + #endif +#endif + +#define _PGPLogMacro(_level, _tag, _message) NSLog(@"[%s] %s: %s/%tu %@", _tag, _level, __PRETTY_FUNCTION__, __LINE__, _message()) + +#if PGP_LOG_LEVEL >= PGP_DEBUG_LEVEL #define PGPLogDebug(format, ...) \ - PGPLogMacro(0, "ObjectivePGP", (^{ \ + _PGPLogMacro("DEBUG", "ObjectivePGP", (^{ \ return [NSString stringWithFormat:(@"" format), ##__VA_ARGS__]; \ })) #else #define PGPLogDebug(format, ...) #endif +#if PGP_LOG_LEVEL >= PGP_WARNING_LEVEL #define PGPLogWarning(format, ...) \ - PGPLogMacro(1, "ObjectivePGP", (^{ \ + _PGPLogMacro("WARNING", "ObjectivePGP", (^{ \ return [NSString stringWithFormat:(@"" format), ##__VA_ARGS__]; \ })) +#else +#define PGPLogWarning(format, ...) +#endif + +#if PGP_LOG_LEVEL >= PGP_ERROR_LEVEL #define PGPLogError(format, ...) \ - PGPLogMacro(2, "ObjectivePGP", (^{ \ + _PGPLogMacro("ERROR", "ObjectivePGP", (^{ \ return [NSString stringWithFormat:(@"" format), ##__VA_ARGS__]; \ })) +#else +#define PGPLogError(format, ...) +#endif NS_ASSUME_NONNULL_END diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPOnePassSignaturePacket.h b/ObjectivePGP.framework/PrivateHeaders/PGPOnePassSignaturePacket.h index cc2bfa44cf2e875cf74f9c88a83d8d958186e982..1dec32f71328c1da5ea0225ef5e9c447c336a277 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPOnePassSignaturePacket.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPOnePassSignaturePacket.h @@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) UInt8 version; // The current version is 3. @property (nonatomic) PGPSignatureType signatureType; -@property (nonatomic) PGPHashAlgorithm hashAlgorith; +@property (nonatomic) PGPHashAlgorithm hashAlgorithm; @property (nonatomic) PGPPublicKeyAlgorithm publicKeyAlgorithm; @property (nonatomic, copy) PGPKeyID *keyID; // 8 @property (nonatomic) BOOL isNested; diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPPacket.h b/ObjectivePGP.framework/PrivateHeaders/PGPPacket.h index 4398c9de9cd75733ca084b3c6b91a13ffbe60e0d..614585bb21df78cf57009356dbc4da37711c3932 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPPacket.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPPacket.h @@ -24,7 +24,7 @@ extern const UInt32 PGPUnknownLength; + (nullable NSData *)readPacketBody:(NSData *)data headerLength:(UInt32 *)headerLength consumedBytes:(nullable NSUInteger *)consumedBytes packetTag:(nullable PGPPacketTag *)tag indeterminateLength:(nullable BOOL *)indeterminateLength; - (NSUInteger)parsePacketBody:(NSData *)packetBody error:(NSError * __autoreleasing _Nullable *)error; -+ (NSData *)buildPacketOfType:(PGPPacketTag)tag withBody:(PGP_NOESCAPE NSData *(^)(void))body; ++ (NSData *)buildPacketOfType:(PGPPacketTag)tag withBody:(NS_NOESCAPE NSData *(^)(void))body; - (id)copyWithZone:(nullable NSZone *)zone NS_REQUIRES_SUPER; diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyEncryptedSessionKeyPacket.h b/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyEncryptedSessionKeyPacket.h index 191b69c03baf8cbcd535f28b9687753077a122ac..8e5c14d21263a364d6f2f1d47b4ffd5436762329 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyEncryptedSessionKeyPacket.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyEncryptedSessionKeyPacket.h @@ -17,7 +17,6 @@ NS_ASSUME_NONNULL_BEGIN @interface PGPPublicKeyEncryptedSessionKeyPacket : PGPPacket <PGPEncryptedSessionKeyPacketProtocol, NSCopying, PGPExportable> @property (nonatomic) UInt8 version; @property (nonatomic) PGPPublicKeyAlgorithm publicKeyAlgorithm; -@property (nonatomic, getter=isEncryptedWithPassword) BOOL encryptedWithPassword; @property (nonatomic, copy) PGPKeyID *keyID; - (BOOL)encrypt:(PGPPublicKeyPacket *)publicKeyPacket sessionKeyData:(NSData *)sessionKeyData sessionKeyAlgorithm:(PGPSymmetricAlgorithm)sessionKeyAlgorithm error:(NSError * __autoreleasing _Nullable *)error; diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyPacket.h b/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyPacket.h index cf199de62b8ded991b76973a44ad52a637f65f36..c4b4ddaa3b3dc81a656e5e12f0a3699c551c7e32 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyPacket.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPPublicKeyPacket.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN -@class PGPMPI; +@class PGPMPI, PGPBigNum; @interface PGPPublicKeyPacket : PGPPacket <NSCopying, PGPExportable> @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSData *)buildKeyBodyData:(BOOL)forceV4; - (nullable PGPMPI *)publicMPI:(NSString *)identifier; -- (nullable NSData *)encryptData:(NSData *)data withPublicKeyAlgorithm:(PGPPublicKeyAlgorithm)publicKeyAlgorithm; +- (nullable NSArray<PGPMPI *> *)encryptData:(NSData *)data withPublicKeyAlgorithm:(PGPPublicKeyAlgorithm)publicKeyAlgorithm; @end diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPSecretKeyPacket+Private.h b/ObjectivePGP.framework/PrivateHeaders/PGPSecretKeyPacket+Private.h index 7aca638f41fd5f2a8ef26081e07c84b6a3bcc2e8..f0768163b62e7f67ebc2f824a1723a91367e4451 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPSecretKeyPacket+Private.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPSecretKeyPacket+Private.h @@ -16,11 +16,11 @@ NS_ASSUME_NONNULL_BEGIN @interface PGPSecretKeyPacket () @property (nonatomic, readwrite) PGPS2KUsage s2kUsage; -@property (nonatomic, /* copy, */ readwrite) PGPS2K *s2k; +@property (nonatomic, copy, readwrite) PGPS2K *s2k; @property (nonatomic, readwrite) PGPSymmetricAlgorithm symmetricAlgorithm; @property (nonatomic, copy, nullable, readwrite) NSData *ivData; @property (nonatomic, copy) NSArray<PGPMPI *> *secretMPIs; // decrypted MPI -@property (nonatomic, nullable, copy) NSData *encryptedMPIPartData; // after decrypt -> secretMPIArray +@property (nonatomic, nullable, copy) NSData *encryptedMPIPartData; // after decrypt -> secretMPIs @end diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPSignaturePacket+Private.h b/ObjectivePGP.framework/PrivateHeaders/PGPSignaturePacket+Private.h index 9c17602c7d84a3801fcc498b12dde1672ff093c6..9d0cf67c3049c7c954239bfa0c3d125f3ac287f3 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPSignaturePacket+Private.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPSignaturePacket+Private.h @@ -21,7 +21,7 @@ PGP_EMPTY_INIT_UNAVAILABLE + (PGPSignaturePacket *)signaturePacket:(PGPSignatureType)type hashAlgorithm:(PGPHashAlgorithm)hashAlgorithm; -- (nullable NSData *)buildDataToSignForType:(PGPSignatureType)type inputData:(nullable NSData *)inputData key:(nullable PGPKey *)key subKey:(nullable PGPKey *)subKey keyPacket:(nullable PGPPublicKeyPacket *)signingKeyPacket userID:(nullable NSString *)userID error:(NSError * __autoreleasing _Nullable *)error; +- (nullable NSData *)buildDataToSignForType:(PGPSignatureType)type inputData:(nullable NSData *)inputData key:(nullable PGPKey *)key subKey:(nullable PGPKey *)subKey userID:(nullable NSString *)userID error:(NSError * __autoreleasing _Nullable *)error; - (nullable NSData *)buildFullSignatureBodyData; - (nullable PGPMPI *)signatureMPI:(NSString *)identifier; diff --git a/ObjectivePGP.framework/PrivateHeaders/PGPUser+Private.h b/ObjectivePGP.framework/PrivateHeaders/PGPUser+Private.h index 314f57ed8473955a2ab48783488bbcdef1622b83..8ce5f5a5559258640f99c0d4a78e112e7b0dba8d 100644 --- a/ObjectivePGP.framework/PrivateHeaders/PGPUser+Private.h +++ b/ObjectivePGP.framework/PrivateHeaders/PGPUser+Private.h @@ -25,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithUserIDPacket:(PGPUserIDPacket *)userPacket NS_DESIGNATED_INITIALIZER; -- (nullable PGPSignaturePacket *)validSelfCertificate; +- (nullable PGPSignaturePacket *)latestSelfCertificate; @end diff --git a/ObjectivePGP.framework/README.md b/ObjectivePGP.framework/README.md index 1b91f05f9f45d13a6fdf6f86c56ced98633ae2f5..959a92ce1c8943de085fe34a33a76eccde8b7651 100644 --- a/ObjectivePGP.framework/README.md +++ b/ObjectivePGP.framework/README.md @@ -10,9 +10,25 @@ Here is the [blog post](http://blog.krzyzanowskim.com/2014/07/31/short-story-about-openpgp-for-ios-and-os-x-objectivepgp/) story. +## How do I get involved? + +You want to help, great! Go ahead and fork our repo, make your changes and send us a pull request. + ## Contribution -You are welcome to contribute. Please create [Pull Request](https://github.com/krzyzanowskim/ObjectivePGP/pulls) against `develop` branch. +You are welcome to contribute. See [CONTRIBUTING.md](https://github.com/krzyzanowskim/ObjectivePGP/blob/master/CONTRIBUTING.md) +Please create [Pull Request](https://github.com/krzyzanowskim/ObjectivePGP/pulls) against `develop` branch. + +## The license + +The ObjectivePGP stays under a dual license: + +- Free for non-commercial use, covered by the variant of BSD license. That means you have to mention Marcin Krzyżanowski as the original author of this code and reproduce the [LICENSE](./LICENSE.txt) text inside your app. + +- Commercial-use license to use in commercial products. Please bear in mind that some free products remain commercial products. Please contact me via [email](http://www.krzyzanowskim.com) for details. + + +Not sure what to choose? check [FAQ](https://github.com/krzyzanowskim/ObjectivePGP/wiki/FAQ) ## Usage @@ -133,9 +149,10 @@ let secretKey = try key.export(keyType: .secret) ASCII armor is a binary-to-textual encoding converter. ASCII armor involves encasing encrypted messaging in ASCII so that they can be sent in a standard messaging format such as email. Example: + ``` -----BEGIN PGP PUBLIC KEY BLOCK----- -Comment: For info see http://www.objectivepgp.org +Comment: For more info see http://www.objectivepgp.org [...] -----END PGP PUBLIC KEY BLOCK----- @@ -157,7 +174,7 @@ When convert manually, it is important to use right `PGPArmorType` value that de | ---------- | --------------------- |-------- | | Encrypted | `PGPArmorMessage` | `Armor.armored(ObjectivePGP.encrypt(...), as: .message)` | | Decrypted | `PGPArmorMessage` | `Armor.armored(ObjectivePGP.decrypt(...), as: .message)` | -| Pubic key | `PGPArmorTypePublic` | `Armor.armored(key.export(), as: .publicKey)` | +| Public key | `PGPArmorTypePublic` | `Armor.armored(key.export(), as: .publicKey)` | | Secret key | `PGPArmorTypeSecret` | `Armor.armored(key.export(), as: .secretKey)` | For any result of encryption the type is `PGPArmorMessage` @@ -177,7 +194,9 @@ end ObjectivePGP comes with the [Frameworks](./Frameworks) for the latest release. -1. Download latest [ObjectivePGP.framework](https://github.com/krzyzanowskim/ObjectivePGP/releases) or build a framework with the [build-frameworks.sh](./build-frameworks.sh) script. +1. Download latest [ObjectivePGP.framework](https://github.com/krzyzanowskim/ObjectivePGP/releases) or build a framework with the [build-frameworks.sh](./scripts/build-frameworks.sh) script. +1. Add a New Copy Files Phase by selecting the Add icon, highlighted in Figure 4. Set the Destination field to Frameworks, and add the framework to the list (see [Embedding Frameworks In An App](https://developer.apple.com/library/content/technotes/tn2435/_index.html)). Ensure Code Sign on Copy is checked. + 1. Link framework with the target - Add `ObjectivePGP.framework` to "**Link Binary With Libraries**" list for the target.  @@ -186,8 +205,10 @@ ObjectivePGP comes with the [Frameworks](./Frameworks) for the latest release. 1. Add `libz` and `libbz2` to "**Link Binary With Libraries**" list for the target. These are system libraries. 1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field: + + ```sh -bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectivePGP.framework/strip-frameworks.sh" +bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectivePGP.framework/Code=8" ``` (The last step, is required for working around an iOS App Store bug when archiving universal binaries.) @@ -198,18 +219,11 @@ See [CHANGELOG](./CHANGELOG) Known limitations: -- Elgamal cipher is not supported. - Cleartext signature. -## The license - -The ObjectivePGP stays under a dual license: - -- Free for non-commercial use, covered by the standard 2-clause BSD license. That means you have to mention Marcin Krzyżanowski as the original author of this code and reproduce the [LICENSE](./LICENSE.txt) text inside your app. - -- Commercial-use license to use in commercial products. Please bear in mind that some free products remain commercial products. Please contact me via [email](http://www.krzyzanowskim.com) for details. +## Security Audit -Not sure what to choose? check this [thread](https://twitter.com/krzyzanowskim/status/868481597204508672) +To date the ObjectivePGP code base has undergone a complete security audit from [Cure53](https://cure53.de/). ### Acknowledgment