예제 #1
0
        public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId)
            : base(pdfDict)
        {
            SetForbidRelease();
            this.documentId = documentId;
            int revision = ReadAndSetCryptoModeForStdHandler(pdfDict);

            switch (revision)
            {
            case STANDARD_ENCRYPTION_40: {
                StandardHandlerUsingStandard40 handlerStd40 = new StandardHandlerUsingStandard40(this.GetPdfObject(), password
                                                                                                 , documentId, encryptMetadata);
                permissions     = handlerStd40.GetPermissions();
                securityHandler = handlerStd40;
                break;
            }

            case STANDARD_ENCRYPTION_128: {
                StandardHandlerUsingStandard128 handlerStd128 = new StandardHandlerUsingStandard128(this.GetPdfObject(), password
                                                                                                    , documentId, encryptMetadata);
                permissions     = handlerStd128.GetPermissions();
                securityHandler = handlerStd128;
                break;
            }

            case AES_128: {
                StandardHandlerUsingAes128 handlerAes128 = new StandardHandlerUsingAes128(this.GetPdfObject(), password, documentId
                                                                                          , encryptMetadata);
                permissions     = handlerAes128.GetPermissions();
                securityHandler = handlerAes128;
                break;
            }

            case AES_256: {
                StandardHandlerUsingAes256 aes256Handler = new StandardHandlerUsingAes256(this.GetPdfObject(), password);
                permissions     = aes256Handler.GetPermissions();
                encryptMetadata = aes256Handler.IsEncryptMetadata();
                securityHandler = aes256Handler;
                break;
            }
            }
        }