def supports
      jwe_enc = __jwe_enc_support_check__([
        'A128GCM',
        'A192GCM',
        'A256GCM',
        'A128CBC-HS256',
        'A192CBC-HS384',
        'A256CBC-HS512'
      ])
      jwe_alg = __jwe_alg_support_check__([
        ['A128GCMKW', :block],
        ['A192GCMKW', :block],
        ['A256GCMKW', :block],
        ['A128KW', :block],
        ['A192KW', :block],
        ['A256KW', :block],
        ['ECDH-ES', :box],
        ['ECDH-ES+A128KW', :box],
        ['ECDH-ES+A192KW', :box],
        ['ECDH-ES+A256KW', :box],
        ['PBES2-HS256+A128KW', :block],
        ['PBES2-HS384+A192KW', :block],
        ['PBES2-HS512+A256KW', :block],
        ['RSA1_5', :rsa],
        ['RSA-OAEP', :rsa],
        ['RSA-OAEP-256', :rsa],
        ['dir', :direct]
      ], jwe_enc)
      jwe_zip = __jwe_zip_support_check__([
        'DEF'
      ], jwe_enc)
      jwk_kty, jwk_kty_EC_crv, jwk_kty_OKP_crv = __jwk_kty_support_check__([
        ['EC', ['P-256', 'P-384', 'P-521']],
        ['OKP', ['Ed25519', 'Ed25519ph', 'Ed448', 'Ed448ph', 'X25519', 'X448']],
        'RSA',
        'oct'
      ])
      jws_alg = __jws_alg_support_check__([
        'Ed25519',
        'Ed25519ph',
        'Ed448',
        'Ed448ph',
        'EdDSA',
        'ES256',
        'ES384',
        'ES512',
        'HS256',
        'HS384',
        'HS512',
        'PS256',
        'PS384',
        'PS512',
        'RS256',
        'RS384',
        'RS512',
        'X25519',
        'X448',
        'none'
      ])
      return {
        jwe: {
          alg: jwe_alg,
          enc: jwe_enc,
          zip: jwe_zip
        },
        jwk: {
          kty: jwk_kty,
          kty_EC_crv: jwk_kty_EC_crv,
          kty_OKP_crv: jwk_kty_OKP_crv
        },
        jws: {
          alg: jws_alg
        }
      }
    end
def supports
      jwe_enc = __jwe_enc_support_check__([
        'A128GCM',
        'A192GCM',
        'A256GCM',
        'A128CBC-HS256',
        'A192CBC-HS384',
        'A256CBC-HS512'
      ])
      jwe_alg = __jwe_alg_support_check__([
        ['A128GCMKW', :block],
        ['A192GCMKW', :block],
        ['A256GCMKW', :block],
        ['A128KW', :block],
        ['A192KW', :block],
        ['A256KW', :block],
        ['ECDH-ES', :box],
        ['ECDH-ES+A128KW', :box],
        ['ECDH-ES+A192KW', :box],
        ['ECDH-ES+A256KW', :box],
        ['PBES2-HS256+A128KW', :block],
        ['PBES2-HS384+A192KW', :block],
        ['PBES2-HS512+A256KW', :block],
        ['RSA1_5', :rsa],
        ['RSA-OAEP', :rsa],
        ['RSA-OAEP-256', :rsa],
        ['dir', :direct]
      ], jwe_enc)
      jwe_zip = __jwe_zip_support_check__([
        'DEF'
      ], jwe_enc)
      jwk_kty, jwk_kty_EC_crv, jwk_kty_OKP_crv = __jwk_kty_support_check__([
        ['EC', ['P-256', 'P-384', 'P-521']],
        ['OKP', ['Ed25519', 'Ed25519ph', 'Ed448', 'Ed448ph', 'X25519', 'X448']],
        'RSA',
        'oct'
      ])
      jws_alg = __jws_alg_support_check__([
        'Ed25519',
        'Ed25519ph',
        'Ed448',
        'Ed448ph',
        'EdDSA',
        'ES256',
        'ES384',
        'ES512',
        'HS256',
        'HS384',
        'HS512',
        'PS256',
        'PS384',
        'PS512',
        'RS256',
        'RS384',
        'RS512',
        'X25519',
        'X448',
        'none'
      ])
      return {
        jwe: {
          alg: jwe_alg,
          enc: jwe_enc,
          zip: jwe_zip
        },
        jwk: {
          kty: jwk_kty,
          kty_EC_crv: jwk_kty_EC_crv,
          kty_OKP_crv: jwk_kty_OKP_crv
        },
        jws: {
          alg: jws_alg
        }
      }
    end
Returns the current listing of supported JOSE algorithms.

     !!!ruby
     JOSE::JWA.supports
     # => {:jwe=>
     #   {:alg=>
     #     ["A128GCMKW",
     #      "A192GCMKW",
     #      "A256GCMKW",
     #      "A128KW",
     #      "A192KW",
     #      "A256KW",
     #      "ECDH-ES",
     #      "ECDH-ES+A128KW",
     #      "ECDH-ES+A192KW",
     #      "ECDH-ES+A256KW",
     #      "PBES2-HS256+A128KW",
     #      "PBES2-HS384+A192KW",
     #      "PBES2-HS512+A256KW",
     #      "RSA1_5",
     #      "RSA-OAEP",
     #      "RSA-OAEP-256",
     #      "dir"],
     #    :enc=>
     #     ["A128GCM",
     #      "A192GCM",
     #      "A256GCM",
     #      "A128CBC-HS256",
     #      "A192CBC-HS384",
     #      "A256CBC-HS512"],
     #    :zip=>
     #     ["DEF"]},
     #  :jwk=>
     #   {:kty=>
     #     ["EC",
     #      "OKP",
     #      "RSA",
     #      "oct"],
     #    :kty_EC_crv=>
     #     ["P-256",
     #      "P-384",
     #      "P-521"],
     #    :kty_OKP_crv=>
     #     ["Ed25519",
     #      "Ed25519ph",
     #      "Ed448",
     #      "Ed448ph",
     #      "X25519",
     #      "X448"]},
     #  :jws=>
     #   {:alg=>
     #     ["Ed25519",
     #      "Ed25519ph",
     #      "Ed448",
     #      "Ed448ph",
     #      "EdDSA",
     #      "ES256",
     #      "ES384",
     #      "ES512",
     #      "HS256",
     #      "HS384",
     #      "HS512",
     #      "PS256",
     #      "PS384",
     #      "PS512",
     #      "RS256",
     #      "RS384",
     #      "RS512",
     #      "none"]}}

 @return [Hash]