2
0

testverify.pp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. {
  2. Program to demonstrate verification of a certificate.
  3. Created by Bernd K. for issue:
  4. https://gitlab.com/freepascal.org/fpc/source/-/issues/39998
  5. }
  6. program testverify;
  7. uses
  8. Sysutils, Classes, sockets, ssockets, sslsockets, openssl, opensslsockets;
  9. type
  10. { TApp }
  11. TApp = class
  12. Sock: TInetSocket;
  13. SSLHandler: TSSLSocketHandler;
  14. constructor Create;
  15. destructor Destroy; override;
  16. procedure OnVerify(Sender: TObject; var Allow: Boolean);
  17. end;
  18. var
  19. App: TApp;
  20. { TApp }
  21. constructor TApp.Create;
  22. begin
  23. SSLHandler := TSSLSocketHandler.GetDefaultHandler;
  24. SSLHandler.OnVerifyCertificate := @OnVerify;
  25. //SSLHandler.VerifyPeerCert := True;
  26. Sock := TInetSocket.Create('test.mosquitto.org', 8883, 1000, SSLHandler);
  27. writeln('begin connect');
  28. Sock.Connect;
  29. writeln('end connect');
  30. end;
  31. destructor TApp.Destroy;
  32. begin
  33. Sock.Free;
  34. inherited Destroy;
  35. end;
  36. procedure TApp.OnVerify(Sender: TObject; var Allow: Boolean);
  37. var
  38. S: TOpenSSLSocketHandler;
  39. begin
  40. Writeln('OnVerify');
  41. S := Sender as TOpenSSLSocketHandler;
  42. writeln('cert assigned: ', Assigned(S.SSL.PeerCertificate));
  43. writeln('cert info: ', S.SSL.CertInfo);
  44. end;
  45. begin
  46. App := TApp.Create;
  47. App.Free;
  48. end.