summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-08 03:35:02 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-08 03:35:02 +0900
commit142d59be85cd06b11d9df1375bcd0a84c0425e22 (patch)
tree63255a389c37ab19c9b9fb80d9c633275340a155 /src
parentFix bug (diff)
downloadsharkey-142d59be85cd06b11d9df1375bcd0a84c0425e22.tar.gz
sharkey-142d59be85cd06b11d9df1375bcd0a84c0425e22.tar.bz2
sharkey-142d59be85cd06b11d9df1375bcd0a84c0425e22.zip
Fix bug
Diffstat (limited to 'src')
-rw-r--r--src/models/entities/user-keypair.ts7
-rw-r--r--src/remote/activitypub/renderer/key.ts3
-rw-r--r--src/remote/activitypub/request.ts2
-rw-r--r--src/server/api/private/signup.ts35
4 files changed, 29 insertions, 18 deletions
diff --git a/src/models/entities/user-keypair.ts b/src/models/entities/user-keypair.ts
index 06b98d2536..be264641f7 100644
--- a/src/models/entities/user-keypair.ts
+++ b/src/models/entities/user-keypair.ts
@@ -20,5 +20,10 @@ export class UserKeypair {
@Column('varchar', {
length: 4096,
})
- public keyPem: string;
+ public publicKey: string;
+
+ @Column('varchar', {
+ length: 4096,
+ })
+ public privateKey: string;
}
diff --git a/src/remote/activitypub/renderer/key.ts b/src/remote/activitypub/renderer/key.ts
index fb5975a6c4..334e5e00cd 100644
--- a/src/remote/activitypub/renderer/key.ts
+++ b/src/remote/activitypub/renderer/key.ts
@@ -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
});
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index a089ed371c..c50d05e2a6 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -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']
});
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts
index 1d304b8e11..8ab702bd8a 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -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(),