1

I have an Motorola MC55 with .Net CF 3.5, and when I try to connect it with a SOAP request to a Tomcat with TLS, the request fail. Is a Windows Mobile CE 6.5.

As far as I know after two days of research, there´s the AKU 35 by Microsoft (unavaliable), the Rebex Library (349$) or Bouncy Castle ( fails by https://social.msdn.microsoft.com/Forums/en-US/79853585-9a74-433e-bc39-5b057d218411/weird-cf-only-typeloadexception-bug?forum=netfxcompact&prof=required)

There´s any way to implement it on C#?

EDIT I know that this device is very old, also the OS. But is a enterprise requirement, and they want to do it.

EDIT 2 I´ve found this with the very same problem that I have (Use Bouncy Castle library with .NET Compact Framework), but the files doesn´t exist anymore...

l3xium
  • 13
  • 1
  • 3
  • 1
    This isn’t going to be a helpful comment, but the mc55 is EoL and Windows Mobile is also EoL. You should get devices from the TC series from zebra they run newer versions of android. Don’t try to keep the dying tech alive make the right decision and move on. – nulltron Jan 28 '20 at 16:14
  • @nulltron I´m the first who wants to kill this devices, but is an enterprise requirement... – l3xium Jan 28 '20 at 16:17
  • I totally understand, I used to work for Motorola / zebra and I had to do a lot of work on the mc55 bear EoL my thoughts are with you friend wish I could be of more assistance. – nulltron Jan 28 '20 at 16:40
  • The challenge is to know exactly what failed. Can you use tools like Wireshark on Tomcat side to identify that? If the failure was caused by TLS protocol versions (1.1 or 1.2), then end-of-life device/OS won't give you built-in support, and you might not be able to easily implement raw TLS communication layer (possible, but must be too complicated). I don't think the libraries you listed above help, as they might still rely on device/OS's network stack. – Lex Li Jan 28 '20 at 18:37
  • @LexLi Sorry, I forget to put it in the question. We´re required to use Tomcat 7 with TLS 1. – l3xium Jan 29 '20 at 09:09
  • I agree with Lex Li, I recall this being a dependency on the the device networking stack, and they simply didn't support TLS above v1. – tcarvin Jan 29 '20 at 13:17
  • You need to have AKU35 or better. The AKU can be read from the last digits of the build version number: CE OS 5.2.29354 (Build 29354.5.3.12.43)=>This is a AKU 43 build. CE OS 5.2.29377 (Build 29377.5.3.12.51)=>This is a AKU 51 build. To test your TLS versions, pint Internet Explorer Mobile on the device to https://clienttest.ssllabs.com/ssltest/viewMyClient.html – josef Jan 29 '20 at 13:53
  • Then (with AKU35), take a look at gSoap and probably write a C# wrapper and C/C++ DLL. – josef Jan 29 '20 at 14:02
  • Thanks, @josef, but, as I said, installing the AKU 35 is not an option, as Zebra restrict the updates of the mc55 to clients with contract... Microsoft says that I have to ask the OEM for the update, as they are the only who can rebuild the system image with the AKU... – l3xium Jan 29 '20 at 16:09
  • You still should try to fight to use updated hardware/OS for this task. As for old stuffs, probably your only option is to implement TLS 1.x communication over raw socket. That's doable but probably takes you months (and also error prone). You can see an example of how to implement the simplest ICMP ping over raw socket, https://www.winsocketdotnetworkprogramming.com/clientserversocketnetworkcommunication8i.html TLS with encryption/decryption can be exponentially more complex than that. – Lex Li Jan 29 '20 at 18:46
  • As you will not get OS support for TLS 1.x needed by tomcat SOAP, you may go with libcurl and gSoap. I know the libcurl is used by the ZetaKey browser implemented as Intermec HTML5 browser to support TLS 1.3. You may then write a c# wrapper for the function you need. For gSoap and Libcurl see https://www.genivia.com/examples/curl/index.html and https://curl.haxx.se/libcurl/c/. – josef Jan 29 '20 at 19:00

1 Answers1

0

Thanks for all the comments. We ended doing an "bridge" between our code and the Bouncy Castle libraries, so now we can send TLS request via SOAP protocol to the server. Maybe the community may remember that some kind of companies do not use to update the tools they use, so, as I have been told that this is outdated, I must say that this system is in use by one of the largest companies in the world. And we keep it up to date.

Thanks anyway.

l3xium
  • 13
  • 1
  • 3
  • Hi L3xium, I had the exact same problem as you and it seems we were working on it at the same time. I was able to successfully able to send/receive XML documents using TLS 1.2 from server using this code and duplicating the do-while loop https://stackoverflow.com/questions/50875920/making-https-call-in-c-sharp-with-the-bouncycastle-library – Rowan Berry Feb 17 '20 at 22:17
  • As for the typeloadexception in Bouncy castle you need to set the flags for it to run in .Net compact framework 2.0 mode :) – Rowan Berry Feb 17 '20 at 22:18
  • Any chance you could go into a little more detail on what you had to do? I have to add TLS 1.2 to software connecting to AWS that is in use by a whole bunch of customers using Windows Mobile devices, and there really isn't any way to move to anything newer than Windows Mobile. – Trevortni May 22 '23 at 17:44