📄 cpgpdiskdiskimp.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPdiskDiskImp.h,v 1.10 2002/08/06 20:09:36 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CPGPdiskDiskImp_h // [
#define Included_CPGPdiskDiskImp_h
#include "pgpPubTypes.h"
#include "CFile.h"
#include "CImp.h"
#include "CString.h"
#include "CPGPdiskDisk.h"
#include "CPGPdiskHeaders.h"
_PGP_BEGIN
// Types
class CCipherContext;
// Class CPGPdiskDiskImp
class CPGPdiskDiskImp : public CImp
{
NOT_COPYABLE(CPGPdiskDiskImp)
friend class CPGPdiskDisk;
protected:
enum PGPdiskState {kDiskStateNone, kDiskStateMounted, kDiskStateOpened};
enum {kBlocksPerWrite = 256};
protected:
CPGPdiskDiskImp();
PGPBoolean operator==(const CPGPdiskDisk& disk) const;
const CPGPdiskContext * Context() const {return mPContext;}
PGPBoolean IsMounted() const
{
return (mDiskState & kDiskStateMounted);
}
PGPBoolean IsUnmounted() const
{
return !IsMounted();
}
PGPBoolean IsOpened() const
{
return (mDiskState & kDiskStateOpened);
}
PGPBoolean IsReadOnly() const
{
return mIsReadOnly;
}
PGPBoolean IsLockedForFormat() const
{
return mIsLockedForFormat;
}
PGPBoolean IsLockedForIO() const
{
return mIsLockedForIO;
}
const char * Path() const
{
return mPath;
}
const char * Root() const
{
return mRoot;
}
const char * DeviceName() const
{
return mDeviceName;
}
virtual PGPBoolean ComparePaths(const char *path) const;
virtual PGPBoolean CompareRoots(const char *root) const;
PGPBoolean HasOldHeaders() const;
PGPdiskEncryptionAlgorithm Algorithm() const;
PGPBoolean IsBeingReEncrypted() const;
PGPBoolean AreUsersWiped() const;
PGPBoolean HasInactivityTimedOut() const;
PGPBoolean UsesCustomTimeout() const;
const char * DefaultRoot() const;
PGPUInt32 CustomTimeout() const;
PGPUInt64 BlocksDisk() const;
virtual void AttachMounted(const CPGPdiskContext *pContext,
const char *path, const char *root, const char *deviceName,
PGPBoolean readOnly, PGPBoolean hasTimedOut);
virtual void ExportUserSet(CPGPdiskUserSet& userSet) const;
virtual void ImportUserSet(const CPGPdiskUserSet& userSet);
virtual void EnableCipheringOnUser(CPGPdiskUser& user,
const char *passphrase, int passkeylen);
virtual void WipeUsers();
virtual void SetUsesCustomTimeout(PGPBoolean usesCustom);
virtual void SetDefaultRoot(const char *root);
virtual void SetCustomTimeout(PGPUInt32 customTimeout);
virtual void LockVolume(PGPBoolean forFormat);
virtual void UnlockVolume();
virtual void ReadVolume(void *buffer, PGPUInt64 blockPos,
PGPUInt32 blocksLength);
virtual void WriteVolume(const void *buffer, PGPUInt64 blockPos,
PGPUInt32 blocksLength);
virtual void ReEncrypt(const char *adminPassphrase,
PGPdiskEncryptionAlgorithm newAlgorithm,
ReEncryptDiskStatusFuncType statusFunc, void *userValue = NULL);
virtual void Open(const CPGPdiskContext *pContext, const char *path,
PGPBoolean readOnly = FALSE);
virtual void Close();
protected:
const CPGPdiskContext *mPContext;
PGPdiskState mDiskState;
PGPBoolean mIsReadOnly;
PGPBoolean mHasTimedOut;
PGPBoolean mIsLockedForFormat;
PGPBoolean mIsLockedForIO;
PGPUInt32 mLockHandle;
CPGPdiskHeaders mHeaders;
CString mPath;
CString mRoot;
CString mDeviceName;
CFile mDiskFile;
void MakeSureHeadersRead() const;
void VerifyModifiability();
void ResetTimedOut();
virtual void CheckFilesystemCompatibility(
const CCipherContext& cipher, PGPBoolean readOnly) const { }
virtual void Mount(const CPGPdiskContext *pContext, const char *path,
const CPGPdiskUser &diskUser, const char *root,
PGPBoolean readOnly = FALSE);
virtual void Mount(const CPGPdiskContext *pContext, const char *path,
const CCipherContext &cipher, const char *root,
PGPBoolean readOnly = FALSE);
virtual void Unmount(PGPBoolean isForced = FALSE);
virtual void Create(const CPGPdiskContext *pContext,
const char *path, PGPUInt64 blocksDisk,
PGPdiskEncryptionAlgorithm algorithm, const char *adminPassphrase,
const char *userName, const char *defaultRoot,
NewDiskStatusFuncType statusFunc, void *userValue = NULL);
virtual void Create(const CPGPdiskContext *pContext,
const char *path, PGPUInt64 blocksDisk,
PGPdiskEncryptionAlgorithm algorithm, const CPGPKey& pubKey,
const char *defaultRoot, NewDiskStatusFuncType statusFunc,
void *userValue = NULL);
void EncryptNewPGPdiskFile(const CCipherContext& cipher,
NewDiskStatusFuncType statusFunc, void *userValue);
void CreateCommon(const CPGPdiskContext *pContext, const char *path,
PGPUInt64 blocksDisk, PGPdiskEncryptionAlgorithm algorithm,
const char *adminPass, const char *userName, const CPGPKey *pPubKey,
const char *defaultRoot, NewDiskStatusFuncType statusFunc,
void *userValue);
void ReEncryptBlocks(const CCipherContext& oldCipher,
const CCipherContext& newCipher,
ReEncryptDiskStatusFuncType statusFunc, void *userValue,
PGPUInt64 numBlocksReEncrypted);
};
_PGP_END
#endif // ] Included_CPGPdiskDiskImp_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -