opensslで作成した秘密鍵を使用してトークンの生成し成否を判定したいのですが、private-key.pemを利用して生成した
トークンを検証するにはpublic-key.pemを参照するしか無いのでしょうか?
ただのトークン生成なのでそもそもopensslの秘密鍵を利用して作成する意味が無い気がしているのですが、private-key.pemだけで署名の成否ができる方法があれば教えていただきたいです。
(今は検証クラスはopenssl_verifyを使っています)
<?php function sign(){ // $data に署名するデータが含まれていると仮定 $data = date("Y-m-d H:i:s"); // 署名したいデータ $pkeyid = openssl_pkey_get_private("file://home/openssl/sign/private-key.pem",'password'); $signature = ''; // 署名を計算 openssl_sign($data, $signature, $pkeyid,OPENSSL_ALGO_SHA256); return base64_encode($signature); } function verify($data{ // 署名を検証 $ok = openssl_verify($data, base64_dencode($signature), "file://home/openssl/sign/トークンを検証するにはpublic-key.pem", OPENSSL_ALGO_SHA256); if ($ok == 1) { return true; } if ($ok == 0) { return false; } }
あなたの回答
tips
プレビュー