Opc.Ua.Bindings.TcpChannel.GetAsymmetricHeaderSize C# (CSharp) Method

GetAsymmetricHeaderSize() protected method

Calculates the size of the asymmetric security header.
protected GetAsymmetricHeaderSize ( string securityPolicyUri, X509Certificate2 senderCertificate ) : int
securityPolicyUri string
senderCertificate System.Security.Cryptography.X509Certificates.X509Certificate2
return int
        protected int GetAsymmetricHeaderSize(
            string           securityPolicyUri,
            X509Certificate2 senderCertificate)
        {        
            int headerSize = 0;

            headerSize += TcpMessageLimits.BaseHeaderSize;
            headerSize += TcpMessageLimits.StringLengthSize;

            if (securityPolicyUri != null)
            {
                headerSize += new UTF8Encoding().GetByteCount(securityPolicyUri);
            }

            headerSize += TcpMessageLimits.StringLengthSize;
            headerSize += TcpMessageLimits.StringLengthSize;

            if (SecurityMode != MessageSecurityMode.None)
            {
                headerSize += senderCertificate.RawData.Length;
                headerSize += TcpMessageLimits.CertificateThumbprintSize;
            }

            if (headerSize >= SendBufferSize - TcpMessageLimits.SequenceHeaderSize - GetAsymmetricSignatureSize(senderCertificate) - 1)
            {
                throw ServiceResultException.Create(
                    StatusCodes.BadInternalError, 
                    "AsymmetricSecurityHeader is {0} bytes which is too large for the send buffer size of {1} bytes.",
                    headerSize,
                    SendBufferSize);
            }

            return headerSize;
        }

Same methods

TcpChannel::GetAsymmetricHeaderSize ( string securityPolicyUri, X509Certificate2 senderCertificate, int senderCertificateSize ) : int