Skip to content
Snippets Groups Projects
Commit d1ef7959 authored by Alexey Lunin's avatar Alexey Lunin
Browse files

Modify CryptoService in order to add support for injecting custom implementation of ICryptoService

parent 326eb6fc
No related branches found
No related tags found
1 merge request!93Draft: Add support for mobile device
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
......
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
......
import { ICryptoService } from "./ICryptoService"; import { ICryptoService } from "./ICryptoService";
export interface Proxy {
injectCustomImplementation: (service: ICryptoService) => void;
}
declare const service: ICryptoService; declare const service: ICryptoService;
export default service; export default service;
"use strict"; "use strict";
var __importDefault = (this && this.__importDefault) || function (mod) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return (mod && mod.__esModule) ? mod : { "default": mod }; function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const CryptoServiceNode_1 = __importDefault(require("./CryptoServiceNode")); class CryptoServiceProxy {
const CryptoServiceWeb_1 = __importDefault(require("./CryptoServiceWeb")); constructor() {
const service = typeof crypto !== "undefined" && crypto.subtle // this._target = typeof crypto !== "undefined" && crypto.subtle
? new CryptoServiceWeb_1.default() // ? new CryptoServiceWeb()
: new CryptoServiceNode_1.default(); // : new CryptoServiceNode();
}
injectCustomImplementation(service) {
this._target = service;
}
encryptAESGCM(data) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.encryptAESGCM.apply(this._target, arguments);
});
}
decryptAESGCM(data, key, iv, returnBuffer) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.decryptAESGCM.apply(this._target, arguments);
});
}
verifyRSASignature(publicKeyPEM, data, signature) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.verifyRSASignature.apply(this._target, arguments);
});
}
generateRSAKeys() {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.generateRSAKeys.apply(this._target, arguments);
});
}
encryptRSA(publicKeyPEM, data) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.encryptAESGCM.apply(this._target, arguments);
});
}
decryptRSA(privateKeyPEM, data) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.decryptRSA.apply(this._target, arguments);
});
}
signRSA(privateKeyPEM, data) {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.signRSA.apply(this._target, arguments);
});
}
SHA1(value, encoding = "utf8") {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA1.apply(this._target, arguments);
});
}
SHA256(value, encoding = "utf8") {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA256.apply(this._target, arguments);
});
}
SHA384(value, encoding = "utf8") {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA384.apply(this._target, arguments);
});
}
SHA512(value, encoding = "utf8") {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA512.apply(this._target, arguments);
});
}
MD5(value, encoding = "utf8") {
return __awaiter(this, arguments, void 0, function* () {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.MD5.apply(this._target, arguments);
});
}
}
const service = new CryptoServiceProxy();
exports.default = service; exports.default = service;
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
......
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
......
import CryptoServiceNode from "./CryptoServiceNode"; // import CryptoServiceNode from "./CryptoServiceNode";
import CryptoServiceWeb from "./CryptoServiceWeb"; // import CryptoServiceWeb from "./CryptoServiceWeb";
import { ICryptoService } from "./ICryptoService"; import { AESGCMOutput, ICryptoService, RSAKeys } from "./ICryptoService";
const service: ICryptoService = export interface Proxy {
typeof crypto !== "undefined" && crypto.subtle injectCustomImplementation: (service: ICryptoService) => void;
? new CryptoServiceWeb() }
: new CryptoServiceNode();
class CryptoServiceProxy implements ICryptoService, Proxy {
private _target: ICryptoService;
constructor() {
// this._target = typeof crypto !== "undefined" && crypto.subtle
// ? new CryptoServiceWeb()
// : new CryptoServiceNode();
}
public injectCustomImplementation(service: ICryptoService) {
this._target = service;
}
public async encryptAESGCM(
data: string | ArrayBuffer
): Promise<AESGCMOutput> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.encryptAESGCM.apply(this._target, arguments);
}
public async decryptAESGCM(
data: ArrayBuffer,
key: ArrayBuffer,
iv: ArrayBuffer
): Promise<string>;
public async decryptAESGCM(
data: ArrayBuffer,
key: ArrayBuffer,
iv: ArrayBuffer,
returnBuffer: true
): Promise<ArrayBuffer>;
public async decryptAESGCM(
data: ArrayBuffer,
key: ArrayBuffer,
iv: ArrayBuffer,
returnBuffer?: boolean
): Promise<string | ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.decryptAESGCM.apply(this._target, arguments);
}
public async verifyRSASignature(
publicKeyPEM: string,
data: ArrayBuffer,
signature: ArrayBuffer
): Promise<boolean> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.verifyRSASignature.apply(this._target, arguments);
}
public async generateRSAKeys(): Promise<RSAKeys> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.generateRSAKeys.apply(this._target, arguments);
}
public async encryptRSA(
publicKeyPEM: string,
data: ArrayBuffer
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.encryptAESGCM.apply(this._target, arguments);
}
public async decryptRSA(
privateKeyPEM: string,
data: ArrayBuffer
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.decryptRSA.apply(this._target, arguments);
}
public async signRSA(
privateKeyPEM: string,
data: ArrayBuffer
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.signRSA.apply(this._target, arguments);
}
public async SHA1(
value: string | ArrayBuffer,
encoding = "utf8"
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA1.apply(this._target, arguments);
}
public async SHA256(
value: string | ArrayBuffer,
encoding = "utf8"
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA256.apply(this._target, arguments);
}
public async SHA384(
value: string | ArrayBuffer,
encoding = "utf8"
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA384.apply(this._target, arguments);
}
public async SHA512(
value: string | ArrayBuffer,
encoding = "utf8"
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.SHA512.apply(this._target, arguments);
}
public async MD5(
value: string | ArrayBuffer,
encoding = "utf8"
): Promise<ArrayBuffer> {
// eslint-disable-next-line prefer-spread,prefer-rest-params
return this._target.MD5.apply(this._target, arguments);
}
}
const service: ICryptoService = new CryptoServiceProxy();
export default service; export default service;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment