on signature check fail, update public key

Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/291/head
Maxence Lange 2018-12-31 10:04:11 -01:00
rodzic 2f58b91408
commit 88a19839c8
1 zmienionych plików z 17 dodań i 9 usunięć

Wyświetl plik

@ -214,13 +214,19 @@ class SignatureService {
$signature = new LinkedDataSignature();
$signature->import(json_decode($object->getSource(), true));
$signature->setPublicKey($this->retrieveKey($actorId));
if ($signature->verify()) {
$object->setOrigin(
$this->getKeyOrigin($actorId), SignatureService::ORIGIN_SIGNATURE
);
return true;
if (!$signature->verify()) {
$signature->setPublicKey($this->retrieveKey($actorId, true));
}
if (!$signature->verify()) {
return false;
}
$object->setOrigin(
$this->getKeyOrigin($actorId), SignatureService::ORIGIN_SIGNATURE
);
return true;
} catch (LinkedDataSignatureMissingException $e) {
}
@ -345,7 +351,9 @@ class SignatureService {
/**
* @param $keyId
* @param string $keyId
*
* @param bool $refresh
*
* @return string
* @throws InvalidOriginException
@ -359,8 +367,8 @@ class SignatureService {
* @throws SocialAppConfigException
* @throws ItemUnknownException
*/
private function retrieveKey($keyId): string {
$actor = $this->cacheActorService->getFromId($keyId);
private function retrieveKey(string $keyId, bool $refresh = false): string {
$actor = $this->cacheActorService->getFromId($keyId, $refresh);
return $actor->getPublicKey();
}