IdTlsServerOptions.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. {
  2. $Project$
  3. $Workfile$
  4. $Revision$
  5. $DateUTC$
  6. $Id$
  7. This file is part of the Indy (Internet Direct) project, and is offered
  8. under the dual-licensing agreement described on the Indy website.
  9. (http://www.indyproject.org/)
  10. Copyright:
  11. (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
  12. }
  13. {
  14. $Log$
  15. }
  16. {
  17. Rev 1.0 27-03-05 10:04:26 MterWoord
  18. Second import, first time the filenames weren't prefixed with Id
  19. Rev 1.0 27-03-05 09:09:02 MterWoord
  20. Created
  21. }
  22. unit IdTlsServerOptions;
  23. interface
  24. uses
  25. Mono.Security.Protocol.Tls, Mono.Security.Authenticode, System.Security.Cryptography.X509Certificates;
  26. type
  27. TIdTlsServerOptions = class
  28. private
  29. FPrivateKey: PrivateKey;
  30. FPublicCertificate: X509Certificate;
  31. FProtocol: SecurityProtocolType;
  32. FClientNeedsCertificate: Boolean;
  33. procedure SetClientNeedsCertificate(const Value: Boolean);
  34. procedure SetPrivateKey(const Value: PrivateKey);
  35. procedure SetProtocol(const Value: SecurityProtocolType);
  36. procedure SetPublicCertificate(const Value: X509Certificate);
  37. public
  38. constructor Create;
  39. procedure LoadPublicCertificateFromFile(AFileName: string);
  40. procedure LoadPrivateKeyFromFile(AFileName: string; APassword: string = '');
  41. published
  42. property PublicCertificate: X509Certificate read FPublicCertificate write SetPublicCertificate;
  43. property PrivateKey: PrivateKey read FPrivateKey write SetPrivateKey;
  44. property Protocol: SecurityProtocolType read FProtocol write SetProtocol;
  45. property ClientNeedsCertificate: Boolean read FClientNeedsCertificate write SetClientNeedsCertificate;
  46. end;
  47. implementation
  48. { TIdTlsServerOptions }
  49. procedure TIdTlsServerOptions.SetPrivateKey(const Value: PrivateKey);
  50. begin
  51. FPrivateKey := Value;
  52. end;
  53. procedure TIdTlsServerOptions.SetPublicCertificate(const Value: X509Certificate);
  54. begin
  55. FPublicCertificate := Value;
  56. end;
  57. procedure TIdTlsServerOptions.SetProtocol(const Value: SecurityProtocolType);
  58. begin
  59. FProtocol := Value;
  60. end;
  61. procedure TIdTlsServerOptions.SetClientNeedsCertificate(const Value: Boolean);
  62. begin
  63. FClientNeedsCertificate := Value;
  64. end;
  65. constructor TIdTlsServerOptions.Create;
  66. begin
  67. inherited;
  68. FProtocol := SecurityProtocolType.Tls;
  69. FClientNeedsCertificate := False;
  70. end;
  71. procedure TIdTlsServerOptions.LoadPrivateKeyFromFile(AFileName,
  72. APassword: string);
  73. begin
  74. if APassword = '' then
  75. begin
  76. FPrivateKey := Mono.Security.Authenticode.PrivateKey.CreateFromFile(AFileName);
  77. end
  78. else
  79. begin
  80. FPrivateKey := Mono.Security.Authenticode.PrivateKey.CreateFromFile(AFileName, APassword);
  81. end;
  82. end;
  83. procedure TIdTlsServerOptions.LoadPublicCertificateFromFile(AFileName: string);
  84. begin
  85. FPublicCertificate := X509Certificate.CreateFromCertFile(AFileName);
  86. end;
  87. end.