mirror of
https://github.com/winscp/winscp.git
synced 2026-10-24 02:28:55 +03:00
76 lines
3.2 KiB
C++
76 lines
3.2 KiB
C++
//---------------------------------------------------------------------------
|
|
#ifndef KeyGenH
|
|
#define KeyGenH
|
|
//---------------------------------------------------------------------------
|
|
enum TKeyType { ktRSA1, ktRSA2, ktDSA };
|
|
typedef unsigned TEntropyBit;
|
|
class TKeyGenerationThread;
|
|
class TKeyGenerator;
|
|
enum TKeyGeneratorState { kgInitializing, kgInitialized, kgGenerating, kgComplete };
|
|
enum TKeyGenerationComplete { kgInProgress, kgSuccess, kgFailure };
|
|
enum TKeyFormat { kfPutty, kfOpenSSH, kfSSHCom };
|
|
typedef void __fastcall (__closure *TKeyGeneratorGenerating)
|
|
(TKeyGenerator * Generator, int Range, int Position, TKeyGenerationComplete Complete);
|
|
//---------------------------------------------------------------------------
|
|
struct ssh2_userkey;
|
|
struct RSAKey;
|
|
struct dss_key;
|
|
//---------------------------------------------------------------------------
|
|
class TKeyGenerator : public TObject
|
|
{
|
|
friend class TKeyGenerationThread;
|
|
private:
|
|
AnsiString FComment;
|
|
int FKeySize;
|
|
TKeyType FKeyType;
|
|
TEntropyBit * FEntropy;
|
|
int FEntropyGot;
|
|
int FEntropyRequired;
|
|
AnsiString FFingerprint;
|
|
TKeyGeneratorState FState;
|
|
int FGenerationRange;
|
|
int FGenerationPosition;
|
|
TKeyGeneratorGenerating FOnGenerating;
|
|
AnsiString FPublicKey;
|
|
TKeyGenerationThread * FThread;
|
|
AnsiString __fastcall GetAuthorizedKeysLine();
|
|
AnsiString __fastcall GetFingerprint();
|
|
bool __fastcall GetIsSSH2();
|
|
struct ssh2_userkey * FSSH2Key;
|
|
int __fastcall GetPercentGenerated();
|
|
AnsiString __fastcall GetPublicKey();
|
|
void __fastcall SetComment(AnsiString value);
|
|
void __fastcall SetKeySize(int value);
|
|
void __fastcall SetKeyType(TKeyType value);
|
|
protected:
|
|
// both written by TKeyGenerationThread (from different thread)
|
|
RSAKey * FRSAKey;
|
|
dss_key * FDSSKey;
|
|
// called by TKeyGenerationThread (from main VCL thread)
|
|
void __fastcall ProgressUpdate(int Range, int Position, TKeyGenerationComplete Complete);
|
|
void __fastcall ResetKey();
|
|
public:
|
|
__fastcall TKeyGenerator();
|
|
virtual __fastcall ~TKeyGenerator();
|
|
void __fastcall AddEntropy(TEntropyBit Entropy);
|
|
void __fastcall Generate();
|
|
void __fastcall SaveKey(const AnsiString FileName,
|
|
const AnsiString Passphrase, TKeyFormat Format);
|
|
void __fastcall StartGenerationThread();
|
|
__property AnsiString AuthorizedKeysLine = { read = GetAuthorizedKeysLine };
|
|
__property AnsiString Comment = { read = FComment, write = SetComment };
|
|
__property int EntropyGot = { read = FEntropyGot };
|
|
__property int EntropyRequired = { read = FEntropyRequired };
|
|
__property AnsiString Fingerprint = { read = GetFingerprint };
|
|
__property bool IsSSH2 = { read = GetIsSSH2 };
|
|
__property TKeyGeneratorState State = { read = FState };
|
|
|
|
__property int KeySize = { read = FKeySize, write = SetKeySize };
|
|
__property TKeyType KeyType = { read = FKeyType, write = SetKeyType };
|
|
__property TKeyGeneratorGenerating OnGenerating = { read = FOnGenerating, write = FOnGenerating };
|
|
__property int PercentGenerated = { read = GetPercentGenerated };
|
|
__property AnsiString PublicKey = { read = GetPublicKey };
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
#endif
|