PuttyTools.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //---------------------------------------------------------------------------
  2. #ifndef PuttyToolsH
  3. #define PuttyToolsH
  4. //---------------------------------------------------------------------------
  5. #include <SessionData.h>
  6. //---------------------------------------------------------------------------
  7. enum TKeyType
  8. {
  9. ktUnopenable, ktUnknown,
  10. ktSSH1, ktSSH2,
  11. ktOpenSSHAuto, ktOpenSSHPEM, ktOpenSSHNew, ktSSHCom,
  12. ktSSH1Public, ktSSH2PublicRFC4716, ktSSH2PublicOpenSSH
  13. };
  14. TKeyType KeyType(UnicodeString FileName);
  15. bool IsKeyEncrypted(TKeyType KeyType, const UnicodeString & FileName, UnicodeString & Comment);
  16. struct TPrivateKey;
  17. TPrivateKey * LoadKey(TKeyType KeyType, const UnicodeString & FileName, const UnicodeString & Passphrase);
  18. UnicodeString TestKey(TKeyType KeyType, const UnicodeString & FileName);
  19. void ChangeKeyComment(TPrivateKey * PrivateKey, const UnicodeString & Comment);
  20. void AddCertificateToKey(TPrivateKey * PrivateKey, const UnicodeString & CertificateFileName);
  21. void SaveKey(TKeyType KeyType, const UnicodeString & FileName,
  22. const UnicodeString & Passphrase, TPrivateKey * PrivateKey);
  23. void FreeKey(TPrivateKey * PrivateKey);
  24. RawByteString LoadPublicKey(
  25. const UnicodeString & FileName, UnicodeString & Algorithm, UnicodeString & Comment, bool & HasCertificate);
  26. UnicodeString GetPublicKeyLine(const UnicodeString & FileName, UnicodeString & Comment, bool & HasCertificate);
  27. extern const UnicodeString PuttyKeyExt;
  28. //---------------------------------------------------------------------------
  29. bool __fastcall HasGSSAPI(UnicodeString CustomPath);
  30. //---------------------------------------------------------------------------
  31. void __fastcall AES256EncodeWithMAC(char * Data, size_t Len, const char * Password,
  32. size_t PasswordLen, const char * Salt);
  33. //---------------------------------------------------------------------------
  34. void __fastcall NormalizeFingerprint(UnicodeString & Fingerprint, UnicodeString & KeyName);
  35. UnicodeString __fastcall KeyTypeFromFingerprint(UnicodeString Fingerprint);
  36. //---------------------------------------------------------------------------
  37. UnicodeString __fastcall GetPuTTYVersion();
  38. //---------------------------------------------------------------------------
  39. UnicodeString __fastcall Sha256(const char * Data, size_t Size);
  40. UnicodeString CalculateFileChecksum(TStream * Stream, const UnicodeString & Alg);
  41. //---------------------------------------------------------------------------
  42. UnicodeString __fastcall ParseOpenSshPubLine(const UnicodeString & Line, const struct ssh_keyalg *& Algorithm);
  43. void ParseCertificatePublicKey(const UnicodeString & Str, RawByteString & PublicKey, UnicodeString & Fingerprint);
  44. bool IsCertificateValidityExpressionValid(
  45. const UnicodeString & Str, UnicodeString & Error, int & ErrorStart, int & ErrorLen);
  46. //---------------------------------------------------------------------------
  47. bool IsOpenSSH(const UnicodeString & SshImplementation);
  48. //---------------------------------------------------------------------------
  49. TStrings * SshCipherList();
  50. TStrings * SshKexList();
  51. int HostKeyToPutty(THostKey HostKey);
  52. TStrings * SshHostKeyList();
  53. TStrings * SshMacList();
  54. //---------------------------------------------------------------------------
  55. class TSessionData;
  56. void SaveAsPutty(const UnicodeString & Name, TSessionData * Data);
  57. class THierarchicalStorage;
  58. void WritePuttySettings(THierarchicalStorage * Storage, const UnicodeString & Settings);
  59. void SavePuttyDefaults(const UnicodeString & Name);
  60. //---------------------------------------------------------------------------
  61. bool RandomSeedExists();
  62. //---------------------------------------------------------------------------
  63. #endif