NeonIntf.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //---------------------------------------------------------------------------
  2. #ifndef NeonIntfH
  3. #define NeonIntfH
  4. //---------------------------------------------------------------------------
  5. #include <ne_uri.h>
  6. #include <ne_session.h>
  7. #include <SessionData.h>
  8. //---------------------------------------------------------------------------
  9. #define StrToNeon(S) UTF8String(S).c_str()
  10. // Should be used with character pointer only
  11. #define StrFromNeon(S) UnicodeString(UTF8String(S))
  12. //---------------------------------------------------------------------------
  13. struct TNeonCertificateData
  14. {
  15. UnicodeString Subject;
  16. UnicodeString Issuer;
  17. TDateTime ValidFrom;
  18. TDateTime ValidUntil;
  19. UnicodeString FingerprintSHA1;
  20. UnicodeString FingerprintSHA256;
  21. AnsiString AsciiCert;
  22. int Failures;
  23. };
  24. //---------------------------------------------------------------------------
  25. void NeonParseUrl(const UnicodeString & Url, ne_uri & uri);
  26. bool IsTlsUri(const ne_uri & uri);
  27. ne_session * CreateNeonSession(const ne_uri & uri);
  28. void InitNeonSession(ne_session * Session, TProxyMethod ProxyMethod, const UnicodeString & ProxyHost,
  29. int ProxyPort, const UnicodeString & ProxyUsername, const UnicodeString & ProxyPassword, TTerminal * Terminal);
  30. void DestroyNeonSession(ne_session * Session);
  31. UnicodeString GetNeonError(ne_session * Session);
  32. void CheckNeonStatus(ne_session * Session, int NeonStatus,
  33. const UnicodeString & HostName, const UnicodeString & CustomError = L"");
  34. UnicodeString GetNeonRedirectUrl(ne_session * Session);
  35. void CheckRedirectLoop(const UnicodeString & RedirectUrl, TStrings * AttemptedUrls);
  36. typedef void (__closure* TNeonTlsInit)(struct ssl_st * Ssl, ne_session * Session);
  37. void SetNeonTlsInit(ne_session * Session, TNeonTlsInit OnNeonTlsInit, TTerminal * Terminal);
  38. void InitNeonTls(
  39. ne_session * Session, TNeonTlsInit OnNeonTlsInit, ne_ssl_verify_fn VerifyCallback, void * VerifyContext,
  40. TTerminal * Terminal);
  41. AnsiString NeonExportCertificate(const ne_ssl_certificate * Certificate);
  42. bool NeonWindowsValidateCertificate(int & Failures, const AnsiString & AsciiCert, UnicodeString & Error);
  43. bool NeonWindowsValidateCertificateWithMessage(TNeonCertificateData & Data, UnicodeString & Message);
  44. UnicodeString NeonCertificateFailuresErrorStr(int Failures, const UnicodeString & HostName);
  45. void UpdateNeonDebugMask();
  46. void __fastcall RegisterForNeonDebug(TTerminal * Terminal);
  47. void __fastcall UnregisterFromNeonDebug(TTerminal * Terminal);
  48. void __fastcall NeonInitialize();
  49. void __fastcall NeonFinalize();
  50. void __fastcall RequireNeon(TTerminal * Terminal);
  51. void __fastcall RetrieveNeonCertificateData(
  52. int Failures, const ne_ssl_certificate * Certificate, TNeonCertificateData & Data);
  53. UnicodeString __fastcall CertificateVerificationMessage(const TNeonCertificateData & Data);
  54. UnicodeString CertificateSummary(
  55. const TNeonCertificateData & Data, const UnicodeString & HostName, const UnicodeString & SummaryOverride = UnicodeString());
  56. struct TSessionInfo;
  57. UnicodeString __fastcall NeonTlsSessionInfo(
  58. ne_session * Session, TSessionInfo & FSessionInfo, UnicodeString & TlsVersionStr);
  59. void SetupSsl(ssl_st * Ssl, TTlsVersion MinTlsVersion, TTlsVersion MaxTlsVersion);
  60. //---------------------------------------------------------------------------
  61. #endif