Merge remote-tracking branch 'mike/master' into dev
This commit is contained in:
commit
a1f9d40d08
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
namespace Zotlabs\Zot;
|
||||
namespace Zotlabs\Lib;
|
||||
|
||||
class DReport {
|
||||
|
@ -1,19 +0,0 @@
|
||||
<?php /** @file */
|
||||
|
||||
namespace Zotlabs\Lib;
|
||||
|
||||
/*
|
||||
* Abstraction class for dealing with alternate networks (which of course do not exist, hence the abstraction)
|
||||
*/
|
||||
|
||||
|
||||
abstract class ProtoDriver {
|
||||
abstract protected function discover($channel,$location);
|
||||
abstract protected function deliver($item,$channel,$recipients);
|
||||
abstract protected function collect($channel,$connection);
|
||||
abstract protected function change_permissions($permissions,$channel,$recipient);
|
||||
abstract protected function acknowledge_permissions($permissions,$channel,$recipient);
|
||||
abstract protected function deliver_private($item,$channel,$recipients);
|
||||
abstract protected function collect_private($channel,$connection);
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Zotlabs\Zot;
|
||||
namespace Zotlabs\Lib;
|
||||
|
||||
|
||||
class Verify {
|
@ -1,30 +0,0 @@
|
||||
<?php /** @file */
|
||||
|
||||
namespace Zotlabs\Lib;
|
||||
|
||||
|
||||
class ZotDriver extends ProtoDriver {
|
||||
|
||||
protected function discover($channel,$location) {
|
||||
|
||||
}
|
||||
protected function deliver($item,$channel,$recipients) {
|
||||
|
||||
}
|
||||
protected function collect($channel,$connection) {
|
||||
|
||||
}
|
||||
protected function change_permissions($permissions,$channel,$recipient) {
|
||||
|
||||
}
|
||||
protected function acknowledge_permissions($permissions,$channel,$recipient) {
|
||||
|
||||
}
|
||||
protected function deliver_private($item,$channel,$recipients) {
|
||||
|
||||
}
|
||||
protected function collect_private($channel,$connection) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -166,7 +166,7 @@ class Magic extends \Zotlabs\Web\Controller {
|
||||
|
||||
$token = random_string();
|
||||
|
||||
\Zotlabs\Zot\Verify::create('auth',$channel['channel_id'],$token,$x[0]['hubloc_url']);
|
||||
\Zotlabs\Lib\Verify::create('auth',$channel['channel_id'],$token,$x[0]['hubloc_url']);
|
||||
|
||||
$target_url = $x[0]['hubloc_callback'] . '/?f=&auth=' . urlencode(channel_reddress($channel))
|
||||
. '&sec=' . $token . '&dest=' . urlencode($dest) . '&version=' . ZOT_REVISION;
|
||||
|
@ -42,7 +42,7 @@ class Owa extends \Zotlabs\Web\Controller {
|
||||
logger('OWA success: ' . $hubloc['hubloc_addr'],LOGGER_DATA);
|
||||
$ret['success'] = true;
|
||||
$token = random_string(32);
|
||||
\Zotlabs\Zot\Verify::create('owt',0,$token,$hubloc['hubloc_addr']);
|
||||
\Zotlabs\Lib\Verify::create('owt',0,$token,$hubloc['hubloc_addr']);
|
||||
$result = '';
|
||||
openssl_public_encrypt($token,$result,$hubloc['xchan_pubkey']);
|
||||
$ret['encrypted_token'] = base64url_encode($result);
|
||||
|
@ -119,21 +119,27 @@ function crypto_encapsulate($data,$pubkey,$alg='aes256cbc') {
|
||||
}
|
||||
|
||||
function other_encapsulate($data,$pubkey,$alg) {
|
||||
|
||||
if(! $pubkey)
|
||||
logger('no key. data: ' . $data);
|
||||
|
||||
$oaep = false;
|
||||
// This default will change in the future. For now make it backward compatible.
|
||||
|
||||
if(strpos($alg,'.oaep')) {
|
||||
$oaep = true;
|
||||
$subalg = substr($alg,0,-5);
|
||||
}
|
||||
else {
|
||||
$subalg = $alg;
|
||||
$padding = OPENSSL_PKCS1_PADDING;
|
||||
$base = $alg;
|
||||
|
||||
$exts = explode('.',$alg);
|
||||
if(count($exts) > 1) {
|
||||
switch($exts[1]) {
|
||||
case 'oaep':
|
||||
$padding = OPENSSL_PKCS1_OAEP_PADDING;
|
||||
break;
|
||||
}
|
||||
$base = $exts[0];
|
||||
}
|
||||
|
||||
|
||||
$fn = strtoupper($subalg) . '_encrypt';
|
||||
$fn = strtoupper($base) . '_encrypt';
|
||||
if(function_exists($fn)) {
|
||||
|
||||
// A bit hesitant to use openssl_random_pseudo_bytes() as we know
|
||||
@ -151,14 +157,14 @@ function other_encapsulate($data,$pubkey,$alg) {
|
||||
$iv = openssl_random_pseudo_bytes(256);
|
||||
$result['data'] = base64url_encode($fn($data,$key,$iv),true);
|
||||
// log the offending call so we can track it down
|
||||
if(! openssl_public_encrypt($key,$k,$pubkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING))) {
|
||||
if(! openssl_public_encrypt($key,$k,$pubkey,$padding)) {
|
||||
$x = debug_backtrace();
|
||||
logger('RSA failed. ' . print_r($x[0],true));
|
||||
}
|
||||
|
||||
$result['alg'] = $alg;
|
||||
$result['key'] = base64url_encode($k,true);
|
||||
openssl_public_encrypt($iv,$i,$pubkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING));
|
||||
openssl_public_encrypt($iv,$i,$pubkey,$padding);
|
||||
$result['iv'] = base64url_encode($i,true);
|
||||
return $result;
|
||||
}
|
||||
@ -229,20 +235,25 @@ function crypto_unencapsulate($data,$prvkey) {
|
||||
|
||||
function other_unencapsulate($data,$prvkey,$alg) {
|
||||
|
||||
$oaep = false;
|
||||
// This default will change in the future. For now make it backward compatible.
|
||||
|
||||
if(strpos($alg,'.oaep')) {
|
||||
$oaep = true;
|
||||
$subalg = substr($alg,0,-5);
|
||||
}
|
||||
else {
|
||||
$subalg = $alg;
|
||||
$padding = OPENSSL_PKCS1_PADDING;
|
||||
$base = $alg;
|
||||
|
||||
$exts = explode('.',$alg);
|
||||
if(count($exts) > 1) {
|
||||
switch($exts[1]) {
|
||||
case 'oaep':
|
||||
$padding = OPENSSL_PKCS1_OAEP_PADDING;
|
||||
break;
|
||||
}
|
||||
$base = $exts[0];
|
||||
}
|
||||
|
||||
$fn = strtoupper($subalg) . '_decrypt';
|
||||
$fn = strtoupper($base) . '_decrypt';
|
||||
if(function_exists($fn)) {
|
||||
openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING));
|
||||
openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey,(($oaep) ? OPENSSL_PKCS1_OAEP_PADDING : OPENSSL_PKCS1_PADDING));
|
||||
openssl_private_decrypt(base64url_decode($data['key']),$k,$prvkey,$padding);
|
||||
openssl_private_decrypt(base64url_decode($data['iv']),$i,$prvkey,$padding);
|
||||
return $fn(base64url_decode($data['data']),$k,$i);
|
||||
}
|
||||
else {
|
||||
|
@ -1200,6 +1200,13 @@ function event_store_item($arr, $event) {
|
||||
));
|
||||
}
|
||||
|
||||
// propagate the event resource_id so that posts containing it are easily searchable in downstream copies
|
||||
// of the item which have not stored the actual event. Required for Diaspora event federation as Diaspora
|
||||
// event_participation messages refer to the event resource_id as a parent, while out own event attendance
|
||||
// activities refer to the item message_id as the parent.
|
||||
|
||||
set_iconfig($item_arr, 'system','event_id',$event['event_hash'],true);
|
||||
|
||||
$res = item_store($item_arr);
|
||||
|
||||
$item_id = $res['item_id'];
|
||||
|
@ -265,9 +265,9 @@ function red_zrlify_img_callback($matches) {
|
||||
*/
|
||||
function owt_init($token) {
|
||||
|
||||
\Zotlabs\Zot\Verify::purge('owt', '3 MINUTE');
|
||||
\Zotlabs\Lib\Verify::purge('owt', '3 MINUTE');
|
||||
|
||||
$ob_hash = \Zotlabs\Zot\Verify::get_meta('owt', 0, $token);
|
||||
$ob_hash = \Zotlabs\Lib\Verify::get_meta('owt', 0, $token);
|
||||
|
||||
if($ob_hash === false) {
|
||||
return;
|
||||
|
@ -1728,7 +1728,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
|
||||
foreach($deliveries as $d) {
|
||||
$local_public = $public;
|
||||
|
||||
$DR = new Zotlabs\Zot\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
|
||||
$DR = new Zotlabs\Lib\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
|
||||
|
||||
$r = q("select * from channel where channel_hash = '%s' limit 1",
|
||||
dbesc($d['hash'])
|
||||
@ -2257,7 +2257,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
|
||||
|
||||
foreach($deliveries as $d) {
|
||||
|
||||
$DR = new Zotlabs\Zot\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
|
||||
$DR = new Zotlabs\Lib\DReport(z_root(),$sender['hash'],$d['hash'],$arr['mid']);
|
||||
|
||||
$r = q("select * from channel where channel_hash = '%s' limit 1",
|
||||
dbesc($d['hash'])
|
||||
@ -3898,11 +3898,11 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
|
||||
// we should probably do this for all items, but usually we only send one.
|
||||
|
||||
if(array_key_exists('item',$arr) && is_array($arr['item'][0])) {
|
||||
$DR = new Zotlabs\Zot\DReport(z_root(),$d['hash'],$d['hash'],$arr['item'][0]['message_id'],'channel sync processed');
|
||||
$DR = new Zotlabs\Lib\DReport(z_root(),$d['hash'],$d['hash'],$arr['item'][0]['message_id'],'channel sync processed');
|
||||
$DR->addto_recipient($channel['channel_name'] . ' <' . channel_reddress($channel) . '>');
|
||||
}
|
||||
else
|
||||
$DR = new Zotlabs\Zot\DReport(z_root(),$d['hash'],$d['hash'],'sync packet','channel sync delivered');
|
||||
$DR = new Zotlabs\Lib\DReport(z_root(),$d['hash'],$d['hash'],'sync packet','channel sync delivered');
|
||||
|
||||
$result[] = $DR->get();
|
||||
}
|
||||
@ -4913,7 +4913,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
|
||||
* the web server. We should probably convert this to webserver time rather than DB time so
|
||||
* that the different clocks won't affect it and allow us to keep the time short.
|
||||
*/
|
||||
Zotlabs\Zot\Verify::purge('auth', '30 MINUTE');
|
||||
Zotlabs\Lib\Verify::purge('auth', '30 MINUTE');
|
||||
|
||||
$y = q("select xchan_pubkey from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($sender_hash)
|
||||
@ -4954,7 +4954,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
|
||||
// This additionally checks for forged sites since we already stored the expected result in meta
|
||||
// and we've already verified that this is them via zot_gethub() and that their key signed our token
|
||||
|
||||
$z = Zotlabs\Zot\Verify::match('auth',$c[0]['channel_id'],$data['secret'],$data['sender']['url']);
|
||||
$z = Zotlabs\Lib\Verify::match('auth',$c[0]['channel_id'],$data['secret'],$data['sender']['url']);
|
||||
if (! $z) {
|
||||
logger('mod_zot: auth_check: verification key not found.');
|
||||
$ret['message'] .= 'verification key not found' . EOL;
|
||||
|
Reference in New Issue
Block a user