Example #1
0
 private static function get_openssl_key_details($key)
 {
     //PEM to DER
     $lines = explode("\n", trim($key));
     unset($lines[count($lines) - 1]);
     unset($lines[0]);
     $der = implode('', $lines);
     $der = base64_decode($der);
     //DER is in ASN.1 notation
     $body = new CASNReader();
     $body->Read($der);
     $bodyItems = $body->GetSequence();
     if (!empty($bodyItems)) {
         if (is_object($bodyItems[1]) && is_object($bodyItems[2]) && is_object($bodyItems[3])) {
             $n = $bodyItems[1]->GetValue();
             $e = $bodyItems[2]->GetValue();
             $d = $bodyItems[3]->GetValue();
             return array("n" => $n, "e" => $e, "d" => $d);
         } elseif (is_object($bodyItems[2])) {
             $body = new CASNReader();
             $body->Read($bodyItems[2]->GetValue());
             $bodyItems = $body->GetSequence();
             if (is_object($bodyItems[1]) && is_object($bodyItems[2]) && is_object($bodyItems[3])) {
                 $n = $bodyItems[1]->GetValue();
                 $e = $bodyItems[2]->GetValue();
                 $d = $bodyItems[3]->GetValue();
                 return array("n" => $n, "e" => $e, "d" => $d);
             }
         }
     }
     return false;
 }
Example #2
0
 public function GetSequence()
 {
     $arResult = array();
     $val = $this->value;
     while ($val != '') {
         $sequence = new CASNReader();
         $sequence->Read($val);
         $arResult[] = $sequence;
     }
     return $arResult;
 }