Add JSalmon signing library for Zot6. See https://macgirvin.com/wiki/mike/Zot%2BVI/Encryption/Signatures
This commit is contained in:
parent
2ed77b5986
commit
34a0ec4089
38
Zotlabs/Lib/JSalmon.php
Normal file
38
Zotlabs/Lib/JSalmon.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Zotlabs\Lib;
|
||||||
|
|
||||||
|
|
||||||
|
class JSalmon {
|
||||||
|
|
||||||
|
static function sign($data,$key_id,$key) {
|
||||||
|
|
||||||
|
$arr = $data;
|
||||||
|
$data = json_encode($data,JSON_UNESCAPED_SLASHES);
|
||||||
|
$data = base64url_encode($data, false); // do not strip padding
|
||||||
|
$data_type = 'application/x-zot+json';
|
||||||
|
$encoding = 'base64url';
|
||||||
|
$algorithm = 'RSA-SHA256';
|
||||||
|
|
||||||
|
$data = preg_replace('/\s+/','',$data);
|
||||||
|
|
||||||
|
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
|
||||||
|
|
||||||
|
$precomputed = '.' . base64url_encode($data_type,false) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
|
||||||
|
|
||||||
|
$signature = base64url_encode(rsa_sign($data . $precomputed, $key), false);
|
||||||
|
|
||||||
|
return ([
|
||||||
|
'signed' => true,
|
||||||
|
'data' => $data,
|
||||||
|
'data_type' => $data_type,
|
||||||
|
'encoding' => $encoding,
|
||||||
|
'alg' => $algorithm,
|
||||||
|
'sigs' => [
|
||||||
|
'value' => $signature
|
||||||
|
'key_id' => base64url_encode($key_id)
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user