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; } } }