<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/418" />
	<updated>2014-04-21T10:52:12Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/418/</id>
		<entry>
			<title type="html"><![CDATA[Re: Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2004/#p2004" />
			<content type="html"><![CDATA[<p>Устройство памяти электронных ключей Sign Net и Net III описано в нашей <a href="https://www.guardant.ru/support/download/manual/">справочной системе по Guardant API</a>. Здесь необходимо смотреть на структуры защищенных ячеек указанных ключей (т.к. таблица лицензий это частный случай защищенной ячейки).</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2014-04-21T10:52:12Z</updated>
			<id>https://forum.guardant.ru/post/2004/#p2004</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2003/#p2003" />
			<content type="html"><![CDATA[<ul><li><p>Вопрос 1:</p></li></ul><p>Спасибо, понял. <br />Начну копать со своей стороны.</p><ul><li><p>Вопрос 2:</p></li></ul><div class="quotebox"><blockquote><p>...таблицы лицензий для ключей Net III и Sign Net несколько разные.</p></blockquote></div><p>Подскажите, пожалуйста, где можно прочитать по поводу различий? Работать-то нужно...<br />В <a href="https://www.guardant.ru/download/manual/handbook_2_Guardant_Sign_Time_Code.pdf">https://www.guardant.ru/download/manual … e_Code.pdf</a> , страницы 32-33 описана структура защищенной ячейки типа Таблица Лицензиций &quot;современных ключей Guardant Sign Net / Time Net&quot;. На тех же страницах видно, что размер таблицы, содержащий только &quot;нулевой&quot; модуль LMS - всего 17 или 18 байт. Этот размер довольно близок к 24м байтам, но далек до 94х:</p><p><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="http://i57.fastpic.ru/big/2014/0417/d3/8e2b452d832be2bf0f841f255b8813d3.png"><img class="fb_img" src="http://i57.fastpic.ru/big/2014/0417/d3/8e2b452d832be2bf0f841f255b8813d3.png" alt="" /></a></span></p><p>Подскажите, пожалуйста - какие данные являются достоверными, то есть - на что можно опираться в работе при программировании ключей Guardant Sign Net?</p><p>И, если можно: что именно показывает Ваша утилита программирования ключей в дампе поля &quot;Таблица лицензий&quot; маски ключа?</p><p>Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[vlad-mal]]></name>
				<uri>https://forum.guardant.ru/user/767/</uri>
			</author>
			<updated>2014-04-21T07:22:07Z</updated>
			<id>https://forum.guardant.ru/post/2003/#p2003</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2002/#p2002" />
			<content type="html"><![CDATA[<p>Здравствуйте, vlad-mal.</p><p>Приносим извинения за задержку с ответом.<br /></p><ul><li><p>Вопрос 1:</p></li></ul><p>Здесь похоже имеется ошибка в библиотеке <em>writemask.dll</em> которую будем искать и исправлять (скорее всего, к очередному релизу нашего SDK). Для самостоятельного изучения есть <a href="https://forum.guardant.ru/post/291/#p291">исходники</a> этой библиотеки.<br />Пример для Delphi постараемся сделать в ближайшее время.<br /></p><ul><li><p>Вопрос 2:</p></li></ul><p>Тут ошибки нет, таблицы лицензий для ключей Net III и Sign Net несколько разные.</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2014-04-21T05:35:39Z</updated>
			<id>https://forum.guardant.ru/post/2002/#p2002</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/2000/#p2000" />
			<content type="html"><![CDATA[<p>Все живы )</p><p>Завтра наши специалисты посмотрят и ответят - в пятницу не успели.</p>]]></content>
			<author>
				<name><![CDATA[AndreyStepin]]></name>
				<uri>https://forum.guardant.ru/user/8/</uri>
			</author>
			<updated>2014-04-20T17:02:15Z</updated>
			<id>https://forum.guardant.ru/post/2000/#p2000</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1998/#p1998" />
			<content type="html"><![CDATA[<p>Алло. Есть кто живой?</p>]]></content>
			<author>
				<name><![CDATA[vlad-mal]]></name>
				<uri>https://forum.guardant.ru/user/767/</uri>
			</author>
			<updated>2014-04-18T11:03:48Z</updated>
			<id>https://forum.guardant.ru/post/1998/#p1998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Создание таблицы лицензий для Guardant Sign Net. (Delphi)]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1997/#p1997" />
			<content type="html"><![CDATA[<p>Добрый день!</p><p>Два вопроса.</p><p>Вопрос 1.</p><p>С помощью writemask.dll из комплекта разработчика (...\Samples\x86\Win32\Miscellaneous\WriteMask\Lib) пытаюсь создать LMS для Guardant Sign Net. </p><p>Дескрипторы алгоритмов AES128 и ECC160 добавляются без проблем, все работает как нужно.<br />Однако, после добавления операции создания таблицы лицензий, повторное обращение GrdGetInfo() к ключу возвращает значение wRealNetRes совершенно не то, которое я пытаюсь записать: записываю 10, читаю ноль.&nbsp; </p><div class="codebox"><pre><code>  FStatus := GrdGetInfo(
    fGrdHandle,  //  handle to Guardant protected container 
    GrdGIL_Model, //  model of dongle 
    @fbyModel,  // pointer to a buffer for return data 
    sizeof(BYTE)); //  number of bytes for returning
...
  fwType := fGrdFindInfo.wType;
  fwLANRes := fGrdFindInfo.wRealNetRes; // Возвращает 0, вместо 10 (byMaxNetRes)
  fwLANRes := fGrdFindInfo.byMaxNetRes; // Корректировка, если нужно
...

  {- Prepare the mask to write to the Master dongle }
  abyDongleHeader[1] := 0; { byProg }
  abyDongleHeader[2] := 0; { byVer }
  abyDongleHeader[3] := 0;
  abyDongleHeader[4] := 0; { wSN (2 bytes) }
  abyDongleHeader[5] := 0;
  abyDongleHeader[6] := 0; { wMask (2 bytes) }
  FillChar(abyMask, 4096 * sizeof(BYTE), 0);
  FillChar(abyMaskHeader, 4096 * sizeof(BYTE), 0);

  {- Initialize writemask component }
  WriteMaskInit(
    fwType, { type bitmask of Master dongle }
    fbyModel); { model of Master dongle }

  fwMaskSize := 0;
  fwAST_Size := 0;
  fwNumberOfItems := 0;

  if (fwType and GrdDT_LAN) &lt;&gt; 0 then // End User dongle supports LAN (e.g. Stealth II/III Net)
  begin
    // You may add number of LMS modules here
    fwModules[0] := fwLANRes;
    fwModules[1] := fwLANRes;
    fwLMSDetSize := 110;
    LMS_DET_Prepare(
      @fbuf_mask_LMS_det[1], // Reserved memory
      0 {LMS_FLAG_LICENCE_SIZE_2BYTES}, //LMS_FLAG_LSIZE_2BYTES,
      1, // Number of records in LMS (2 modules)
      fwLANRes, // LAN Resource
      @fwModules[0], // WORD array of module sizes
      @fwLMSDetSize);
  end;

  AddAlgorithm(
    @abyMask[1], { pointer to a buffer to return generated mask }
    @abyMaskHeader[1], { pointer to a buffer to return generated mask header }
    fwNumberOfItems,
    { numeric name (algorithm number) of added algorithm/protected item (PI) }
    nsafl_ST_III { + nsafl_ActivationSrv + nsafl_DeactivationSrv {+ nsafl_UpdateSrv},
    { services flags }
    nsafh_ReadSrv {+ nsafh_ReadPwd}, { services flags }
    rs_algo_PI, { protected item }
    fwLMSDetSize, { key length }
    0, { block length }
    0, { activation service password }
    0, { deactivation service password }
    0, { read service password }
    0, { update service password }
    nil, { pointer to structure, contains birth time of algorithm/PI (only for Time dongles) }
    nil, { pointer to structure, contains dead time of algorithm/PI (only for Time dongles) }
    nil, { pointer to structure, contains life time of algorithm/PI (only for Time dongles) }
    nil, { pointer to structure, contains flip time of algorithm/PI (only for Time dongles) }
    $0, { GP counter of algorithm/PI }
    $0A, { error counter of algorithm/PI }
    @fbuf_mask_LMS_det[1], { algorithm determinant }
    @fwMaskSize, { pointer to variables, contains mask size }
    @fwAST_Size, { pointer to variables, contains AST size }
    @fwNumberOfItems); { pointer to variables, contains number of items in mask }</code></pre></div><p>Все, дальше добавляются алгоритмы, которые нормально работают.<br />Подскажите, пожалуйста, в чем может быть проблема?</p><p>...нет ли у Вас работающего примера на Delphi для прошивки LMS в Guardant Sign Net?</p><p>Спасибо.<br />~~~~~~~~~~~~~~~~~~~~~~~~~</p><p>Вопрос 2: в Вашей утилите &quot;Редактор памяти ключей Guardant&quot;, при добавлении таблицы лицензий в образ ключа таблицы, заметил, что размер таблицы лицензий для случая, когда LMS содержит только общий ресурс ключа, имеет длину 94 байта. Это в случае, если создается таблица для Guardant <strong>Sign</strong> Net.<br />Если же таблица LMS создается для ключа Guardant Stealth <strong>III</strong> Net, то размер поля получается в 24 байта:</p><p><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="http://i57.fastpic.ru/big/2014/0417/d3/8e2b452d832be2bf0f841f255b8813d3.png"><img class="fb_img" src="http://i57.fastpic.ru/big/2014/0417/d3/8e2b452d832be2bf0f841f255b8813d3.png" alt="" /></a></span></p><p>Возможно, библиотека writemask.dll не адаптирована для записи LMS в Guardant <strong>Sign</strong> Net?</p><p>Поясните, пожалуйста.</p>]]></content>
			<author>
				<name><![CDATA[vlad-mal]]></name>
				<uri>https://forum.guardant.ru/user/767/</uri>
			</author>
			<updated>2014-04-17T18:38:50Z</updated>
			<id>https://forum.guardant.ru/post/1997/#p1997</id>
		</entry>
</feed>
