syruppay / jose
SyrupPay 商户的Jose PHP库
v1.1.2
2017-01-24 01:16 UTC
Requires
- php: >=5.2.0
- phpseclib/phpseclib: 0.3.10
Requires (Dev)
- phpdocumentor/phpdocumentor: 2.*
- phpunit/phpunit: 4.8.23
This package is not auto-updated.
Last update: 2024-09-20 22:06:52 UTC
README
PHP 实现的 JOSE (Javascript Object Signing and Encryption),遵循 RFC 7516 和 RFC 7515 规范。JOSE 规范用于 SyrupPay 支付数据加密和解密以及 AccessToken 发布等,该库是为 SyrupPay 服务的商户分发而实现的。
支持的PHP版本
=> PHP 5.2.0
安装
composer (packagist)
"syruppay/jose": "v1.1.2"
用法
###JWE
<?php //COMPOSER의 autoload $baseDir = ""; require_once($baseDir . '/vendor/autoload.php'); //암호화 데이터 $payload = '{"iss":"syruppap_sample", "exp":1300819380, "isSample":true}'; //SyrupPay 발급 iss $iss = 'sample'; //SyrupPay 발급 암복호화 키 (AES256 KeyWrap 기준) $key = '12345678901234561234567890123456'; /* * JWE header 규격 * JoseHeaderSpec::ALG : key wrap encryption algorithm. 아래 Supported JOSE encryption algorithms 참조 * JoseHeaderSpec::ENC : content encryption algorithm. 아래 Supported JOSE encryption algorithms 참조 */ $jose = new syruppay_jose_Jose(); $jweToken = $jose->configuration( syruppay_jose_JoseBuilders::JsonEncryptionCompactSerializationBuilder() ->header(new syruppay_jose_JoseHeader( array(JOSE_HEADER_ALG => JWA_A256KW, JOSE_HEADER_ENG => JWA_A128CBC_HS256, JOSE_HEADER_KID => $iss))) ->payload($payload) ->key($key) )->serialization(); var_dump($jweToken); $jose = new syruppay_jose_Jose(); $payload = $jose->configuration( syruppay_jose_JoseBuilders::compactDeserializationBuilder() ->serializedSource($jweToken) ->key($key) )->deserialization(); var_dump($payload);
###JWS
<?php //COMPOSER의 autoload $baseDir = ""; require_once($baseDir . '/vendor/autoload.php'); //Sign 데이터 $payload = '{"iss":"syruppap_sample", "exp":1300819380, "isSample":true}'; //SyrupPay 발급 iss $iss = 'sample'; //SyrupPay 발급 sing 키 (HmacSha256 기준) $key = '12345678901234561234567890123456'; /* * JWS header 규격 * JoseHeaderSpec::ALG : signature algorithm. 아래 Supported JOSE encryption algorithms 참조 */ $jose = new syruppay_jose_Jose(); $jwsToken = $jose->configuration( syruppay_jose_JoseBuilders::JsonSignatureCompactSerializationBuilder() ->header(new syruppay_jose_JoseHeader( array(JOSE_HEADER_ALG => JWA_HS256, JOSE_HEADER_TYP => 'JWT', JOSE_HEADER_KID => $iss))) ->payload($payload) ->key($key) )->serialization(); var_dump($jwsToken); $jose = new syruppay_jose_Jose(); $claims = $jose->configuration( syruppay_jose_JoseBuilders::compactDeserializationBuilder() ->serializedSource($jweToken) ->key($key) )->deserialization(); var_dump($claims);
支持的 JOSE 加密算法
JWE
JWE 使用以下 alg 和 enc 中指定的算法加密输入的 payload。alg 使用已发布的(或共享的)key 对内部随机生成的 CEK(内容加密密钥)进行加密,enc 使用内部生成的 CEK 对 payload 进行加密,并生成 header、CEK、iv、payload 的完整性数据。
JWE 的 "alg"(算法)头参数值
JWE 的 "enc"(加密算法)头参数值
JWS
JWS 使用 alg 中指定的算法保证输入 payload 的完整性。alg 使用已发布的 key 生成完整性数据。
JWS 的 "alg"(算法)头参数值
许可证
该库在 MIT 许可证的条款下作为开源软件提供。MIT License.