CipherSuite.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  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. /// <summary>RFC 2246 A.5</summary>
  7. public abstract class CipherSuite
  8. {
  9. public static bool IsScsv(int cipherSuite)
  10. {
  11. switch (cipherSuite)
  12. {
  13. case TLS_EMPTY_RENEGOTIATION_INFO_SCSV:
  14. case TLS_FALLBACK_SCSV:
  15. return true;
  16. default:
  17. return false;
  18. }
  19. }
  20. public const int TLS_NULL_WITH_NULL_NULL = 0x0000;
  21. public const int TLS_RSA_WITH_NULL_MD5 = 0x0001;
  22. public const int TLS_RSA_WITH_NULL_SHA = 0x0002;
  23. public const int TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003;
  24. public const int TLS_RSA_WITH_RC4_128_MD5 = 0x0004;
  25. public const int TLS_RSA_WITH_RC4_128_SHA = 0x0005;
  26. public const int TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006;
  27. public const int TLS_RSA_WITH_IDEA_CBC_SHA = 0x0007;
  28. public const int TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008;
  29. public const int TLS_RSA_WITH_DES_CBC_SHA = 0x0009;
  30. public const int TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A;
  31. public const int TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x000B;
  32. public const int TLS_DH_DSS_WITH_DES_CBC_SHA = 0x000C;
  33. public const int TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D;
  34. public const int TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x000E;
  35. public const int TLS_DH_RSA_WITH_DES_CBC_SHA = 0x000F;
  36. public const int TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010;
  37. public const int TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0011;
  38. public const int TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x0012;
  39. public const int TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013;
  40. public const int TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0014;
  41. public const int TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x0015;
  42. public const int TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016;
  43. public const int TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x0017;
  44. public const int TLS_DH_anon_WITH_RC4_128_MD5 = 0x0018;
  45. public const int TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x0019;
  46. public const int TLS_DH_anon_WITH_DES_CBC_SHA = 0x001A;
  47. public const int TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B;
  48. /*
  49. * Note: The cipher suite values { 0x00, 0x1C } and { 0x00, 0x1D } are reserved to avoid
  50. * collision with Fortezza-based cipher suites in SSL 3.
  51. */
  52. /*
  53. * RFC 3268
  54. */
  55. public const int TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F;
  56. public const int TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030;
  57. public const int TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x0031;
  58. public const int TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032;
  59. public const int TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033;
  60. public const int TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x0034;
  61. public const int TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035;
  62. public const int TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036;
  63. public const int TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x0037;
  64. public const int TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038;
  65. public const int TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039;
  66. public const int TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x003A;
  67. /*
  68. * RFC 5932
  69. */
  70. public const int TLS_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0041;
  71. public const int TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA = 0x0042;
  72. public const int TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0043;
  73. public const int TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA = 0x0044;
  74. public const int TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x0045;
  75. public const int TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA = 0x0046;
  76. public const int TLS_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0084;
  77. public const int TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA = 0x0085;
  78. public const int TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0086;
  79. public const int TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA = 0x0087;
  80. public const int TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x0088;
  81. public const int TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA = 0x0089;
  82. public const int TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BA;
  83. public const int TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BB;
  84. public const int TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BC;
  85. public const int TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BD;
  86. public const int TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BE;
  87. public const int TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256 = 0x00BF;
  88. public const int TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C0;
  89. public const int TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C1;
  90. public const int TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C2;
  91. public const int TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C3;
  92. public const int TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C4;
  93. public const int TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256 = 0x00C5;
  94. /*
  95. * RFC 4162
  96. */
  97. public const int TLS_RSA_WITH_SEED_CBC_SHA = 0x0096;
  98. public const int TLS_DH_DSS_WITH_SEED_CBC_SHA = 0x0097;
  99. public const int TLS_DH_RSA_WITH_SEED_CBC_SHA = 0x0098;
  100. public const int TLS_DHE_DSS_WITH_SEED_CBC_SHA = 0x0099;
  101. public const int TLS_DHE_RSA_WITH_SEED_CBC_SHA = 0x009A;
  102. public const int TLS_DH_anon_WITH_SEED_CBC_SHA = 0x009B;
  103. /*
  104. * RFC 4279
  105. */
  106. public const int TLS_PSK_WITH_RC4_128_SHA = 0x008A;
  107. public const int TLS_PSK_WITH_3DES_EDE_CBC_SHA = 0x008B;
  108. public const int TLS_PSK_WITH_AES_128_CBC_SHA = 0x008C;
  109. public const int TLS_PSK_WITH_AES_256_CBC_SHA = 0x008D;
  110. public const int TLS_DHE_PSK_WITH_RC4_128_SHA = 0x008E;
  111. public const int TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F;
  112. public const int TLS_DHE_PSK_WITH_AES_128_CBC_SHA = 0x0090;
  113. public const int TLS_DHE_PSK_WITH_AES_256_CBC_SHA = 0x0091;
  114. public const int TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092;
  115. public const int TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093;
  116. public const int TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094;
  117. public const int TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095;
  118. /*
  119. * RFC 4492
  120. */
  121. public const int TLS_ECDH_ECDSA_WITH_NULL_SHA = 0xC001;
  122. public const int TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0xC002;
  123. public const int TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC003;
  124. public const int TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 0xC004;
  125. public const int TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 0xC005;
  126. public const int TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0xC006;
  127. public const int TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xC007;
  128. public const int TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008;
  129. public const int TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009;
  130. public const int TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A;
  131. public const int TLS_ECDH_RSA_WITH_NULL_SHA = 0xC00B;
  132. public const int TLS_ECDH_RSA_WITH_RC4_128_SHA = 0xC00C;
  133. public const int TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0xC00D;
  134. public const int TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = 0xC00E;
  135. public const int TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = 0xC00F;
  136. public const int TLS_ECDHE_RSA_WITH_NULL_SHA = 0xC010;
  137. public const int TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xC011;
  138. public const int TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012;
  139. public const int TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013;
  140. public const int TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014;
  141. public const int TLS_ECDH_anon_WITH_NULL_SHA = 0xC015;
  142. public const int TLS_ECDH_anon_WITH_RC4_128_SHA = 0xC016;
  143. public const int TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = 0xC017;
  144. public const int TLS_ECDH_anon_WITH_AES_128_CBC_SHA = 0xC018;
  145. public const int TLS_ECDH_anon_WITH_AES_256_CBC_SHA = 0xC019;
  146. /*
  147. * RFC 4785
  148. */
  149. public const int TLS_PSK_WITH_NULL_SHA = 0x002C;
  150. public const int TLS_DHE_PSK_WITH_NULL_SHA = 0x002D;
  151. public const int TLS_RSA_PSK_WITH_NULL_SHA = 0x002E;
  152. /*
  153. * RFC 5054
  154. */
  155. public const int TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA = 0xC01A;
  156. public const int TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA = 0xC01B;
  157. public const int TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA = 0xC01C;
  158. public const int TLS_SRP_SHA_WITH_AES_128_CBC_SHA = 0xC01D;
  159. public const int TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA = 0xC01E;
  160. public const int TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA = 0xC01F;
  161. public const int TLS_SRP_SHA_WITH_AES_256_CBC_SHA = 0xC020;
  162. public const int TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA = 0xC021;
  163. public const int TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA = 0xC022;
  164. /*
  165. * RFC 5246
  166. */
  167. public const int TLS_RSA_WITH_NULL_SHA256 = 0x003B;
  168. public const int TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C;
  169. public const int TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D;
  170. public const int TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x003E;
  171. public const int TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x003F;
  172. public const int TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040;
  173. public const int TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067;
  174. public const int TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x0068;
  175. public const int TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x0069;
  176. public const int TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A;
  177. public const int TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B;
  178. public const int TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x006C;
  179. public const int TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x006D;
  180. /*
  181. * RFC 5288
  182. */
  183. public const int TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C;
  184. public const int TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D;
  185. public const int TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E;
  186. public const int TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F;
  187. public const int TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = 0x00A0;
  188. public const int TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = 0x00A1;
  189. public const int TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2;
  190. public const int TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3;
  191. public const int TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = 0x00A4;
  192. public const int TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = 0x00A5;
  193. public const int TLS_DH_anon_WITH_AES_128_GCM_SHA256 = 0x00A6;
  194. public const int TLS_DH_anon_WITH_AES_256_GCM_SHA384 = 0x00A7;
  195. /*
  196. * RFC 5289
  197. */
  198. public const int TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023;
  199. public const int TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024;
  200. public const int TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC025;
  201. public const int TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC026;
  202. public const int TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027;
  203. public const int TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028;
  204. public const int TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 0xC029;
  205. public const int TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 0xC02A;
  206. public const int TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B;
  207. public const int TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C;
  208. public const int TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02D;
  209. public const int TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02E;
  210. public const int TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F;
  211. public const int TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030;
  212. public const int TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0xC031;
  213. public const int TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0xC032;
  214. /*
  215. * RFC 5487
  216. */
  217. public const int TLS_PSK_WITH_AES_128_GCM_SHA256 = 0x00A8;
  218. public const int TLS_PSK_WITH_AES_256_GCM_SHA384 = 0x00A9;
  219. public const int TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0x00AA;
  220. public const int TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0x00AB;
  221. public const int TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC;
  222. public const int TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD;
  223. public const int TLS_PSK_WITH_AES_128_CBC_SHA256 = 0x00AE;
  224. public const int TLS_PSK_WITH_AES_256_CBC_SHA384 = 0x00AF;
  225. public const int TLS_PSK_WITH_NULL_SHA256 = 0x00B0;
  226. public const int TLS_PSK_WITH_NULL_SHA384 = 0x00B1;
  227. public const int TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0x00B2;
  228. public const int TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0x00B3;
  229. public const int TLS_DHE_PSK_WITH_NULL_SHA256 = 0x00B4;
  230. public const int TLS_DHE_PSK_WITH_NULL_SHA384 = 0x00B5;
  231. public const int TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6;
  232. public const int TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7;
  233. public const int TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8;
  234. public const int TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9;
  235. /*
  236. * RFC 5489
  237. */
  238. public const int TLS_ECDHE_PSK_WITH_RC4_128_SHA = 0xC033;
  239. public const int TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA = 0xC034;
  240. public const int TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA = 0xC035;
  241. public const int TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA = 0xC036;
  242. public const int TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 = 0xC037;
  243. public const int TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 = 0xC038;
  244. public const int TLS_ECDHE_PSK_WITH_NULL_SHA = 0xC039;
  245. public const int TLS_ECDHE_PSK_WITH_NULL_SHA256 = 0xC03A;
  246. public const int TLS_ECDHE_PSK_WITH_NULL_SHA384 = 0xC03B;
  247. /*
  248. * RFC 5746
  249. */
  250. public const int TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0x00FF;
  251. /*
  252. * RFC 6209
  253. */
  254. public const int TLS_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC03C;
  255. public const int TLS_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC03D;
  256. public const int TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 = 0xC03E;
  257. public const int TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 = 0xC03F;
  258. public const int TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC040;
  259. public const int TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC041;
  260. public const int TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 = 0xC042;
  261. public const int TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 = 0xC043;
  262. public const int TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC044;
  263. public const int TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC045;
  264. public const int TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 = 0xC046;
  265. public const int TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 = 0xC047;
  266. public const int TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 = 0xC048;
  267. public const int TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 = 0xC049;
  268. public const int TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 = 0xC04A;
  269. public const int TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 = 0xC04B;
  270. public const int TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC04C;
  271. public const int TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC04D;
  272. public const int TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 = 0xC04E;
  273. public const int TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 = 0xC04F;
  274. public const int TLS_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC050;
  275. public const int TLS_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC051;
  276. public const int TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC052;
  277. public const int TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC053;
  278. public const int TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC054;
  279. public const int TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC055;
  280. public const int TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 = 0xC056;
  281. public const int TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 = 0xC057;
  282. public const int TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 = 0xC058;
  283. public const int TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 = 0xC059;
  284. public const int TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 = 0xC05A;
  285. public const int TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 = 0xC05B;
  286. public const int TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 = 0xC05C;
  287. public const int TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 = 0xC05D;
  288. public const int TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 = 0xC05E;
  289. public const int TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 = 0xC05F;
  290. public const int TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC060;
  291. public const int TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC061;
  292. public const int TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 = 0xC062;
  293. public const int TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 = 0xC063;
  294. public const int TLS_PSK_WITH_ARIA_128_CBC_SHA256 = 0xC064;
  295. public const int TLS_PSK_WITH_ARIA_256_CBC_SHA384 = 0xC065;
  296. public const int TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 = 0xC066;
  297. public const int TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 = 0xC067;
  298. public const int TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 = 0xC068;
  299. public const int TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 = 0xC069;
  300. public const int TLS_PSK_WITH_ARIA_128_GCM_SHA256 = 0xC06A;
  301. public const int TLS_PSK_WITH_ARIA_256_GCM_SHA384 = 0xC06B;
  302. public const int TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 = 0xC06C;
  303. public const int TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 = 0xC06D;
  304. public const int TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 = 0xC06E;
  305. public const int TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 = 0xC06F;
  306. public const int TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 = 0xC070;
  307. public const int TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 = 0xC071;
  308. /*
  309. * RFC 6367
  310. */
  311. public const int TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC072;
  312. public const int TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC073;
  313. public const int TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC074;
  314. public const int TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC075;
  315. public const int TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC076;
  316. public const int TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC077;
  317. public const int TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xC078;
  318. public const int TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 = 0xC079;
  319. public const int TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07A;
  320. public const int TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07B;
  321. public const int TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07C;
  322. public const int TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07D;
  323. public const int TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC07E;
  324. public const int TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC07F;
  325. public const int TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 = 0xC080;
  326. public const int TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 = 0xC081;
  327. public const int TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 = 0xC082;
  328. public const int TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 = 0xC083;
  329. public const int TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256 = 0xC084;
  330. public const int TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384 = 0xC085;
  331. public const int TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC086;
  332. public const int TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC087;
  333. public const int TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC088;
  334. public const int TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC089;
  335. public const int TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08A;
  336. public const int TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08B;
  337. public const int TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08C;
  338. public const int TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08D;
  339. public const int TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC08E;
  340. public const int TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC08F;
  341. public const int TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC090;
  342. public const int TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC091;
  343. public const int TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 = 0xC092;
  344. public const int TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 = 0xC093;
  345. public const int TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC094;
  346. public const int TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC095;
  347. public const int TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC096;
  348. public const int TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC097;
  349. public const int TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC098;
  350. public const int TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC099;
  351. public const int TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 = 0xC09A;
  352. public const int TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 = 0xC09B;
  353. /*
  354. * RFC 6655
  355. */
  356. public const int TLS_RSA_WITH_AES_128_CCM = 0xC09C;
  357. public const int TLS_RSA_WITH_AES_256_CCM = 0xC09D;
  358. public const int TLS_DHE_RSA_WITH_AES_128_CCM = 0xC09E;
  359. public const int TLS_DHE_RSA_WITH_AES_256_CCM = 0xC09F;
  360. public const int TLS_RSA_WITH_AES_128_CCM_8 = 0xC0A0;
  361. public const int TLS_RSA_WITH_AES_256_CCM_8 = 0xC0A1;
  362. public const int TLS_DHE_RSA_WITH_AES_128_CCM_8 = 0xC0A2;
  363. public const int TLS_DHE_RSA_WITH_AES_256_CCM_8 = 0xC0A3;
  364. public const int TLS_PSK_WITH_AES_128_CCM = 0xC0A4;
  365. public const int TLS_PSK_WITH_AES_256_CCM = 0xC0A5;
  366. public const int TLS_DHE_PSK_WITH_AES_128_CCM = 0xC0A6;
  367. public const int TLS_DHE_PSK_WITH_AES_256_CCM = 0xC0A7;
  368. public const int TLS_PSK_WITH_AES_128_CCM_8 = 0xC0A8;
  369. public const int TLS_PSK_WITH_AES_256_CCM_8 = 0xC0A9;
  370. public const int TLS_PSK_DHE_WITH_AES_128_CCM_8 = 0xC0AA;
  371. public const int TLS_PSK_DHE_WITH_AES_256_CCM_8 = 0xC0AB;
  372. /*
  373. * RFC 7251
  374. */
  375. public const int TLS_ECDHE_ECDSA_WITH_AES_128_CCM = 0xC0AC;
  376. public const int TLS_ECDHE_ECDSA_WITH_AES_256_CCM = 0xC0AD;
  377. public const int TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 = 0xC0AE;
  378. public const int TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 = 0xC0AF;
  379. /*
  380. * RFC 7507
  381. */
  382. public const int TLS_FALLBACK_SCSV = 0x5600;
  383. /*
  384. * RFC 7905
  385. */
  386. public const int TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA8;
  387. public const int TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA9;
  388. public const int TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAA;
  389. public const int TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAB;
  390. public const int TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAC;
  391. public const int TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAD;
  392. public const int TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAE;
  393. /*
  394. * RFC 8442
  395. */
  396. public const int TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 = 0xD001;
  397. public const int TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384 = 0xD002;
  398. public const int TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 = 0xD003;
  399. public const int TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256 = 0xD005;
  400. /*
  401. * TLS 1.3 Section
  402. *
  403. * Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher
  404. * suites are defined differently, only specifying the symmetric ciphers, and cannot be used for
  405. * TLS 1.2. Similarly, cipher suites for TLS 1.2 and lower cannot be used with TLS 1.3.
  406. */
  407. /*
  408. * RFC 8446
  409. */
  410. public const int TLS_AES_128_GCM_SHA256 = 0x1301;
  411. public const int TLS_AES_256_GCM_SHA384 = 0x1302;
  412. public const int TLS_CHACHA20_POLY1305_SHA256 = 0x1303;
  413. public const int TLS_AES_128_CCM_SHA256 = 0x1304;
  414. public const int TLS_AES_128_CCM_8_SHA256 = 0x1305;
  415. /*
  416. * RFC 8998
  417. */
  418. public const int TLS_SM4_GCM_SM3 = 0x00C6;
  419. public const int TLS_SM4_CCM_SM3 = 0x00C7;
  420. /*
  421. * draft-smyshlyaev-tls12-gost-suites-10
  422. */
  423. public const int TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC = 0xC100;
  424. public const int TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC = 0xC101;
  425. public const int TLS_GOSTR341112_256_WITH_28147_CNT_IMIT = 0xC102;
  426. }
  427. }
  428. #pragma warning restore
  429. #endif