123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- //
- // CPDFSignature.h
- // ComPDFKit
- //
- // Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
- //
- // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
- // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
- // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
- // This notice may not be removed from this file.
- //
- #import <ComPDFKit/CPDFKitPlatform.h>
- @class CPDFDocument;
- typedef NS_ENUM(NSInteger, CPDFSignatureOCSPStatus) {
- CPDFSignatureOCSPStatusNone = -2,
- CPDFSignatureOCSPStatusFail = -1,
- CPDFSignatureOCSPStatusGood = 0,
- CPDFSignatureOCSPStatusRevoked = 1
- };
- typedef NS_ENUM(NSInteger, CPDFModifyType) {
- CPDFModifyNone = 0,
- CPDFModifyAddPage,
- CPDFModifyDeletePage,
- CPDFModifyPage,
- CPDFModifyAddAnnotation,
- CPDFModifyDeleteAnnotation,
- CPDFModifyAnnotation,
- CPDFModifyFillForm,
- CPDFModifyRootIncrease,
- CPDFModifyDocument
- };
- @interface CPDFModifyInfo : NSObject
- @property (nonatomic,readonly) CPDFModifyType type;
- @property (nonatomic,readonly) NSInteger pageIndex;
- @property (nonatomic,readonly) NSInteger annotationType;
- @property (nonatomic,readonly) NSInteger formType;
- @property (nonatomic,readonly) NSString *info;
- @end
- @interface CPDFSignatureCertificate : NSObject
- // Version 版本
- @property (nonatomic,readonly) NSString *version;
- // Signature algorithm 签名算法
- @property (nonatomic,readonly) NSString *signatureAlgorithmOID;
- @property (nonatomic,readonly) NSString *signatureAlgorithmType;
- // Subject 主题
- @property (nonatomic,readonly) NSString *subject;
- // C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名)
- @property (nonatomic,readonly) NSDictionary *subjectDict;
- // Issuer 颁发者
- @property (nonatomic,readonly) NSString *issuer;
- // C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名)
- @property (nonatomic,readonly) NSDictionary *issuerDict;
- // Serial number 序列号
- @property (nonatomic,readonly) NSString *serialNumber;
- // Validity starts 有效起始日期
- @property (nonatomic,readonly) NSDate *validityStarts;
- // Validity ends 有效截止日期
- @property (nonatomic,readonly) NSDate *validityEnds;
- // Authority info access 颁发机构信息访问
- @property (nonatomic,readonly) NSArray<NSDictionary *> *authorityInfoAccess;
- // Subject key identifier 主题密钥标识符
- @property (nonatomic,readonly) NSString *subjectKeyIdentifier;
- // Key usage 密钥用法
- @property (nonatomic,readonly) NSString *keyUsage;
- // Certificate policies 证书策略
- @property (nonatomic,readonly) NSString *certificatePolicies;
- // Authority key identifier 颁发结构密钥标识符
- @property (nonatomic,readonly) NSString *authorityKeyIdentifier;
- // CRL distribution points CRL分发点
- @property (nonatomic,readonly) NSArray<NSString *> *CRLDistributionPoints;
- // Basic constraints 基本限制
- @property (nonatomic,readonly) NSString *basicConstraints;
- // Public key 公钥
- @property (nonatomic,readonly) NSString *publicKey;
- // X.509 data X.509数据
- @property (nonatomic,readonly) NSString *X509Data;
- // SHA1 digest SHA1摘要
- @property (nonatomic,readonly) NSString *SHA1Digest;
- // MD5 digest MD5摘要
- @property (nonatomic,readonly) NSString *MD5Digest;
- @property (nonatomic,readonly) NSString *ocspURL;
- @property (nonatomic,readonly) CPDFSignatureOCSPStatus ocspStatus;
- @property (nonatomic,readonly) BOOL isTrusted;
- - (void)verifyOCSPWithCompletionHandler:(void (^)(BOOL result, CPDFSignatureOCSPStatus ocspStatus))handler;
- - (BOOL)exportToFilePath:(NSString *)filePath;
- - (BOOL)addToTrustedCertificates;
- + (CPDFSignatureCertificate *)certificateWithPKCS12Path:(NSString *)path password:(NSString *)password;
- @end
- @interface CPDFSigner : NSObject
- @property (nonatomic,readonly) BOOL isSignVerified;
- @property (nonatomic,readonly) BOOL isCertTrusted;
- @property (nonatomic,readonly) NSString *name;
- @property (nonatomic,readonly) NSDate *date;
- @property (nonatomic,readonly) NSArray<CPDFSignatureCertificate*> *certificates;
- @property (nonatomic,readonly) NSArray<CPDFSigner*> *timestampSigners;
- - (void)checkCertificateIsTrusted;
- @end
- @interface CPDFSignature : NSObject
- @property (nonatomic,readonly) NSArray<CPDFSigner *> *signers;
- @property (nonatomic,readonly) NSArray<CPDFModifyInfo *> *modifyInfos;
- @property (nonatomic,readonly) NSUInteger pageIndex;
- @property (nonatomic,readonly) NSString *fieldName;
- @property (nonatomic,readonly) CGRect bounds;
- /**
- * The access permissions granted for this document.
- *
- * @discussion Valid values shall be:
- * 1 : No changes to the document shall be permitted; any change to the document shall invalidate the signature.
- * 2 : Permitted changes shall be filling in forms, instantiating page templates, and signing; other changes shall invalidate the signature.
- * 3 : Permitted changes shall be the same as for 2, as well as annotation creation, deletion, and modification; other changes shall invalidate the signature.
- */
- @property (nonatomic,readonly) NSInteger permissions;
- - (void)verifySignatureWithDocument:(CPDFDocument *)document;
- /**
- * 生成P12证书
- *
- * @param info C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名),emailaddress(邮箱)
- * @param password 密码
- * @param path 保存路径
- */
- + (BOOL)generatePKCS12CertWithInfo:(NSDictionary *)info password:(NSString *)password toPath:(NSString *)path;
- @end
|