libwinpr-sspi: fix build on Linux
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Thu, 3 Jan 2013 16:35:08 +0000 (11:35 -0500)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Thu, 3 Jan 2013 16:35:08 +0000 (11:35 -0500)
winpr/include/winpr/crypto.h
winpr/libwinpr/crypto/cert.c
winpr/libwinpr/sspi/test/TestSchannel.c

index 6210a54..334b6c6 100644 (file)
@@ -241,6 +241,7 @@ typedef struct _CERT_INFO
 
 typedef void *HCERTSTORE;
 typedef ULONG_PTR HCRYPTPROV;
+typedef ULONG_PTR HCRYPTPROV_LEGACY;
 
 typedef struct _CERT_CONTEXT
 {
@@ -252,6 +253,101 @@ typedef struct _CERT_CONTEXT
 } CERT_CONTEXT, *PCERT_CONTEXT;
 typedef const CERT_CONTEXT *PCCERT_CONTEXT;
 
+#define CERT_ENCODING_TYPE_MASK                        0x0000FFFF
+#define CMSG_ENCODING_TYPE_MASK                        0xFFFF0000
+#define GET_CERT_ENCODING_TYPE(x)              (x & CERT_ENCODING_TYPE_MASK)
+#define GET_CMSG_ENCODING_TYPE(x)              (x & CMSG_ENCODING_TYPE_MASK)
+
+#define CRYPT_ASN_ENCODING                     0x00000001
+#define CRYPT_NDR_ENCODING                     0x00000002
+#define X509_ASN_ENCODING                      0x00000001
+#define X509_NDR_ENCODING                      0x00000002
+#define PKCS_7_ASN_ENCODING                    0x00010000
+#define PKCS_7_NDR_ENCODING                    0x00020000
+
+#define CERT_COMPARE_MASK                      0xFFFF
+#define CERT_COMPARE_SHIFT                     16
+#define CERT_COMPARE_ANY                       0
+#define CERT_COMPARE_SHA1_HASH                 1
+#define CERT_COMPARE_NAME                      2
+#define CERT_COMPARE_ATTR                      3
+#define CERT_COMPARE_MD5_HASH                  4
+#define CERT_COMPARE_PROPERTY                  5
+#define CERT_COMPARE_PUBLIC_KEY                        6
+#define CERT_COMPARE_HASH                      CERT_COMPARE_SHA1_HASH
+#define CERT_COMPARE_NAME_STR_A                        7
+#define CERT_COMPARE_NAME_STR_W                        8
+#define CERT_COMPARE_KEY_SPEC                  9
+#define CERT_COMPARE_ENHKEY_USAGE              10
+#define CERT_COMPARE_CTL_USAGE                 CERT_COMPARE_ENHKEY_USAGE
+#define CERT_COMPARE_SUBJECT_CERT              11
+#define CERT_COMPARE_ISSUER_OF                 12
+#define CERT_COMPARE_EXISTING                  13
+#define CERT_COMPARE_SIGNATURE_HASH            14
+#define CERT_COMPARE_KEY_IDENTIFIER            15
+#define CERT_COMPARE_CERT_ID                   16
+#define CERT_COMPARE_CROSS_CERT_DIST_POINTS    17
+#define CERT_COMPARE_PUBKEY_MD5_HASH           18
+#define CERT_COMPARE_SUBJECT_INFO_ACCESS       19
+#define CERT_COMPARE_HASH_STR                  20
+#define CERT_COMPARE_HAS_PRIVATE_KEY           21
+
+#define CERT_FIND_ANY                          (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SHA1_HASH                    (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_MD5_HASH                     (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SIGNATURE_HASH               (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_KEY_IDENTIFIER               (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
+#define CERT_FIND_HASH                         CERT_FIND_SHA1_HASH
+#define CERT_FIND_PROPERTY                     (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_PUBLIC_KEY                   (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SUBJECT_NAME                 (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_ATTR                 (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_ISSUER_NAME                  (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_ATTR                  (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_SUBJECT_STR_A                        (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_STR_W                        (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
+#define CERT_FIND_SUBJECT_STR                  CERT_FIND_SUBJECT_STR_W
+#define CERT_FIND_ISSUER_STR_A                 (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_STR_W                 (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
+#define CERT_FIND_ISSUER_STR                   CERT_FIND_ISSUER_STR_W
+#define CERT_FIND_KEY_SPEC                     (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
+#define CERT_FIND_ENHKEY_USAGE                 (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CTL_USAGE                    CERT_FIND_ENHKEY_USAGE
+#define CERT_FIND_SUBJECT_CERT                 (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
+#define CERT_FIND_ISSUER_OF                    (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
+#define CERT_FIND_EXISTING                     (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CERT_ID                      (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
+#define CERT_FIND_CROSS_CERT_DIST_POINTS       (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
+#define CERT_FIND_PUBKEY_MD5_HASH              (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
+#define CERT_FIND_SUBJECT_INFO_ACCESS          (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)
+#define CERT_FIND_HASH_STR                     (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)
+#define CERT_FIND_HAS_PRIVATE_KEY              (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)
+
+#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG   0x1
+#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG   0x2
+#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG  0x4
+#define CERT_FIND_NO_ENHKEY_USAGE_FLAG         0x8
+#define CERT_FIND_OR_ENHKEY_USAGE_FLAG         0x10
+#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG      0x20
+#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG      CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG
+#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG      CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
+#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG     CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
+#define CERT_FIND_NO_CTL_USAGE_FLAG            CERT_FIND_NO_ENHKEY_USAGE_FLAG
+#define CERT_FIND_OR_CTL_USAGE_FLAG            CERT_FIND_OR_ENHKEY_USAGE_FLAG
+#define CERT_FIND_VALID_CTL_USAGE_FLAG         CERT_FIND_VALID_ENHKEY_USAGE_FLAG
+
+WINPR_API HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, LPCWSTR szSubsystemProtocol);
+WINPR_API HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, LPCSTR szSubsystemProtocol);
+
+#ifdef UNICODE
+#define CertOpenSystemStore    CertOpenSystemStoreW
+#else
+#define CertOpenSystemStore    CertOpenSystemStoreA
+#endif
+
+WINPR_API PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType,
+               DWORD dwFindFlags, DWORD dwFindType, const void* pvFindPara, PCCERT_CONTEXT pPrevCertContext);
+
 #endif
 
 #endif /* WINPR_CRYPTO_H */
index 56f38f5..bc989a6 100644 (file)
 
 #ifndef _WIN32
 
+HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, LPCWSTR szSubsystemProtocol)
+{
+       return (HCERTSTORE) 1;
+}
 
+HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, LPCSTR szSubsystemProtocol)
+{
+       return CertOpenSystemStoreW(hProv, NULL);
+}
+
+PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType,
+               DWORD dwFindFlags, DWORD dwFindType, const void* pvFindPara, PCCERT_CONTEXT pPrevCertContext)
+{
+       return (PCCERT_CONTEXT) 1;
+}
 
 #endif
 
index 84589b1..477f055 100644 (file)
@@ -6,6 +6,7 @@
 #include <winpr/print.h>
 #include <winpr/synch.h>
 #include <winpr/thread.h>
+#include <winpr/crypto.h>
 #include <winpr/schannel.h>
 
 HANDLE g_ClientReadPipe = NULL;