title: ECDsa Signing in .Net Core on Linux
body: <p>I'm trying to create a C# implementation to send Pushes to Apple via their HTTP/2 APNS Endpoint with .Net core in Docker. Part of this requires sending an encrypted JWT Authorization Token along with the payload. With .Net core, I can sign the token when running on Windows, but when running in the Linux Docker image, it tips over loading the Key. </p>
  
  <p>When running in the .net Core Docker Image, I get a platformnotsupported Exception on loading the key.</p>
  
  <pre><code>    public static string SignES256(string privateKey, string header, string payload)
      {
  
          // This is the failing Call
          CngKey key = CngKey.Import(Convert.FromBase64String(privateKey), CngKeyBlobFormat.Pkcs8PrivateBlob);
  
          using (ECDsaCng dsa = new ECDsaCng(key))
          {
              var unsignedJwtData =
                  System.Convert.ToBase64String(Encoding.UTF8.GetBytes(header)) + "." + System.Convert.ToBase64String(Encoding.UTF8.GetBytes(payload));
              var unsignedJwtDataBytes = Encoding.UTF8.GetBytes(unsignedJwtData);
  
              var signature =
                  dsa.SignData(unsignedJwtDataBytes, 0, unsignedJwtDataBytes.Length, HashAlgorithmName.SHA256 );
              return unsignedJwtData + "." + System.Convert.ToBase64String(signature);
          }
      }
  </code></pre>
  
  <p>How can I do this from .Net Core on Linux?</p>
  
  <p>Thanks.</p>