mirror of
https://github.com/winscp/winscp.git
synced 2026-10-24 02:28:55 +03:00
https://winscp.net/tracker/2447 https://winscp.net/tracker/2448 Source commit: c777084ca5737c4283f256eb8cdf5c2fec5902af
75 lines
3.5 KiB
C
75 lines
3.5 KiB
C
//---------------------------------------------------------------------------
|
|
#ifndef NeonIntfH
|
|
#define NeonIntfH
|
|
//---------------------------------------------------------------------------
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wold-style-cast"
|
|
#include <ne_uri.h>
|
|
#include <ne_session.h>
|
|
#pragma clang diagnostic pop
|
|
#include <SessionData.h>
|
|
//---------------------------------------------------------------------------
|
|
#define StrToNeon(S) UTF8String(S).c_str()
|
|
// Should be used with character pointer only
|
|
#define StrFromNeon(S) UnicodeString(UTF8String(S))
|
|
//---------------------------------------------------------------------------
|
|
struct TNeonCertificateData
|
|
{
|
|
UnicodeString Subject;
|
|
UnicodeString Issuer;
|
|
|
|
TDateTime ValidFrom;
|
|
TDateTime ValidUntil;
|
|
|
|
UnicodeString FingerprintSHA1;
|
|
UnicodeString FingerprintSHA256;
|
|
AnsiString AsciiCert;
|
|
|
|
int Failures;
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
struct TNeonUri : public ne_uri
|
|
{
|
|
TNeonUri();
|
|
TNeonUri(const UnicodeString & Url);
|
|
~TNeonUri();
|
|
bool IsTls() const;
|
|
UnicodeString GetHost() const;
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
ne_session * CreateNeonSession(const TNeonUri & Uri);
|
|
void InitNeonSession(ne_session * Session, TProxyMethod ProxyMethod, const UnicodeString & ProxyHost,
|
|
int ProxyPort, const UnicodeString & ProxyUsername, const UnicodeString & ProxyPassword, TTerminal * Terminal);
|
|
void DestroyNeonSession(ne_session * Session);
|
|
UnicodeString GetNeonError(ne_session * Session);
|
|
void CheckNeonStatus(ne_session * Session, int NeonStatus,
|
|
const UnicodeString & HostName, const UnicodeString & CustomError = L"");
|
|
UnicodeString GetNeonRedirectUrl(ne_session * Session);
|
|
void CheckRedirectLoop(const UnicodeString & RedirectUrl, TStrings * AttemptedUrls);
|
|
typedef void (__closure* TNeonTlsInit)(struct ssl_st * Ssl, ne_session * Session);
|
|
void SetNeonTlsInit(ne_session * Session, TNeonTlsInit OnNeonTlsInit, TTerminal * Terminal);
|
|
void InitNeonTls(
|
|
ne_session * Session, TNeonTlsInit OnNeonTlsInit, ne_ssl_verify_fn VerifyCallback, void * VerifyContext,
|
|
TTerminal * Terminal);
|
|
AnsiString NeonExportCertificate(const ne_ssl_certificate * Certificate);
|
|
bool NeonWindowsValidateCertificate(int & Failures, const AnsiString & AsciiCert, UnicodeString & Error);
|
|
bool NeonWindowsValidateCertificateWithMessage(TNeonCertificateData & Data, UnicodeString & Message);
|
|
UnicodeString NeonCertificateFailuresErrorStr(int Failures, const UnicodeString & HostName);
|
|
void UpdateNeonDebugMask();
|
|
void __fastcall RegisterForNeonDebug(TTerminal * Terminal);
|
|
void __fastcall UnregisterFromNeonDebug(TTerminal * Terminal);
|
|
void __fastcall NeonInitialize();
|
|
void __fastcall NeonFinalize();
|
|
void __fastcall RequireNeon(TTerminal * Terminal);
|
|
void __fastcall RetrieveNeonCertificateData(
|
|
int Failures, const ne_ssl_certificate * Certificate, TNeonCertificateData & Data);
|
|
UnicodeString __fastcall CertificateVerificationMessage(const TNeonCertificateData & Data);
|
|
UnicodeString CertificateSummary(
|
|
const TNeonCertificateData & Data, const UnicodeString & HostName, const UnicodeString & SummaryOverride = UnicodeString());
|
|
struct TSessionInfo;
|
|
UnicodeString __fastcall NeonTlsSessionInfo(
|
|
ne_session * Session, TSessionInfo & FSessionInfo, UnicodeString & TlsVersionStr);
|
|
void SetupSsl(ssl_st * Ssl, TTlsVersion MinTlsVersion, TTlsVersion MaxTlsVersion);
|
|
//---------------------------------------------------------------------------
|
|
#endif
|