Fix bug
This commit is contained in:
parent
d9a5e06b5b
commit
142d59be85
4 changed files with 29 additions and 18 deletions
|
@ -20,5 +20,10 @@ export class UserKeypair {
|
|||
@Column('varchar', {
|
||||
length: 4096,
|
||||
})
|
||||
public keyPem: string;
|
||||
public publicKey: string;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 4096,
|
||||
})
|
||||
public privateKey: string;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import { createPublicKey } from 'crypto';
|
||||
import config from '../../../config';
|
||||
import { ILocalUser } from '../../../models/entities/user';
|
||||
import { UserKeypair } from '../../../models/entities/user-keypair';
|
||||
|
@ -7,5 +6,5 @@ export default (user: ILocalUser, key: UserKeypair) => ({
|
|||
id: `${config.url}/users/${user.id}/publickey`,
|
||||
type: 'Key',
|
||||
owner: `${config.url}/users/${user.id}`,
|
||||
publicKeyPem: createPublicKey(key.keyPem)
|
||||
publicKeyPem: key.publicKey
|
||||
});
|
||||
|
|
|
@ -67,7 +67,7 @@ export default async (user: ILocalUser, url: string, object: any) => {
|
|||
|
||||
sign(req, {
|
||||
authorizationHeaderName: 'Signature',
|
||||
key: keypair.keyPem,
|
||||
key: keypair.privateKey,
|
||||
keyId: `${config.url}/users/${user.id}/publickey`,
|
||||
headers: ['date', 'host', 'digest']
|
||||
});
|
||||
|
|
|
@ -10,6 +10,7 @@ import { genId } from '../../../misc/gen-id';
|
|||
import { usersChart } from '../../../services/chart';
|
||||
import { UserServiceLinking } from '../../../models/entities/user-service-linking';
|
||||
import { User } from '../../../models/entities/user';
|
||||
import { UserKeypair } from '../../../models/entities/user-keypair';
|
||||
|
||||
export default async (ctx: Koa.BaseContext) => {
|
||||
const body = ctx.request.body as any;
|
||||
|
@ -80,6 +81,23 @@ export default async (ctx: Koa.BaseContext) => {
|
|||
return;
|
||||
}
|
||||
|
||||
const keyPair = await new Promise<string[]>((s, j) =>
|
||||
generateKeyPair('rsa', {
|
||||
modulusLength: 4096,
|
||||
publicKeyEncoding: {
|
||||
type: 'pkcs1',
|
||||
format: 'pem'
|
||||
},
|
||||
privateKeyEncoding: {
|
||||
type: 'pkcs1',
|
||||
format: 'pem',
|
||||
cipher: undefined,
|
||||
passphrase: undefined
|
||||
}
|
||||
}, (e, publicKey, privateKey) =>
|
||||
e ? j(e) : s([publicKey, privateKey])
|
||||
));
|
||||
|
||||
const account = await Users.save({
|
||||
id: genId(),
|
||||
createdAt: new Date(),
|
||||
|
@ -95,21 +113,10 @@ export default async (ctx: Koa.BaseContext) => {
|
|||
|
||||
await UserKeypairs.save({
|
||||
id: genId(),
|
||||
keyPem: await new Promise<string>((s, j) => generateKeyPair('rsa', {
|
||||
modulusLength: 4096,
|
||||
publicKeyEncoding: {
|
||||
type: 'pkcs1',
|
||||
format: 'pem'
|
||||
},
|
||||
privateKeyEncoding: {
|
||||
type: 'pkcs1',
|
||||
format: 'pem',
|
||||
cipher: undefined,
|
||||
passphrase: undefined
|
||||
}
|
||||
}, (e, _, x) => e ? j(e) : s(x))),
|
||||
publicKey: keyPair[0],
|
||||
privateKey: keyPair[1],
|
||||
userId: account.id
|
||||
});
|
||||
} as UserKeypair);
|
||||
|
||||
await UserServiceLinkings.save({
|
||||
id: genId(),
|
||||
|
|
Loading…
Reference in a new issue