<?php

echo "Generating private key...";
$key = openssl_pkey_new(array('digest_alg' => 'sha1',
                              'private_key_type' => OPENSSL_KEYTYPE_RSA,
                              'private_key_bits' => 2048));
echo "done<br/>";
echo "============================<br/>";

echo "Creating SPKAC...<br/>";
if (function_exists('openssl_spki_new')){
 $spki = (empty($_POST['challenge'])) ?
   openssl_spki_new($key, 'wtfd00d') :
   openssl_spki_new($key, $_POST['challenge']);
 echo $spki;
}
echo "<br/>done<br/>";
echo "============================<br/>";

echo "Verifying SPKAC...<br/>";
if (function_exists('openssl_spki_verify')){
 $w = (empty($_POST['spki-key'])) ?
   openssl_spki_verify(preg_replace('/SPKAC=/', '', $spki)) :
   openssl_spki_verify($_POST['spki-key']);
 var_dump($w);
}
echo "<br/>============================<br/>";

echo "SPKAC challenge...<br/>";
if (function_exists('openssl_spki_export_challenge')){
 $x = (empty($_POST['spki-key'])) ?
   openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spki)) :
   openssl_spki_export_challenge($_POST['spki-key']);
 echo $x;
}
echo "<br/>done<br/>";
echo "============================<br/>";

echo "SPKAC details...<br/>";
if (function_exists('openssl_spki_details')){
 $y = (empty($_POST['spki-key'])) ?
   openssl_spki_details(preg_replace('/SPKAC=/', '', $spki)) :
   openssl_spki_details($_POST['spki-key']);
 echo '<pre>'; print_r($y); echo '</pre>';
}
echo "done<br/>";
echo "============================<br/>";

echo "Exporting public key from SPKAC...<br/>";
if (function_exists('openssl_spki_export')){
 $z = (empty($_POST['spki-key'])) ?
   openssl_spki_export(preg_replace('/SPKAC=/', '', $spki)) :
   openssl_spki_export($_POST['spki-key']);
 echo '<pre>'; print_r($z); echo '</pre>';
}
echo "done<br/>";
echo "============================<br/>";

openssl_pkey_free($key);

?>
