Примеры - API КриптоАРМ

Примеры

В данном разделе приведены примеры работы с электронной подписью, в том числе CAdES.

Чтение подписанного файла

1
2
const cms = new trusted.cms.SignedData();
cms.load("signedfile.sig", trusted.DataFormat.PEM);

Подпись

Открепленная подпись данных:

1
2
3
4
5
6
7
8
9
const cert = trusted.pki.Certificate.load("./certfile.cet",
trusted.DataFormat.DER);
const sd = new trusted.cms.SignedData();
sd.policies = ["detached"];
sd.content = {
type: trusted.cms.SignedDataContentType.buffer,
data: "Hello world"
};
sd.sign(cert);

Формирование подписи без аттрибутов:

1
2
3
4
5
6
7
8
9
const cert = trusted.pki.Certificate.load("./certfile.cet",
trusted.DataFormat.DER);
const sd = new trusted.cms.SignedData();
sd.policies = ["noAttributes"];
sd.content = {
type: trusted.cms.SignedDataContentType.buffer,
data: "Hello world"
};
sd.sign(cert);

Прикрепленная подпись файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const cert = trusted.pki.Certificate.load("./certfile.cet",
trusted.DataFormat.DER);
const sd = new trusted.cms.SignedData();
sd.policies = [];
sd.content = {
type: trusted.cms.SignedDataContentType.url,
data: "./file_for_sign.txt"
};
sd.sign(cert);
sd.save("./outfile.sig");

Усовершенствованная подпись

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
const cert = trusted.pki.Certificate.load("./certfile.cet",
trusted.DataFormat.DER);
const connSettings = new trusted.utils.ConnectionSettings();
connSettings.Address = "http://qs.cryptopro.ru/tsp/tsp.srf";
const sdCades = new trusted.cms.SignedData();
sdCades.content = {
type: trusted.cms.SignedDataContentType.buffer,
data: "CAdES test 1"
};
const cadesParams = new trusted.cms.CadesParams();
cadesParams.cadesType = trusted.cms.CadesType.ctCadesXLT1;
cadesParams.connSettings = connSettings;
cadesParams.tspHashAlg = "1.2.643.7.1.1.2.2";
sdCades.signParams = cadesParams;
sdCades.sign(cert);
sd.save("./outfile.sig");

Подпись со штампом времени

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
const sdTspContent = new trusted.cms.SignedData();
sdTspContent.content = {
type: trusted.cms.SignedDataContentType.buffer,
data: "Signature with time stamp 1."
};
const connSettings = new trusted.utils.ConnectionSettings();
connSettings.Address = "http://qs.cryptopro.ru/tsp/tsp.srf";
const tspParams = new trusted.cms.TimestampParams();
tspParams.connSettings = connSettings;
tspParams.tspHashAlg = "1.2.643.7.1.1.2.2";
tspParams.stampType = trusted.cms.StampType.stContent;
sdTspContent.signParams = tspParams;
sdTspContent.sign(cert);
sd.save("./outfile.sig");

Соподпись

Добавление подписчика (соподпись):

1
2
3
4
5
6
const cms = new trusted.cms.SignedData();
cms.load("./outfile.sig");
const secondSignerCert = trusted.pki.Certificate.load("./certfile2.cet",
trusted.DataFormat.DER);
cms.sign(secondSignerCert);
sd.save("./outfile.sig");

Проверка подписи

Проверка открепленной подписи:

1
2
3
4
5
6
7
const cms = new trusted.cms.SignedData();
cms.load("./outfile.sig");
cms.content = {
type: trusted.cms.SignedDataContentType.url,
data: "./data.docx"
};
const res = cms.verify();

Проверка прикрепленной подписи:

1
2
3
const cms = new trusted.cms.SignedData();
cms.load("./outfile.sig");
const res = cms.verify();

Проверка конкретного подписчика:

1
2
3
4
5
const cms = new trusted.cms.SignedData();
cms.load("./outfile.sig");
const signers = cms.signers();
const signer = signers.items(0);
const res = cms.verify(signer);