Существует два типа хранимых объектов:
- Общедоступные объекты.
- Чтение или получение информации такого объекта доступно всем пользователям без предъявления PIN (любое состояние аутентификации).
- Изменение, запись или удаление требует предъявления PIN-кода пользователя (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded).
2. Защищённые объекты.
- Чтение или получение информации такого объекта доступно только пользователям, предъявившим PIN (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded). - Изменение, запись или удаление требует предъявления PIN-кода пользователя (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded).
- Чтение или получение информации такого объекта доступно только пользователям, предъявившим PIN (состояние аутентификации выше, чем
7.10.1 Запись данных в память устройства
Для записи данных в память устройства используются команды:
- storeBinaryData - запись данных в общедоступную или защищенную области памяти;
- modifyBinaryObject - изменения объекта двоичных данных.
Пример записи общедоступного и защищенного объектов
// Идентификатор токенаvar tokenID = 0;// Предъявить PIN-кодJCWebClient2.bindToken({ args: { tokenID: tokenID, pin: 'my pin' }});// Записать данные в защищённую область памятиvar privateData = 'my private data', privateDataLabel = 'Private data';var privateDataID = JCWebClient2.storeBinaryData({ args: { data: $utf8.encode(privateData), label: privateDataLabel, isPrivate: true }});// Записать данные в общедоступную область памятиvar data = 'my data', dataLabel = 'Data';var dataID = JCWebClient2.storeBinaryData({ args: { data: $utf8.encode(data), label: dataLabel, isPrivate: false }});// Отменить ввод PIN-кодаJCWebClient2.unbindToken();7.10.2 Получение списка всех объектов, хранящихся на устройстве
Для получения списка всех хранящихся на устройстве объектов используется команда getBinaryObjectList. Команда возвращает разный набор данных, в зависимости от того какие данные хранятся на устройстве (общедоступные или *защищенные) и текущего состояния аутентификации.
Пример получения данных при состоянии аутентификации JCWebClient2.Vars.AuthState.notBinded
// Идентификатор токенаvar tokenID = 0;// Для примера проверим если было выполнено предъявление PIN-кода, отменить авторизациюif (JCWebClient2.getLoggedInState().state != JCWebClient2.Vars.AuthState.notBinded) { JCWebClient2.unbindToken();}// Получить список всех объектов данныхvar dataObjects = JCWebClient2.getBinaryObjectList({ args: { tokenID: tokenID }});// Проверка наличия защищенного объекта в полученном спискеvar privateDataFound = dataObjects.find(function(element) { return element.label == privateDataLabel && element.isPrivate == true;});// Проверка наличия общедоступного объекта в полученном спискеvar dataFound = dataObjects.find(function(element) { return element.label == dataLabel && element.isPrivate == false;});console.log('privateDataFound: ' + privateDataFound);console.log('dataFound: ' + dataFound);// ----- Результат -----// privateDataFound: false// dataFound: trueПример получения данных при состоянии аутентификации выше, чем JCWebClient2.Vars.AuthState.notBinded
// Идентификатор токенаvar tokenID = 0;// Предъявить PIN-кодJCWebClient2.bindToken({ args: { tokenID: tokenID, pin: 'my pin' }});// Получить список всех объектов данныхvar dataObjects = JCWebClient2.getBinaryObjectList({ args: { tokenID: tokenID }});// Проверка наличия защищенного объекта в полученном спискеvar privateDataFound = dataObjects.find(function(element) { return element.label == privateDataLabel && element.isPrivate == true;});// Проверка наличия общедоступного объекта в полученном спискеvar dataFound = dataObjects.find(function(element) { return element.label == dataLabel && element.isPrivate == false;});// Отменить ввод PIN-кодаJCWebClient2.unbindToken();console.log('privateDataFound: ' + privateDataFound);console.log('dataFound: ' + dataFound);// ----- Результат -----// privateDataFound: true// dataFound: true7.10.3 Считывание данных из памяти устройства
Для считывания данных используется команда readBinaryObject.
Пример считывания данных при состоянии аутентификации JCWebClient2.Vars.AuthState.notBinded
// Идентификатор токенаvar tokenID = 0;// Для примера проверим если было выполнено предъявление PIN-кода, отменить авторизациюif (JCWebClient2.getLoggedInState().state != JCWebClient2.Vars.AuthState.notBinded) { JCWebClient2.unbindToken();}// Получить список объектов данныхvar dataObjects = JCWebClient2.getBinaryObjectList({ args: { tokenID: tokenID }});// Считать данные из объекта из списка, полученного из getBinaryObjectListdataObjects.forEach(function(element) { var binData = JCWebClient2.readBinaryObject({ args: { tokenID: tokenID, objectID: element.id } }); console.log(element.label + ': ' + $utf8.decode(binData));});// ----- Результат -----// Data: my dataПример считывания данных при состоянии аутентификации выше, чем JCWebClient2.Vars.AuthState.notBinded
// Идентификатор токенаvar tokenID = 0;// Предъявить PIN-кодJCWebClient2.bindToken({ args: { tokenID: tokenID, pin: 'my pin' }});// Получить список объектов данныхvar dataObjects = JCWebClient2.getBinaryObjectList({ args: { tokenID: tokenID }});// Считать данные из объекта из списка, полученного из getBinaryObjectListdataObjects.forEach(function(element) { var binData = JCWebClient2.readBinaryObject({ args: { tokenID: tokenID, objectID: element.id } }); console.log(element.label + ': ' + $utf8.decode(binData));});// Отменить ввод PIN-кодаJCWebClient2.unbindToken();// ----- Результат -----// Private data: my private data// Data: my data7.10.4 Удаление данных из памяти устройства
Для удаления объекта данных из памяти устройства используется команда deleteBinaryObject.
Пример удаления всех объектов, хранящихся на устройстве
// Идентификатор токенаvar tokenID = 0;// Предъявить PIN-кодJCWebClient2.bindToken({ args: { tokenID: tokenID, pin: 'my pin' }});// Получить список объектов данныхvar dataObjects = JCWebClient2.getBinaryObjectList({ args: { tokenID: tokenID }});// Удалить объект из списка, полученного из getBinaryObjectListdataObjects.forEach(function(element) { JCWebClient2.deleteBinaryObject({ args: { objectID: element.id } }); console.log(element.label + ' was deleted');});// Отменить ввод PIN-кодаJCWebClient2.unbindToken();// ----- Результат -----// Private data was deleted// Data was deleted