Begin migration script for re-encryption

This commit is contained in:
Tuan Dang
2023-05-29 23:46:16 +03:00
parent 2ae3c48b88
commit 37251ed607
7 changed files with 839 additions and 0 deletions

61
migration/models/bot.js Normal file
View File

@@ -0,0 +1,61 @@
var mongoose = require('mongoose');
var botSchema = new mongoose.Schema(
{
name: {
type: String,
required: true
},
workspace: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Workspace',
required: true
},
isActive: {
type: Boolean,
required: true,
default: false
},
publicKey: {
type: String,
required: true
},
encryptedPrivateKey: {
type: String,
required: true,
select: false
},
iv: {
type: String,
required: true,
select: false
},
tag: {
type: String,
required: true,
select: false
},
algorithm: { // the encryption algorithm used
type: String,
enum: ['aes-256-gcm'],
required: true,
select: false
},
keyEncoding: {
type: String,
enum: [
'utf8',
'base64'
],
required: true,
select: false
}
},
{
timestamps: true
}
);
var Bot = mongoose.model('Bot', botSchema);
module.exports = Bot;

View File

@@ -0,0 +1,43 @@
var mongoose = require('mongoose');
var secretBlindIndexDataSchema = new mongoose.Schema(
{
workspace: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Workspace',
required: true
},
encryptedSaltCiphertext:{
type: String,
required: true
},
saltIV: {
type: String,
required: true
},
saltTag: {
type: String,
required: true
},
algorithm: {
type: String,
enum: ['aes-256-gcm'],
required: true,
select: false
},
keyEncoding: {
type: String,
enum: [
'utf8',
'base64'
],
required: true,
select: false
}
}
);
var SecretBlindIndexData = mongoose.model('SecretBlindIndexData', secretBlindIndexDataSchema);
module.exports = SecretBlindIndexData;

83
migration/models/user.js Normal file
View File

@@ -0,0 +1,83 @@
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema(
{
email: {
type: String,
required: true
},
firstName: {
type: String
},
lastName: {
type: String
},
encryptionVersion: {
type: Number,
select: false,
default: 1 // to resolve backward-compatibility issues
},
protectedKey: { // introduced as part of encryption version 2
type: String,
select: false
},
protectedKeyIV: { // introduced as part of encryption version 2
type: String,
select: false
},
protectedKeyTag: { // introduced as part of encryption version 2
type: String,
select: false
},
publicKey: {
type: String,
select: false
},
encryptedPrivateKey: {
type: String,
select: false
},
iv: { // iv of [encryptedPrivateKey]
type: String,
select: false
},
tag: { // tag of [encryptedPrivateKey]
type: String,
select: false
},
salt: {
type: String,
select: false
},
verifier: {
type: String,
select: false
},
refreshVersion: {
type: Number,
default: 0,
select: false
},
isMfaEnabled: {
type: Boolean,
default: false
},
mfaMethods: [{
type: String
}],
devices: {
type: [{
ip: String,
userAgent: String
}],
default: []
}
},
{
timestamps: true
}
);
var User = mongoose.model('User', userSchema);
module.exports = User;