internal static EncryptedMessage EncryptMessage( SecHandle context, SecQopFlags flags, byte[] message, int sequence_no) { SecurityBuffer buffer = new SecurityBufferInOut(SecurityBufferType.Data, message); var signature = EncryptMessage(context, flags, new[] { buffer }, sequence_no); return(new EncryptedMessage(buffer.ToArray(), signature)); }
internal static byte[] EncryptMessage( SecHandle context, SecQopFlags flags, IEnumerable <SecurityBuffer> messages, int sequence_no) { List <SecurityBuffer> sig_buffers = new List <SecurityBuffer>(messages); var sizes = QueryContextAttribute <SecPkgContext_Sizes>(context, SECPKG_ATTR.SIZES); var out_sig_buffer = new SecurityBufferOut(SecurityBufferType.Token, sizes.cbSecurityTrailer); sig_buffers.Add(out_sig_buffer); using (var list = new DisposableList()) { var buffers = sig_buffers.ToBufferList(list); var desc = buffers.ToDesc(list); SecurityNativeMethods.EncryptMessage(context, flags, desc, sequence_no).CheckResult(); sig_buffers.UpdateBuffers(buffers); return(out_sig_buffer.ToArray()); } }
internal static extern SecStatusCode DecryptMessage( [In] SecHandle phContext, SecBufferDesc pMessage, int MessageSeqNo, out SecQopFlags pfQOP );
internal static extern SecStatusCode EncryptMessage( [In] SecHandle phContext, SecQopFlags fQOP, SecBufferDesc pMessage, int MessageSeqNo );