From 17495ce1e83286f03855f53865f75ce1cf3b3221 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 7 Jun 2005 06:42:45 +0000 Subject: [PATCH] Added certificate git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@608 594d385d-05f5-0310-b6e9-bd551577e9d8 --- include/class_certificate.inc | 185 ++++++++++++++++++++++++++++++++++ include/functions.inc | 2 +- 2 files changed, 186 insertions(+), 1 deletion(-) create mode 100755 include/class_certificate.inc diff --git a/include/class_certificate.inc b/include/class_certificate.inc new file mode 100755 index 000000000..5c9facff5 --- /dev/null +++ b/include/class_certificate.inc @@ -0,0 +1,185 @@ +data= ""; + $this->type= false; + $this->error=""; + } + + /* Reads specified Certfile/string and convert it to PEM*/ + function import($data,$type=false) + { + /* if is file read from file, else use string as it is*/ + if(is_file($data)) + { + $fp = fopen($data,"r+"); + $str = ""; + + if(!$fp){ + $this->certificate(); + $this->error=_("Can't open specified file, check accessibility and or existence"); + return(false); + }else{ + /* Reading data*/ + while(!feof($fp)){ + $str.=fgets($fp,1024); + } + } + /* Filename given, so we use the data from the file */ + $this->data = $str; + } else { + /* Cert as String, use this string */ + $this->data = $data; + } + + /* Data can't be empty */ + if($data = ""){ + $this->certificate(); + $this->error = _("Can't read specified certificate / or empty string given"); + return(false); + } + + /* Prefer specified certtype*/ + if($type) { + $this->type = $type; + }else{ + /* Detect certtype, cause there is none specified */ + + /* PEM allways starts with ----BEGIN CERTIFICATE-----*/ + if(strstr($this->data,"CERTIFICATE")) { + $this->type=PEM; + } else { + /* We test DER now, on fail abort */ + $this->type=DER; + } + } + + /* Convert to PEM to give $this->info the ability to read the cert */ + if($this->type == DER ) { + $this->derTOpem(); + } + + /* If cert is loaded correctly and is PEM now, we could read some data out of it */ + if(count($this->info()) <=1) { + $this->certificate(); + $this->error = _("Can't load certificate, possibly unsupported format (use PEM/DER) "); + /* Reset*/ + return(false); + } + /* Loaded a readable cert */ + return(true); + } + + /* Returns Array with all containing data */ + function info() + { + if($this->type != PEM){ + $this->error = _("The Format must be PEM, to output certificate informations"); + return(false); + } else { + /* return an array with all given information */ + return(openssl_x509_parse($this->data)); + } + } + + + /* Export Certificate to specified file, with specified method*/ + function export($type,$filename="temp") + { + /* Check if valid cert is loaded*/ + if($this->type!=false){ + /* Check if we must convert the cert */ + if($this->type!= $type){ + $strConv = $this->type."TO".$type; + $this->$strConv(); + } + + /* open file for writing */ + $fp = fopen($filename,"w+"); + + if(!$fp){ + $this->error= _("Can't create/open File"); + return(false); + }else{ + fwrite($fp,$this->data,strlen($this->data)); + } + return(true); + }else{ + $this->error= _("No valid certificate loaded"); + return(false); + } + return(false); + } + + + /* Convert der to pem Certificate */ + function derTOpem() + { + /* if type is DER start convert */ + if($this->type == DER) + { + /* converting */ + $this->type= PEM; + $str = base64_encode($this->data); + $len = strlen($str); + + $end = ""; + + while($len > 0 ) + { + $len = $len - 64; + $str1 = substr($str,0,64)."\n"; + $str = substr($str,64,$len); + $end.= $str1; + } + + $strend = "-----BEGIN CERTIFICATE-----\n".$end; + $strend .= "-----END CERTIFICATE-----"; + + $this->data = $strend; + return(true); + } + return(false); + } + + /*Convert pem to der Certificate */ + function pemTOder() + { + if($this->type == PEM) + { + $this->type= DER; + + $str = $this->data; + + $str = str_replace("-----BEGIN CERTIFICATE-----","",$str); + $str = str_replace("-----END CERTIFICATE-----","",$str); + + $str = base64_decode($str); + + $this->data = $str; + return(true); + } + return(false); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> + + + diff --git a/include/functions.inc b/include/functions.inc index f82510fd8..8d306126d 100644 --- a/include/functions.inc +++ b/include/functions.inc @@ -1543,7 +1543,7 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline) return; } - /* FIXME: Hide ldap size limit messages */ + /* Hide ldap size limit messages */ if (preg_match('/ldap_error/', $errstr)){ if (preg_match('/sizelimit/', $errstr)){ return; -- 2.30.2