make objcache consistent, get rid of jsalmon

This commit is contained in:
Mike Macgirvin 2024-01-25 21:56:55 +11:00
parent d777aee293
commit 198f875136
2 changed files with 8 additions and 67 deletions

View file

@ -73,30 +73,6 @@ class ActivityStreams
$this->valid = false;
}
}
// verify and unpack JSalmon signature if present
// This will only be the case for Zot6 packets
if ($this->valid && is_array($this->data) && array_key_exists('signed', $this->data)) {
$ret = JSalmon::verify($this->data);
$tmp = JSalmon::unpack($this->data['data']);
if ($ret && $ret['success'] && $tmp) {
if ($ret['signer']) {
logger('Unpacked: ' . json_encode($tmp, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOGGER_DATA, LOG_DEBUG);
$saved = json_encode($this->data, JSON_UNESCAPED_SLASHES);
$this->data = $tmp;
$this->meta['signer'] = $ret['signer'];
$this->meta['signed_data'] = $saved;
if ($ret['hubloc']) {
$this->meta['hubloc'] = $ret['hubloc'];
}
}
}
else {
logger('JSalmon verification failure.');
$this->valid = false;
}
}
}
// Attempt to assemble an Activity from what we were given.
@ -117,6 +93,9 @@ class ActivityStreams
$this->edsig = $this->get_compound_property('proof');
if ($this->edsig) {
$this->checkEddsaSignature();
if (!$this->sigok) {
$this->valid = false;
}
}
// Implied create activity required by C2S specification if no object is present
@ -436,25 +415,6 @@ class ActivityStreams
}
}
// verify and unpack JSalmon signature if present
// This may be present in Zot6 packets
if (is_array($x) && array_key_exists('signed', $x)) {
$ret = JSalmon::verify($x);
$tmp = JSalmon::unpack($x['data']);
if ($ret && $ret['success']) {
if ($ret['signer']) {
logger('Unpacked: ' . json_encode($tmp, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOGGER_DATA, LOG_DEBUG);
$saved = json_encode($x, JSON_UNESCAPED_SLASHES);
$x = $tmp;
$x['meta']['signer'] = $ret['signer'];
$x['meta']['signed_data'] = $saved;
if ($ret['hubloc']) {
$x['meta']['hubloc'] = $ret['hubloc'];
}
}
}
}
if ($first && is_array($x) && array_key_exists(0, $x)) {
return $x[0];
}

View file

@ -129,11 +129,6 @@ class Libzot
}
if ($msg) {
$actor = Channel::url($channel);
$actors = get_hubloc_id_urls_by_portable_id($channel['channel_hash']);
if ($encoding === 'activitystreams' && array_key_exists('actor', $msg) && in_array($msg['actor'], $actors)) {
$msg = JSalmon::sign($msg, $actor, $channel['channel_prvkey']);
}
$data['data'] = $msg;
} else {
unset($data['encoding']);
@ -1393,15 +1388,7 @@ class Libzot
if (!array_key_exists('comment_policy', $arr)) {
$arr['comment_policy'] = 'authenticated';
}
if (isset($AS->meta['signed_data'])) {
ObjCache::Set($arr['mid'] . '.nomad', $AS->meta['signed_data']);
// IConfig::Set($arr, 'activitypub', 'signed_data', $AS->meta['signed_data'], false);
$j = json_decode($AS->meta['signed_data'], true);
if ($j) {
ObjCache::Set($arr['mid'], json_encode(JSalmon::unpack($j['data'])), false);
// IConfig::Set($arr, 'activitypub', 'rawmsg', json_encode(JSalmon::unpack($j['data'])), false);
}
}
ObjCache::Set($arr['mid'], $AS->raw);
logger('Activity received: ' . print_r($arr, true), LOGGER_DATA, LOG_DEBUG);
logger('Activity recipients: ' . print_r($deliveries, true), LOGGER_DATA, LOG_DEBUG);
@ -2062,7 +2049,7 @@ class Libzot
}
}
else {
ObjCache::Set($arr['mid'] . '.nomad', $act->meta['signed_data']);
ObjCache::Set($arr['mid'], $act->raw);
$item_result = self::update_imported_item($sender, $arr, $r[0], $channel['channel_id'], $tag_delivery);
$DR->update('updated');
$result[] = $DR->get();
@ -2130,7 +2117,7 @@ class Libzot
$arr['body'] = str_replace("#^[", "[", $arr['body']);
}
// IConfig::Set($arr, 'activitypub', 'signed_data', $act->meta['signed_data'], false);
ObjCache::Set($arr['mid'] . '.nomad', $act->meta['signed_data']);
ObjCache::Set($arr['mid'], $act->raw);
$item_result = item_store($arr);
if ($item_result['success']) {
@ -2297,17 +2284,11 @@ class Libzot
$arr['replyto'] = $r[0]['replyto'];
}
}
if (
(isset($AS->meta) && isset($AS->meta['hubloc']) && $AS->meta['hubloc'])
|| ($arr['author_xchan'] === $arr['owner_xchan'])
) {
if ($AS->sigok) {
$arr['item_verified'] = true;
}
if (isset($AS->meta) && isset($AS->meta['signed_data']) && $AS->meta['signed_data']) {
// IConfig::Set($arr, 'activitypub', 'signed_data', $AS->meta['signed_data'], false);
ObjCache::Set($arr['mid'] . '.nomad', $AS->meta['signed_data']);
}
ObjCache::Set($arr['mid'], $AS->raw);
logger('FOF Activity received: ' . print_r($arr, true), LOGGER_DATA, LOG_DEBUG);
logger('FOF Activity recipient: ' . $channel['channel_hash'], LOGGER_DATA, LOG_DEBUG);