winhttp: Support setting security flags on request handles.
diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c
index 82da721..5557250 100644
--- a/dlls/winhttp/session.c
+++ b/dlls/winhttp/session.c
@@ -723,8 +723,27 @@
         return TRUE;
     }
     case WINHTTP_OPTION_SECURITY_FLAGS:
-        FIXME("WINHTTP_OPTION_SECURITY_FLAGS unimplemented (%08x)\n", *(DWORD *)buffer);
+    {
+        DWORD flags;
+
+        if (buflen < sizeof(DWORD))
+        {
+            set_last_error( ERROR_INSUFFICIENT_BUFFER );
+            return FALSE;
+        }
+        flags = *(DWORD *)buffer;
+        TRACE("0x%x\n", flags);
+        if (!(flags & (SECURITY_FLAG_IGNORE_CERT_CN_INVALID   |
+                       SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
+                       SECURITY_FLAG_IGNORE_UNKNOWN_CA        |
+                       SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE)))
+        {
+            set_last_error( ERROR_INVALID_PARAMETER );
+            return FALSE;
+        }
+        request->security_flags = flags;
         return TRUE;
+    }
     case WINHTTP_OPTION_RESOLVE_TIMEOUT:
         request->resolve_timeout = *(DWORD *)buffer;
         return TRUE;
diff --git a/dlls/winhttp/winhttp_private.h b/dlls/winhttp/winhttp_private.h
index abf5f8a..43961fe 100644
--- a/dlls/winhttp/winhttp_private.h
+++ b/dlls/winhttp/winhttp_private.h
@@ -155,6 +155,7 @@
     DWORD content_read;   /* bytes read so far */
     header_t *headers;
     DWORD num_headers;
+    DWORD security_flags;
 } request_t;
 
 typedef struct _task_header_t task_header_t;