装置
composer require whereof/signature
反对加密形式
alg | 实现形式 | key参数 |
---|
ES384 | openssl | 数组蕴含publicKey和privateKey |
ES256 | openssl | 数组蕴含publicKey和privateKey |
HS256 | hash_hmac | 字符串 |
HS384 | hash_hmac | 字符串 |
HS512 | hash_hmac | 字符串 |
RS256 | openssl | 数组蕴含publicKey和privateKey |
RS384 | openssl | 数组蕴含publicKey和privateKey |
RS512 | openssl | 数组蕴含publicKey和privateKey |
EdDSA | sodium_crypto | 字符串 |
异样捕获
whereof\Signature\Exceptions\SignatureInvalidException 签名不正确whereof\Signature\Exceptions\BeforeValidException 签名在某个工夫点之后能力用whereof\Signature\Exceptions\ExpiredException 签名生效
Example
$time = time();$payload = [ 'iss' => 'github.com',//签发人 'iat' => $time, //签发工夫 'nbf' => $time, //生成签名之后失效 'exp' => $time + 7200, //过期工夫 'data' => [ 'id' => 88, 'username' => 'whereof' ],];$jwt = new \whereof\Signature\Jwt(\whereof\Signature\Support\KeyHelper::key());$token = $jwt->encode($payload);$data = $jwt->encode($token);
Example with RS256 (openssl)
$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::RS256(),'RS256'));$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::RS256Pem(),'RS256'));$token = $jwt->encode($payload);$data = $jwt->decode($token);
Example with EdDSA (libsodium and Ed25519 signature)
$jwt = new \whereof\Signature\Jwt( \whereof\Signature\Support\KeyHelper::EdDSA(),'EdDSA'));$token = $jwt->encode($payload);$data = $jwt->decode($token);