Method: JWT::Multisig.add_jws

Defined in:
lib/jwt-multisig.rb

.add_jws(jwt, key_id, key_value, algorithm) ⇒ Hash

Generates and adds new JWS to existing JWT.

Parameters:

  • jwt (Hash)

    The existing JWT.

  • key_id (String)

    The JWS key ID.

  • key_value (String, OpenSSL::PKey::PKey)

    The private key in PEM format or as instance of OpenSSL::PKey::PKey.

  • algorithm (String)

    The signature algorithm.

Returns:

  • (Hash)

    The JWT with added JWS.

Raises:

  • (JWT::EncodeError)


65
66
67
68
69
70
71
72
# File 'lib/jwt-multisig.rb', line 65

def add_jws(jwt, key_id, key_value, algorithm)
  proxy_exception JWT::EncodeError do
    remove_jws(jwt, key_id).tap do |new_jwt|
      payload = JSON.parse(base64_decode(new_jwt.fetch(:payload)))
      new_jwt.fetch(:signatures) << generate_jws(payload, key_id, key_value, algorithm)
    end
  end
end