title: how to import external rsa public key in openssl
body: <p>I would like to perform operations such as RSA signature verification through an RSA public key file received from an external server.
  Key values are given in der format or pem format as follows.</p>
  
  <pre><code>der:"30820122300d06092a864886f70d01010105000382010f003082010a02820101008ab8c549138cc59f605b50265f69ec3b8ce3b3e9af5e174d26cfe242650104bea05101189676c7a292cc6b5ae719e119e3ac29e9d3ad9dadcda496f2f7185f9c0c4872a2db124f01992b238e83fd582d8a290f2973f9cf744f1e53f8aa53a225c12299b1cc3658fb607cb5aba579832d6c2687f71300a4df3df1c1407e17d22a5c19c830ed0c5824072309a612bb3e4fb339f25bbbcfe2999f4342110649abac5f4bfea2a59cd38c173979a679afdc8baacb4e87eb50acf806cfb7407504bdac110cfbcb99c04227031e146b9f3b8377c87035690309fae9872e2c7b93e8375fccdebc4f98be1d574269c513a43594f6b8861f7464832ae99ebaceae0fcc3ac50203010001"
  
  pem_base64:"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAirjFSROMxZ9gW1AmX2nsO4zjs+mvXhdNJs/iQmUBBL6gUQEYlnbHopLMa1rnGeEZ46wp6dOtna3NpJby9xhfnAxIcqLbEk8BmSsjjoP9WC2KKQ8pc/nPdE8eU/iqU6IlwSKZscw2WPtgfLWrpXmDLWwmh/cTAKTfPfHBQH4X0ipcGcgw7QxYJAcjCaYSuz5PsznyW7vP4pmfQ0IRBkmrrF9L/qKlnNOMFzl5pnmv3Iuqy06H61Cs+AbPt0B1BL2sEQz7y5nAQicDHhRrnzuDd8hwNWkDCfrphy4se5PoN1/M3rxPmL4dV0JpxROkNZT2uIYfdGSDKumeus6uD8w6xQIDAQAB"
  </code></pre>
  
  <p>I want to import the above data into <strong>"struct rsa_st * rsa"</strong>, but it is not working.</p>
  
  <p>For example, to import the rsa public key in der format, I did the following:</p>
  
  <pre><code>==========================================================
  char data[] = "30820122300d06092a864886f70d01010105000382010f003082010a02820101008ab8c549138cc59f605b50265f69ec3b8ce3b3e9af5e174d26cfe242650104bea05101189676c7a292cc6b5ae719e119e3ac29e9d3ad9dadcda496f2f7185f9c0c4872a2db124f01992b238e83fd582d8a290f2973f9cf744f1e53f8aa53a225c12299b1cc3658fb607cb5aba579832d6c2687f71300a4df3df1c1407e17d22a5c19c830ed0c5824072309a612bb3e4fb339f25bbbcfe2999f4342110649abac5f4bfea2a59cd38c173979a679afdc8baacb4e87eb50acf806cfb7407504bdac110cfbcb99c04227031e146b9f3b8377c87035690309fae9872e2c7b93e8375fccdebc4f98be1d574269c513a43594f6b8861f7464832ae99ebaceae0fcc3ac50203010001";
  
  unsigned char * pArr = (unsigned char *)malloc(buf_len);
  RSA *pub_rsa = NULL;
  
  fnStr2Hex(pArr, data); // Converts a data array composed of strings to a hex array (pArr).
  pub_rsa=d2i_RSAPublicKey(NULL,&amp;pArr,(long)buf_len);
  ==========================================================
  </code></pre>
  
  <p>In this case, In <strong>d2i_RSAPublicKey</strong> function is returning NULL Pointer.
  I do not know what went wrong.</p>
  
  <p>And I do not know how to change the string data received by pem_base64 to <strong>"struct rsa_st * rsa"</strong> as well.
  The sample code uses a function called <strong>"ReadPublicKey"</strong>, which seems to load an X.509 certificate file.</p>
  
  <p>I do not read the file, but I need to get the data from the server like above.</p>
  
  <p>Please answer the person who knows about this.</p>