This sounds familiar to what we reported a while back: 
http://forum.world.st/Mac-sqDecryptSSL-returning-SQSSL-GENERIC-ERROR-on-errSSLClosedGraceful-from-SSLRead-td4785735.html
 
<http://forum.world.st/Mac-sqDecryptSSL-returning-SQSSL-GENERIC-ERROR-on-errSSLClosedGraceful-from-SSLRead-td4785735.html>

Unfortunately, we did not investigate any further. Instead, we work around the 
bug by just retrying the connection on this failure as it always works on a 
second try.

Johan

> On 27 Feb 2015, at 23:36, Sven Van Caekenberghe <s...@stfx.eu> wrote:
> 
> 
>> On 27 Feb 2015, at 21:18, Sabine Manaa <manaa.sab...@gmail.com> wrote:
>> 
>> Hi Sven,
>> 
>> thank you for your hints.
>> 
>> Indeed, the variable @in of ZdcSecureSocketStream has the string  
>> "ZnInvalidUTF8: Illegal leading byte for utf-8 encoding" in its utf-8 
>> variable.
> 
> That is normal: the in buffer contains encrypted binary data, the out buffer 
> will contain the cleartext (but still in binary).
> 
>> Can you tell me, what to add to the pharo code that the encoding is 
>> correct/so that is equal to the curl command?
> 
> I don't think there is an encoding problem: the charset is set to utf-8 which 
> will be picked up. Besides, the returned content is plain ascii anyway.
> 
> The issue is probably the Connection:close and the missing Content-Length. 
> This means that the HTTPS stream has to be read until the end. I have seen 
> this fail in the past in rare cases.
> 
> Are you on Windows ?
> 
> Could you try on Linux ?
> 
>> comparison of headers: they seem to be equal, also the content type is in 
>> both cases 'application/json;charset=UTF-8'
>> The ZnResponse headers:
>> a ZnHeaders(
>> same 'Cache-Control'->#('no-cache, no-store, max-age=0, must-revalidate' 
>> 'no-store')
>> same 'Connection'->'close' 
>> same 'Content-Type'->'application/json;charset=UTF-8' 
>> same 'Date'->'Fri, 27 Feb 2015 20:02:40 GMT' 
>> same 'Expires'->'0' 
>> same 'Pragma'->#('no-cache' 'no-cache') 
>> same 'Set-Cookie'->'crbid=10.1.8.3:49247_mt03.prod.gini.net; path=/' 
>> same 'Strict-Transport-Security'->'max-age=31536000 ; includeSubDomains' 
>> same 'X-Application-Context'->'0.3:8080' 
>> same 'X-Content-Type-Options'->'nosniff' 
>> same 'X-Frame-Options'->'DENY' 
>> same 'X-Xss-Protection'->'1; mode=block' )
>> 
>> result of curl command at command line
>> < HTTP/1.1 200 OK
>> same < Date: Fri, 27 Feb 2015 17:58:37 GMT
>> same < X-Content-Type-Options: nosniff
>> same < X-XSS-Protection: 1; mode=block
>> same < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
>> same < Pragma: no-cache
>> same < Expires: 0
>> same < Strict-Transport-Security: max-age=31536000 ; includeSubDomains
>> same < X-Frame-Options: DENY
>> same < X-Application-Context: 0.3:8080
>> < Cache-Control: no-store
>> < Pragma: no-cache
>> same < Content-Type: application/json;charset=UTF-8
>> same < Connection: close
>> same < Set-Cookie: crbid=10.1.8.5:49387_mt05.prod.gini.net; path=/
>> 
>> regards 
>> sabine
>> 
>> 2015-02-27 16:58 GMT+01:00 Sven Van Caekenberghe-2 [via Smalltalk] <[hidden 
>> email]>:
>> Sabine, 
>> 
>>> On 27 Feb 2015, at 16:36, Sabine Manaa <[hidden email]> wrote: 
>>> 
>>> Hi Sven, 
>>> Hi all, 
>>> 
>>> I try to send a curl command (which works at command line) from Pharo. 
>>> I get the error: "SSL Exception: decrypt failed code:5" 
>>> 
>>> The working command line command is: 
>>> 
>>> curl -v  -H 'Accept: application/json' -u 'aUser:aPassword' 
>>> 'https://user.xxx.net/oauth/token?grant_type=client_credentials'
>>> 
>>> the result is something like: 
>>> {"access_token":"a31xxxa-2a22-4xx6c-938d-2bd3ae4a0629","token_type":"bearer","expires_in":42095,"scope":"write"}
>>>  
>>> 
>>> My current Pharo code is: 
>>>       | theZnClient | 
>>>       theZnClient := ZnClient new 
>>>               systemPolicy ; 
>>>               https; 
>>>               host: 'user.xxx.net'; 
>>>               path: 'oauth/token?grant_type=client_credentials'; 
>>>               username: 'aUser' password: 'aPassword'; 
>>>               accept: ZnMimeType applicationJson; 
>>>               get. 
>>>       theZnClient inspect close. 
>>> 
>>> 'aPassword' and 'aUser' and xxx.net was replaced by me for security 
>>> reasons. 
>>> 
>>> In Pharo, I get a walkback with the error message 
>>> 'SSL Exception: decrypt failed [code:-5]' 
>>> 
>>> But I see, that the ZdcSecureSocketStream has the correct result 
>>> ({"access_token":...":"write"}) in its collection attribute at 
>>> utf-8 string and at latin1-string 
>>> 
>>> so, the request is done and the result is available but then it fails here: 
>>> ZdcSecureSocketStream(Object)>>error: 
>>> ZdcSecureSocketStream>>sslException:code: 
>>> ZdcSecureSocketStream>>fillBytes:startingAt:count: in Block: [ ... 
>>> ZdcSecureSocketStream>>fillBytes:startingAt:count: 
>>> ZdcSecureSocketStream(ZdcSimpleSocketStream)>>fillReadBufferNoWait 
>>> ZdcSecureSocketStream(ZdcSimpleSocketStream)>>fillReadBuffer 
>>> ZdcSecureSocketStream(ZdcOptimizedSocketStream)>>readInto:startingAt:count: 
>>> ZnUTF8Encoder>>optimizedReadInto:startingAt:count:fromStream: 
>>> ZnUTF8Encoder>>readInto:startingAt:count:fromStream: 
>>> 
>>> Sven, I could send you the 'aPassword' and 'aUser' and the url by private 
>>> message. It would be fine if you could have a short look at it. 
>> The fact that there is readable text in the buffer of the 
>> ZdcSecureSocketStream is good, because it means that things basically work. 
>> 
>> One reason why this is failing might be that Zn tries to read more than 
>> there is available in the stream, when the content-length does not match. 
>> Encoding problems could be part of the problem too. 
>> 
>> Could you compare curl -v or curl -D - output with the request/response 
>> headers in Pharo ? Look for content-length and compare that with what it 
>> already read or not. Is the connection kept alive ? Also look at 
>> content-type and see if there is any charset encoding after 
>> application/json. 
>> 
>> Sven 
>> 
>>> Regards 
>>> Sabine 
>>> 
>>> 
>>> 
>>> -- 
>>> View this message in context: 
>>> http://forum.world.st/Zinc-SSL-Exception-decrypt-failed-code-5-tp4808230p4808345.html
>>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. 
>>> 
>> 
>> 
>> 
>> 
>> If you reply to this email, your message will be added to the discussion 
>> below:
>> http://forum.world.st/Zinc-SSL-Exception-decrypt-failed-code-5-tp4808230p4808353.html
>> To start a new topic under Pharo Smalltalk Users, email [hidden email] 
>> To unsubscribe from Zinc SSL Exception: decrypt failed code:5, click here.
>> NAML
>> 
>> 
>> View this message in context: Re: Zinc SSL Exception: decrypt failed code:5
>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
> 
> 

Reply via email to