summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 18dee3c)
raw | patch | inline | side by side (parent: 18dee3c)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 7 Jun 2005 06:42:45 +0000 (06:42 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Tue, 7 Jun 2005 06:42:45 +0000 (06:42 +0000) |
include/class_certificate.inc | [new file with mode: 0755] | patch | blob |
include/functions.inc | patch | blob | history |
diff --git a/include/class_certificate.inc b/include/class_certificate.inc
--- /dev/null
@@ -0,0 +1,185 @@
+<?php
+
+/* definitions */
+
+/* certificates */
+define("PEM","pem");
+define("DER","der");
+
+class certificate
+{
+ /* vars */
+ var $data;
+ var $type;
+ var $error;
+
+ /* Initialize all vars*/
+ function certificate()
+ {
+ $this->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 f82510fd8c2acaa46427edb667c36bac252ba86a..8d306126df01e939c2f3a695992f225a32cbd2cb 100644 (file)
--- a/include/functions.inc
+++ b/include/functions.inc
return;
}
- /* FIXME: Hide ldap size limit messages */
+ /* Hide ldap size limit messages */
if (preg_match('/ldap_error/', $errstr)){
if (preg_match('/sizelimit/', $errstr)){
return;