iTextSharp.text.pdf.PdfPublicKeySecurityHandler.GetRecipientsSize C# (CSharp) Метод

GetRecipientsSize() публичный Метод

public GetRecipientsSize ( ) : int
Результат int
        public int GetRecipientsSize()
        {
            return recipients.Count;
        }

Usage Example

        public PdfDictionary GetEncryptionDictionary()
        {
            var dic = new PdfDictionary();

            if (PublicKeyHandler.GetRecipientsSize() > 0)
            {
                PdfArray recipients = null;

                dic.Put(PdfName.Filter, PdfName.Pubsec);
                dic.Put(PdfName.R, new PdfNumber(_revision));

                recipients = PublicKeyHandler.GetEncodedRecipients();

                if (_revision == STANDARD_ENCRYPTION_40)
                {
                    dic.Put(PdfName.V, new PdfNumber(1));
                    dic.Put(PdfName.Subfilter, PdfName.AdbePkcs7S4);
                    dic.Put(PdfName.Recipients, recipients);
                }
                else if (_revision == STANDARD_ENCRYPTION_128 && _encryptMetadata)
                {
                    dic.Put(PdfName.V, new PdfNumber(2));
                    dic.Put(PdfName.LENGTH, new PdfNumber(128));
                    dic.Put(PdfName.Subfilter, PdfName.AdbePkcs7S4);
                    dic.Put(PdfName.Recipients, recipients);
                }
                else
                {
                    dic.Put(PdfName.R, new PdfNumber(AES_128));
                    dic.Put(PdfName.V, new PdfNumber(4));
                    dic.Put(PdfName.Subfilter, PdfName.AdbePkcs7S5);

                    var stdcf = new PdfDictionary();
                    stdcf.Put(PdfName.Recipients, recipients);
                    if (!_encryptMetadata)
                    {
                        stdcf.Put(PdfName.Encryptmetadata, PdfBoolean.Pdffalse);
                    }

                    if (_revision == AES_128)
                    {
                        stdcf.Put(PdfName.Cfm, PdfName.Aesv2);
                    }
                    else
                    {
                        stdcf.Put(PdfName.Cfm, PdfName.V2);
                    }

                    var cf = new PdfDictionary();
                    cf.Put(PdfName.Defaultcryptfilter, stdcf);
                    dic.Put(PdfName.Cf, cf);
                    if (_embeddedFilesOnly)
                    {
                        dic.Put(PdfName.Eff, PdfName.Defaultcryptfilter);
                        dic.Put(PdfName.Strf, PdfName.Identity);
                        dic.Put(PdfName.Stmf, PdfName.Identity);
                    }
                    else
                    {
                        dic.Put(PdfName.Strf, PdfName.Defaultcryptfilter);
                        dic.Put(PdfName.Stmf, PdfName.Defaultcryptfilter);
                    }
                }

#if NET40
                SHA1   sh = new SHA1CryptoServiceProvider();
                byte[] encodedRecipient = null;
                var    seed             = PublicKeyHandler.GetSeed();
                sh.TransformBlock(seed, 0, seed.Length, seed, 0);
                for (var i = 0; i < PublicKeyHandler.GetRecipientsSize(); i++)
                {
                    encodedRecipient = PublicKeyHandler.GetEncodedRecipient(i);
                    sh.TransformBlock(encodedRecipient, 0, encodedRecipient.Length, encodedRecipient, 0);
                }
                if (!_encryptMetadata)
                {
                    sh.TransformBlock(MetadataPad, 0, MetadataPad.Length, MetadataPad, 0);
                }

                sh.TransformFinalBlock(seed, 0, 0);
                var mdResult = sh.Hash;
#else
                byte[] mdResult;
                using (var sh = IncrementalHash.CreateHash(HashAlgorithmName.SHA1))
                {
                    var seed = PublicKeyHandler.GetSeed();
                    sh.AppendData(seed, 0, seed.Length);
                    for (var i = 0; i < PublicKeyHandler.GetRecipientsSize(); i++)
                    {
                        var encodedRecipient = PublicKeyHandler.GetEncodedRecipient(i);
                        sh.AppendData(encodedRecipient, 0, encodedRecipient.Length);
                    }
                    if (!_encryptMetadata)
                    {
                        sh.AppendData(MetadataPad, 0, MetadataPad.Length);
                    }

                    mdResult = sh.GetHashAndReset();
                }
#endif

                SetupByEncryptionKey(mdResult, _keyLength);
            }
            else
            {
                dic.Put(PdfName.Filter, PdfName.Standard);
                dic.Put(PdfName.O, new PdfLiteral(PdfContentByte.EscapeString(OwnerKey)));
                dic.Put(PdfName.U, new PdfLiteral(PdfContentByte.EscapeString(UserKey)));
                dic.Put(PdfName.P, new PdfNumber(Permissions));
                dic.Put(PdfName.R, new PdfNumber(_revision));
                if (_revision == STANDARD_ENCRYPTION_40)
                {
                    dic.Put(PdfName.V, new PdfNumber(1));
                }
                else if (_revision == STANDARD_ENCRYPTION_128 && _encryptMetadata)
                {
                    dic.Put(PdfName.V, new PdfNumber(2));
                    dic.Put(PdfName.LENGTH, new PdfNumber(128));
                }
                else
                {
                    if (!_encryptMetadata)
                    {
                        dic.Put(PdfName.Encryptmetadata, PdfBoolean.Pdffalse);
                    }

                    dic.Put(PdfName.R, new PdfNumber(AES_128));
                    dic.Put(PdfName.V, new PdfNumber(4));
                    dic.Put(PdfName.LENGTH, new PdfNumber(128));
                    var stdcf = new PdfDictionary();
                    stdcf.Put(PdfName.LENGTH, new PdfNumber(16));
                    if (_embeddedFilesOnly)
                    {
                        stdcf.Put(PdfName.Authevent, PdfName.Efopen);
                        dic.Put(PdfName.Eff, PdfName.Stdcf);
                        dic.Put(PdfName.Strf, PdfName.Identity);
                        dic.Put(PdfName.Stmf, PdfName.Identity);
                    }
                    else
                    {
                        stdcf.Put(PdfName.Authevent, PdfName.Docopen);
                        dic.Put(PdfName.Strf, PdfName.Stdcf);
                        dic.Put(PdfName.Stmf, PdfName.Stdcf);
                    }
                    if (_revision == AES_128)
                    {
                        stdcf.Put(PdfName.Cfm, PdfName.Aesv2);
                    }
                    else
                    {
                        stdcf.Put(PdfName.Cfm, PdfName.V2);
                    }

                    var cf = new PdfDictionary();
                    cf.Put(PdfName.Stdcf, stdcf);
                    dic.Put(PdfName.Cf, cf);
                }
            }
            return(dic);
        }
All Usage Examples Of iTextSharp.text.pdf.PdfPublicKeySecurityHandler::GetRecipientsSize