HSDC_Sdk.h source
For the documentation for this page, see HSDC_Sdk.h
Copy
#if defined( _MSC_VER ) && _MSC_VER >= 1100
#pragma once
#endif // _MSC_VER >= 1100
#ifndef __HSDCAPIEXPORTS_H__
#define __HSDCAPIEXPORTS_H__
#include "HSDC_Sdk_Errors.h"
#define HSDCAPI __stdcall
#ifdef __cplusplus
extern "C" {
#endif
typedef enum _HSDCVersion : WORD {
HSDCVersionUnknown = 0,
HSDCVersion_1_0 = 0x0100, // 1.0
} HSDCVersion;
HSDCError HSDCAPI HSDCStartup(WORD version, const char* jstr, const char* license);
typedef HSDCError(HSDCAPI *fnHSDCStartup)(WORD version, const char* jstr, const char* license);
HSDCError HSDCAPI HSDCCleanup();
typedef HSDCError(HSDCAPI *fnHSDCCleanup)();
HSDCError HSDCAPI HSDCGetVersion(WORD* pVersion);
typedef HSDCError(HSDCAPI *fnHSDCGetVersion)(WORD* pVersion);
HSDCError HSDCAPI HSDCFreeObject(void* pObj);
typedef HSDCError(HSDCAPI *fnHSDCFreeObject)(void* pObj);
HSDCError HSDCAPI HSDCGetConfiguration(char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetConfiguration)(char** pJstr);
HSDCError HSDCAPI HSDCSetConfiguration(const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCSetConfiguration)(const char* jstr);
HSDCError HSDCAPI HSDCSetLogging(const char* logSetup);
typedef HSDCError(HSDCAPI *fnHSDCSetLogging)(const char* logSetup);
HSDCError HSDCAPI HSDCGetLogging(char** logSettingsOut);
typedef HSDCError(HSDCAPI *fnHSDCGetLogging)(char** logSettingsOut);
HSDCError HSDCAPI HSDCGetStringById(unsigned long id, wchar_t** pStr);
typedef HSDCError(HSDCAPI *fnHSDCGetStringById)(unsigned long id, wchar_t** pStr);
HSDCError HSDCAPI HSDCGetStrings(char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetStrings)(char** pJstr);
typedef enum _HSDCHealth : DWORD {
HSDCHealthUnknown = 0,
HSDCHealthNotInstalled,
HSDCHealthNotRunning,
HSDCHealthOk,
} HSDCHealth;
typedef enum _HSDCHardening : DWORD {
HSDCHardeningUnknown = 0,
HSDCHardeningOff,
HSDCHardeningRelaxed,
HSDCHardeningOn,
} HSDCHardening;
HSDCError HSDCAPI HSDCGetHealth(DWORD* pHealth, DWORD* pHardening, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetHealth)(DWORD* pHealth, DWORD* pHardening, char** pJstr);
HSDCError HSDCAPI HSDCRelaxHardening(const char* jstr, const unsigned char* signature, unsigned int signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCRelaxHardening)(const char* jstr, const unsigned char* signature, unsigned int signatureLength);
HSDCError HSDCAPI HSDCRelaxHardeningWithTicket(const wchar_t* filename);
typedef HSDCError(HSDCAPI *fnHSDCRelaxHardeningWithTicket)(const wchar_t* filename);
typedef enum _HSDCConnectivityStatus : DWORD {
HSDCStatusUnknown = 0,
HSDCStatusOffline,
HSDCStatusOnline,
} HSDCConnectivityStatus;
HSDCError HSDCAPI HSDCGetConnectivityStatus(DWORD* pStatus, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetConnectivityStatus)(DWORD* pStatus, char** pJstr);
HSDCError HSDCAPI HSDCSetConnectivityStatus(DWORD status);
typedef HSDCError(HSDCAPI *fnHSDCSetConnectivityStatus)(DWORD status);
HSDCError HSDCAPI HSDCGatherDiagnosticInfo(const wchar_t* const outputPath = nullptr);
typedef HSDCError(HSDCAPI *fnHSDCGatherDiagnosticInfo)(const wchar_t* const outputPath);
HSDCError HSDCAPI HSDCGetSecurityIdentities(char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetSecurityIdentities)(char** pJstr);
typedef enum _HSDCCertificateTypes : DWORD {
HSDCCertificateMachine = 0,
HSDCCertificateUser,
} HSDCCertificateTypes;
typedef enum _HSDCCertificateStores : DWORD {
HSDCCertificateStoresLocal = 0,
HSDCCertificateStoresAll,
} HSDCCertificateStores;
typedef enum _HSDCCertificateAccesses : DWORD {
HSDCCertificateAccessPublic = 0,
HSDCCertificateAccessPrivate,
} HSDCCertificateAccesses;
HSDCError HSDCAPI HSDCGetCertificates(DWORD type, DWORD store, DWORD access, const wchar_t* identity, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetCertificates)(DWORD type, DWORD store, DWORD access, const wchar_t* identity, char** pJstr);
HSDCError HSDCAPI HSDCRequestCertificate(DWORD type, const char* jstr, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCRequestCertificate)(DWORD type, const char* jstr, char** pJstr);
typedef enum _HSDCInventoryStatus : DWORD {
HSDCInventoryStatusAll = 0,
HSDCInventoryStatusOnline,
} HSDCInventoryStatus;
HSDCError HSDCAPI HSDCGetInventory(DWORD status, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCGetInventory)(DWORD status, char** pJstr);
HSDCError HSDCAPI HSDCHashOpticalDisk(const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCHashOpticalDisk)(const wchar_t* path, char** pJstr);
HSDCError HSDCAPI HSDCAccessCheckIsSystem(const wchar_t* path, BOOLEAN* pSystem);
typedef HSDCError(HSDCAPI *fnHSDCAccessCheckIsSystem)();
typedef enum _HSDCAccessCheckDepth : DWORD {
HSDCAccessCheckDepthRights = 0,
HSDCAccessCheckDepthRightsAndActions,
HSDCAccessCheckDepthFull,
} HSDCAccessCheckDepth;
HSDCError HSDCAPI HSDCAccessCheckVolume(const wchar_t* path, const char* jstr, DWORD level, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCAccessCheckVolume)(const wchar_t* path, const char* jstr, DWORD level, char** pJstr);
// Possible enhancements:
// add secondary accesses in the identifier node when present
// add file types under content
HSDCError HSDCAPI HSDCAccessCheck(const wchar_t* device, const char* jstr, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCAccessCheck)(const wchar_t* device, const char* jstr, char** pJstr);
typedef void (HSDCAPI * HSDC_LOG_PROCESSOR_CALLBACK)(DWORD cookie, const char* jstr);
HSDCError HSDCAPI HSDCRegisterLogProcessor(DWORD* pCookie, HSDC_LOG_PROCESSOR_CALLBACK cb);
typedef HSDCError(HSDCAPI *fnHSDCRegisterLogProcessor)(DWORD* pCookie, HSDC_LOG_PROCESSOR_CALLBACK cb);
HSDCError HSDCAPI HSDCUnregisterLogProcessor(DWORD cookie);
typedef HSDCError(HSDCAPI *fnHSDCUnregisterLogProcessor)(DWORD cookie);
typedef void (HSDCAPI * HSDC_SHADOW_PROCESSOR_CALLBACK)(DWORD cookie, const char* jstr, const wchar_t* filename);
HSDCError HSDCAPI HSDCRegisterShadowProcessor(DWORD* pCookie, HSDC_SHADOW_PROCESSOR_CALLBACK cb);
typedef HSDCError(HSDCAPI *fnHSDCRegisterShadowProcessor)(DWORD* pCookie, HSDC_SHADOW_PROCESSOR_CALLBACK cb);
HSDCError HSDCAPI HSDCUnregisterShadowProcessor(DWORD cookie);
typedef HSDCError(HSDCAPI *fnHSDCUnregisterShadowProcessor)(DWORD cookie);
typedef HSDCError(HSDCAPI * HSDC_SHADOW_STREAM_CALLBACK)(unsigned long long offset, const unsigned char* buffer, unsigned int length, void* parameters);
HSDCError HSDCAPI HSDCExtractShadowStream(const wchar_t* filename, char** pJstr, HSDC_SHADOW_STREAM_CALLBACK cb, void* parameters);
typedef HSDCError(HSDCAPI *fnHSDCExtractShadowStream)(const wchar_t* filename, char** pJstr, HSDC_SHADOW_STREAM_CALLBACK cb, void* parameters);
HSDCError HSDCAPI HSDCFetchLogs(BOOLEAN dismount, DWORD retry);
typedef HSDCError(HSDCAPI *fnHSDCFetchLogs)(BOOLEAN dismount, DWORD retry);
typedef void (HSDCAPI * HSDC_NOTIFICATION_PROCESSOR_CALLBACK)(DWORD cookie, DWORD sessionId, const char* jstr);
HSDCError HSDCAPI HSDCRegisterNotificationProcessor(DWORD* pCookie, DWORD sessionId, const char* jstr, HSDC_NOTIFICATION_PROCESSOR_CALLBACK cb);
typedef HSDCError(HSDCAPI *fnHSDCRegisterNotificationProcessor)(DWORD* pCookie, DWORD sessionId, const char* jstr, HSDC_NOTIFICATION_PROCESSOR_CALLBACK cb);
HSDCError HSDCAPI HSDCUnregisterNotificationProcessor(DWORD cookie);
typedef HSDCError(HSDCAPI *fnHSDCUnregisterNotificationProcessor)(DWORD cookie);
HSDCError HSDCAPI HSDCPolicyImport(const char* jstr, const unsigned char* signature, unsigned int signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCPolicyImport)(const char* jstr, const unsigned char* signature, unsigned int signatureLength);
HSDCError HSDCAPI HSDCPolicyImportFile(const wchar_t* filename);
typedef HSDCError(HSDCAPI *fnHSDCPolicyImportFile)(const wchar_t* filename);
HSDCError HSDCAPI HSDCPolicyRefresh();
typedef HSDCError(HSDCAPI *fnHSDCPolicyRefresh)();
HSDCError HSDCAPI HSDCPolicyGetOption(DWORD id, wchar_t** value);
typedef HSDCError(HSDCAPI *fnHSDCPolicyGetOption)(DWORD id, wchar_t** value);
HSDCError HSDCAPI HSDCTempOfflinePolicyRequest(const char* jstr, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCTempOfflinePolicyRequest)(const char* jstr, char** pJstr);
HSDCError HSDCAPI HSDCTempOfflinePolicyAnswer(const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCTempOfflinePolicyAnswer)(const char* jstr);
typedef enum _HSDCPolicyFormat : DWORD {
HSDCPolicyFormatOffline = 0,
HSDCPolicyFormatCch,
HSDCPolicyFormatSkr,
} HSDCPolicyFormat;
HSDCError HSDCAPI HSDCDumpPolicies(DWORD format, const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCDumpPolicies)(DWORD format, const wchar_t* path, char** pJstr);
const wchar_t* const HSDCAPI HSDCErrorGetName(HSDCError error);
typedef const wchar_t* const(HSDCAPI *fnHSDCErrorGetName)(HSDCError error);
HSDCError HSDCAPI HSDCEncryptedVolumeGetStatus(const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeGetStatus)(const wchar_t* path, char** pJstr);
HSDCError HSDCAPI HSDCEncryptedVolumeEncrypt(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeEncrypt)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCEncryptedVolumeUpgrade(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeUpgrade)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCEncryptedVolumeChangePassword(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeChangePassword)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCEncryptedVolumeDecrypt(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeDecrypt)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCEncryptedVolumeImport(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeImport)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCEncryptedVolumeExport(const wchar_t* path, const char* jstr, const wchar_t* folder);
typedef HSDCError(HSDCAPI *fnHSDCEncryptedVolumeExport)(const wchar_t* path, const char* jstr, const wchar_t* folder);
HSDCError HSDCAPI HSDCPasswordRecoveryRequest(const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCPasswordRecoveryRequest)(const wchar_t* path, char** pJstr);
HSDCError HSDCAPI HSDCPasswordRecoveryAnswer(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCPasswordRecoveryAnswer)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCOpticalRecorderGetLetters(char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderGetLetters)(char** pJstr);
HSDCError HSDCAPI HSDCOpticalRecorderGetDriveInformation(const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderGetDriveInformation)(const wchar_t* path, char** pJstr);
HSDCError HSDCAPI HSDCOpticalRecorderGetDiskInformation(const wchar_t* path, char** pJstr);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderGetDiskInformation)(const wchar_t* path, char** pJstr);
HSDCError HSDCAPI HSDCOpticalRecorderBurn(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderBurn)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCOpticalRecorderErase(const wchar_t* path, const char* jstr);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderErase)(const wchar_t* path, const char* jstr);
HSDCError HSDCAPI HSDCOpticalRecorderCancel(const wchar_t* path);
typedef HSDCError(HSDCAPI *fnHSDCOpticalRecorderCancel)(const wchar_t* path);
HSDCError HSDCAPI HSDCIsBitLockerCapable(char** pJstr);
typedef HSDCError(HSDCAPI* fnHSDCIsBitLockerCapable)(char** pJstr);
HSDCError HSDCAPI HSDCEnableBitLocker(const wchar_t* pin, const char* unused);
typedef HSDCError(HSDCAPI* fnHSDCEnableBitLocker)(const wchar_t* pin, const char* unused);
//TODO
HSDCError HSDCAPI HSDCNewKeyImport(const unsigned char* newKey, unsigned int newKeyLen, const unsigned char* signature, unsigned int signatureLength);
typedef HSDCError(HSDCAPI* fnHSDCNewKeyImport)(const unsigned char* newKey, unsigned int newKeyLen, const unsigned char* signature, unsigned int signatureLength);
// Hash
HSDCError HSDCAPI HSDCCryptoHashBuffer(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
unsigned char* hash, unsigned int* hashLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoHashBuffer)(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
unsigned char* hash, unsigned int* hashLength);
// NOTE: The XML documentation for Visual Studio does not play nicely with Doxygen. Code examples
// that have quotes and angle brackets (STL!) require escaping making it difficult to read. On
// top of that if you escape the " then Doxygen doesn't replace them in the docs. If you do not
// escape them then Visual Studio will not display the tooltips. To get it all working you should
// just break the example code out into a separate comment like below. The "\fn" tag is a
// structural identifier which tells Doxygen to append this new comment to anything it already
// has for the matching item.
HSDCError HSDCAPI HSDCCryptoHashFile(
const wchar_t* algorithm,
const wchar_t* path,
unsigned char* hash, unsigned int* hashLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoHashFile)(
const wchar_t* algorithm,
const wchar_t* path,
unsigned char* hash, unsigned int* hashLength);
// Asymmetric
HSDCError HSDCAPI HSDCCryptoGenerateKeyPair(
const wchar_t* algorithm,
unsigned char* privateKey, unsigned int* privateKeyLength,
unsigned char* publicKey, unsigned int* publicKeyLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoGenerateKeyPair)(
const wchar_t* algorithm,
unsigned char* privateKey, unsigned int* privateKeyLength,
unsigned char* publicKey, unsigned int* publicKeyLength);
// Asymmetric Signature
HSDCError HSDCAPI HSDCCryptoSignBuffer(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* signature, unsigned int* signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoSignBuffer)(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* signature, unsigned int* signatureLength);
HSDCError HSDCAPI HSDCCryptoSignFile(
const wchar_t* algorithm,
const wchar_t* path,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* signature, unsigned int* signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoSignFile)(
const wchar_t* algorithm,
const wchar_t* path,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* signature, unsigned int* signatureLength);
HSDCError HSDCAPI HSDCCryptoCheckBufferSignature(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
const unsigned char* publicKey, unsigned int publicKeyLength,
const unsigned char* signature, unsigned int signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoCheckBufferSignature)(
const wchar_t* algorithm,
const unsigned char* buffer, unsigned int bufferLength,
const unsigned char* publicKey, unsigned int publicKeyLength,
const unsigned char* signature, unsigned int signatureLength);
HSDCError HSDCAPI HSDCCryptoCheckFileSignature(
const wchar_t* algorithm,
const wchar_t* path,
const unsigned char* publicKey, unsigned int publicKeyLength,
const unsigned char* signature, unsigned int signatureLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoCheckFileSignature)(
const wchar_t* algorithm,
const wchar_t* path,
const unsigned char* publicKey, unsigned int publicKeyLength,
const unsigned char* signature, unsigned int signatureLength);
// Asymmetric Encryption (RSA only for key exchange in MEDIUM-ENCRYPTED logs)
HSDCError HSDCAPI HSDCCryptoEncryptBuffer(
const wchar_t* algorithm,
const unsigned char* plain, unsigned int plainLength,
const unsigned char* publicKey, unsigned int publicKeyLength,
unsigned char* cipher, unsigned int* cipherLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoEncryptBuffer)(
const wchar_t* algorithm,
const unsigned char* plain, unsigned int plainLength,
const unsigned char* publicKey, unsigned int publicKeyLength,
unsigned char* cipher, unsigned int* cipherLength);
HSDCError HSDCAPI HSDCCryptoDecryptBuffer(
const wchar_t* algorithm,
const unsigned char* cipher, unsigned int cipherLength,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* plain, unsigned int* plainLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoDecryptBuffer)(
const wchar_t* algorithm,
const unsigned char* cipher, unsigned int cipherLength,
const unsigned char* privateKey, unsigned int privateKeyLength,
unsigned char* plain, unsigned int* plainLength);
// TODO
// add similar methods with certificates (store(&SID)/thumbpints)
// Symmetric Encryption
HSDCError HSDCAPI HSDCCryptoSymEncryptBuffer(
const wchar_t* algorithm,
const unsigned char* plain, unsigned int plainLength,
const unsigned char* symKey, unsigned int symKeyLength,
const unsigned char* iV, unsigned int iVLength,
unsigned char* cipher, unsigned int* cipherLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoSymEncryptBuffer)(
const wchar_t* algorithm,
const unsigned char* plain, unsigned int plainLength,
const unsigned char* symKey, unsigned int symKeyLength,
const unsigned char* iV, unsigned int iVLength,
unsigned char* cipher, unsigned int* cipherLength);
HSDCError HSDCAPI HSDCCryptoSymDecryptBuffer(
const wchar_t* algorithm,
const unsigned char* cipher, unsigned int cipherLength,
const unsigned char* symKey, unsigned int symKeyLength,
const unsigned char* iV, unsigned int iVLength,
unsigned char* plain, unsigned int* plainLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoSymDecryptBuffer)(
const wchar_t* algorithm,
const unsigned char* cipher, unsigned int cipherLength,
const unsigned char* symKey, unsigned int symKeyLength,
const unsigned char* iV, unsigned int iVLength,
unsigned char* plain, unsigned int* plainLength);
// Base32 pretty encoding
HSDCError HSDCAPI HSDCCryptoBase32Encode(
const unsigned char* raw, unsigned int rawLength,
unsigned char* encoded, unsigned int* encodedLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoBase32Encode)(
const unsigned char* raw, unsigned int rawLength,
unsigned char* encoded, unsigned int* encodedLength);
HSDCError HSDCAPI HSDCCryptoBase32Decode(
const unsigned char* encoded, unsigned int encodedLength,
unsigned char* raw, unsigned int* rawLength);
typedef HSDCError(HSDCAPI *fnHSDCCryptoBase32Decode)(
const unsigned char* encoded, unsigned int encodedLength,
unsigned char* raw, unsigned int* rawLength);
void HSDCAPI CommandA(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow);
void HSDCAPI CommandW(HWND hwnd, HINSTANCE hinst, LPWSTR lpszCmdLine, int nCmdShow);
#ifdef UNICODE
#define Command CommandW
#else
#define Command CommandA
#endif // !UNICODE
#ifdef __cplusplus
};
#endif
#endif