<?php
error_reporting
(E_ERROR | E_PARSE);
$ksize
=
array
(
'1024'
=>1024,
'2048'
=>2048,
'4096'
=>4096);
$algo
=
array
(
'sha512'
=>OPENSSL_ALGO_SHA512,
'rmd160'
=>OPENSSL_ALGO_RMD160
);
foreach
(
$ksize
as
$k
=>
$v
) {
$pkey
= openssl_pkey_new(
array
(
'digest_alg'
=>
'sha512'
,
'private_key_type'
=> OPENSSL_KEYTYPE_RSA,
'private_key_bits'
=>
$v
)
);
openssl_pkey_export(
$pkey
,
$pass
);
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
);
}
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)
);
}
?>