工行沙箱环境测试过程中,出现参数错误,解决如下:
Warning: Missing argument 6 for IcbcSignature::verify(), called in
原verify类函数
public static function verify($strToSign, $signType, $publicKey, $charset, $signedStr, $password)//原静态参数; { if (IcbcConstants::$SIGN_TYPE_CA == $signType) { return IcbcCa::verify($strToSign, $publicKey, $password); } elseif (IcbcConstants::$SIGN_TYPE_RSA == $signType) { return RSA::verify($strToSign, $signedStr, $publicKey, IcbcConstants::$SIGN_SHA1RSA_ALGORITHMS); } elseif (IcbcConstants::$SIGN_TYPE_RSA2 == $signType) { return RSA::verify($strToSign, $signedStr, $publicKey, IcbcConstants::$SIGN_SHA256RSA_ALGORITHMS); } else { throw new Exception("Only support CA or RSA signature verify!"); } }
原因在于第六个参数$password,用于CA证书的验证;对于RSA\RSA2中,根本没有用到,导致的。
最直接的解决方式:IcbcSignature.php文件头部添加代码
ini_set("display_errors", "off"); error_reporting(E_ALL | E_STRICT);
只是关闭错误信息提醒,如果要彻底解决该问题,将该类拆分成两个即可,一个专门用于CA证书的验证即可。