title: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given
body: <p>I've found this script "somewhere":</p>
  
  <pre><code>define("ACC_NAME", "my_steam_login");
  define("ACC_PASS", "my_password");
  define("GROUP_ID", "my_group_id"); // open steam group page and see "Enterchat room" link, which contains ID
  define("MY_STEAM_ID", "my_steamid"); // steam ID which can invite to join group
  
  $invite_steam_id = $_GET['i'];
  
  $ids = file('invited_ids.txt');
  foreach($ids as $id){
      $id = trim($id);
      if ( $id == $invite_steam_id )
          die($id .": Already invited!\n");
  }
  
  function _curl_parse_cookiefile($file){
      $aCookies = array();
      $aLines = file($file);
      foreach($aLines as $line){
          if('#'==$line{0})
              continue;
          $arr = explode("\t", $line);
          if(isset($arr[5]) &amp;&amp; isset($arr[6]))
              $aCookies[$arr[5]] = $arr[6];
          }
      return $aCookies;
  }
  
  function GetFriendID( $steam_id ) {
      if ( !$steam_id )
          return 0;
      $auth = explode(':', $steam_id);
      if ( !$auth[2] )
          return 0;
      $fid = $auth[2];
      $fid *=2;
      $fid += 76561197960265728;
      $fid += $auth[1];
      return $fid;
  }
  
  $mid = GetFriendID(MY_STEAM_ID);
  $fid = GetFriendID($invite_steam_id);
  
  class RSAHelper{
      var $pubkey;
      public function  __construct($modulus, $exponent){
          $res = openssl_pkey_get_public( $this-&gt;buildCertificate($modulus, $exponent));
          $details = openssl_pkey_get_details($res);
          $this-&gt;pubkey = $details["key"];
      }
  
      private function buildCertificate($modulus, $exponent){
          $key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB" . "iQKBgQCy745x" . $modulus . "ID" . $exponent;
          $key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($key, 16, "\n", true) . "\n-----END PUBLIC KEY-----";
          return $key;
      }
  
      public function encrypt($string){
          $crypted = "";
          openssl_public_encrypt($string, $crypted, $this-&gt;pubkey);
              return base64_encode($crypted);
          }
      }
  
      $url="https://steamcommunity.com/login/getrsakey/";
      $PostFields = array(
          'username' =&gt; ACC_NAME
      );
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
      curl_setopt($ch, CURLOPT_VERBOSE, 1);
      curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7');
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $PostFields);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
      curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__)."cacert.pem");
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
      $result=curl_exec($ch);
      $json=json_decode($result,true);
      $key_mod=$json['publickey_mod'];
      $key_exp=$json['publickey_exp'];
      $timestamp=$json['timestamp'];
  
      $RSA=new RSAHelper($key_mod,$key_exp);
  </code></pre>
  
  <p>It's a modified version of an old script, which should send invitation to Steam Group. This version should work, but I've got an error:</p>
  
  <blockquote>
    <p>Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in /home/.../public_html/test/steaminv.php on line 51</p>
  </blockquote>
  
  <p>Does anyone know what's wrong with this script?</p>