EncodeSupportedSignatureAlgorithms() public static method

public static EncodeSupportedSignatureAlgorithms ( IList supportedSignatureAlgorithms, bool allowAnonymous, Stream output ) : void
supportedSignatureAlgorithms IList
allowAnonymous bool
output Stream
return void
        public virtual void Encode(Stream output)
        {
            if (this.mCertificateTypes == null || this.mCertificateTypes.Length == 0)
            {
                TlsUtilities.WriteUint8(0, output);
            }
            else
            {
                TlsUtilities.WriteUint8ArrayWithUint8Length(this.mCertificateTypes, output);
            }
            if (this.mSupportedSignatureAlgorithms != null)
            {
                TlsUtilities.EncodeSupportedSignatureAlgorithms(this.mSupportedSignatureAlgorithms, false, output);
            }
            if (this.mCertificateAuthorities == null || this.mCertificateAuthorities.Count < 1)
            {
                TlsUtilities.WriteUint16(0, output);
                return;
            }
            IList list = Platform.CreateArrayList(this.mCertificateAuthorities.Count);
            int   num  = 0;

            foreach (Asn1Encodable asn1Encodable in this.mCertificateAuthorities)
            {
                byte[] encoded = asn1Encodable.GetEncoded("DER");
                list.Add(encoded);
                num += encoded.Length + 2;
            }
            TlsUtilities.CheckUint16(num);
            TlsUtilities.WriteUint16(num, output);
            foreach (byte[] buf in list)
            {
                TlsUtilities.WriteOpaque16(buf, output);
            }
        }
        /**
         * Encode this {@link CertificateRequest} to a {@link Stream}.
         *
         * @param output the {@link Stream} to encode to.
         * @throws IOException
         */
        public virtual void Encode(Stream output)
        {
            if (mCertificateTypes == null || mCertificateTypes.Length == 0)
            {
                TlsUtilities.WriteUint8(0, output);
            }
            else
            {
                TlsUtilities.WriteUint8ArrayWithUint8Length(mCertificateTypes, output);
            }

            if (mSupportedSignatureAlgorithms != null)
            {
                // TODO Check whether SignatureAlgorithm.anonymous is allowed here
                TlsUtilities.EncodeSupportedSignatureAlgorithms(mSupportedSignatureAlgorithms, false, output);
            }

            if (mCertificateAuthorities == null || mCertificateAuthorities.Count < 1)
            {
                TlsUtilities.WriteUint16(0, output);
            }
            else
            {
                IList derEncodings = Platform.CreateArrayList(mCertificateAuthorities.Count);

                int totalLength = 0;
                foreach (Asn1Encodable certificateAuthority in mCertificateAuthorities)
                {
                    byte[] derEncoding = certificateAuthority.GetEncoded(Asn1Encodable.Der);
                    derEncodings.Add(derEncoding);
                    totalLength += derEncoding.Length + 2;
                }

                TlsUtilities.CheckUint16(totalLength);
                TlsUtilities.WriteUint16(totalLength, output);

                foreach (byte[] derEncoding in derEncodings)
                {
                    TlsUtilities.WriteOpaque16(derEncoding, output);
                }
            }
        }
 public virtual void Encode(Stream output)
 {
     if (mCertificateTypes == null || mCertificateTypes.Length == 0)
     {
         TlsUtilities.WriteUint8(0, output);
     }
     else
     {
         TlsUtilities.WriteUint8ArrayWithUint8Length(mCertificateTypes, output);
     }
     if (mSupportedSignatureAlgorithms != null)
     {
         TlsUtilities.EncodeSupportedSignatureAlgorithms(mSupportedSignatureAlgorithms, allowAnonymous: false, output);
     }
     if (mCertificateAuthorities == null || mCertificateAuthorities.Count < 1)
     {
         TlsUtilities.WriteUint16(0, output);
     }
     else
     {
         IList list = Platform.CreateArrayList(mCertificateAuthorities.Count);
         int   num  = 0;
         foreach (Asn1Encodable mCertificateAuthority in mCertificateAuthorities)
         {
             byte[] encoded = mCertificateAuthority.GetEncoded("DER");
             list.Add(encoded);
             num += encoded.Length + 2;
         }
         TlsUtilities.CheckUint16(num);
         TlsUtilities.WriteUint16(num, output);
         foreach (byte[] item in list)
         {
             TlsUtilities.WriteOpaque16(item, output);
         }
     }
 }
 public virtual void Encode(Stream output)
 {
     if ((this.mCertificateTypes == null) || (this.mCertificateTypes.Length == 0))
     {
         TlsUtilities.WriteUint8(0, output);
     }
     else
     {
         TlsUtilities.WriteUint8ArrayWithUint8Length(this.mCertificateTypes, output);
     }
     if (this.mSupportedSignatureAlgorithms != null)
     {
         TlsUtilities.EncodeSupportedSignatureAlgorithms(this.mSupportedSignatureAlgorithms, false, output);
     }
     if ((this.mCertificateAuthorities == null) || (this.mCertificateAuthorities.Count < 1))
     {
         TlsUtilities.WriteUint16(0, output);
     }
     else
     {
         IList       list       = Platform.CreateArrayList(this.mCertificateAuthorities.Count);
         int         i          = 0;
         IEnumerator enumerator = this.mCertificateAuthorities.GetEnumerator();
         try
         {
             while (enumerator.MoveNext())
             {
                 byte[] encoded = ((Asn1Encodable)enumerator.Current).GetEncoded("DER");
                 list.Add(encoded);
                 i += encoded.Length + 2;
             }
         }
         finally
         {
             if (enumerator is IDisposable disposable)
             {
                 IDisposable disposable;
                 disposable.Dispose();
             }
         }
         TlsUtilities.CheckUint16(i);
         TlsUtilities.WriteUint16(i, output);
         IEnumerator enumerator2 = list.GetEnumerator();
         try
         {
             while (enumerator2.MoveNext())
             {
                 byte[] current = (byte[])enumerator2.Current;
                 TlsUtilities.WriteOpaque16(current, output);
             }
         }
         finally
         {
             if (enumerator2 is IDisposable disposable2)
             {
                 IDisposable disposable2;
                 disposable2.Dispose();
             }
         }
     }
 }
Beispiel #5
0
        public virtual void Encode(Stream output)
        {
            if (mCertificateTypes == null || mCertificateTypes.Length == 0)
            {
                TlsUtilities.WriteUint8(0, output);
            }
            else
            {
                TlsUtilities.WriteUint8ArrayWithUint8Length(mCertificateTypes, output);
            }
            if (mSupportedSignatureAlgorithms != null)
            {
                TlsUtilities.EncodeSupportedSignatureAlgorithms(mSupportedSignatureAlgorithms, allowAnonymous: false, output);
            }
            if (mCertificateAuthorities == null || ((global::System.Collections.ICollection)mCertificateAuthorities).get_Count() < 1)
            {
                TlsUtilities.WriteUint16(0, output);
                return;
            }
            global::System.Collections.IList list = Platform.CreateArrayList(((global::System.Collections.ICollection)mCertificateAuthorities).get_Count());
            int num = 0;

            global::System.Collections.IEnumerator enumerator = ((global::System.Collections.IEnumerable)mCertificateAuthorities).GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    Asn1Encodable asn1Encodable = (Asn1Encodable)enumerator.get_Current();
                    byte[]        encoded       = asn1Encodable.GetEncoded("DER");
                    list.Add((object)encoded);
                    num += encoded.Length + 2;
                }
            }
            finally
            {
                global::System.IDisposable disposable = enumerator as global::System.IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
            TlsUtilities.CheckUint16(num);
            TlsUtilities.WriteUint16(num, output);
            enumerator = ((global::System.Collections.IEnumerable)list).GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    byte[] buf = (byte[])enumerator.get_Current();
                    TlsUtilities.WriteOpaque16(buf, output);
                }
            }
            finally
            {
                global::System.IDisposable disposable2 = enumerator as global::System.IDisposable;
                if (disposable2 != null)
                {
                    disposable2.Dispose();
                }
            }
        }