<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/991" />
	<updated>2025-02-03T08:33:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/991/</id>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5344/#p5344" />
			<content type="html"><![CDATA[<p>Добрый день, <strong>zuykov</strong>.<br />Для простоты компиляции можно скопировать файлы библиотеки, заголовочного файла и исходного кода в одну папку, тогда при компиляции не будет проблем с поиском путей к нужным файлам. Это не единственное решение. Ваш способ так же походит для решения этой проблемы.<br />Для решения проблемы при запуске также можно добавить файл библиотеки (или ссылку на нее) в директории /usr/lib и /usr/lib64.</p><div class="quotebox"><cite>zuykov пишет:</cite><blockquote><p>Вопрос, должен ли выполняться пример для c++ под Linux? Что еще нужно сделать?</p></blockquote></div><p>Да, пример должен корректно работать в Lilnux.</p><p>Для компиляции кроме кода с примером потребуется еще и&nbsp; grddongle.cpp</p><p><strong>g++ demo.cpp grddongle.cpp -o demo -I./ -L./ -lgrdapi -lpthread</strong></p><p>В некоторых случаях могут потребоваться дополнительные аргументы&nbsp; <strong>-ldl -lrt</strong></p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2025-02-03T08:33:31Z</updated>
			<id>https://forum.guardant.ru/post/5344/#p5344</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5343/#p5343" />
			<content type="html"><![CDATA[<p>При попытке запуска примера на C++ возникают ошибки:</p><div class="codebox"><pre><code>src$ g++ demo.cpp -o demo -I/home/user_name/Guardant/SDK7/Include/ -L/home/user_name/Guardant/SDK7/Lib/linux/x86_64 -lgrdapi -lpthread
/tmp/ccUnxSBT.o: In function `CGrdDongle::DoStartup() const&#039;:
demo.cpp:(.text._ZNK10CGrdDongle9DoStartupEv[_ZNK10CGrdDongle9DoStartupEv]+0x15): undefined reference to `CGrdMutex::CGrdMutex()&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoStartupEv[_ZNK10CGrdDongle9DoStartupEv]+0x1c): undefined reference to `CGrdDongle::m_bGrdDongleStartup&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoStartupEv[_ZNK10CGrdDongle9DoStartupEv]+0x6c): undefined reference to `CGrdDongle::m_bGrdDongleStartup&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoStartupEv[_ZNK10CGrdDongle9DoStartupEv]+0x7e): undefined reference to `CGrdMutex::~CGrdMutex()&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoStartupEv[_ZNK10CGrdDongle9DoStartupEv]+0x91): undefined reference to `CGrdMutex::~CGrdMutex()&#039;
/tmp/ccUnxSBT.o: In function `CGrdDongle::DoCleanup() const&#039;:
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x15): undefined reference to `CGrdMutex::CGrdMutex()&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x1b): undefined reference to `CGrdDongle::m_lGrdDongleClassCounter&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x24): undefined reference to `CGrdDongle::m_lGrdDongleClassCounter&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x2a): undefined reference to `CGrdDongle::m_lGrdDongleClassCounter&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x35): undefined reference to `CGrdDongle::m_bGrdDongleStartup&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x54): undefined reference to `CGrdDongle::m_bGrdDongleStartup&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x61): undefined reference to `CGrdMutex::~CGrdMutex()&#039;
demo.cpp:(.text._ZNK10CGrdDongle9DoCleanupEv[_ZNK10CGrdDongle9DoCleanupEv]+0x72): undefined reference to `CGrdMutex::~CGrdMutex()&#039;
/tmp/ccUnxSBT.o: In function `CGrdDongle::CGrdDongle(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, bool)&#039;:
demo.cpp:(.text._ZN10CGrdDongleC2EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb[_ZN10CGrdDongleC5EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb]+0x10e): undefined reference to `CGrdMutex::CGrdMutex()&#039;
demo.cpp:(.text._ZN10CGrdDongleC2EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb[_ZN10CGrdDongleC5EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb]+0x114): undefined reference to `CGrdDongle::m_lGrdDongleClassCounter&#039;
demo.cpp:(.text._ZN10CGrdDongleC2EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb[_ZN10CGrdDongleC5EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb]+0x11d): undefined reference to `CGrdDongle::m_lGrdDongleClassCounter&#039;
demo.cpp:(.text._ZN10CGrdDongleC2EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb[_ZN10CGrdDongleC5EjjjjjjjjjjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb]+0x129): undefined reference to `CGrdMutex::~CGrdMutex()&#039;
collect2: error: ld returned 1 exit status</code></pre></div><p>Вопрос, должен ли выполняться пример для c++ под Linux? Что еще нужно сделать?</p>]]></content>
			<author>
				<name><![CDATA[zuykov]]></name>
				<uri>https://forum.guardant.ru/user/2208/</uri>
			</author>
			<updated>2025-02-03T08:08:28Z</updated>
			<id>https://forum.guardant.ru/post/5343/#p5343</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5342/#p5342" />
			<content type="html"><![CDATA[<p>Добавил в файл &quot;~/.bashrc&quot;&nbsp; указание расположения библиотеки в переменную<br /></p><div class="codebox"><pre><code>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user_name/Guardant/SDK7/Lib/linux/x86_64</code></pre></div><p>В итоге&nbsp; пример заработал на виртуалке и нашел ключ. Буду пробовать пример на C++</p>]]></content>
			<author>
				<name><![CDATA[zuykov]]></name>
				<uri>https://forum.guardant.ru/user/2208/</uri>
			</author>
			<updated>2025-02-03T08:00:27Z</updated>
			<id>https://forum.guardant.ru/post/5342/#p5342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5341/#p5341" />
			<content type="html"><![CDATA[<p>Проблема компиляции решилась, <strong>нужно указывать полный путь</strong>.</p><p>В итоге смог скомпилировать. Библиотека лежит в домашнем каталоге, папка Guardant</p><div class="codebox"><pre><code>gcc demo.c -o demo -I/home/user_name/Guardant/SDK7/Include/ -L/home/user_name/Guardant/SDK7/Lib/linux/x86_64 -lgrdapi -lpthread</code></pre></div><p>Но при запуске бинарника возникает ошибка:<br /></p><div class="codebox"><pre><code>$ ./demo
./demo: error while loading shared libraries: libgrdapi.so: cannot open shared object file: No such file or directory</code></pre></div><p>Вопрос о том как правильно устанавливать в Linux библиотеку Guardant актуален</p>]]></content>
			<author>
				<name><![CDATA[zuykov]]></name>
				<uri>https://forum.guardant.ru/user/2208/</uri>
			</author>
			<updated>2025-02-03T07:27:30Z</updated>
			<id>https://forum.guardant.ru/post/5341/#p5341</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5340/#p5340" />
			<content type="html"><![CDATA[<p>Как правильно нужно устанавливать библиотеку под Linux для ведения разработки? Или для сборки примера?</p>]]></content>
			<author>
				<name><![CDATA[zuykov]]></name>
				<uri>https://forum.guardant.ru/user/2208/</uri>
			</author>
			<updated>2025-02-03T07:13:15Z</updated>
			<id>https://forum.guardant.ru/post/5340/#p5340</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/5339/#p5339" />
			<content type="html"><![CDATA[<p>Скопировал библиотеку в домашний каталог, пробую запустить пример:</p><div class="codebox"><pre><code>gcc demo.c -o demo -I~/Guardant/SDK7/Include -L~/Guardant/SDK7/Lib/linux/x86_64 -lgrdapi -lpthread
demo.c:15:20: fatal error: grdapi.h: Нет такого файла или каталога

                    ^
compilation terminated.</code></pre></div><p>В итоге ошибка компиляции. В файле примера пробовал изменять в строке include угловые скобочки на кавычки (там где объявлен файл grdapi.h), но результат тотже</p>]]></content>
			<author>
				<name><![CDATA[zuykov]]></name>
				<uri>https://forum.guardant.ru/user/2208/</uri>
			</author>
			<updated>2025-02-03T07:11:45Z</updated>
			<id>https://forum.guardant.ru/post/5339/#p5339</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4853/#p4853" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kortovea пишет:</cite><blockquote><p>Тимофей, ваш ответ понятен, спасибо, просто смущает, что у вас на самой странице по кодам доступа <a href="https://dev.guardant.ru/pages/viewpage.action?pageId=71476493">https://dev.guardant.ru/pages/viewpage. … d=71476493</a> указано &quot;Все боевые коды доступа, кроме Public, должны храниться в тайне от третьих лиц.&quot; , собственно в том числе и из-за этой строки задал в этой теме вопрос.</p></blockquote></div><p>Добрый день.<br />Действительно, лишний раз коды доступа афишировать не следует. Однако, механизмы защиты, используемые в наших инструментах, не базируются только на кодах доступа.</p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2022-11-09T14:06:01Z</updated>
			<id>https://forum.guardant.ru/post/4853/#p4853</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4844/#p4844" />
			<content type="html"><![CDATA[<p>Тимофей, ваш ответ понятен, спасибо, просто смущает, что у вас на самой странице по кодам доступа <a href="https://dev.guardant.ru/pages/viewpage.action?pageId=71476493">https://dev.guardant.ru/pages/viewpage. … d=71476493</a> указано &quot;Все боевые коды доступа, кроме Public, должны храниться в тайне от третьих лиц.&quot; , собственно в том числе и из-за этой строки задал в этой теме вопрос.</p>]]></content>
			<author>
				<name><![CDATA[kortovea]]></name>
				<uri>https://forum.guardant.ru/user/2014/</uri>
			</author>
			<updated>2022-11-08T13:40:01Z</updated>
			<id>https://forum.guardant.ru/post/4844/#p4844</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4825/#p4825" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Для feature.check действительно нужен privateReadCode, как и для большинства функций, использующихся после Login. Однако, read код не является секретной информацией, не критично, если он попадает в руки третьих лиц.<br />Если вы планируете пользоваться элементами памяти, то они поддерживают работу с уникальными паролями, так что и в этом случае код на чтение роли в безопасности защищенного приложения не играет.</p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2022-10-14T11:07:10Z</updated>
			<id>https://forum.guardant.ru/post/4825/#p4825</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Необходимость передачи Private Read кода для процедуры check в SLK]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4824/#p4824" />
			<content type="html"><![CDATA[<p>Здравствуйте, пытаюсь защитить приложение на java через SLK и Guardant Licensing API 3.3.0 (в 3.5.0 кажется такое же поведение)<br />Пока проверяю с программным демо ключом.</p><p>Как я понимаю стандартный сценарий проверки лицензий - feature.login -&gt; feature.check -&gt; feature.logout.</p><p>При вызове метода Check на объекте grdlic.Feature я вижу ошибку &quot;Error code: 2. Запрошенный компонент (Feature) не найден&quot;, если при login я передаю GrdVendorCodes содержания (1368487351,0,0) (publicCode, privateReadCode, privateWriteCode).</p><p>Если я передам при login (1368487351, 1368487493,0), то check отработает успешно.</p><p>Хочется узнать, для check действительно нужен privateReadCode или я делаю что-то не так? Просто кажется странным, что для стандартного сценария проверки лицензии нужно обязательно в приложении указывать privateReadCode, который должен храниться в тайне от третьих лиц. И такое же поведение ожидается для аппаратных ключей?</p><p>Если же privateReadCode не нужен, я не смогу указать null, т.к в объекте GrdVendorCodes поля - примитивы и я обязан передать значение, тот же &quot;0&quot;.</p>]]></content>
			<author>
				<name><![CDATA[kortovea]]></name>
				<uri>https://forum.guardant.ru/user/2014/</uri>
			</author>
			<updated>2022-10-14T09:03:18Z</updated>
			<id>https://forum.guardant.ru/post/4824/#p4824</id>
		</entry>
</feed>
