diff --git a/lib/Controller/ActivityPubController.php b/lib/Controller/ActivityPubController.php index 39862334..9e0a9a84 100644 --- a/lib/Controller/ActivityPubController.php +++ b/lib/Controller/ActivityPubController.php @@ -167,9 +167,9 @@ class ActivityPubController extends Controller { $activity = $this->importService->importFromJson($body); if (!$this->signatureService->checkObject($activity)) { - $activity->setOrigin($origin); + $activity->setOrigin($origin, SignatureService::ORIGIN_HEADER); } - + try { $this->importService->parseIncomingRequest($activity); } catch (UnknownItemException $e) { @@ -208,7 +208,7 @@ class ActivityPubController extends Controller { $activity = $this->importService->importFromJson($body); if (!$this->signatureService->checkObject($activity)) { - $activity->setOrigin($origin); + $activity->setOrigin($origin, SignatureService::ORIGIN_HEADER); } try { diff --git a/lib/Model/ActivityPub/Item.php b/lib/Model/ActivityPub/Item.php index 1b70038e..f2c0f89f 100644 --- a/lib/Model/ActivityPub/Item.php +++ b/lib/Model/ActivityPub/Item.php @@ -103,6 +103,9 @@ class Item { /** @var string */ private $origin = ''; + /** @var int */ + private $originSource = 0; + /** * @return string @@ -432,13 +435,23 @@ class Item { return $this->origin; } + /** + * @return int + */ + public function getOriginSource(): int { + return $this->originSource; + } + /** * @param string $origin * + * @param int $source + * * @return Item */ - public function setOrigin(string $origin): Item { + public function setOrigin(string $origin, int $source): Item { $this->origin = $origin; + $this->originSource = $source; return $this; } @@ -512,7 +525,6 @@ class Item { } - /** * @return string */ diff --git a/lib/Service/SignatureService.php b/lib/Service/SignatureService.php index 1c8d2628..f9eb5c64 100644 --- a/lib/Service/SignatureService.php +++ b/lib/Service/SignatureService.php @@ -56,6 +56,10 @@ class SignatureService { use TArrayTools; + const ORIGIN_HEADER = 1; + const ORIGIN_SIGNATURE = 2; + + const DATE_FORMAT = 'D, d M Y H:i:s T'; const DATE_DELAY = 30; @@ -165,7 +169,7 @@ class SignatureService { $signature->import(json_decode($object->getSource(), true)); $signature->setPublicKey($this->retrieveKey($actorId)); if ($signature->verify()) { - $object->setOrigin($this->getKeyOrigin($actorId)); + $object->setOrigin($this->getKeyOrigin($actorId), SignatureService::ORIGIN_SIGNATURE); return true; } @@ -294,6 +298,7 @@ class SignatureService { * @throws SocialAppConfigException * @throws UnknownItemException * @throws RedundancyLimitException + * @throws InvalidOriginException */ private function retrieveKey($keyId): string { $actor = $this->cacheActorService->getFromId($keyId);