Blame winpr/libwinpr/crypto/cert.c

Packit 1fb8d4
/**
Packit 1fb8d4
 * WinPR: Windows Portable Runtime
Packit 1fb8d4
 * Cryptography API (CryptoAPI)
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012-2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifdef HAVE_CONFIG_H
Packit 1fb8d4
#include "config.h"
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/crypto.h>
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 * CertOpenStore
Packit 1fb8d4
 * CertCloseStore
Packit 1fb8d4
 * CertControlStore
Packit 1fb8d4
 * CertDuplicateStore
Packit 1fb8d4
 * CertSaveStore
Packit 1fb8d4
 * CertRegisterPhysicalStore
Packit 1fb8d4
 * CertRegisterSystemStore
Packit 1fb8d4
 * CertAddStoreToCollection
Packit 1fb8d4
 * CertRemoveStoreFromCollection
Packit 1fb8d4
 * CertOpenSystemStoreA
Packit 1fb8d4
 * CertOpenSystemStoreW
Packit 1fb8d4
 * CertEnumPhysicalStore
Packit 1fb8d4
 * CertEnumSystemStore
Packit 1fb8d4
 * CertEnumSystemStoreLocation
Packit 1fb8d4
 * CertSetStoreProperty
Packit 1fb8d4
 * CertUnregisterPhysicalStore
Packit 1fb8d4
 * CertUnregisterSystemStore
Packit 1fb8d4
 *
Packit 1fb8d4
 * CertAddCertificateContextToStore
Packit 1fb8d4
 * CertAddCertificateLinkToStore
Packit 1fb8d4
 * CertAddCRLContextToStore
Packit 1fb8d4
 * CertAddCRLLinkToStore
Packit 1fb8d4
 * CertAddCTLContextToStore
Packit 1fb8d4
 * CertAddCTLLinkToStore
Packit 1fb8d4
 * CertAddEncodedCertificateToStore
Packit 1fb8d4
 * CertAddEncodedCertificateToSystemStoreA
Packit 1fb8d4
 * CertAddEncodedCertificateToSystemStoreW
Packit 1fb8d4
 * CertAddEncodedCRLToStore
Packit 1fb8d4
 * CertAddEncodedCTLToStore
Packit 1fb8d4
 * CertAddSerializedElementToStore
Packit 1fb8d4
 * CertDeleteCertificateFromStore
Packit 1fb8d4
 * CertDeleteCRLFromStore
Packit 1fb8d4
 * CertDeleteCTLFromStore
Packit 1fb8d4
 * CertGetCRLFromStore
Packit 1fb8d4
 * CertEnumCertificatesInStore
Packit 1fb8d4
 * CertEnumCRLsInStore
Packit 1fb8d4
 * CertEnumCTLsInStore
Packit 1fb8d4
 * CertFindCertificateInStore
Packit 1fb8d4
 * CertFindChainInStore
Packit 1fb8d4
 * CertFindCRLInStore
Packit 1fb8d4
 * CertFindCTLInStore
Packit 1fb8d4
 * CertGetIssuerCertificateFromStore
Packit 1fb8d4
 * CertGetStoreProperty
Packit 1fb8d4
 * CertGetSubjectCertificateFromStore
Packit 1fb8d4
 * CertSerializeCertificateStoreElement
Packit 1fb8d4
 * CertSerializeCRLStoreElement
Packit 1fb8d4
 * CertSerializeCTLStoreElement
Packit 1fb8d4
 *
Packit 1fb8d4
 * CertAddEnhancedKeyUsageIdentifier
Packit 1fb8d4
 * CertAddRefServerOcspResponse
Packit 1fb8d4
 * CertAddRefServerOcspResponseContext
Packit 1fb8d4
 * CertAlgIdToOID
Packit 1fb8d4
 * CertCloseServerOcspResponse
Packit 1fb8d4
 * CertCompareCertificate
Packit 1fb8d4
 * CertCompareCertificateName
Packit 1fb8d4
 * CertCompareIntegerBlob
Packit 1fb8d4
 * CertComparePublicKeyInfo
Packit 1fb8d4
 * CertCreateCertificateChainEngine
Packit 1fb8d4
 * CertCreateCertificateContext
Packit 1fb8d4
 * CertCreateContext
Packit 1fb8d4
 * CertCreateCRLContext
Packit 1fb8d4
 * CertCreateCTLContext
Packit 1fb8d4
 * CertCreateCTLEntryFromCertificateContextProperties
Packit 1fb8d4
 * CertCreateSelfSignCertificate
Packit 1fb8d4
 * CertDuplicateCertificateChain
Packit 1fb8d4
 * CertDuplicateCertificateContext
Packit 1fb8d4
 * CertDuplicateCRLContext
Packit 1fb8d4
 * CertDuplicateCTLContext
Packit 1fb8d4
 * CertEnumCertificateContextProperties
Packit 1fb8d4
 * CertEnumCRLContextProperties
Packit 1fb8d4
 * CertEnumCTLContextProperties
Packit 1fb8d4
 * CertEnumSubjectInSortedCTL
Packit 1fb8d4
 * CertFindAttribute
Packit 1fb8d4
 * CertFindCertificateInCRL
Packit 1fb8d4
 * CertFindExtension
Packit 1fb8d4
 * CertFindRDNAttr
Packit 1fb8d4
 * CertFindSubjectInCTL
Packit 1fb8d4
 * CertFindSubjectInSortedCTL
Packit 1fb8d4
 * CertFreeCertificateChain
Packit 1fb8d4
 * CertFreeCertificateChainEngine
Packit 1fb8d4
 * CertFreeCertificateChainList
Packit 1fb8d4
 * CertFreeCertificateContext
Packit 1fb8d4
 * CertFreeCRLContext
Packit 1fb8d4
 * CertFreeCTLContext
Packit 1fb8d4
 * CertFreeServerOcspResponseContext
Packit 1fb8d4
 * CertGetCertificateChain
Packit 1fb8d4
 * CertGetCertificateContextProperty
Packit 1fb8d4
 * CertGetCRLContextProperty
Packit 1fb8d4
 * CertGetCTLContextProperty
Packit 1fb8d4
 * CertGetEnhancedKeyUsage
Packit 1fb8d4
 * CertGetIntendedKeyUsage
Packit 1fb8d4
 * CertGetNameStringA
Packit 1fb8d4
 * CertGetNameStringW
Packit 1fb8d4
 * CertGetPublicKeyLength
Packit 1fb8d4
 * CertGetServerOcspResponseContext
Packit 1fb8d4
 * CertGetValidUsages
Packit 1fb8d4
 * CertIsRDNAttrsInCertificateName
Packit 1fb8d4
 * CertIsStrongHashToSign
Packit 1fb8d4
 * CertIsValidCRLForCertificate
Packit 1fb8d4
 * CertNameToStrA
Packit 1fb8d4
 * CertNameToStrW
Packit 1fb8d4
 * CertOIDToAlgId
Packit 1fb8d4
 * CertOpenServerOcspResponse
Packit 1fb8d4
 * CertRDNValueToStrA
Packit 1fb8d4
 * CertRDNValueToStrW
Packit 1fb8d4
 * CertRemoveEnhancedKeyUsageIdentifier
Packit 1fb8d4
 * CertResyncCertificateChainEngine
Packit 1fb8d4
 * CertRetrieveLogoOrBiometricInfo
Packit 1fb8d4
 * CertSelectCertificateChains
Packit 1fb8d4
 * CertSetCertificateContextPropertiesFromCTLEntry
Packit 1fb8d4
 * CertSetCertificateContextProperty
Packit 1fb8d4
 * CertSetCRLContextProperty
Packit 1fb8d4
 * CertSetCTLContextProperty
Packit 1fb8d4
 * CertSetEnhancedKeyUsage
Packit 1fb8d4
 * CertStrToNameA
Packit 1fb8d4
 * CertStrToNameW
Packit 1fb8d4
 * CertVerifyCertificateChainPolicy
Packit 1fb8d4
 * CertVerifyCRLRevocation
Packit 1fb8d4
 * CertVerifyCRLTimeValidity
Packit 1fb8d4
 * CertVerifyCTLUsage
Packit 1fb8d4
 * CertVerifyRevocation
Packit 1fb8d4
 * CertVerifySubjectCertificateContext
Packit 1fb8d4
 * CertVerifyTimeValidity
Packit 1fb8d4
 * CertVerifyValidityNesting
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/crt.h>
Packit 1fb8d4
Packit 1fb8d4
#ifndef _WIN32
Packit 1fb8d4
Packit 1fb8d4
#include "crypto.h"
Packit 1fb8d4
Packit 1fb8d4
HCERTSTORE CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType,
Packit Service 5a9772
                         HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void* pvPara)
Packit 1fb8d4
{
Packit 1fb8d4
	WINPR_CERTSTORE* certstore;
Packit 1fb8d4
Packit Service 5a9772
	certstore = (WINPR_CERTSTORE*)calloc(1, sizeof(WINPR_CERTSTORE));
Packit 1fb8d4
Packit 1fb8d4
	if (certstore)
Packit 1fb8d4
	{
Packit 1fb8d4
		certstore->lpszStoreProvider = lpszStoreProvider;
Packit 1fb8d4
		certstore->dwMsgAndCertEncodingType = dwMsgAndCertEncodingType;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit Service 5a9772
	return (HCERTSTORE)certstore;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, LPCWSTR szSubsystemProtocol)
Packit 1fb8d4
{
Packit 1fb8d4
	HCERTSTORE hCertStore;
Packit 1fb8d4
Packit 1fb8d4
	hCertStore = CertOpenStore(CERT_STORE_PROV_FILE, X509_ASN_ENCODING, hProv, 0, NULL);
Packit 1fb8d4
Packit 1fb8d4
	return hCertStore;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, LPCSTR szSubsystemProtocol)
Packit 1fb8d4
{
Packit 1fb8d4
	return CertOpenSystemStoreW(hProv, NULL);
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
BOOL CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
Packit 1fb8d4
{
Packit 1fb8d4
	WINPR_CERTSTORE* certstore;
Packit 1fb8d4
Packit Service 5a9772
	certstore = (WINPR_CERTSTORE*)hCertStore;
Packit 1fb8d4
Packit 1fb8d4
	free(certstore);
Packit 1fb8d4
Packit 1fb8d4
	return TRUE;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType,
Packit Service 5a9772
                                          DWORD dwFindFlags, DWORD dwFindType,
Packit Service 5a9772
                                          const void* pvFindPara, PCCERT_CONTEXT pPrevCertContext)
Packit 1fb8d4
{
Packit Service 5a9772
	return (PCCERT_CONTEXT)1;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
PCCERT_CONTEXT CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrevCertContext)
Packit 1fb8d4
{
Packit Service 5a9772
	return (PCCERT_CONTEXT)NULL;
Packit 1fb8d4
}
Packit 1fb8d4
Packit Service 5a9772
DWORD CertGetNameStringW(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void* pvTypePara,
Packit Service 5a9772
                         LPWSTR pszNameString, DWORD cchNameString)
Packit 1fb8d4
{
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}
Packit 1fb8d4
Packit Service 5a9772
DWORD CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void* pvTypePara,
Packit Service 5a9772
                         LPSTR pszNameString, DWORD cchNameString)
Packit 1fb8d4
{
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#endif