I invested practically a whole working day in figuring out how to approach the task mentioned in the title best.
Here is what I found out so far:
There's at least one library that offers TLS 1.2 for .NET CF out of the box. The downside: they charge for a license. In case someone's interested in this easy solution, Rebex Library
There are several SSL/TLS libraries out there that allow to communicate with the server on a lower level. My approach was to get to compile the BouncyCastle library for the .NET Compact Framework which I accomplished.
From here on out I found an article that showed me how to implement the BouncyCastle interfaces and how to put the pieces together. See Making HTTPS call in C# with the BouncyCastle library for more information. This is pretty much how my code looks right now.
I accomplished to establish a connection with the server and sent a request and I also got the expected response. I then wanted to leverage the HttpWebRequest class so I don't have to code the HTTP requests myself. Or so I thought. Not possible. HttpWebRequest doesn't have public constructors. Therefore I cannot inherit from that class. I also tried using RestSharp for example but this is also only relying on the WebRequest class. Basically all the HTTP clients available out there take the Uri and then open a stream themselves. Not a single one seems to take an already open stream and writes to it or offers to drop in some crypto API to use instead of what the platform offers by default (other than the mentioned Rebex library of course).
So my question is: is there any HTTP client that can write HTTP commands to an already open stream or at least give me a string representation of what I set on it? Or do I have to really code something like that myself even though there's a ton of these implementations out there already? Or am I completely missing a point and it can be solved way easier?