Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про передачу PGP Sign посредством IdHTTP(Indy10)   Найти похожие ветки 

 
vegarulez ©   (2008-02-11 18:30) [0]

Доброго времени суток мастера! Вопрос таков...
Передаю на сервер ряд параметров методом Post посредством IdHTTP (Indy10). Одним, из передаваемых параметров является PGP Sign файла. Так вот уходит всё нормально до сервака доходит, но он ругается на подпись... дело всё в том, что на сервере подпись приходит разбитая страным образом, поэтому он её не может правильно прочесть. А разбита она в тех местах, где стоит перевод каретки. Т.е. в PGP подписи перевод каретки - это тоже информативный символ. Т.е. скорее всего при отпрваке на сервер IdHTTP разбивает её именно таким образом. Как быть, подскажите?


 
palva ©   (2008-02-11 18:38) [1]

Подпись это файл?
Файл двоичный или текстовый.
Если текстовый, то выложите здесь первую строку.
Как вы пересылаете файл при помощи HTTP?
Файл который приходит на сервер имеет дополнительные символы?


 
vegarulez ©   (2008-02-11 18:56) [2]

1. Да. Файл.
2.Текстовый.
3. Целиком:

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8

iQEVAwUAR6/MmFNUvaFW6nKJAQEFggf/dmA5yEnn2ZkPWWlXJwMH+dldqAgxSbse
m3pPiR0sGFfry4Oslr5ZHoCAAcye4SL5+Svmgw7PLlBl+q5elM6InBYzGyRzs5iK
X1fNg0o/vxUkKWW2RqQBdcqeAG6M6YVV5zYPizFOPXTlCvM8q6HqMYBYQbJPGCWY
DyHdF6/xf3wf+w31MJzF/7B9xIxGTjVWoyWrhpmGprovIKiUPAU5SFVTe/OmvC1I
eR58gBktU+9NrmMtTMvmPk40teCfLiFILibmEvzNReAHPqLOHmDmWNKursjkRiiN
3R/MS0/9qR7uA2uoIR0PMrpxFr1VS7aYwotTT0hefK8h5ILy+3qgCA==
=BZHx
-----END PGP SIGNATURE-----


4.
Всё что передаётся на сервак находится в мемо (ну это пока для тестирования, для наглядности так делаю) mePostData.Lines (wordwrap:=false)

   cbURL: TEdit;
   mePostData: TMemo;
   memoHTML: TMemo;
   Response: TStringStream;

       begin
        ...
         Response := TStringStream.Create("");
         HTTP.Post(cbURL.Text, mePostData.Lines, Response)
         memoHTML.Lines.Text:=Response.DataString;
        ...
       end;  


5. Не очень понял... что значит дополнительные символы?


 
palva ©   (2008-02-11 22:53) [3]

> 5. Не очень понял... что значит дополнительные символы?
Ну я так понял ваше
 > А разбита она в тех местах, где стоит перевод каретки.
Вот мне и не понятно. Разбита каким-то символом, которого исходно не было?
Ну то есть вы передаете одно, а на сервер приходит другое.
В подписи все переводы строк должны быть обязательно. Какие они - то ли пара RC LF, то ли один из этих символов - не важно. Пустая строка тоже информативна.

Какая у вас ошибка я все равно не понял.


 
vegarulez ©   (2008-02-12 06:43) [4]

Я привёл sign целиком она "разбита" просто переводом каретки.
Да.. я передаю одно а на сервер приходит уже совсем другой - компонент вставляет ещё символы.
у вас есть ася? мыл? телефон?


 
palva ©   (2008-02-12 10:01) [5]

А какие символы он вставляет? Может быть это URL-кодирование? Вот у вас есть фрагмент подписи
"5.8#13#10#13#10iQ"
Что в этом месте приходит на сервер (что вы предъявляете PGP)


 
vegarulez ©   (2008-02-12 12:00) [6]

вот что приходит на сервер...

SIGN=""-----BEGIN PGP SIGNATURE-----&Version: PGPfreeware 6.5.8&&iQEVAwUAR6/MmFNUvaFW6nKJAQEFggf/dmA5yEnn2ZkPWWlXJwMH dldqAgxSbse&m3pPiR0sGFfry4Oslr5ZHoCAAcye4SL5 Svmgw7PLlBlq5elM6InBYzGyRzs5iK&X1fNg0o/vxUkKWW2RqQBdcqeAG6M6YVV5zYPizFOPXTlCvM8q6HqMYBYQbJPGCWY&DyHdF6/xf3wf w31MJzF/7B9xIxGTjVWoyWrhpmGprovIKiUPAU5SFVTe/OmvC1I&eR58gBktU 9NrmMtTMvmPk40teCfLiFILibmEvzNReAHPqLOHmDmWNKursjkRiiN&3R/MS0/9qR7uA2uoIR0PMrpxFr1VS7aYwotTT0hefK8h5ILy 3qgCA==&=BZHx&-----END PGP SIGNATURE-----"""


 
vegarulez ©   (2008-02-12 12:10) [7]

т.е. перевод каретки заменяется на символ & что недопустимо в подписи...
подскажите как быть? как этого избежать?


 
ketmar ©   (2008-02-12 13:12) [8]

>[7] vegarulez © (2008-02-12 12:10:00)
взять, и поменять назад по получении. нежно и аккуратно.

или чинить код, который такое делает.

---
Understanding is not required. Only obedience.


 
vegarulez ©   (2008-02-12 13:33) [9]


> взять, и поменять назад по получении. нежно и аккуратно.

к сожалению в работу сервера - я влезть не могу... есть пртокол взаимодействия с сервером.

Как его чинить?


 
palva ©   (2008-02-12 13:44) [10]

Ну, гипотеза такая, что каждая строка при посылке рассматривается как параметр, а на сервере параметры, как обычно, разделяются символом & Это означает, что если в внутри сообщения встречается символ &, то он будет заменен на %26

Можно уже на сервере заменить символ & на символ #10. А потом посмотреть, не встречается ли где символы % - их тоже надо обрабатывать.
Если это затруднительно, можно перед отправкой поставить в конце каждой строки дополнительно %0A, а потом концы строк убрать, то есть вытянуть все в одну строку. Возможно, заработает.


 
ketmar ©   (2008-02-12 14:00) [11]

>[9] vegarulez © (2008-02-12 13:33:00)
>в работу сервера — я влезть не могу

тогда плакать. или ты протокол реализовал криво, или сервер глупенький. тут только одно из двух.

---
Understanding is not required. Only obedience.


 
vegarulez ©   (2008-02-12 14:09) [12]

Сервер не глупенький. Ни я его писал. мне начальство дало протокол взаимодействия и дало задание написать, то что требуется. Так что я не могу ни поменять протокол ни влезть в работу сервера.

palva ©   (12.02.08 13:44) [10]
Не... вработу сервера я влезть не могу. Это чёрный ящик.
просто я так понял... я передаю Post`ом и компонента IdHTTP разбирает и URL декодирует ставя & после каждого перевода коретки...
разбирая по параметрам...

сечас попробовал всю подпись сделать в одну строку, заменив перевод коректки в подписи на %0D%0A - отправил на сервер... теперь сервер заменил знаки + на пустоты... сечас ещё их перекодирую на %2B ещё раз попробую отправить...


 
ketmar ©   (2008-02-12 14:29) [13]

>[12] vegarulez © (2008-02-12 14:09:00)
тьфу. всё ясно. обычный xxx-url-encoded. все символы, которые не буквы/цифры — заменяются на %hh (hh — hex-код). дополнительно учесть, что пробел кодируют плюсом.

---
Understanding is not required. Only obedience.


 
vegarulez ©   (2008-02-12 14:41) [14]

странно перебил знаки + на %2B но администратор смотря на сервере логи всё равно говорит что приходит сообщение с пробелами на тех местах где должен стоять знак +... т.е. получается IdHTTP так его отправляет... урленкодя на моей стороне... подскажите как быть?


 
ketmar ©   (2008-02-12 14:43) [15]

>[14] vegarulez © (2008-02-12 14:41:00)
выкинь индейца и отправь запрос руками. там дел-то на 5 строчек.

---
Understanding is not required. Only obedience.


 
vegarulez ©   (2008-02-12 18:35) [16]

индеец работает через SSL
подскажи как его выкинуть оставив SSL...


 
ketmar ©   (2008-02-12 18:40) [17]

>[16] vegarulez © (2008-02-12 18:35:00)
не подскажу. не знаю. %-)

---
Understanding is not required. Only obedience.


 
vegarulez ©   (2008-02-13 06:22) [18]

Народ нид хелп. Подскажите как быть? Как это обойти или заменить... Чтоб при передачи знака + или знака %2B IdHTTP корректно передавал его на сервер методом POST не заменяя его на пробел...


 
Slym ©   (2008-02-13 06:51) [19]

протокол какой?
столь длинный и "бинарный" (#13#10) поток обычно передают как MultipartFormData


 
Slym ©   (2008-02-13 06:52) [20]

приведи HTML форму которая "реально" правильно отправляет данные



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.048 c
2-1202478430
leonidus
2008-02-08 16:47
2008.03.09
Как отобразить процесс загрузки базы


15-1201767728
Григорьев Антон
2008-01-31 11:22
2008.03.09
Глюк vs2005? Никто не сталкивался?


2-1201968437
reg
2008-02-02 19:07
2008.03.09
safearray


2-1202674227
aids
2008-02-10 23:10
2008.03.09
поиск файлов


15-1201722950
Марсер
2008-01-30 22:55
2008.03.09
Бесплатный прокси-сервер для обеспечения ноутбука Инетом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский