Операции с данными в памяти устройств
Существует два типа хранимых объектов:
- Общедоступные объекты.
- Чтение или получение информации такого объекта доступно всем пользователям без предъявления PIN (любое состояние аутентификации).
- Изменение, запись или удаление требует предъявления PIN-кода пользователя (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded).
-
- Защищённые объекты.
- Чтение или получение информации такого объекта доступно только пользователям, предъявившим PIN (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded). - Изменение, запись или удаление требует предъявления PIN-кода пользователя (состояние аутентификации выше, чем
JCWebClient2.Vars.AuthState.notBinded).
Запись данных в память устройства
Заголовок раздела «Запись данных в память устройства»Для записи данных в память устройства используются команды:
- 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();Получение списка всех объектов, хранящихся на устройстве
Заголовок раздела «Получение списка всех объектов, хранящихся на устройстве»Для получения списка всех хранящихся на устройстве объектов используется команда 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: trueСчитывание данных из памяти устройства
Заголовок раздела «Считывание данных из памяти устройства»Для считывания данных используется команда 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 dataУдаление данных из памяти устройства
Заголовок раздела «Удаление данных из памяти устройства»Для удаления объекта данных из памяти устройства используется команда 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
