//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1995. // // File: specmap.h // // Contents: // // Classes: // // Functions: // // History: 09-23-97 jbanes Ported over SGC stuff from NT 4 tree. // //---------------------------------------------------------------------------- struct _SPContext; typedef struct csel { DWORD fProtocol; DWORD fDefault; PSTR szName; ALG_ID aiCipher; DWORD dwBlockSize; // bytes DWORD dwStrength; // key strength in bits DWORD cbKey; // required key material DWORD cbSecret; // bytes of secret key material DWORD dwFlags; // See flags field } CipherInfo, *PCipherInfo; #define CF_EXPORT 0x00000001 // This cipher is allowed for export use #define CF_DOMESTIC 0x00000002 // This cipher is for domestic use only #define CF_SGC 0x00000004 // This cipher is allowed with Server Gated Crypto #define CF_FINANCE 0x00000008 // This cipher is allowed with SELECTIVE CRYPTO #define CF_FASTSGC 0x00000010 // This indicates that the SGC type is fast #define CF_RENEWED 0x00000020 typedef struct hsel { DWORD fProtocol; DWORD fDefault; PSTR szName; ALG_ID aiHash; DWORD cbCheckSum; // bytes } HashInfo, *PHashInfo; typedef struct sigsel { DWORD fProtocol; DWORD fDefault; SigSpec Spec; PSTR szName; ALG_ID aiHash; ALG_ID aiSig; } SigInfo, *PSigInfo; typedef struct kexch { ALG_ID aiExch; DWORD fProtocol; DWORD fDefault; ExchSpec Spec; PSTR szName; KeyExchangeSystem * System; } KeyExchangeInfo, *PKeyExchangeInfo; typedef struct certsel { DWORD fProtocol; DWORD fDefault; CertSpec Spec; PSTR szName; } CertSysInfo, *PCertSysInfo; PCipherInfo GetCipherInfo(ALG_ID aiCipher, DWORD dwStrength); PHashInfo GetHashInfo(ALG_ID aiHash); PKeyExchangeInfo GetKeyExchangeInfo(ExchSpec Spec); PKeyExchangeInfo GetKeyExchangeInfoByAlg(ALG_ID aiExch); PCertSysInfo GetCertSysInfo(CertSpec Spec); PSigInfo GetSigInfo(SigSpec Spec); KeyExchangeSystem * KeyExchangeFromSpec(ExchSpec Spec, DWORD fProtocol); BOOL GetBaseCipherSizes(DWORD *dwMin, DWORD *dwMax); void GetDisplayCipherSizes( PSPCredentialGroup pCredGroup, DWORD *dwMin, DWORD *dwMax); BOOL IsCipherAllowed( SPContext * pContext, PCipherInfo pCipher, DWORD dwProtocol, DWORD dwFlags); BOOL IsCipherSuiteAllowed( PSPContext pContext, PCipherInfo pCipher, DWORD dwProtocol, DWORD dwFlags, DWORD dwSuiteFlags); BOOL IsHashAllowed( SPContext * pContext, PHashInfo pHash, DWORD dwProtocol); BOOL IsExchAllowed( SPContext * pContext, PKeyExchangeInfo pExch, DWORD dwProtocol); BOOL IsAlgAllowed( PSPCredentialGroup pCred, ALG_ID aiAlg); BOOL BuildAlgList(PSPCredentialGroup pCred, ALG_ID *aalgRequestedAlgs, DWORD cRequestedAlgs); BOOL IsAlgSupportedCapi( DWORD dwProtocol, UNICipherMap * pCipherMap, PROV_ENUMALGS_EX * pCapiAlgs, DWORD cCapiAlgs); extern CipherInfo g_AvailableCiphers[]; extern DWORD g_cAvailableCiphers; extern HashInfo g_AvailableHashes[]; extern DWORD g_cAvailableHashes; extern CertSysInfo g_AvailableCerts[]; extern DWORD g_cAvailableCerts; extern SigInfo g_AvailableSigs[]; extern DWORD g_cAvailableSigs; extern KeyExchangeInfo g_AvailableExch[]; extern DWORD g_cAvailableExch;