Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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
     );