95 lines
3.2 KiB
C
95 lines
3.2 KiB
C
|
#ifndef __AWSECX_H__
|
||
|
#define __AWSECX_H__
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#define MINKEYBUFSIZE 1024 // dictated by comments in awsec.h
|
||
|
|
||
|
#define SECTYPE_NONE 0
|
||
|
#define SECTYPE_KEY 1
|
||
|
#define SECTYPE_PASSWORD 2
|
||
|
|
||
|
#define CB_QUERYREPLACE 0
|
||
|
#define CB_INFORMDUPLICATE 1
|
||
|
typedef BOOL (CALLBACK QUERYREPLACEKEYCB)(HWND hWndParent, LPTSTR pKeyOwner,
|
||
|
UINT context) ;
|
||
|
|
||
|
typedef WORD (CALLBACK *RESOLVEGETKEYCB)(LPMAPISESSION pSession,
|
||
|
LPARAM lParamfpx, WORD context, LPBYTE pKey,
|
||
|
LPWORD pcbKey);
|
||
|
|
||
|
typedef struct {
|
||
|
LPBYTE pKey ;
|
||
|
WORD cbKey;
|
||
|
LPTSTR pName;
|
||
|
LPENTRYID pEntryID;
|
||
|
LONG cbEntryID;
|
||
|
} SECKEYREC, *LPSECKEYREC ;
|
||
|
|
||
|
BOOL GetPABStrings(LPMAPISESSION pSession, LPTSTR *ppFName, LPTSTR *ppEAddress);
|
||
|
BOOL GetLoginName(LPMAPISESSION pSession, LPTSTR *ppLoginName);
|
||
|
BOOL GetLoginNameXP (LPTSTR lpszFriendly, LPTSTR lpszEmail, LPTSTR *ppLoginName);
|
||
|
WORD GetCurrentUserAddress(LPMAPISESSION pSession, LPTSTR *ppAddress,
|
||
|
LPWORD pNChars);
|
||
|
|
||
|
BOOL SetNoneSecurityProps(LPMAPIPROP pMsg, LPTSTR pPwdEncrypt, BOOL bDigSig,
|
||
|
DWORD dwhSecurity);
|
||
|
BOOL SetKeySecurityProps(LPMAPIPROP pMsg, LPTSTR pPwdEncrypt, BOOL bDigSig,
|
||
|
DWORD dwhSecurity);
|
||
|
BOOL SetPwdSecurityProps(LPMAPIPROP pMsg, LPTSTR pPwdEncrypt, LPTSTR pPassword,
|
||
|
BOOL bDigSig, DWORD dwhSecurity);
|
||
|
|
||
|
BOOL GetSecurityProps(LPMAPIPROP pMsg, LPTSTR pPwdDecrypt, LPWORD pSecType,
|
||
|
LPBOOL pDigSig, LPTSTR *ppSecPwd, LPTSTR *ppSimplePwd);
|
||
|
|
||
|
BOOL SetResolveGetKeyCB(DWORD hSec, RESOLVEGETKEYCB fpxResolve, LPARAM lParamfpx);
|
||
|
BOOL SetMapiSession(DWORD hSec, LPMAPISESSION pSession);
|
||
|
BOOL SetAddressBook(DWORD hSec, LPADRBOOK lpAB);
|
||
|
|
||
|
WORD ImportPrivateKeysEx(LPSTR userid, LPSOSSESSION lpSess,
|
||
|
ReadCB FAR *readCB, DWORD readHand, LPSTR password);
|
||
|
|
||
|
WORD AddPublicKeysEx(LPSOSSESSION lpSess, LPSECKEYREC pKeys, int iNumKeys,
|
||
|
LPMAPISESSION pSession, QUERYREPLACEKEYCB fpxCB, HWND hWndParent);
|
||
|
|
||
|
WORD DelPublicKeysEx(LPSOSSESSION lpSess, LPSECKEYREC pKeys, int iNumKeys,
|
||
|
LPMAPISESSION pSession);
|
||
|
|
||
|
WORD GetPublicKeyEx(LPSOSSESSION lpSess, LPTSTR pOwner, BYTE FAR *key,
|
||
|
LPWORD pcbKey);
|
||
|
|
||
|
WORD GetUsersPublicKeyEx(LPSOSSESSION lpSess, BYTE FAR *key, LPWORD pcbKey);
|
||
|
|
||
|
// Convenient utilities.
|
||
|
BOOL GetFaxABEntryID(LPADRBOOK pAB, LPENTRYID *ppEntryID, LPULONG pcbEntryID);
|
||
|
|
||
|
BOOL MakeTargetName(LPTSTR pFName, LPTSTR pEAddress, LPTSTR *ppTargetName);
|
||
|
|
||
|
BOOL AddKeyEntryToPAB(LPADRBOOK pAB, LPABCONT pPAB,
|
||
|
LPTSTR pFName, LPTSTR pEAddress, LPBYTE pKey, WORD cbKey,
|
||
|
LPSPropValue *ppRetEntryID);
|
||
|
|
||
|
// Additional return codes.
|
||
|
#define SEC_INVSECHANDLE 20 // security handle has become invalid.
|
||
|
#define SEC_LOSTKEYS 21 // this operation has caused loss of keys.
|
||
|
#define SEC_REGFAILURE 22 // registry failure keeps operation from succeeding.
|
||
|
#define SEC_BUFTOOSMALL 23 // supplied buffer was to small to hold return.
|
||
|
#define SEC_NOMATCHINGOWNER 24 // Could not find key owner matching the target.
|
||
|
#define SEC_DUPLICATEOWNERS 25 // More could not resolve key ownership.
|
||
|
#define SEC_MAPIERROR 26 // Unexpected mapi error returned.
|
||
|
|
||
|
// Programmer error:
|
||
|
#define SEC_NOMAPISESSION 50 // Mapi Session not set, opperation requires one
|
||
|
|
||
|
#define SEC_FAILURE 100
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* extern "C" */
|
||
|
#endif
|
||
|
|
||
|
#endif /* __AWSECX_H__ */
|