📜  PHP openssl_spki_verify()函数

📅  最后修改于: 2022-05-13 01:56:41.708000             🧑  作者: Mango

PHP openssl_spki_verify()函数

openssl_spki_verify()函数是PHP中的内置函数,用于验证提供的签名公钥和质询。这应该是与用于签名的私钥对应的公钥。它验证签名的公钥和挑战。

句法:

string openssl_spki_verify( string &$spkac )

参数:此函数接受如上所述和下文所述的单个参数。

  • $spkac:最初的 SPKI 仅将主体标识为公钥,但允许对这些密钥进行绑定授权以及从一个密钥到另一个密钥的授权。

返回值:此函数返回成功或失败的布尔值。

错误/异常:如果通过spkac参数传递了无效参数,则 E_WARNING 级别会发出错误。

示例:下面的程序说明了PHP中的openssl_spki_verify()函数。

PHP
1024,
               '2048'=>2048,
               '4096'=>4096);
   
/* Array of available hashings to test */
$algo = array(
    'sha512'=>OPENSSL_ALGO_SHA512,
    'rmd160'=>OPENSSL_ALGO_RMD160
);
   
/* Loop over key sizes for test */
foreach($ksize as $k => $v) {
   
    /* generate new private key of 
    specified size to use for tests */
    $pkey = openssl_pkey_new(array
        ('digest_alg' => 'sha512',
        'private_key_type' => OPENSSL_KEYTYPE_RSA,
        'private_key_bits' => $v)
    );
      
    openssl_pkey_export($pkey, $pass);
   
    /* Loop to create and verify results */
    foreach($algo as $key => $value) {
        $spkac = openssl_spki_new(
                $pkey, _uuid(), $value);
                  
        echo "Positive verification:: Algo: "
                . $key . ", value:";
          
        var_dump(openssl_spki_verify(
            preg_replace('/SPKAC=/', '', $spkac)));
              
        echo "Negative verification:: Algo: "
                . $key . ", value:";
        var_dump(openssl_spki_verify(
                $spkac . 'Make it fail'));
        echo "\n";
    }
    openssl_free_key($pkey);
}
   
/* Generate a random challenge */
function _uuid() {
    return sprintf(
        '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', 
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), 
        mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
        mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}
?>


输出:

Positive verification:: Algo: sha512, value:bool(true)
Negative verification:: Algo: sha512, value:bool(false)

Positive verification:: Algo: rmd160, value:bool(true)
Negative verification:: Algo: rmd160, value:bool(false)

Positive verification:: Algo: sha512, value:bool(true)
Negative verification:: Algo: sha512, value:bool(false)

Positive verification:: Algo: rmd160, value:bool(true)
Negative verification:: Algo: rmd160, value:bool(false)

Positive verification:: Algo: sha512, value:bool(true)
Negative verification:: Algo: sha512, value:bool(false)

Positive verification:: Algo: rmd160, value:bool(true)
Negative verification:: Algo: rmd160, value:bool(false)

参考:https://www. PHP.net/manual/en/函数.openssl-spki-verify。 PHP