[cpp-sp] 05/05: more stuff

Rod Widdowson rdw at steadingsoftware.com
Thu May 8 15:27:30 UTC 2025


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch dev/SPPSP-8-playpen
in repository cpp-sp.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=51dc6669513d0aad1da8f3efc6a8d81b33daea44

commit 51dc6669513d0aad1da8f3efc6a8d81b33daea44
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu May 8 15:39:04 2025 +0100

    more stuff
---
 Projects/WinHttpProject/R10.crt            | 29 ++++++++++++++++++
 Projects/WinHttpProject/WinHttpProject.cpp | 48 ++++++++++++++++++++++++------
 Projects/WinHttpProject/root.pem           | 31 +++++++++++++++++++
 3 files changed, 99 insertions(+), 9 deletions(-)

diff --git a/Projects/WinHttpProject/R10.crt b/Projects/WinHttpProject/R10.crt
new file mode 100644
index 00000000..4bfbe316
--- /dev/null
+++ b/Projects/WinHttpProject/R10.crt
@@ -0,0 +1,29 @@
+-----BEGIN CERTIFICATE-----
+MIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP
+MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
+Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
+Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
+bmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL
+YlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a
+/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4
+FpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR
+mudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3
+DZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG
+MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/
+AgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5
+tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG
+Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD
+VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B
+AQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo
+zwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd
+u6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9
+1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0
+GaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh
+1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ
+QjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N
+4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz
+rsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei
+RmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx
+KPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=
+-----END CERTIFICATE-----
diff --git a/Projects/WinHttpProject/WinHttpProject.cpp b/Projects/WinHttpProject/WinHttpProject.cpp
index a3cacdd0..c5c64ed7 100644
--- a/Projects/WinHttpProject/WinHttpProject.cpp
+++ b/Projects/WinHttpProject/WinHttpProject.cpp
@@ -18,14 +18,21 @@ static
 BOOLEAN
 CheckCertCtx(PCCERT_CONTEXT context) {
 
-    PCCERT_CONTEXT outCtx 
+    CERT_CHAIN_PARA chainPara = {0};
+    chainPara.cbSize = sizeof(chainPara);
 
-    = CertFindCertificateInStore(certStore, X509_ASN_ENCODING, 0, CERT_FIND_EXISTING, context, NULL);
+    PCCERT_CHAIN_CONTEXT chainContext;
 /*
-//    if (!CertGetCertificateChain(engine, context, NULL, context->hCertStore, &chainPara, 0, // No revocation checking
 //        if (!CertGetCertificateChain(NULL, context, NULL, context->hCertStore, &chainPara, 0, // No revocation checking
-    if (!CertGetCertificateChain(NULL, context, NULL, certStore, &chainPara, 0, // No revocation checking
-        NULL, &chainContext)) {
+//    if (!CertGetCertificateChain(NULL, context, NULL, certStore, &chainPara, 0, // No revocation checking
+//
+*/
+
+
+
+    if (!CertGetCertificateChain(nullptr, context, NULL, context->hCertStore, &chainPara, CERT_CHAIN_CACHE_END_CERT /*Revocation*/, NULL, &chainContext)) { // No revocation checking
+        
+
         cout << "CertGetCertificateChain failed " << GetLastError() << endl;
 
         return FALSE;
@@ -33,7 +40,9 @@ CheckCertCtx(PCCERT_CONTEXT context) {
 
     CERT_SIMPLE_CHAIN* pSimpleChain = chainContext->rgpChain[0];
     DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
-    dwTrustErrorMask = pSimpleChain->TrustStatus.dwErrorStatus;
+    dwTrustErrorMask = chainContext->rgpChain[0]->TrustStatus.dwErrorStatus;
+//    dwTrustErrorMask = chainContext->rgpChain[1]->TrustStatus.dwErrorStatus;
+  //  dwTrustErrorMask = chainContext->rgpChain[2]->TrustStatus.dwErrorStatus;
     CertFreeCertificateChain(chainContext);
 
     if (dwTrustErrorMask) {
@@ -43,7 +52,7 @@ CheckCertCtx(PCCERT_CONTEXT context) {
         return FALSE;
 
     }
-    */
+    
     return TRUE;
 }
 
@@ -57,6 +66,8 @@ static void Callback(
     DWORD dwStatusInformationLength)
 {
     PCCERT_CONTEXT pCertCtx = NULL;
+    PCERT_CHAIN_CONTEXT ccCtx;
+//    PCERT_SIMPLE_CHAIN ccc;
     DWORD dwSize = sizeof(pCertCtx);
     cout << "Handle " << hex << hInternet <<endl;
     cout << "Context " << dec << dwContext << endl;
@@ -77,6 +88,14 @@ static void Callback(
 
                 CertFreeCertificateContext(pCertCtx);
             }
+            if (!WinHttpQueryOption(hInternet, WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT, &ccCtx, &dwSize)) {
+                cout << "Gack " << GetLastError() << endl;
+            }
+            else {
+                DWORD dwTrustErrorMask = ccCtx->rgpChain[0]->TrustStatus.dwErrorStatus;
+                dwTrustErrorMask = ccCtx->rgpChain[1]->TrustStatus.dwErrorStatus;
+                dwTrustErrorMask = ccCtx->rgpChain[2]->TrustStatus.dwErrorStatus;
+            }
         break;
     
     case WINHTTP_CALLBACK_STATUS_READ_COMPLETE:
@@ -148,8 +167,10 @@ int main()
     PCERT_CONTEXT certContext = NULL;
 
     if (!CryptQueryObject(CERT_QUERY_OBJECT_FILE,
-        L"V:\\perforce\\SP\\cpp-sp\\Projects\\WinHttpProject\\shib.cert",
-       // L"V:\\perforce\\SP\\cpp-sp\\tests\\data\\remoting\\impl\\trustfile.pem",
+        //L"V:\\perforce\\SP\\cpp-sp\\Projects\\WinHttpProject\\shib.cert",
+       // L"c:\\users\\rdw\\desktop\\iis\\root.pem",
+        L"V:\\perforce\\SP\\cpp-sp\\Projects\\WinHttpProject\\r10.crt",
+        // L"V:\\perforce\\SP\\cpp-sp\\tests\\data\\remoting\\impl\\trustfile.pem",
         CERT_QUERY_CONTENT_FLAG_CERT,
         CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED,
         0,
@@ -257,6 +278,15 @@ int main()
 
     // Send a request.
     if (hRequest)
+        if (!WinHttpSetCredentials(hRequest,
+            WINHTTP_AUTH_TARGET_SERVER,
+            WINHTTP_AUTH_SCHEME_BASIC, L"user", L"Pass",
+            nullptr)) {
+
+            cerr << "Urk " << GetLastError() << endl;
+        }
+
+
         bResults = WinHttpSendRequest(hRequest,
             WINHTTP_NO_ADDITIONAL_HEADERS, 0,
             WINHTTP_NO_REQUEST_DATA, 0,
diff --git a/Projects/WinHttpProject/root.pem b/Projects/WinHttpProject/root.pem
new file mode 100644
index 00000000..b85c8037
--- /dev/null
+++ b/Projects/WinHttpProject/root.pem
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list