Перейти к содержимому

Жизненные циклы основных сущностей

USB-токены и смарт-карты JaCartaAPI и SDKUSB-токены и смарт-карты JaCarta

JC-WebClient работает со следующими основными сущностями:

Для каждой из сущностей доступны команды создания, удаления и получения объектов.

СущностьДействия
СозданиеУдалениеПолучение
------------
Ключевая параcreateKeyPairdeleteKeyPair
deletePKIObject
getKeyPairList
КонтейнерwriteUserCertificate
generateUserSelfSignedCertificate
deleteUserCertificate
deleteContainer
deletePKIObject
getContainerList
Автономный сертификатwriteStandaloneCertificatedeleteStandaloneCertificate
deletePKIObject
getStandaloneCertificateList

На рисунке ниже приведен жизненный цикл ключевых пар и контейнеров.

Жизненный цикл ключевых пар и контейнеров

Описание

  1. После вызова команды createKeyPair на токене появляется ключевая пара с идентификатором keyPairID. Для ее удаления необходимо выполнить одну из команд deleteKeyPair или deletePKIObject, которые физически удалят все составляющие ключевой пары.
  2. Для создания контейнера необходимо вызвать одну из команд writeUserCertificate или generateUserSelfSignedCertificate, после чего появится контейнер с идентификатором contID. Для его удаления необходимо выполнить одну из команд deleteContainer или deletePKIObject, которые физически удалят все составляющие контейнера.
3. При помощи команды [deleteUserCertificate](/jacarta/7-api-sdk/3-jc-webclient/3-3-opisanie-api/3-3-1-funktsionalnost-jc-webclient-api/3-3-1-6-vse-funktsii-jc-webclient/3-3-1-6-5-rabota-s-konteynerami/) можно удалить пользовательский сертификат из контейнера и получить обратно ключевую пару. При этом **contID** станет невалидным, а **keyPairID** \- валидным.

Создание контейнера с помощью команды writeUserCertificate

Заголовок раздела «Создание контейнера с помощью команды writeUserCertificate»

Типовой сценарий использования описан в разделе Встраивание в инфраструктуру открытых ключей.

// Идентификатор токена
var tokenID = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenID,
pin: "my pin"
}
});
// Создать контейнер с ключевой парой и присвоить ему имя
var keyPairID = JCWebClient2.createKeyPair({
args: {
paramSet: "XA",
description: "my description"
}
});
// Задать отличительное имя пользователя (Distinguished Name (DN)),
// включающее стандартное имя (Common Name, (CN))
var dn = {
'CN': 'my CN',
'C': 'RU'
};
// Задать расширения, определяющие область применения закрытого ключа
var exts = {
'keyUsage': 'Digital Signature'
};
// Сгенерировать PKCS10 запрос на сертификат
var csr = JCWebClient2.genCSR({
args: {
id: keyPairID,
dn: dn,
exts: exts
}
});
// Отправление запроса (csr) провайдеру ...
var certificate;
// Получение готового сертификата от провайдера и сохранение его в переменную certificate ...
// Записать сертификат
var contID = JCWebClient2.writeUserCertificate({
args: {
keyPairID: keyPairID,
cert: certificate
}
});
// Контейнер создан и keyPairID больше невалиден
// Отменить ввод PIN-кода
JCWebClient2.unbindToken();

Создание контейнера с помощью команды generateUserSelfSignedCertificate

Заголовок раздела «Создание контейнера с помощью команды generateUserSelfSignedCertificate»
// Идентификатор токена
var tokenID = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenID,
pin: "my pin"
}
});
// Создать контейнер с ключевой парой и присвоить ему имя
var keyPairID = JCWebClient2.createKeyPair({
args: {
paramSet: "XA",
description: "my description"
}
});
// Задать отличительное имя пользователя (Distinguished Name (DN)),
// включающее стандартное имя (Common Name, (CN))
var dn = {
'CN': 'my CN',
'C': 'RU'
};
// Задать расширения, определяющие область применения закрытого ключа
var exts = {
'keyUsage': 'Digital Signature'
};
// Записать сертификат, полученный от УЦ и присвоенный переменной certificate
var contID = JCWebClient2.generateUserSelfSignedCertificate({
args: {
keyPairID: keyPairID,
dn: dn,
exts: exts,
days: 100
}
});
// Контейнер создан и keyPairID больше невалиден
// Отменить ввод PIN-кода
JCWebClient2.unbindToken();
// Идентификатор токена
var tokenID = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenID,
pin: "my pin"
}
});
// Удаление контейнера
JCWebClient2.deleteContainer({
args: {
contID: contID
}
});
// Контейнер удален
// Отменить ввод PIN-кода
JCWebClient2.unbindToken();

На рисунке ниже приведен жизненный цикл автономных сертификатов.

Жизненный цикл автономных сертификатов

Описание

  1. После вызова команды writeStandaloneCertificate на токене появляется автономный сертификат с идентификатором certID.
  2. Для его удаления необходимо выполнить одну из команд deleteStandaloneCertificate или deletePKIObject, которые физически удалят все составляющие автономного сертификата.
// Идентификатор токена
var tokenID = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenID,
pin: "my pin"
}
});
// Тело сертификата в PEM формате
var certBody = "MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==";
// Создать контейнер с ключевой парой и присвоить ему имя
var certID = JCWebClient2.writeStandaloneCertificate({
args: {
cert: certBody,
description: "my description"
}
});
// Автономный сертификат создан
// Отменить ввод PIN-кода
JCWebClient2.unbindToken();
// Идентификатор токена
var tokenID = 0;
// Предъявить PIN-код
JCWebClient2.bindToken({
args: {
tokenID: tokenID,
pin: "my pin"
}
});
// Удаление автономного сертификата
JCWebClient2.deleteStandaloneCertificate({
args: {
certID: certID
}
});
// Автономный сертификат удален
// Отменить ввод PIN-кода
JCWebClient2.unbindToken();