public static StatusCode SecureSymmetric( MemoryBuffer respBuf, int messageEncodedBlockStart, SLChannel.Keyset localKeyset, SLChannel.Keyset remoteKeyset, SecurityPolicy policy, MessageSecurityMode securityMode) { if (securityMode == MessageSecurityMode.None) { return(StatusCode.Good); } int num1 = UASecurity.SignatureSizeForSecurityPolicy(policy); if (securityMode >= MessageSecurityMode.SignAndEncrypt) { int symmetricPaddingSize = UASecurity.CalculateSymmetricPaddingSize(localKeyset.SymEncKey.Length, num1 + respBuf.Position - messageEncodedBlockStart); byte num2 = (byte)(symmetricPaddingSize - 1 & byte.MaxValue); byte[] Add = new byte[symmetricPaddingSize]; for (int index = 0; index < symmetricPaddingSize; ++index) { Add[index] = num2; } respBuf.Append(Add); } int num3 = respBuf.Position + num1; if (securityMode >= MessageSecurityMode.SignAndEncrypt) { num3 = messageEncodedBlockStart + UASecurity.CalculateSymmetricEncryptedSize(localKeyset.SymEncKey.Length, num3 - messageEncodedBlockStart); } if (num3 >= respBuf.Capacity) { return(StatusCode.BadEncodingLimitsExceeded); } UASecurity.MarkUAMessageSize(respBuf, (uint)num3); byte[] Add1 = UASecurity.SymmetricSign(localKeyset.SymSignKey, new ArraySegment <byte>(respBuf.Buffer, 0, respBuf.Position), policy); respBuf.Append(Add1); if (num3 != respBuf.Position) { throw new Exception(); } if (securityMode >= MessageSecurityMode.SignAndEncrypt) { UASecurity.RijndaelEncryptInplace(new ArraySegment <byte>(respBuf.Buffer, messageEncodedBlockStart, num3 - messageEncodedBlockStart), localKeyset.SymEncKey, localKeyset.SymIV); } return(StatusCode.Good); }