diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2020-01-20 04:51:44 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2020-01-20 04:51:44 +0900 |
| commit | 46aaf8fa9a30cbe1c1410e59e70caa9e202c4cf0 (patch) | |
| tree | bed7def06f02315a65a3eb736e70c5c8fa143935 /src | |
| parent | Fix syuilo#5729 (#5732) (diff) | |
| download | sharkey-46aaf8fa9a30cbe1c1410e59e70caa9e202c4cf0.tar.gz sharkey-46aaf8fa9a30cbe1c1410e59e70caa9e202c4cf0.tar.bz2 sharkey-46aaf8fa9a30cbe1c1410e59e70caa9e202c4cf0.zip | |
AP Actorの鍵とkeyIdのフォーマットの変更 (#5733)
* Node PKCS#8
* keyIdを#main-key形式に
Diffstat (limited to 'src')
| -rw-r--r-- | src/remote/activitypub/renderer/key.ts | 10 | ||||
| -rw-r--r-- | src/remote/activitypub/renderer/person.ts | 2 | ||||
| -rw-r--r-- | src/remote/activitypub/request.ts | 2 | ||||
| -rw-r--r-- | src/server/api/private/signup.ts | 10 |
4 files changed, 14 insertions, 10 deletions
diff --git a/src/remote/activitypub/renderer/key.ts b/src/remote/activitypub/renderer/key.ts index 334e5e00cd..e792f487fd 100644 --- a/src/remote/activitypub/renderer/key.ts +++ b/src/remote/activitypub/renderer/key.ts @@ -1,10 +1,14 @@ import config from '../../../config'; import { ILocalUser } from '../../../models/entities/user'; import { UserKeypair } from '../../../models/entities/user-keypair'; +import { createPublicKey } from 'crypto'; -export default (user: ILocalUser, key: UserKeypair) => ({ - id: `${config.url}/users/${user.id}/publickey`, +export default (user: ILocalUser, key: UserKeypair, postfix?: string) => ({ + id: `${config.url}/users/${user.id}${postfix || '/publickey'}`, type: 'Key', owner: `${config.url}/users/${user.id}`, - publicKeyPem: key.publicKey + publicKeyPem: createPublicKey(key.publicKey).export({ + type: 'spki', + format: 'pem' + }) }); diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts index d4c018fb78..07a0eeed42 100644 --- a/src/remote/activitypub/renderer/person.ts +++ b/src/remote/activitypub/renderer/person.ts @@ -108,7 +108,7 @@ export async function renderPerson(user: ILocalUser) { image: banner ? renderImage(banner) : null, tag, manuallyApprovesFollowers: user.isLocked, - publicKey: renderKey(user, keypair), + publicKey: renderKey(user, keypair, `#main-key`), isCat: user.isCat, attachment: attachment.length ? attachment : undefined }; diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts index bcbb0fbe70..869fabd032 100644 --- a/src/remote/activitypub/request.ts +++ b/src/remote/activitypub/request.ts @@ -56,7 +56,7 @@ export default async (user: ILocalUser, url: string, object: any) => { sign(req, { authorizationHeaderName: 'Signature', key: keypair.privateKey, - keyId: `${config.url}/users/${user.id}/publickey`, + keyId: `${config.url}/users/${user.id}#main-key`, headers: ['date', 'host', 'digest'] }); diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index 63216019e9..af1aefda84 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -91,21 +91,21 @@ export default async (ctx: Koa.Context) => { return; } - const keyPair = await new Promise<string[]>((s, j) => + const keyPair = await new Promise<string[]>((res, rej) => generateKeyPair('rsa', { modulusLength: 4096, publicKeyEncoding: { - type: 'pkcs1', + type: 'spki', format: 'pem' }, privateKeyEncoding: { - type: 'pkcs1', + type: 'pkcs8', format: 'pem', cipher: undefined, passphrase: undefined } - } as any, (e, publicKey, privateKey) => - e ? j(e) : s([publicKey, privateKey]) + } as any, (err, publicKey, privateKey) => + err ? rej(err) : res([publicKey, privateKey]) )); let account!: User; |