Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

101 řádky
2.6 KiB

  1. import hashlib
  2. class Algorithms:
  3. # DS Algorithms
  4. NONE = "none"
  5. HS256 = "HS256"
  6. HS384 = "HS384"
  7. HS512 = "HS512"
  8. RS256 = "RS256"
  9. RS384 = "RS384"
  10. RS512 = "RS512"
  11. ES256 = "ES256"
  12. ES384 = "ES384"
  13. ES512 = "ES512"
  14. # Content Encryption Algorithms
  15. A128CBC_HS256 = "A128CBC-HS256"
  16. A192CBC_HS384 = "A192CBC-HS384"
  17. A256CBC_HS512 = "A256CBC-HS512"
  18. A128GCM = "A128GCM"
  19. A192GCM = "A192GCM"
  20. A256GCM = "A256GCM"
  21. # Pseudo algorithm for encryption
  22. A128CBC = "A128CBC"
  23. A192CBC = "A192CBC"
  24. A256CBC = "A256CBC"
  25. # CEK Encryption Algorithms
  26. DIR = "dir"
  27. RSA1_5 = "RSA1_5"
  28. RSA_OAEP = "RSA-OAEP"
  29. RSA_OAEP_256 = "RSA-OAEP-256"
  30. A128KW = "A128KW"
  31. A192KW = "A192KW"
  32. A256KW = "A256KW"
  33. ECDH_ES = "ECDH-ES"
  34. ECDH_ES_A128KW = "ECDH-ES+A128KW"
  35. ECDH_ES_A192KW = "ECDH-ES+A192KW"
  36. ECDH_ES_A256KW = "ECDH-ES+A256KW"
  37. A128GCMKW = "A128GCMKW"
  38. A192GCMKW = "A192GCMKW"
  39. A256GCMKW = "A256GCMKW"
  40. PBES2_HS256_A128KW = "PBES2-HS256+A128KW"
  41. PBES2_HS384_A192KW = "PBES2-HS384+A192KW"
  42. PBES2_HS512_A256KW = "PBES2-HS512+A256KW"
  43. # Compression Algorithms
  44. DEF = "DEF"
  45. HMAC = {HS256, HS384, HS512}
  46. RSA_DS = {RS256, RS384, RS512}
  47. RSA_KW = {RSA1_5, RSA_OAEP, RSA_OAEP_256}
  48. RSA = RSA_DS.union(RSA_KW)
  49. EC_DS = {ES256, ES384, ES512}
  50. EC_KW = {ECDH_ES, ECDH_ES_A128KW, ECDH_ES_A192KW, ECDH_ES_A256KW}
  51. EC = EC_DS.union(EC_KW)
  52. AES_PSEUDO = {A128CBC, A192CBC, A256CBC, A128GCM, A192GCM, A256GCM}
  53. AES_JWE_ENC = {A128CBC_HS256, A192CBC_HS384, A256CBC_HS512, A128GCM, A192GCM, A256GCM}
  54. AES_ENC = AES_JWE_ENC.union(AES_PSEUDO)
  55. AES_KW = {A128KW, A192KW, A256KW}
  56. AEC_GCM_KW = {A128GCMKW, A192GCMKW, A256GCMKW}
  57. AES = AES_ENC.union(AES_KW)
  58. PBES2_KW = {PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW}
  59. HMAC_AUTH_TAG = {A128CBC_HS256, A192CBC_HS384, A256CBC_HS512}
  60. GCM = {A128GCM, A192GCM, A256GCM}
  61. SUPPORTED = HMAC.union(RSA_DS).union(EC_DS).union([DIR]).union(AES_JWE_ENC).union(RSA_KW).union(AES_KW)
  62. ALL = SUPPORTED.union([NONE]).union(AEC_GCM_KW).union(EC_KW).union(PBES2_KW)
  63. HASHES = {
  64. HS256: hashlib.sha256,
  65. HS384: hashlib.sha384,
  66. HS512: hashlib.sha512,
  67. RS256: hashlib.sha256,
  68. RS384: hashlib.sha384,
  69. RS512: hashlib.sha512,
  70. ES256: hashlib.sha256,
  71. ES384: hashlib.sha384,
  72. ES512: hashlib.sha512,
  73. }
  74. KEYS = {}
  75. ALGORITHMS = Algorithms()
  76. class Zips:
  77. DEF = "DEF"
  78. NONE = None
  79. SUPPORTED = {DEF, NONE}
  80. ZIPS = Zips()
  81. JWE_SIZE_LIMIT = 250 * 1024