<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; интеграция и примеры на golang]]></title>
		<link>https://forum.guardant.ru/topic/949/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/949" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «интеграция и примеры на golang».]]></description>
		<lastBuildDate>Wed, 21 Sep 2022 08:48:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4807/#p4807</link>
			<description><![CDATA[<p>Добрый день. <br />Обертки нет, язык Go - нативный. В теории API поддерживает работу с Go, но на практике совместимость не тестировали.<br />Если API возвращает код 0 и Public код в буфере, это говорит о том, что API сработало корректно. Попробуйте найти значение ID ключа в буфере. Возможно, так удастся понять, что куда сместилось.<br />Также наши разработчики обратили внимание на некоторые неточности в структуре.</p><p>wType&nbsp; &nbsp; &nbsp; &nbsp; DWORD // Dongle type flags }</p><p>должно быть WORD</p><p>abyReserved []byte</p><p>поле не имеет размера, это может вызывать ошибки.</p><p>Просьба еще раз проверить всю структуру.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Wed, 21 Sep 2022 08:48:43 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4807/#p4807</guid>
		</item>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4806/#p4806</link>
			<description><![CDATA[<p>Может, у вас уже имеется обертка на go для работы с ключами?</p>]]></description>
			<author><![CDATA[null@example.com (kok)]]></author>
			<pubDate>Wed, 21 Sep 2022 03:11:26 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4806/#p4806</guid>
		</item>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4804/#p4804</link>
			<description><![CDATA[<p>Добрый день, попробовали реализовать работу с API на языке Go, операции выполняются с результатом 0, но при выполнении GrdFind в pdwID вместо номера ключа тоже 0 и в pFindInfo все значения 0, кроме dwPublicCode, в нём почему-то как раз id ключа, хотя в Delphi он dwID. Можете помочь?</p><p>package main</p><p>import (<br />&nbsp; &nbsp; &quot;log&quot;<br />&nbsp; &nbsp; &quot;syscall&quot;<br />&nbsp; &nbsp; &quot;unsafe&quot;</p><p>&nbsp; &nbsp; &quot;golang.org/x/sys/windows&quot;<br />)</p><p>type (<br />&nbsp; &nbsp; HANDLE&nbsp; &nbsp; &nbsp; &nbsp; uintptr<br />&nbsp; &nbsp; DWORD&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32<br />&nbsp; &nbsp; HWND&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HANDLE<br />&nbsp; &nbsp; HWINEVENTHOOK HANDLE<br />&nbsp; &nbsp; LONG&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int32<br />)</p><p>type GrdFindInfo struct {<br />&nbsp; &nbsp; dwPublicCode DWORD // Public code }<br />&nbsp; &nbsp; byHrwVersion byte&nbsp; // Dongle hardware version }<br />&nbsp; &nbsp; byMaxNetRes&nbsp; byte&nbsp; // Maximum Guardant Net license limit }<br />&nbsp; &nbsp; wType&nbsp; &nbsp; &nbsp; &nbsp; DWORD // Dongle type flags }<br />&nbsp; &nbsp; dwID&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD // Dongle&#039;s ID (unique) }<br />&nbsp; &nbsp; //{ Following fields are available from UAM mode }<br />&nbsp; &nbsp; byNProg&nbsp; &nbsp; &nbsp;byte&nbsp; //{ Program number }<br />&nbsp; &nbsp; byVer&nbsp; &nbsp; &nbsp; &nbsp;byte&nbsp; //{ Version }<br />&nbsp; &nbsp; wSN&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Serial number }<br />&nbsp; &nbsp; wMask&nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Bit mask }<br />&nbsp; &nbsp; wGP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Executions GP counter/ License time counter }<br />&nbsp; &nbsp; wRealNetRes DWORD //{ Current Guardant Net license limit, must be &lt;= byMaxNetRes }<br />&nbsp; &nbsp; dwIndex&nbsp; &nbsp; &nbsp;DWORD //{ Index for remote programming }<br />&nbsp; &nbsp; //{ Only Stealth III info }<br />&nbsp; &nbsp; //abyReservedISEE&nbsp; &nbsp; array[1..$1C] of BYTE;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //{ Reserved for future }<br />&nbsp; &nbsp; abyReservedISEE []byte //{ Reserved for future }<br />&nbsp; &nbsp; wWriteProtectS3 DWORD&nbsp; //{ Stealth III write protect address }<br />&nbsp; &nbsp; wReadProtectS3&nbsp; DWORD&nbsp; //{ Stealth III read protect address }<br />&nbsp; &nbsp; wGlobalFlags&nbsp; &nbsp; DWORD&nbsp; //{ Global Stealth III flags. Reserved. }<br />&nbsp; &nbsp; dwDongleState&nbsp; &nbsp;DWORD&nbsp; //{ Dongle State. See GrdDSF_XXX definition }<br />&nbsp; &nbsp; /*{ Available since: }<br />&nbsp; &nbsp;&nbsp; &nbsp;{ 1. Stealth Sign.(Firmware number &gt;= 0x01000011h or 01.00.00.11) }<br />&nbsp; &nbsp;&nbsp; &nbsp;{ 2. Guardant Code. }*/<br />&nbsp; &nbsp; dwOldMPNum DWORD </p><p>&nbsp; &nbsp; abyReservedH []byte //{ Reserved. For align to 0x100 [0x100 - 0x1A - 0x1C - 0x0A] }<br />&nbsp; &nbsp; /*{ Reserved info from gsA }<br />&nbsp; &nbsp;&nbsp; &nbsp;{ Driver info }*/<br />&nbsp; &nbsp; dwGrDrv_Platform DWORD //{ Driver platform (Win32/Win64) }<br />&nbsp; &nbsp; dwGrDrv_Vers&nbsp; &nbsp; &nbsp;DWORD //{ Driver version (0x04801234=4.80.12.34 }<br />&nbsp; &nbsp; dwGrDrv_Build&nbsp; &nbsp; DWORD //{ Driver build }<br />&nbsp; &nbsp; dwGrDrv_Reserved DWORD //{ Reserved }<br />&nbsp; &nbsp; //{ dongle info }<br />&nbsp; &nbsp; dwRkmUserAddr&nbsp; &nbsp;DWORD // { wkmUserAddr }<br />&nbsp; &nbsp; dwRkmAlgoAddrW&nbsp; DWORD //{ wkmAlgoAddr }<br />&nbsp; &nbsp; dwPrnPort&nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Printer port address or 0 if it USB }<br />&nbsp; &nbsp; dwClientVersion DWORD //{ Dongle client version }<br />&nbsp; &nbsp; //{ SAP start }<br />&nbsp; &nbsp; dwRFlags&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Type of MCU }<br />&nbsp; &nbsp; dwRProgVer&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Program version (in MCU) }<br />&nbsp; &nbsp; dwRcn_rc&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ curr_num &amp; answer code }<br />&nbsp; &nbsp; dwNcmps&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD //{ Number of compare conditions }<br />&nbsp; &nbsp; dwNSKClientVersion DWORD //{ Client version (low byte - minor, hi - major) }<br />&nbsp; &nbsp; dwModel&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD //{ Dongle Model }<br />&nbsp; &nbsp; dwMcuType&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD //{ Dongle MCU Type }<br />&nbsp; &nbsp; dwMemoryType&nbsp; &nbsp; &nbsp; &nbsp;DWORD //{ Dongle Memory Type }<br />&nbsp; &nbsp; //{ Reserved for future }<br />&nbsp; &nbsp; abyReserved []byte //{ Reserved. For align to 0x200&nbsp; [0x200 - 0x100 - 0x34] }<br />}</p><p>func main() {</p><p>&nbsp; &nbsp; new_windows()<br />}</p><p>func new_windows() {<br />&nbsp; &nbsp; grd, err := windows.LoadDLL(&quot;с:/Guardant/Lib/GrdAPI64.dll&quot;)<br />&nbsp; &nbsp; if err != nil {<br />&nbsp; &nbsp; &nbsp; &nbsp; log.Fatalf(&quot;Ошибка загрузки библиотеки GrdAPI64 (%s)&quot;, err.Error())<br />&nbsp; &nbsp; }</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; GrdStartup := grd.MustFindProc(&quot;GrdStartup&quot;)</p><p>&nbsp; &nbsp; r, _, _ := GrdStartup.Call(1, 0, 0)</p><p>&nbsp; &nbsp; log.Println(r)</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; GrdCreateHandle := grd.MustFindProc(&quot;GrdCreateHandle&quot;)</p><p>&nbsp; &nbsp; Hend, _, _ := GrdCreateHandle.Call(0, 0, 0)</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; GrdSetAccessCodes := grd.MustFindProc(&quot;GrdSetAccessCodes&quot;)</p><p>&nbsp; &nbsp; r, _, _ = GrdSetAccessCodes.Call(Hend, 123456789, 987654321)</p><p>&nbsp; &nbsp; log.Println(r)</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; GrdSetFindMode := grd.MustFindProc(&quot;GrdSetFindMode&quot;)<br />&nbsp; &nbsp; r, _, _ = GrdSetFindMode.Call(Hend, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)</p><p>&nbsp; &nbsp; log.Println(r)</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; GrdFind := grd.MustFindProc(&quot;GrdFind&quot;)<br />&nbsp; &nbsp; r, _, _ = GrdFind.Call(Hend, uintptr(unsafe.Pointer(&amp;key)), uintptr(unsafe.Pointer(&amp;st)))</p><p>&nbsp; &nbsp; log.Println(r)<br />&nbsp; &nbsp; log.Println(st)<br />&nbsp; &nbsp; log.Println(key)</p><p>&nbsp; &nbsp; //******************************************</p><p>&nbsp; &nbsp; GrdLogin := grd.MustFindProc(&quot;GrdLogin&quot;)</p><p>&nbsp; &nbsp; r, _, _ = GrdLogin.Call(Hend, 0, 0)</p><p>&nbsp; &nbsp; log.Println(r)</p><p>&nbsp; &nbsp; //**********************************************</p><p>&nbsp; &nbsp; log.Println(key)<br />}</p>]]></description>
			<author><![CDATA[null@example.com (kok)]]></author>
			<pubDate>Tue, 20 Sep 2022 14:23:14 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4804/#p4804</guid>
		</item>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4569/#p4569</link>
			<description><![CDATA[<p>Добрый день. Если вы уже используете наши ключи и набор инструментов Guardant SDK, то рекомендуем попробовать защиту с помощью API из состава Guardant SDK. Все необходимые файлы можно найти в директории установки SDK (%GUARDANT_SDK%\Lib, %GUARDANT_SDK%\Include).<br />Если ранее вы не пользовались нашими ключами, то у вас есть возможность ознакомиться с новой системой лицензирования - <a href="https://www.guardant.ru/products/all/guardant-station/">Guardant Station</a>. Продукт Guardant Station включает в себя систему управления лицензиями и набор инструментов для защиты - <a href="https://dev.guardant.ru/display/GSLK/Guardant+SLK">Guardant SLK</a>, в составе которого вы также найдете файлы для защиты с помощью API (%GUARDANT_SDK%\api).</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Tue, 23 Nov 2021 10:11:22 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4569/#p4569</guid>
		</item>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4568/#p4568</link>
			<description><![CDATA[<p>Gogland - компилируемый многопоточный язык программирования, разработанный Google в 2007</p><p>Сейчас набирает популярность, как удобный язык для создания в т.ч. сервисов</p><p>Загружать библиотеки умеет</p><p><em>syscall.LoadLibrary(&quot;kernel32.dll&quot;)</em></p><p>синтаксис между С и Delphi</p>]]></description>
			<author><![CDATA[null@example.com (kok)]]></author>
			<pubDate>Mon, 22 Nov 2021 13:15:53 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4568/#p4568</guid>
		</item>
		<item>
			<title><![CDATA[Re: интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4567/#p4567</link>
			<description><![CDATA[<p>Добрый день. Наши инструменты не исследовались на совместимость с golang.<br />С помощью API можно защищать приложения, написанные на нативных языках, а так же DotNet (С/С++/С#, delphi, java). Для защиты необходимо подключить соответствующую библиотеку, в которой описаны функции API. <br />Расскажите чуть подробнее о golang, умеет ли он работать с подключаемыми библиотеками?</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Mon, 22 Nov 2021 11:50:33 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4567/#p4567</guid>
		</item>
		<item>
			<title><![CDATA[интеграция и примеры на golang]]></title>
			<link>https://forum.guardant.ru/post/4566/#p4566</link>
			<description><![CDATA[<p>Подскажите, есть интеграция API под golang ?</p>]]></description>
			<author><![CDATA[null@example.com (kok)]]></author>
			<pubDate>Mon, 22 Nov 2021 01:29:35 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4566/#p4566</guid>
		</item>
	</channel>
</rss>
