more robust (though wasteful) salmon, try both encodings
This commit is contained in:
parent
d2e20d029a
commit
d453560be9
|
@ -130,7 +130,13 @@ EOT;
|
||||||
$rsa->setHash('sha256');
|
$rsa->setHash('sha256');
|
||||||
$rsa->loadKey($owner['sprvkey']);
|
$rsa->loadKey($owner['sprvkey']);
|
||||||
|
|
||||||
$signature = base64url_encode($rsa->sign($data));
|
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
|
||||||
|
|
||||||
|
$precomputed = '.YXBwbGljYXRpb24vYXRvbSt4bWw=.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
|
||||||
|
|
||||||
|
$signature = base64url_encode($rsa->sign($data . $precomputed));
|
||||||
|
|
||||||
|
$signature2 = base64url_encode($rsa->sign($data));
|
||||||
|
|
||||||
$salmon_tpl = load_view_file('view/magicsig.tpl');
|
$salmon_tpl = load_view_file('view/magicsig.tpl');
|
||||||
$salmon = replace_macros($salmon_tpl,array(
|
$salmon = replace_macros($salmon_tpl,array(
|
||||||
|
@ -148,7 +154,32 @@ EOT;
|
||||||
));
|
));
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
echo "CURL returned: " . $a->get_curl_code() . "\n";
|
$return_code = trim($a->get_curl_code);
|
||||||
|
|
||||||
|
// check for success, e.g. 2xx
|
||||||
|
|
||||||
|
if(substr($return_code,0,1) !== '2') {
|
||||||
|
|
||||||
|
// Entirely likely that their salmon implementation is
|
||||||
|
// non-compliant. Let's try once more, this time only signing
|
||||||
|
// the data, without the precomputed blob
|
||||||
|
|
||||||
|
$salmon = replace_macros($salmon_tpl,array(
|
||||||
|
'$data' => $data,
|
||||||
|
'$encoding' => $encoding,
|
||||||
|
'$algorithm' => $algorithm,
|
||||||
|
'$keyhash' => $keyhash,
|
||||||
|
'$signature' => $signature2
|
||||||
|
));
|
||||||
|
|
||||||
|
// slap them
|
||||||
|
post_url($contact['notify'],$salmon, array(
|
||||||
|
'Content-type: application/magic-envelope+xml',
|
||||||
|
'Content-length: ' . strlen($salmon)
|
||||||
|
));
|
||||||
|
$return_code = trim($a->get_curl_code);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue