openssl_spki_verify

(PHP 5 >= 5.6.0, PHP 7)

openssl_spki_verifyVérifie une clé publique signée, et effectue un challenge

Description

string openssl_spki_verify ( string &$spkac )

Vérifie une clé publique signée, et effectue un challenge.

Liste de paramètres

spkac

Une clé publique signée valide

Valeurs de retour

Retourne un booléen en cas de succès ou d'échec.

Erreurs / Exceptions

Emets une alerte de niveau E_WARNING si un argument invalide est passé au paramètre spkac parameter.

Exemples

Exemple #1 Exemple avec openssl_spki_verify()

Valide une clé publique signée existante et effectue un challenge

<?php
$pkey 
openssl_pkey_new('secret password');
$spkac openssl_spki_new($pkey'challenge string');

if (
openssl_spki_verify(preg_replace('/SPKAC=/'''$spkac))) {
    echo 
$spkac;
} else {
    echo 
"SPKAC validation failed";
}
?>

Exemple #2 Exemple avec openssl_spki_verify() depuis <keygen>

Valide une clé publique signée existante issue d'un élément <keygen>

<?php
if (openssl_spki_verify(preg_replace('/SPKAC=/'''$_POST['spkac']))) {
    echo 
$spkac;
} else {
    echo 
"SPKAC validation failed";
}
?>
<keygen name="spkac" challenge="challenge string" keytype="RSA">

Voir aussi

add a note add a note

User Contributed Notes 1 note

up
1
carloshlfzanon at gmail dot com
5 months ago
This openssl_spki_* funcs are very usefull to use with <keygen/> tag in html5.

Example:

<?php
session_start
();

// form submitted... (?)
if(isset($_POST['security']))
{
   
// If true, the send from <keygen/> is valid and you can
    // test the challenge too
   
if(openssl_spki_verify($_POST['security']))
    {
       
// Gets challenge string
       
$challenge = openssl_spki_export_challenge($_POST['security']);

       
// If true... you are not trying to trick it.
        // If user open 2 windows to prevent data lost from a "mistake" or him just press "back" button
        //  and re-send last data... you can handle it using something like it.
       
if($challenge == $_SESSION['lastForm'])
        {
            echo
'Ok, this one is valid.', '<br><br>';
        }
        else
        {
            echo
'Nice try... nice try...', '<br><br>';
        }
    }

}

// If you open two window, the challenge won't match!
$_SESSION['lastForm'] = hash('md5', microtime(true));

?>

<!DOCTYPE html>
<html>
<body>

<form action="/index.php" method="post">
  Encryption: <keygen name="security" keytype="rsa" challenge="<?php echo $_SESSION['lastForm']; ?>"/>
  <input type="submit">
</form>

</body>
</html>
To Top