]>
Commit | Line | Data |
---|---|---|
109bb081 MWP |
1 | diff --git a/dlls/secur32/schannel.c b/dlls/secur32/schannel.c |
2 | index 8f127e6..ce711e4 100644 | |
3 | --- a/dlls/secur32/schannel.c | |
4 | +++ b/dlls/secur32/schannel.c | |
5 | @@ -48,6 +48,7 @@ MAKE_FUNCPTR(gnutls_alert_get); | |
6 | MAKE_FUNCPTR(gnutls_alert_get_name); | |
7 | MAKE_FUNCPTR(gnutls_certificate_allocate_credentials); | |
8 | MAKE_FUNCPTR(gnutls_certificate_free_credentials); | |
9 | +MAKE_FUNCPTR(gnutls_certificate_get_peers); | |
10 | MAKE_FUNCPTR(gnutls_cipher_get); | |
11 | MAKE_FUNCPTR(gnutls_credentials_set); | |
12 | MAKE_FUNCPTR(gnutls_deinit); | |
13 | @@ -872,6 +873,31 @@ static SECURITY_STATUS SEC_ENTRY schan_QueryContextAttributesW( | |
14 | return SEC_E_OK; | |
15 | } | |
16 | ||
17 | + case SECPKG_ATTR_REMOTE_CERT_CONTEXT: | |
18 | + { | |
19 | + unsigned int list_count; | |
20 | + const gnutls_datum_t *list; | |
21 | + PCCERT_CONTEXT *context = (PCCERT_CONTEXT *)buffer; | |
22 | + list = pgnutls_certificate_get_peers(ctx->session, &list_count); | |
23 | + FIXME("Got %d certs\n", list_count); | |
24 | + *context = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, list[0].data, list[0].size); | |
25 | + return SEC_E_OK; | |
26 | + } | |
27 | + | |
28 | + case SECPKG_ATTR_CONNECTION_INFO: | |
29 | + { | |
30 | + SecPkgContext_ConnectionInfo *conn_info = (SecPkgContext_ConnectionInfo *)buffer; | |
31 | + FIXME("conn_info %p\n", conn_info); | |
32 | + conn_info->dwProtocol = SP_PROT_TLS1_CLIENT; | |
33 | + conn_info->aiCipher = CALG_AES_256; | |
34 | + conn_info->dwCipherStrength = 256; | |
35 | + conn_info->aiHash = CALG_SHA; | |
36 | + conn_info->dwHashStrength = 160; | |
37 | + conn_info->aiExch = CALG_RSA_KEYX; | |
38 | + conn_info->dwExchStrength = 1024; | |
39 | + return SEC_E_OK; | |
40 | + } | |
41 | + | |
42 | default: | |
43 | FIXME("Unhandled attribute %#x\n", attribute); | |
44 | return SEC_E_UNSUPPORTED_FUNCTION; | |
45 | @@ -887,6 +913,8 @@ static SECURITY_STATUS SEC_ENTRY schan_QueryContextAttributesA( | |
46 | switch(attribute) | |
47 | { | |
48 | case SECPKG_ATTR_STREAM_SIZES: | |
49 | + case SECPKG_ATTR_REMOTE_CERT_CONTEXT: | |
50 | + case SECPKG_ATTR_CONNECTION_INFO: | |
51 | return schan_QueryContextAttributesW(context_handle, attribute, buffer); | |
52 | ||
53 | default: | |
54 | @@ -1220,6 +1248,7 @@ void SECUR32_initSchannelSP(void) | |
55 | LOAD_FUNCPTR(gnutls_alert_get_name) | |
56 | LOAD_FUNCPTR(gnutls_certificate_allocate_credentials) | |
57 | LOAD_FUNCPTR(gnutls_certificate_free_credentials) | |
58 | + LOAD_FUNCPTR(gnutls_certificate_get_peers) | |
59 | LOAD_FUNCPTR(gnutls_cipher_get) | |
60 | LOAD_FUNCPTR(gnutls_credentials_set) | |
61 | LOAD_FUNCPTR(gnutls_deinit) |