SignatureAlgorithm.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Tls
  5. {
  6. /**
  7. * RFC 5246 7.4.1.4.1 (in RFC 2246, there were no specific values assigned)
  8. */
  9. public class SignatureAlgorithm
  10. {
  11. public const short anonymous = 0;
  12. public const short rsa = 1;
  13. public const short dsa = 2;
  14. public const short ecdsa = 3;
  15. /*
  16. * RFC 8422
  17. */
  18. public const short ed25519 = 7;
  19. public const short ed448 = 8;
  20. /*
  21. * RFC 8446 (implied from SignatureScheme values)
  22. * RFC 8447 reserved these values without allocating the implied names
  23. */
  24. public const short rsa_pss_rsae_sha256 = 4;
  25. public const short rsa_pss_rsae_sha384 = 5;
  26. public const short rsa_pss_rsae_sha512 = 6;
  27. public const short rsa_pss_pss_sha256 = 9;
  28. public const short rsa_pss_pss_sha384 = 10;
  29. public const short rsa_pss_pss_sha512 = 11;
  30. /*
  31. * RFC 8734 (implied from SignatureScheme values)
  32. */
  33. public const short ecdsa_brainpoolP256r1tls13_sha256 = 26;
  34. public const short ecdsa_brainpoolP384r1tls13_sha384 = 27;
  35. public const short ecdsa_brainpoolP512r1tls13_sha512 = 28;
  36. /*
  37. * draft-smyshlyaev-tls12-gost-suites-10
  38. */
  39. public const short gostr34102012_256 = 64;
  40. public const short gostr34102012_512 = 65;
  41. public static short GetClientCertificateType(short signatureAlgorithm)
  42. {
  43. switch (signatureAlgorithm)
  44. {
  45. case SignatureAlgorithm.rsa:
  46. case SignatureAlgorithm.rsa_pss_rsae_sha256:
  47. case SignatureAlgorithm.rsa_pss_rsae_sha384:
  48. case SignatureAlgorithm.rsa_pss_rsae_sha512:
  49. case SignatureAlgorithm.rsa_pss_pss_sha256:
  50. case SignatureAlgorithm.rsa_pss_pss_sha384:
  51. case SignatureAlgorithm.rsa_pss_pss_sha512:
  52. return ClientCertificateType.rsa_sign;
  53. case SignatureAlgorithm.dsa:
  54. return ClientCertificateType.dss_sign;
  55. case SignatureAlgorithm.ecdsa:
  56. case SignatureAlgorithm.ed25519:
  57. case SignatureAlgorithm.ed448:
  58. return ClientCertificateType.ecdsa_sign;
  59. case SignatureAlgorithm.gostr34102012_256:
  60. return ClientCertificateType.gost_sign256;
  61. case SignatureAlgorithm.gostr34102012_512:
  62. return ClientCertificateType.gost_sign512;
  63. default:
  64. return -1;
  65. }
  66. }
  67. public static string GetName(short signatureAlgorithm)
  68. {
  69. switch (signatureAlgorithm)
  70. {
  71. case anonymous:
  72. return "anonymous";
  73. case rsa:
  74. return "rsa";
  75. case dsa:
  76. return "dsa";
  77. case ecdsa:
  78. return "ecdsa";
  79. case ed25519:
  80. return "ed25519";
  81. case ed448:
  82. return "ed448";
  83. case gostr34102012_256:
  84. return "gostr34102012_256";
  85. case gostr34102012_512:
  86. return "gostr34102012_512";
  87. case rsa_pss_rsae_sha256:
  88. return "rsa_pss_rsae_sha256";
  89. case rsa_pss_rsae_sha384:
  90. return "rsa_pss_rsae_sha384";
  91. case rsa_pss_rsae_sha512:
  92. return "rsa_pss_rsae_sha512";
  93. case rsa_pss_pss_sha256:
  94. return "rsa_pss_pss_sha256";
  95. case rsa_pss_pss_sha384:
  96. return "rsa_pss_pss_sha384";
  97. case rsa_pss_pss_sha512:
  98. return "rsa_pss_pss_sha512";
  99. case ecdsa_brainpoolP256r1tls13_sha256:
  100. return "ecdsa_brainpoolP256r1tls13_sha256";
  101. case ecdsa_brainpoolP384r1tls13_sha384:
  102. return "ecdsa_brainpoolP384r1tls13_sha384";
  103. case ecdsa_brainpoolP512r1tls13_sha512:
  104. return "ecdsa_brainpoolP512r1tls13_sha512";
  105. default:
  106. return "UNKNOWN";
  107. }
  108. }
  109. public static string GetText(short signatureAlgorithm)
  110. {
  111. return GetName(signatureAlgorithm) + "(" + signatureAlgorithm + ")";
  112. }
  113. }
  114. }
  115. #pragma warning restore
  116. #endif