Название: [РЕШЕНО] Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 11:44
Товарищи! Пытаюсь подружить Qt и PGPSDK, взятые с симантековского сайта! Библиотеки подключил, но при вызове, а точнее даже не при вызове, а стоит упомянть хотя бы одну ф-ию из библиотеки pgp, как программа сразу после запуска выходит с кодом 0. МОжет кто сталкивался? Не могу понять, куда рыть. Вот код, если что. main.cpp #include <QCoreApplication> #include <QDebug>
#define PGP_WIN32 1
#define _UNICODE 1
#include "pgpMsg.h"
static const char* kTestMessage = "X-Make-Money-Fast: TRUE\r\n" "MIME-Version: 1.0\r\n" "Subject: Dearest $USER, your assistance is pleased required\r\n" "Date: Fri, 1 Jan 2013 17:57:05 +0900\r\n" "From: \"Mr. Esquire $USER\" <redir.ru.cn@127.200.119.21>\r\n" "To: \"$USER\" <user@127.0.0.1>\r\n" "Content-Type: text/plain\r\n\r\n" "Dear Mr, $USER.\r\n\r\n" "Please considerate this letters by very much seriously because of unportant\r\n" "businesses of the Nigeria consulate bank army. My funds are of full\r\n" "money to send in America, Canada, USA. I am $USER you for helping gold\r\n" "stocks and portfilos with helping for serious of 15 (fiveteen) with cent\r\n" "of profits are of you. Until in confident five days by you responding VERY\r\n" "UNPORTANT| if with government by savings.\r\n\r\n" "By onlying with help us, for serious, businessing.\r\n\r\n" "Sincely.\r\n" " Mr, $USER\r\n";
static const char* kTestKey = "-----BEGIN PGP PRIVATE KEY BLOCK-----\n" "Version: PGP Desktop 9.0.0\n" "\n" "lQHYBEJ9ynEBBADOCQLgG600k09qH/78qRDyiBK5vzt57phgV8fS6JDZTPEAue14\n" "rYH6QoXL/XuVcERiRoYl7CFy+5MdU3PTClReFRf2z/Zb9LbOZ3c3X8NmLetmS5N5\n" "5nm3xQT2DDZatLu1GknkEtz9RsS8yo7PP3Qzwqvca0CA/mYAmQpy/HkhsQARAQAB\n" "AAP/bK2SJ7ZRmX7uj9MKxClFuDiQcAvwCnQRShhjXduws/6CzVhFa7dR7TjzrFMr\n" "wfqzB4edsRkp16XdxsVDPhmfwAGvS/jmTfhjO+sP5ww8U28zyxScKA+vagaOn3LE\n" "qDVIZBLTO4Z+llb6BIE835AEKbP2RTNavGzzAbDdRHIxtIUCANS7TC6R5aAeWhB0\n" "+/JbcLwte1mvpuAW5UikR0+cPdQmmJI6qBHgRNMXt9Nhi7LB2VwOEk3qogIK83bf\n" "xDFBox8CAPfxCa+K0PBS5mHOpvQypi/cbR2LIZ7WzxgnjoFT6Lapu6qNTXuZT4MV\n" "gdPR/EPpB6TJGlsRZs/eJVA093mk8S8B/0Xk5afSCG/HQqilQohxdTlxaERe90mx\n" "dtLaR5MvcpF6AKnH5K8KatGNOXPabLSFkVgWqkjPP9ANXjIDa53022Gh4bQmUHJv\n" "eHlUb29sIDxwcm94eXRvb2xAbWFyemlwYW4ucGdwLmNvbT4=\n" "=Dfar\n" "-----END PGP PRIVATE KEY BLOCK-----\n" "-----BEGIN PGP PUBLIC KEY BLOCK-----\n" "Version: PGP Desktop 9.0.0\n" "\n" "mQCNBEJ9ynEBBADOCQLgG600k09qH/78qRDyiBK5vzt57phgV8fS6JDZTPEAue14\n" "rYH6QoXL/XuVcERiRoYl7CFy+5MdU3PTClReFRf2z/Zb9LbOZ3c3X8NmLetmS5N5\n" "5nm3xQT2DDZatLu1GknkEtz9RsS8yo7PP3Qzwqvca0CA/mYAmQpy/HkhsQARAQAB\n" "tCZQcm94eVRvb2wgPHByb3h5dG9vbEBtYXJ6aXBhbi5wZ3AuY29tPokD6QQQZAED\n" "3AUCQn3KcQUDAeEzgAMFAHjDCmQBAQQwggPCMIIDK6ADAgECAgEBMA0GCSqGSIb3\n" "DQEBBAUAMIGUMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNVBAcTCVBh\n" "bG8gQWx0bzEYMBYGA1UEChMPUEdQIENvcnBvcmF0aW9uMQswCQYDVQQLEwJRQTEU\n" "MBIGA1UEAxMLUHJveHlMaWIgQ0ExJzAlBgkqhkiG9w0BCQEWGHByb3h5Y2FAbWFy\n" "emlwYW4ucGdwLmNvbTAeFw0wNTA1MDgwODE0NDFaFw0wNjA1MDgwODE0NDFaMIGU\n" "MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNVBAcTCVBhbG8gQWx0bzEY\n" "MBYGA1UEChMPUEdQIENvcnBvcmF0aW9uMQswCQYDVQQLEwJRQTESMBAGA1UEAxMJ\n" "UHJveHlUb29sMSkwJwYJKoZIhvcNAQkBFhpwcm94eXRvb2xAbWFyemlwYW4ucGdw\n" "LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzgkC4ButNJNPah/+/KkQ\n" "8ogSub87ee6YYFfH0uiQ2UzxALnteK2B+kKFy/17lXBEYkaGJewhcvuTHVNz0wpU\n" "XhUX9s/2W/S2zmd3N1/DZi3rZkuTeeZ5t8UE9gw2WrS7tRpJ5BLc/UbEvMqOzz90\n" "M8Kr3GtAgP5mAJkKcvx5IbECAwEAAaOCASAwggEcMAkGA1UdEwQCMAAwLAYJYIZI\n" "AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW\n" "BBST6t3Zh6uMHZfHEvMoRJFgZJ1M7zCBwQYDVR0jBIG5MIG2gBTvYplKZzA5R0i6\n" "p0IgC3j7DdzmyqGBmqSBlzCBlDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIw\n" "EAYDVQQHEwlQYWxvIEFsdG8xGDAWBgNVBAoTD1BHUCBDb3Jwb3JhdGlvbjELMAkG\n" "A1UECxMCUUExFDASBgNVBAMTC1Byb3h5TGliIENBMScwJQYJKoZIhvcNAQkBFhhw\n" "cm94eWNhQG1hcnppcGFuLnBncC5jb22CAQAwDQYJKoZIhvcNAQEEBQADgYEAIXgg\n" "ZqOwKRTGho9ThSzQe5ghaGFMyt1Yl/rRB1ECkA1dMDEUYxJTJ/vHhMl0Zr2eq3Ga\n" "IIl31ZDZfPz0IDVEWxDPR8J7kWY+gZjdIOgyKrvzO75H5/q6U0DdQaDo4mkFzwcs\n" "n63rguShR7qldGvMXn6kKGKtAxUzS29vsYKmOYEAAAAAAAEBiQCoBBABAgASBQJE\n" "YjbCBQkAAAAABR4BAAAAAAoJEKfiFER+xIw+MAMD/irwa22EKTVaVPHBVuMDxzus\n" "Zio/D/fs6K6+GXo6sEm88BrxnZyzs9dXoeIg12dPVZkofYHT4f+LMup7Ue3+rGOg\n" "1yOTUanlF0xQHOg4lIayj6lH09aabbE1iwhPgZIe+jVjPqZos3a9zzyLHKSSUVFn\n" "PQBtFxUAFbWGWlhkOU9giQEgBBABAgAKBQJE/jS4AwUBeAAKCRA7s2aeyfsc28v7\n" "B/9nZRjQBZOn4xPky5vy8BxeisD66OsGyJJt7MbJX6lTKgm7jWLHrZXP6572d8kh\n" "jRcxz0MkxkapeMP1BZFMedy1atCaN9dC1p8dt/9CbTRKDf4ZdoZY3LzOWM7aYk3i\n" "1TryXrJxj8dHBtyo9Z9rsKsh+lpSZL33ivuWG80ysEoBgaFCeQNh1nh4MFfnQAXT\n" "Hm4WtqhonqOR6Ztlhm9zp2cQKyTKIHnPjEY95MjMiESe2IBeTI4A2EGY3GygVH3/\n" "9Az7waej72z/yV/2LYsKw6jD4hUGwsL0vPMCD3XdB/a/AG0U83db0504GHa7R8WS\n" "oH96sTgcXFgZ7u4+CB237jMM\n" "=1ufZ\n" "-----END PGP PUBLIC KEY BLOCK-----\n";
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
PGPError result = kPGPError_NoErr; PGPBoolean sdkInitialized = FALSE; PGPMsgContextRef sdkContext = NULL; PGPMsgEncodeOptionsRef encodeOptions = NULL; PGPMsgDecodeOptionsRef decodeOptions = NULL; PGPMsgDecodeResultRef decodeResult = NULL; PGPMsgEncodeResultRef encodeResult = NULL; const PGPByte* rfc822 = NULL; PGPSize rfc822Length = 0; PGPUInt32 numMissingItems = 0;
// // SETUP //
if (IsPGPError(result = PGPMsgInit (kPGPMsgSDKAPIVersion))) goto Exit;
sdkInitialized = TRUE;
// enable logging if (IsPGPError(result = PGPMsgSetGlobalLoggingProc (PGPMsgDefaultLogger, NULL))) goto Exit;
// create an SDK context if (IsPGPError(result = PGPMsgNewContext (&sdkContext))) goto Exit;
// also enable logging for events specific to this context if (IsPGPError(result = PGPMsgSetContextLoggingProc (sdkContext, PGPMsgDefaultLogger, NULL))) goto Exit;
// // ENCRYPT AND SIGN //
if (IsPGPError(result = PGPMsgNewEncodeOptions (sdkContext, kPGPMsgMessageFormat_PGPMIME, &encodeOptions))) goto Exit;
if (IsPGPError(result = PGPMsgEncodeOptionsEncryptTo (encodeOptions, kPGPMsgObjectType_PGPKey, (PGPByte*)kTestKey, strlen(kTestKey)))) goto Exit;
if (IsPGPError(result = PGPMsgEncodeOptionsSignWith (encodeOptions, kPGPMsgObjectType_PGPKey, (PGPByte*)kTestKey, strlen(kTestKey)))) goto Exit;
if (IsPGPError(result = PGPMsgEncode(sdkContext, (PGPByte*)kTestMessage, strlen(kTestMessage), encodeOptions, &encodeResult))) goto Exit;
if (IsPGPError(result = PGPMsgEncodeResultPeekMessage (encodeResult, &rfc822, &rfc822Length))) goto Exit;
fwrite (rfc822, rfc822Length, 1, stdout);
// // DECRYPT AND VERIFY //
if (IsPGPError(result = PGPMsgNewDecodeOptions (sdkContext, &decodeOptions))) goto Exit;
// if (IsPGPError(result = PGPMsgDecodeOptionsAddKey (decodeOptions, (PGPByte*)kTestKey, strlen(kTestKey)))) // goto Exit;
do { PGPUInt32 i;
if (IsPGPError(result = PGPMsgDecode (decodeOptions, rfc822, rfc822Length, &decodeResult, &numMissingItems))) goto Exit;
for (i = 1; i <= numMissingItems; ++i) {
PGPMsgObjectType objectType; const void* objectData = NULL; PGPSize objectDataLen; PGPUInt32 objectFlags = 0;
if (IsPGPError(result = PGPMsgDecodeResultPeekRequiredItem (decodeResult, i, &objectType, &objectFlags, &objectData, &objectDataLen))) goto Exit;
if (objectType == kPGPMsgObjectType_PGPKeyID) {
/* // locate a key by ID and call one of the following two functions... if (IsPGPError(result = PGPMsgRequiredItemIsMissing (decodeResult, i))) goto Exit; */ // ...or... if (IsPGPError(result = PGPMsgDecodeOptionsAddKey (decodeOptions, (PGPByte*)kTestKey, strlen(kTestKey)))) goto Exit; } }
} while (numMissingItems);
rfc822 = NULL; rfc822Length = 0;
if (IsPGPError(result = PGPMsgDecodeResultPeekMessage (decodeResult, &rfc822, &rfc822Length))) goto Exit;
fwrite (rfc822, rfc822Length, 1, stdout);
Exit: // // CLEANUP //
PGPMsgFreeEncodeResult (encodeResult); PGPMsgFreeEncodeOptions (encodeOptions); PGPMsgFreeDecodeResult (decodeResult); PGPMsgFreeDecodeOptions (decodeOptions); PGPMsgFreeContext (sdkContext);
if (sdkInitialized) { PGPMsgCleanup (); }
return (result != kPGPError_NoErr); // unix-style result. 0 for OK, 1 for error.
// return a.exec(); }
.pro QT += core
QT -= gui
TARGET = testSymantec CONFIG += console
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += C:\\[DOCUMENTS]\\[PROGRAMMING]\MSG\pgpmsgsdk420\headers LIBS += C:\\[DOCUMENTS]\\[PROGRAMMING]\MSG\pgpmsgsdk420\libraries\release\PGPMessaging.dll А вот библиотеки, которые использую: http://www.rapidshare.ru/2871465
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 12:21
Глупый вопрос далее будет А что показывает дебаг? Куда уходит управление и где обрывается?
Если завершается с 0, значит main выполняется и бросает ретурн 0. Или что-то в нём бросает ретурн 0, вроде как.
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 12:25
Когда запускаю дебаг, открывается окно консоли, а в креаторе висит "запуск" и больше ничего не происходит - т.е. ничего и никуда не идет дальше - только закрыть можно и все..
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 12:27
+ при закоменченых ретёрнах так же выходит с 0! И когда в дебаг выкидывается, что прога вышла с 0, то окно консоли qt_creator_process_stub продолжает висеть почему-то.
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 12:29
Скинь тестовый проектик :D
Я его потерзаю.
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 12:41
Вот) Держи! Буду признателен за помощь)) http://www.rapidshare.ru/2871492
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 12:48
Некоторые ф-ии в SDK написаны на С, но проблема и не в этом думаю - добавление extern "C" { #include "pgpMsg.h" } не помогает!
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 12:59
Как бы посмотрел и не понял :) Определённый и тут же неожиданно #if defined(UNICODE) || defined(_UNICODE) #error UNICODE and _UNICODE should not be defined #endif И да, ругается на PGPMessaging.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2C0 :) Это точно рабочий проект, или может я просто такой неопытный??? ??? update: после некой возможно грубой допилки заработало. вывод: Microsoft Windows [Version 6.1.7601] (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
D:\temp\testSymantec>testSymantec.exe 268435969|dbug| Created EncodeOptions. 268435713|dbug| Importing key. 268435713|dbug| Importing key. X-Make-Money-Fast: TRUE MIME-Version: 1.0 Subject: Dearest $USER, your assistance is pleased required Date: Fri, 1 Jan 2013 17:57:05 +0900 From: "Mr. Esquire $USER" <redir.ru.cn@127.200.119.21> To: "$USER" <user@127.0.0.1> X-PGP-Encoding-Format: MIME X-PGP-Encoding-Version: 2.0.2 Content-Type: multipart/encrypted; boundary="PGP_Universal_88EA64FF_63E76414_5AFF348F_02099815"; protocol="application/pgp-encrypted"
--PGP_Universal_88EA64FF_63E76414_5AFF348F_02099815 Content-Type: application/pgp-encrypted; x-mac-type=54455854; name=Version.txt Content-Disposition: attachment; filename=Version.txt
Version: 1
--PGP_Universal_88EA64FF_63E76414_5AFF348F_02099815 Content-Type: application/octet-stream; x-mac-type=70674546; name=Message.pgp Content-Disposition: attachment; filename=Message.pgp
-----BEGIN PGP MESSAGE----- Version: PGP SDK 4.2.0
qANQR1DBjAOn4hREfsSMPgEEAMQzNyhjwD1XMqo1Mb5rKAzY2BbaeDsErqmGezNL QRCnrPlQcaJbroqGHptfHq9I0rTIdmAsZHspN72mkbu0HQIzMaqGsV4t0dRst3Dg z0ekMDNI3LMqK3bU7nc9nIhVIqjLyuMl3n1npDRQyK0BTzQCcgwkdxQONXo5Uw6I 0iQH0sG/AbtUxCsbefwjA1ARdBi7MBJYct8Vb+fhvupQfSFp2Zl721Bb2sfp6IoG gfoojUGf6q8TzeTaLba3u4b7RBepDpgc1AkRU4EXTKy6/m208jXwSKiA2zO141md cJnBcJwl/dGrhL9/hSXaCoEgInc+H5IxTTbEtgg+K5uKbunHY+D1B1OavUJ+QQvE Q/fiuBONOSoHzJbpMwYdbSk6w9B7jwUp0hA10afdf7UzVufSJw8NKxQGG8+QBwlf 9JF89XIkIW+0KGZxXRd2MuwtK5Wfp5ZcwkCr4hW8ECnDpmi9jxzJasN5yFxSQVgp e99LdgYVeizV7Ye6k5rAVt+/mFiVUZBxpAsaZ2u24+uqoHkG5Urb2FRkfjDovOit 9oq6ur7DwQRs++hIO/21Hyiyo5TlSAACo5JvmbLGJKu+iMz1m1w1rYZCjUHPxTxn 0fIRYTvutGxZmxTK+y8kya+szkVkbjUH8dv9vE4mUoHFdziS46AihoAwtjYOtYEo 6mhKxhoxfk3r0XSedksgGZeXQ4E5mWzPFb4AB9kGZ6g9Wc7pJTVM5L+VojzYpsaj 3AkjTE0EIBOH5G9YMqxOG6IXxtQCGFb6B2Jp4JXPaN0L542NpcAOY7w4pkXUn/3P r9YM/9JI+PCx/fSSCrs6L09h2CYaQB6M5jFu3jSZcSOAE/sJ5gpOWp/HWyuaFgms J8yaUpXXKDqLEZsgOISQZNGxJdDWObnJ0IpzwiU6JZ32toY+KoVayjJZywzMRNZa KAkmfl1ho2Ec9dbxyukcudV74jZRr6nClaZLujq0WK4W6p7vPhaS2gYDzBUx5vBe GgCNnV7gLf5YmhHVnw3rDKVjxGdD =fvFw -----END PGP MESSAGE-----
--PGP_Universal_88EA64FF_63E76414_5AFF348F_02099815-- 268436488|dbug| PGP SDK InitialEvent 268436485|dbug| PGP SDK BeginLexEvent 268436496|dbug| PGP SDK AnalyzeEvent: encrypted 268436482|dbug| PGP SDK RecipientsEvent 268436487|dbug| PGP SDK PassphraseEvent 268436486|dbug| PGP SDK EndLexEvent 268436489|dbug| PGP SDK FinalEvent 268435713|dbug| Importing key. 268436488|dbug| PGP SDK InitialEvent 268436485|dbug| PGP SDK BeginLexEvent 268436496|dbug| PGP SDK AnalyzeEvent: encrypted 268436482|dbug| PGP SDK RecipientsEvent 268436514|dbug| PGP SDK DecryptionEvent 268436512|dbug| PGP SDK OutputEvent 268436481|dbug| PGP SDK SignatureEvent 268436486|dbug| PGP SDK EndLexEvent 268436489|dbug| PGP SDK FinalEvent 268436488|dbug| PGP SDK InitialEvent 268436485|dbug| PGP SDK BeginLexEvent 268436500|dbug| PGP SDK AnalyzeEvent: unknown 268436512|dbug| PGP SDK OutputEvent 268436486|dbug| PGP SDK EndLexEvent 268436489|dbug| PGP SDK FinalEvent X-Make-Money-Fast: TRUE MIME-Version: 1.0 Subject: Dearest $USER, your assistance is pleased required Date: Fri, 1 Jan 2013 17:57:05 +0900 From: "Mr. Esquire $USER" <redir.ru.cn@127.200.119.21> To: "$USER" <user@127.0.0.1> Content-Type: text/plain Content-Transfer-Encoding: QUOTED-PRINTABLE
Dear Mr, $USER.
Please considerate this letters by very much seriously because of unportant businesses of the Nigeria consulate bank army. My funds are of full money to send in America, Canada, USA. I am $USER you for helping gold stocks and portfilos with helping for serious of 15 (fiveteen) with cent of profits are of you. Until in confident five days by you responding VERY UNPORTANT| if with government by savings.
By onlying with help us, for serious, businessing.
Sincely. Mr, $USER 268435970|dbug| Freeing EncodeOptions. 536870929|dbug| Freeing PGP Messaging SDK context.
Я правда незнаю, это то что надо, или вообще что это? :P
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:05
Такс, у меня без определения _UNICODE выдает ошибку, что он должен быть обязательно определено, если до этого я определил #define PGP_WIN32 1. А как ты добился ошибки такой?)) Попробуй dll на такую же lib поменять!
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:07
оу 0_о как ты это сделал?? Да, это уже то, что нужно)))
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 13:08
Как, как. Запустил твой проект в креаторе :) Допила собственно то почти и не было, тупо закомментил в мейне, в pgpBase поставил Собственно я и про PGP сегодня ток узнал, так что суди - верно работает, не верно?
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:11
а у меня без #define _UNICODE 1 отказывается работать - говорит, что надо определить! хм..
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 13:15
В креаторе Оо немного другая последовательность комментирования :D :D :D
Во вложениях смотри файл - вроде то, что надо?
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:34
так оказывается все и работало, просто надо было exe-шник запускать отдельно.... ???
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:39
а что же при запуске из креатора ничего на вывод не шло, даже банальный qDebug???
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 13:42
АХЗ. Я с креатором не дружу, ибо он глюкавый и без допилки мне ненравится :)
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:51
но, все же огромнейшее человеческое спасибо, Верес!! :D
Название: Re: Qt + PGPSdk
Отправлено: OKTA от Август 23, 2012, 13:52
буду иметь ввиду, что креатор может нагло обманывать)))
Название: Re: Qt + PGPSdk
Отправлено: Bepec от Август 23, 2012, 13:54
В заголовочке [РЕШЕНО] пожалуйста ;)
Всегда пожалуйста, обращайся.
|