diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index 58b5ddb507aa..1deeef99cf1a 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -79,12 +79,13 @@ function validateActor(x: IObject, uri: string): IActor { throw new Error('invalid Actor: id has different host'); } - if (x.publicKey) { - if (typeof x.publicKey.id !== 'string') { + const publicKey = toSingle(x.publicKey); + if (publicKey) { + if (typeof publicKey.id !== 'string') { throw new Error('invalid Actor: publicKey.id is not a string'); } - const publicKeyIdHost = toUnicode(new URL(x.publicKey.id).hostname.toLowerCase()); + const publicKeyIdHost = toUnicode(new URL(publicKey.id).hostname.toLowerCase()); if (publicKeyIdHost !== expectHost) { throw new Error('invalid Actor: publicKey.id has different host'); } @@ -145,6 +146,8 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise