private function rsa($public_or_private_key, $padding_mode) { if ($public_or_private_key instanceof JOSE_JWK) { $rsa = $public_or_private_key->toKey(); } else { if ($public_or_private_key instanceof RSA) { $rsa = $public_or_private_key; } else { $rsa = new RSA(); $rsa->loadKey($public_or_private_key); } } $rsa->setHash($this->digest()); $rsa->setMGFHash($this->digest()); $rsa->setSaltLength(false); # NOTE: https://github.com/phpseclib/phpseclib/issues/768 $rsa->setSignatureMode($padding_mode); return $rsa; }