parent
5a950cf991
commit
46aaf8fa9a
|
@ -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'
|
||||
})
|
||||
});
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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']
|
||||
});
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue