Format
This commit is contained in:
parent
4b74d5e13d
commit
be14e77e01
1 changed files with 78 additions and 69 deletions
|
|
@ -1,6 +1,9 @@
|
|||
const { Buffer } = require("buffer");
|
||||
const Crypto = require("crypto");
|
||||
const FieldError = require("../fieldError")
|
||||
/**
|
||||
* @format
|
||||
*/
|
||||
const { Buffer } = require('buffer')
|
||||
const Crypto = require('crypto')
|
||||
const FieldError = require('../fieldError')
|
||||
|
||||
/**
|
||||
* @typedef {object} EncryptedMessageBuffer
|
||||
|
|
@ -21,102 +24,108 @@ const FieldError = require("../fieldError")
|
|||
*/
|
||||
|
||||
const generateRandomString = (length = 16) =>
|
||||
new Promise((resolve, reject) => {
|
||||
Crypto.randomBytes(length, (err, buffer) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
return
|
||||
}
|
||||
new Promise((resolve, reject) => {
|
||||
Crypto.randomBytes(length, (err, buffer) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
return
|
||||
}
|
||||
|
||||
const token = buffer.toString('hex')
|
||||
resolve(token)
|
||||
})
|
||||
const token = buffer.toString('hex')
|
||||
resolve(token)
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
const convertUTF8ToBuffer = (value) => Buffer.from(value, 'utf-8');
|
||||
const convertUTF8ToBuffer = value => Buffer.from(value, 'utf-8')
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
const convertBase64ToBuffer = (value) => Buffer.from(value, 'base64');
|
||||
const convertBase64ToBuffer = value => Buffer.from(value, 'base64')
|
||||
|
||||
/**
|
||||
* @param {Buffer} buffer
|
||||
*/
|
||||
const convertBufferToBase64 = (buffer) => buffer.toString("base64");
|
||||
const convertBufferToBase64 = buffer => buffer.toString('base64')
|
||||
|
||||
/**
|
||||
* @param {Buffer | string} key
|
||||
*/
|
||||
const processKey = (key) => {
|
||||
if (Buffer.isBuffer(key)) {
|
||||
return key;
|
||||
}
|
||||
const convertedKey = convertBase64ToBuffer(key);
|
||||
return convertedKey;
|
||||
};
|
||||
const processKey = key => {
|
||||
if (Buffer.isBuffer(key)) {
|
||||
return key
|
||||
}
|
||||
const convertedKey = convertBase64ToBuffer(key)
|
||||
return convertedKey
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {EncryptedMessageBuffer | EncryptedMessageResponse} encryptedMessage
|
||||
* @returns {EncryptedMessageResponse}
|
||||
*/
|
||||
const convertToEncryptedMessageResponse = (encryptedMessage) => {
|
||||
if (Buffer.isBuffer(encryptedMessage.ciphertext) &&
|
||||
Buffer.isBuffer(encryptedMessage.iv) &&
|
||||
Buffer.isBuffer(encryptedMessage.mac) &&
|
||||
Buffer.isBuffer(encryptedMessage.ephemPublicKey)) {
|
||||
return {
|
||||
ciphertext: convertBufferToBase64(encryptedMessage.ciphertext),
|
||||
iv: convertBufferToBase64(encryptedMessage.iv),
|
||||
mac: convertBufferToBase64(encryptedMessage.mac),
|
||||
ephemPublicKey: convertBufferToBase64(encryptedMessage.ephemPublicKey),
|
||||
metadata: encryptedMessage.metadata
|
||||
};
|
||||
const convertToEncryptedMessageResponse = encryptedMessage => {
|
||||
if (
|
||||
Buffer.isBuffer(encryptedMessage.ciphertext) &&
|
||||
Buffer.isBuffer(encryptedMessage.iv) &&
|
||||
Buffer.isBuffer(encryptedMessage.mac) &&
|
||||
Buffer.isBuffer(encryptedMessage.ephemPublicKey)
|
||||
) {
|
||||
return {
|
||||
ciphertext: convertBufferToBase64(encryptedMessage.ciphertext),
|
||||
iv: convertBufferToBase64(encryptedMessage.iv),
|
||||
mac: convertBufferToBase64(encryptedMessage.mac),
|
||||
ephemPublicKey: convertBufferToBase64(encryptedMessage.ephemPublicKey),
|
||||
metadata: encryptedMessage.metadata
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof encryptedMessage.ciphertext === "string") {
|
||||
// @ts-ignore
|
||||
return encryptedMessage;
|
||||
}
|
||||
if (typeof encryptedMessage.ciphertext === 'string') {
|
||||
// @ts-ignore
|
||||
return encryptedMessage
|
||||
}
|
||||
|
||||
throw new FieldError({
|
||||
field: "encryptedMessage",
|
||||
message: "Unknown encrypted message format"
|
||||
});
|
||||
};
|
||||
throw new FieldError({
|
||||
field: 'encryptedMessage',
|
||||
message: 'Unknown encrypted message format'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {EncryptedMessageBuffer | EncryptedMessageResponse} encryptedMessage
|
||||
* @returns {EncryptedMessageBuffer}
|
||||
*/
|
||||
const convertToEncryptedMessage = (encryptedMessage) => {
|
||||
if (encryptedMessage.ciphertext instanceof Buffer &&
|
||||
encryptedMessage.iv instanceof Buffer &&
|
||||
encryptedMessage.mac instanceof Buffer &&
|
||||
encryptedMessage.ephemPublicKey instanceof Buffer) {
|
||||
// @ts-ignore
|
||||
return encryptedMessage;
|
||||
const convertToEncryptedMessage = encryptedMessage => {
|
||||
if (
|
||||
encryptedMessage.ciphertext instanceof Buffer &&
|
||||
encryptedMessage.iv instanceof Buffer &&
|
||||
encryptedMessage.mac instanceof Buffer &&
|
||||
encryptedMessage.ephemPublicKey instanceof Buffer
|
||||
) {
|
||||
// @ts-ignore
|
||||
return encryptedMessage
|
||||
}
|
||||
if (
|
||||
typeof encryptedMessage.ciphertext === 'string' &&
|
||||
typeof encryptedMessage.iv === 'string' &&
|
||||
typeof encryptedMessage.mac === 'string' &&
|
||||
typeof encryptedMessage.ephemPublicKey === 'string'
|
||||
) {
|
||||
return {
|
||||
ciphertext: convertBase64ToBuffer(encryptedMessage.ciphertext),
|
||||
iv: convertBase64ToBuffer(encryptedMessage.iv),
|
||||
mac: convertBase64ToBuffer(encryptedMessage.mac),
|
||||
ephemPublicKey: convertBase64ToBuffer(encryptedMessage.ephemPublicKey),
|
||||
metadata: encryptedMessage.metadata
|
||||
}
|
||||
if (typeof encryptedMessage.ciphertext === "string" &&
|
||||
typeof encryptedMessage.iv === "string" &&
|
||||
typeof encryptedMessage.mac === "string" &&
|
||||
typeof encryptedMessage.ephemPublicKey === "string") {
|
||||
return {
|
||||
ciphertext: convertBase64ToBuffer(encryptedMessage.ciphertext),
|
||||
iv: convertBase64ToBuffer(encryptedMessage.iv),
|
||||
mac: convertBase64ToBuffer(encryptedMessage.mac),
|
||||
ephemPublicKey: convertBase64ToBuffer(encryptedMessage.ephemPublicKey),
|
||||
metadata: encryptedMessage.metadata
|
||||
};
|
||||
}
|
||||
throw new FieldError({
|
||||
field: "encryptedMessage",
|
||||
message: "Unknown encrypted message format"
|
||||
});
|
||||
};
|
||||
}
|
||||
throw new FieldError({
|
||||
field: 'encryptedMessage',
|
||||
message: 'Unknown encrypted message format'
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
generateRandomString,
|
||||
|
|
@ -125,5 +134,5 @@ module.exports = {
|
|||
convertBufferToBase64,
|
||||
convertToEncryptedMessage,
|
||||
convertToEncryptedMessageResponse,
|
||||
processKey,
|
||||
}
|
||||
processKey
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue