Perl PGP в шифровании памяти, использующем GPG

Я пытался использовать Crypt::OpenPGP, но столкнулся с некоторыми проблемами при расшифровке зашифрованных сообщений GPG. Итак, теперь я ищу альтернативы. Я хотел бы, чтобы модуль мог полностью выполнять шифрование/дешифрование в памяти, потому что мы хотели бы гарантировать, что данные никогда не будут отображаться на диске в незашифрованном состоянии. Сервер будет иметь gpg версии 2.x, которую поддерживают не все модули. Есть ли хороший модуль для меня, который будет работать? Я нахожу просеивание этих модулей немного сложным, потому что, похоже, не существует одного «лучшего» модуля, и они разного возраста.


person xenoterracide    schedule 26.09.2012    source источник
comment
Задумывались ли вы о написании кода XS для прямого взаимодействия с libgpg?   -  person Rob    schedule 05.02.2013
comment
нет, XS сбивает с толку и, на мой взгляд, плохо документирован. Я нашел оболочку GPG, которая работала достаточно хорошо.   -  person xenoterracide    schedule 06.02.2013


Ответы (1)


Как сказал Роб, лучшее решение — использовать XS.

Пожалуйста, ознакомьтесь с этой книгой: Расширение и внедрение Perl.

Эта книга очень хороша для тех, кто немного знает C и C++ и хочет погрузиться в XS. Также необходимо знание Perl.

По сути, XS — это просто API, предоставляемый Perl для доступа ко всем структурам данных:

  • скаляры
  • шарики
  • хеши
  • использованная литература
  • массивы
  • и т.д

Модули XS состоят из 2 разделов:

Вам придется написать тесты для вашего кода, чтобы убедиться, что он работает так, как вы хотите.

При написании XS я настоятельно рекомендую вам использовать:

Если у вас могут возникнуть проблемы с производительностью, рекомендую вам использовать callgrind, так как это один из лучшие инструменты профайлеров там. Вы можете просмотреть вывод callgrind, используя kcachegrind.

Отправной точкой является h2xs. Это утилита, которая генерирует весь скучный шаблон, с которым вы не хотите иметь дело. Чтобы получить некоторое представление о h2xs, прочитайте это руководство.

Имейте в виду, что h2xs сгенерирует для вас Makefile.PL, который после запуска perl Makefile.PL сгенерирует стандартный файл Makefile. С этого момента вы можете make свой модуль. Убедитесь, что вы указали Makefile.PL на связь с libpgp. Также убедитесь, что у вас есть -g для компиляции с отладочными символами. Вы попадете в ситуации, когда вам придется отлаживать с помощью gdb и необходимы символы отладки.

Кроме того, вот презентация XS под названием Baby XS. Это будет очень хорошее введение в XS.

Я также предлагаю вам приобрести эту книгу, она потрясающая. Я использовал его, когда писал XS-код, и он мне очень помог (и до сих пор помогает).

Если вы не хотите иметь дело со всеми XS, вы можете использовать более легкий Inline::C или Встроенный::CPP. Но для знать основы XS API.

Я думаю, вам будет немного сложно начать, но как только вы освоите некоторые основы XS, все станет намного проще. Преимущество изучения XS заключается в том, что вы больше не привязаны к кому-то, кто предлагает поддержку модуля XS, вы сможете написать свой собственный модуль или использовать фрагменты других модулей XS. Если вы скажете, что Crypt::OpenPGP не имеет необходимых вам функций, вы можете написать свой собственный.

person wsdookadr    schedule 26.02.2013