This openssl_spki_* funcs are very usefull to use with <keygen/> tag in html5.Example:<?phpsession_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>