From 5bf9c4cff689a3558d09990d5f6920edfad6c09f Mon Sep 17 00:00:00 2001 From: Mo Date: Tue, 6 Jun 2023 17:14:47 -0500 Subject: [PATCH] feat(wip): deterministic keypairs --- .../mysql/1684172607219-add_pkc_fields.ts | 20 ------------------- .../auth/src/Controller/AuthController.ts | 6 +----- .../auth/src/Controller/UsersController.ts | 6 ------ .../ChangeCredentials/ChangeCredentials.ts | 8 -------- .../ChangeCredentials/ChangeCredentialsDTO.ts | 2 -- packages/auth/src/Domain/UseCase/Register.ts | 2 -- .../auth/src/Domain/UseCase/RegisterDTO.ts | 2 -- .../auth/src/Domain/UseCase/UpdateUser.ts | 4 +--- .../auth/src/Domain/UseCase/UpdateUserDTO.ts | 2 -- packages/auth/src/Domain/User/User.ts | 16 --------------- .../src/Projection/SimpleUserProjection.ts | 2 +- packages/auth/src/Projection/UserProjector.ts | 2 +- 12 files changed, 4 insertions(+), 68 deletions(-) diff --git a/packages/auth/migrations/mysql/1684172607219-add_pkc_fields.ts b/packages/auth/migrations/mysql/1684172607219-add_pkc_fields.ts index 23c8ea937..a42257894 100644 --- a/packages/auth/migrations/mysql/1684172607219-add_pkc_fields.ts +++ b/packages/auth/migrations/mysql/1684172607219-add_pkc_fields.ts @@ -11,15 +11,6 @@ export class AddPkcFields1684172607219 implements MigrationInterface { }), ) - await queryRunner.addColumn( - 'users', - new TableColumn({ - name: 'encrypted_private_key', - type: 'text', - isNullable: true, - }), - ) - await queryRunner.addColumn( 'users', new TableColumn({ @@ -28,21 +19,10 @@ export class AddPkcFields1684172607219 implements MigrationInterface { isNullable: true, }), ) - - await queryRunner.addColumn( - 'users', - new TableColumn({ - name: 'encrypted_signing_private_key', - type: 'text', - isNullable: true, - }), - ) } public async down(queryRunner: QueryRunner): Promise { await queryRunner.dropColumn('users', 'public_key') - await queryRunner.dropColumn('users', 'encrypted_private_key') await queryRunner.dropColumn('users', 'signing_public_key') - await queryRunner.dropColumn('users', 'encrypted_signing_private_key') } } diff --git a/packages/auth/src/Controller/AuthController.ts b/packages/auth/src/Controller/AuthController.ts index 413057097..b9a34a646 100644 --- a/packages/auth/src/Controller/AuthController.ts +++ b/packages/auth/src/Controller/AuthController.ts @@ -64,15 +64,11 @@ export class AuthController implements UserServerInterface { kpOrigination: params.origination, kpCreated: params.created, version: params.version, - // TODO: awaiting publishing of new standardnotes/api package + // @TODO: awaiting publishing of new standardnotes/api package // eslint-disable-next-line @typescript-eslint/no-explicit-any publicKey: (params as any).public_key, // eslint-disable-next-line @typescript-eslint/no-explicit-any - encryptedPrivateKey: (params as any).encrypted_private_key, - // eslint-disable-next-line @typescript-eslint/no-explicit-any signingPublicKey: (params as any).signing_key_public, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - encryptedSigningPrivateKey: (params as any).encrypted_signing_private_key, }) if (!registerResult.success) { diff --git a/packages/auth/src/Controller/UsersController.ts b/packages/auth/src/Controller/UsersController.ts index cdb240881..a769640af 100644 --- a/packages/auth/src/Controller/UsersController.ts +++ b/packages/auth/src/Controller/UsersController.ts @@ -66,9 +66,7 @@ export class UsersController extends BaseHttpController { updatedWithUserAgent: request.headers['user-agent'], apiVersion: request.body.api, publicKey: request.body.public_key, - encryptedPrivateKey: request.body.encrypted_private_key, signingPublicKey: request.body.signing_public_key, - encryptedSigningPrivateKey: request.body.encrypted_signing_private_key, }) if (updateResult.success) { @@ -171,9 +169,7 @@ export class UsersController extends BaseHttpController { uuid: result.user.uuid, email: result.user.email, public_key: result.user.publicKey, - encrypted_private_key: result.user.encryptedPrivateKey, signing_public_key: result.user.signingPublicKey, - encrypted_signing_private_key: result.user.encryptedSigningPrivateKey, }) } @@ -237,9 +233,7 @@ export class UsersController extends BaseHttpController { updatedWithUserAgent: request.headers['user-agent'], protocolVersion: request.body.version, publicKey: request.body.new_public_key, - encryptedPrivateKey: request.body.new_encrypted_private_key, signingPublicKey: request.body.new_signing_public_key, - encryptedSigningPrivateKey: request.body.new_encrypted_signing_private_key, }) if (!changeCredentialsResult.success) { diff --git a/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentials.ts b/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentials.ts index 994e29bb7..4c1462075 100644 --- a/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentials.ts +++ b/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentials.ts @@ -85,14 +85,6 @@ export class ChangeCredentials implements UseCaseInterface { ) } - if (dto.encryptedPrivateKey) { - dto.user.encryptedPrivateKey = dto.encryptedPrivateKey - } - - if (dto.encryptedSigningPrivateKey) { - dto.user.encryptedSigningPrivateKey = dto.encryptedSigningPrivateKey - } - dto.user.pwNonce = dto.pwNonce if (dto.protocolVersion) { dto.user.version = dto.protocolVersion diff --git a/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentialsDTO.ts b/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentialsDTO.ts index 4216da0c0..7041ef90e 100644 --- a/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentialsDTO.ts +++ b/packages/auth/src/Domain/UseCase/ChangeCredentials/ChangeCredentialsDTO.ts @@ -12,7 +12,5 @@ export type ChangeCredentialsDTO = { kpOrigination?: string kpCreated?: string publicKey?: string - encryptedPrivateKey?: string signingPublicKey?: string - encryptedSigningPrivateKey?: string } diff --git a/packages/auth/src/Domain/UseCase/Register.ts b/packages/auth/src/Domain/UseCase/Register.ts index 0f3582055..d40eb20a2 100644 --- a/packages/auth/src/Domain/UseCase/Register.ts +++ b/packages/auth/src/Domain/UseCase/Register.ts @@ -72,9 +72,7 @@ export class Register implements UseCaseInterface { user.encryptedServerKey = await this.crypter.generateEncryptedUserServerKey() user.serverEncryptionVersion = User.DEFAULT_ENCRYPTION_VERSION user.publicKey = dto.publicKey ?? null - user.encryptedPrivateKey = dto.encryptedPrivateKey ?? null user.signingPublicKey = dto.signingPublicKey ?? null - user.encryptedSigningPrivateKey = dto.encryptedSigningPrivateKey ?? null const defaultRole = await this.roleRepository.findOneByName(RoleName.NAMES.CoreUser) if (defaultRole) { diff --git a/packages/auth/src/Domain/UseCase/RegisterDTO.ts b/packages/auth/src/Domain/UseCase/RegisterDTO.ts index 008729736..8769b65a8 100644 --- a/packages/auth/src/Domain/UseCase/RegisterDTO.ts +++ b/packages/auth/src/Domain/UseCase/RegisterDTO.ts @@ -11,7 +11,5 @@ export type RegisterDTO = { kpCreated?: string version?: string publicKey?: string - encryptedPrivateKey?: string signingPublicKey?: string - encryptedSigningPrivateKey?: string } diff --git a/packages/auth/src/Domain/UseCase/UpdateUser.ts b/packages/auth/src/Domain/UseCase/UpdateUser.ts index 80b12076f..b226573f1 100644 --- a/packages/auth/src/Domain/UseCase/UpdateUser.ts +++ b/packages/auth/src/Domain/UseCase/UpdateUser.ts @@ -17,7 +17,7 @@ export class UpdateUser implements UseCaseInterface { ) {} async execute(dto: UpdateUserDTO): Promise { - if (dto.user.publicKey || dto.user.encryptedPrivateKey) { + if (dto.user.publicKey) { return { success: false, errorMessage: @@ -26,9 +26,7 @@ export class UpdateUser implements UseCaseInterface { } dto.user.publicKey = dto.publicKey - dto.user.encryptedPrivateKey = dto.encryptedPrivateKey dto.user.signingPublicKey = dto.signingPublicKey - dto.user.encryptedSigningPrivateKey = dto.encryptedSigningPrivateKey dto.user.updatedAt = this.timer.getUTCDate() const updatedUser = await this.userRepository.save(dto.user) diff --git a/packages/auth/src/Domain/UseCase/UpdateUserDTO.ts b/packages/auth/src/Domain/UseCase/UpdateUserDTO.ts index 86b850f71..a16e9a10b 100644 --- a/packages/auth/src/Domain/UseCase/UpdateUserDTO.ts +++ b/packages/auth/src/Domain/UseCase/UpdateUserDTO.ts @@ -5,7 +5,5 @@ export type UpdateUserDTO = { apiVersion: string updatedWithUserAgent: string publicKey: string - encryptedPrivateKey: string signingPublicKey: string - encryptedSigningPrivateKey: string } diff --git a/packages/auth/src/Domain/User/User.ts b/packages/auth/src/Domain/User/User.ts index 37858cc9c..1a62303bf 100644 --- a/packages/auth/src/Domain/User/User.ts +++ b/packages/auth/src/Domain/User/User.ts @@ -50,14 +50,6 @@ export class User { }) declare publicKey: string | null - @Column({ - name: 'encrypted_private_key', - length: 255, - type: 'varchar', - nullable: true, - }) - declare encryptedPrivateKey: string | null - @Column({ name: 'signing_public_key', length: 255, @@ -66,14 +58,6 @@ export class User { }) declare signingPublicKey: string | null - @Column({ - name: 'encrypted_signing_private_key', - length: 255, - type: 'varchar', - nullable: true, - }) - declare encryptedSigningPrivateKey: string | null - @Column({ name: 'server_encryption_version', type: 'tinyint', diff --git a/packages/auth/src/Projection/SimpleUserProjection.ts b/packages/auth/src/Projection/SimpleUserProjection.ts index 54c633ae0..7c773a32c 100644 --- a/packages/auth/src/Projection/SimpleUserProjection.ts +++ b/packages/auth/src/Projection/SimpleUserProjection.ts @@ -3,5 +3,5 @@ export type SimpleUserProjection = { email: string protocolVersion: string publicKey?: string - encryptedPrivateKey?: string + signingPublicKey?: string } diff --git a/packages/auth/src/Projection/UserProjector.ts b/packages/auth/src/Projection/UserProjector.ts index d88ae51a0..1021f59da 100644 --- a/packages/auth/src/Projection/UserProjector.ts +++ b/packages/auth/src/Projection/UserProjector.ts @@ -12,7 +12,7 @@ export class UserProjector implements ProjectorInterface { email: user.email, protocolVersion: user.version, publicKey: user.publicKey ?? undefined, - encryptedPrivateKey: user.encryptedPrivateKey ?? undefined, + signingPublicKey: user.signingPublicKey ?? undefined, } }