Función PHP abressl_spki_verify()

La función openssl_spki_verify() es una función integrada en PHP y se usa para validar la clave pública firmada proporcionada y el desafío. Esta debe ser la clave pública correspondiente a la clave privada utilizada para la firma. Verifica una clave pública firmada y un desafío.

Sintaxis:

string openssl_spki_verify( string &$spkac )

Parámetros: Esta función acepta un solo parámetro como se mencionó anteriormente y se describe a continuación.

  • $spkac: el SPKI original identificaba a los principales solo como claves públicas, pero permitía la autoridad vinculante para esas claves y la delegación de autoridad de una clave a otra.

Valores devueltos: esta función devuelve un valor booleano en caso de éxito o fracaso.

Errores/Excepciones: si se pasa un argumento no válido a través del parámetro spkac , el nivel E_WARNING emite un error.

Ejemplo: El siguiente programa ilustra la función openssl_spki_verify() en PHP.

PHP

<?php
   
error_reporting(E_ERROR  | E_PARSE);
  
/* Array of private key sizes to test */
$ksize = array('1024'=>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)
    );
}
?>

Producción:

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)

Referencia: https://www.php.net/manual/en/function.openssl-spki-verify.php

Publicación traducida automáticamente

Artículo escrito por shubham_singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *