title: Import a Public key from somewhere else to CngKey?
body: <p>I am looking for a cross platform way to share public keys for ECDSA signing.  I had a great thing going from a performance perspective with CngKey and the standard .NET crypto libraries, but then I couldn't figure out how a 33 (or 65) byte public key (using secp256r1/P256) was getting turned into 104 bytes by MS.. Ergo, I couldn't support cross platform signing and verifying..</p>
  
  <p>I'm using BouncyCastle now, but holy handgranade is it SLOW!</p>
  
  <p>So, looking for suggestions for the following requirements:</p>
  
  <ol>
  <li>Cross platform/Languages (server is .NET, but this is served up via a JSON/Web.API interface)
  
  <ul>
  <li>JavaScript, Ruby, Python, C++ etc.. </li>
  </ul></li>
  <li>Not crazy as slow on the server</li>
  <li>Not so painfully slow people can't use it on the client.</li>
  </ol>
  
  <p>The client has to be able to sign the message, the server has to be able to validate the signature with a public key that was exchanged at registration to the service.</p>
  
  <p>Anyways, Ideas would be awesome... Thanks</p>