$ npm install
$ gulp
$ node server
Старт сервера с использованием Node https
import * as fs from "fs";
import * as https from "https";
import * as socketIO from "socket.io";
const privateKey = fs.readFileSync("/ssl/key.pem", "utf8");
const certificate = fs.readFileSync("/ssl/cert.pem", "utf8");
const credentials = {key: privateKey, cert: certificate};
https.createServer(credentials).listen(4040);
const io = socketIO.listen(https);
Сработает при подключении клиента
io.on('connection', (socket) => {
// ...
}
Сработает при отключении клиента
io.on('connection', (socket) => {
socket.on('disconnect', () => {
// ...
});
});
Добавляет обработчик для указанного события
socket.on('sign', (data) => {
console.log(data);
});
Подключение к серверу
import io from 'socket.io-client';
const socket = io.connect('https://localhost:4040');
Сработает при разрыве соединения с сервером
socket.on('disconnect', (reason) => {
// ...
});
Сработает при успешном переподключении
socket.on('connect', () => {
// ...
});
Уникальный идентификатор сокета
Добавляет обработчик для указанного события
socket.on('signed', (data) => {
console.log(data);
});
События, зарегестрированные в КриптоАРМ ГОСТ
События, генерируемые сервером
Документ подписан
interface signed {
id: number;
}
Подпись проверена
interface certificate {
serial: string; // серийный номер сертификата
subjectFriendlyName: string; // дружественное имя владельца (CN)
organizationName: string; // организация
issuerFriendlyName: string; // дружественное имя издателя (CN)
notAfter: number; // срок действия сертификата
signatureAlgorithm: string; // алгоритм подписи
signatureDigestAlgorithm: string; // хеш алгоритм подписи
publicKeyAlgorithm: string; // алгоритм публичного ключа
hash: string; // отпечаток
key: boolean; // налиичие привязки к закрытому ключу
status: boolean; // результат проверки
}
interface verified {
id: number;
signatureAlgorithm: string,
certs: certificate[],
digestAlgorithm: string,
status: boolean,
subject: string,
}
Документ зашифрован
interface encrypted {
id: number;
}
Документ расшифрован
interface decrypted {
id: number;
}
Не удалось скачать файл
Отмена операции для файла
interface cancelled {
id: number;
}
Произошла ошибка
События, генерируемые клиентом
Отправка докуентов на подпись
interface file {
id: string; // уникальный идентификатор
name: string; // имя файла
url: string; // ссылка для загрузки файла
}
interface sign {
method: string;
params: {
token: string;
files: file[];
extra: any;
uploader: string; // ссылка для отправки подписанного файла
}
id: string;
}
Отправка докуентов на проверку
interface file {
id: string; // уникальный идентификатор
name: string; // имя файла
url: string; // ссылка для загрузки файла
}
interface verify {
method: string;
params: {
token: string;
files: file[];
}
id: string;
}
Отправка докуентов на шифрование
interface file {
id: string; // уникальный идентификатор
name: string; // имя файла
url: string; // ссылка для загрузки файла
}
interface encrypt {
method: string;
params: {
token: string;
files: file[];
extra: any;
uploader: string; // ссылка для отправки зашифрованного файла
}
id: string;
}
Отправка докуентов на расшифрование
interface file {
id: string; // уникальный идентификатор
name: string; // имя файла
url: string; // ссылка для загрузки файла
}
interface decrypt {
method: string;
params: {
token: string;
files: file[];
uploader: string; // ссылка для отправки расшифрованного файла
}
id: string;
}
Отправка документов
interface signer {
subjectFriendlyName: string;
issuerFriendlyName: string;
notBefore: Date;
notAfter: Date;
digestAlgorithm: string;
signingTime: Date;
subjectName: string;
issuerName: string;
}
interface formData {
extra: string;
file: stream;
id: string;
signers?: signer[];
}
interface post {
formData: formData;
url: string; // ссылка для отправки файла
}