has('use')) { $bag->add(Message::medium('The parameter "use" should be added.')); } elseif (! in_array($jwk->get('use'), ['sig', 'enc'], true)) { $bag->add( Message::high(sprintf( 'The parameter "use" has an unsupported value "%s". Please use "sig" (signature) or "enc" (encryption).', $jwk->get('use') )) ); } if ($jwk->has('key_ops')) { $key_ops = $jwk->get('key_ops'); if (! is_array($key_ops)) { $bag->add(Message::high('The parameter "key_ops" must be an array of key operation values.')); } else { $allowedOps = [ 'sign', 'verify', 'encrypt', 'decrypt', 'wrapKey', 'unwrapKey', 'deriveKey', 'deriveBits', ]; $unsupportedOps = array_diff($key_ops, $allowedOps); if ($unsupportedOps !== []) { $bag->add( Message::high(sprintf( 'The parameter "key_ops" contains unsupported values: "%s". Please use only the following values: %s.', implode('", "', $unsupportedOps), implode(', ', $allowedOps) )) ); } } } } }