Merge branch 'bug-1318' into testserver-stable
authorBenny Baumann <BenBE@geshi.org>
Sat, 29 Nov 2014 14:08:22 +0000 (15:08 +0100)
committerBenny Baumann <BenBE@geshi.org>
Sat, 29 Nov 2014 14:08:22 +0000 (15:08 +0100)
101 files changed:
CommModule/.gitignore [new file with mode: 0644]
CommModule/client.pl
CommModule/serial.conf [deleted file]
README [deleted file]
README.md [new file with mode: 0644]
config/ttp.ini [new file with mode: 0644]
crt/DIR [new file with mode: 0644]
csr/DIR [new file with mode: 0644]
includes/account.php
includes/account_stuff.php
includes/general.php
includes/general_stuff.php
includes/keygen.php
includes/lib/general.php
includes/notary.inc.php
pages/account/13.php
pages/account/16.php
pages/account/17.php
pages/account/19.php
pages/account/24.php
pages/account/27.php
pages/account/40.php
pages/account/41.php
pages/account/43.php
pages/account/49.php
pages/account/53.php
pages/account/54.php
pages/account/6.php
pages/index/0.php
pages/index/1.php
pages/index/10.php
pages/index/11.php
pages/index/16.php
pages/index/3.php
pages/index/feed.rss [new file with mode: 0644]
pages/wot/12.php
pages/wot/13.php
pages/wot/16.php [new file with mode: 0644]
pages/wot/3.php
pages/wot/4.php
pages/wot/6.php
scripts/send_heartbleed.php [changed mode: 0644->0755]
tverify/index.php
www/.gitignore [new file with mode: 0644]
www/.htaccess
www/alert_hash_collision.php
www/api/cemails.php
www/api/edu.php
www/cacert1-class3-revoke.crl [new symlink]
www/cacert1-revoke.crl [new symlink]
www/cap.html.php
www/cap.php
www/capnew.php
www/cats/cats_import.php
www/certs/cacert.asc
www/certs/class3.crt
www/certs/class3.der
www/certs/class3.txt
www/certs/root.crt
www/certs/root.der
www/certs/root.txt
www/coap.html.php
www/coapnew.php
www/disputes.php
www/images/cacert4.png
www/index.php
www/policy/AssurancePolicy.html [new file with mode: 0644]
www/policy/AssurancePolicy.php
www/policy/CAcertCommunityAgreement.html [new file with mode: 0644]
www/policy/CAcertCommunityAgreement.php
www/policy/CertificationPracticeStatement.html [new file with mode: 0644]
www/policy/CertificationPracticeStatement.php
www/policy/ConfigurationControlSpecification.html [new file with mode: 0644]
www/policy/DisputeResolutionPolicy.html [new file with mode: 0644]
www/policy/DisputeResolutionPolicy.php
www/policy/NRPDisclaimerAndLicence.php [deleted file]
www/policy/OrganisationAssurancePolicy.html [new file with mode: 0644]
www/policy/OrganisationAssurancePolicy.php
www/policy/OrganisationAssurancePolicy_Australia.html [new file with mode: 0644]
www/policy/OrganisationAssurancePolicy_Europe.html [new file with mode: 0644]
www/policy/OrganisationAssurancePolicy_Germany.html [new file with mode: 0644]
www/policy/PolicyOnJuniorAssurersMembers.html [new file with mode: 0644]
www/policy/PolicyOnPolicy.html [new file with mode: 0644]
www/policy/PolicyOnPolicy.php
www/policy/PrivacyPolicy.html
www/policy/PrivacyPolicy.php [new file with mode: 0644]
www/policy/RootDistributionLicense.html [new file with mode: 0644]
www/policy/RootDistributionLicense.php
www/policy/SecurityPolicy.html [new file with mode: 0644]
www/policy/TTPAssistedAssurancePolicy.html [new file with mode: 0644]
www/policy/cacert-draft.png [deleted file]
www/policy/images/cacert-draft.png [new file with mode: 0644]
www/policy/images/cacert-policy.png [new file with mode: 0644]
www/policy/images/valid-html401-blue.png [new file with mode: 0644]
www/policy/images/valid-html50-blue.png [new file with mode: 0644]
www/policy/images/valid-xhtml11-blue.png [new file with mode: 0644]
www/policy/index.php
www/robots.txt [new file with mode: 0644]
www/styles/default.css
www/verify.php
www/wot.php

diff --git a/CommModule/.gitignore b/CommModule/.gitignore
new file mode 100644 (file)
index 0000000..40a9309
--- /dev/null
@@ -0,0 +1,19 @@
+# Ignore autogenerated serial conf file
+/serial.conf
+/serialserver.conf
+
+# Ignore *-active files
+/client.pl-active
+/server.pl-active
+
+# Ignore log files
+/logfile20??-??-??.txt
+/nohup.out
+/oldlogs/
+
+# Ignore working files generated by the signer
+/currentcrls/
+/delta?.diff
+/revoke-root?.crl
+/timesync.sh
+/work/
index 25e6a73..9d32469 100755 (executable)
@@ -40,8 +40,8 @@ my $paranoid=1;
 
 my $debug=0;
 
-#my $serialport="/dev/ttyS0";
-my $serialport="/dev/ttyUSB0";
+my $serialport="/dev/ttyS1";
+#my $serialport="/dev/ttyUSB0";
 
 my $gpgbin="/usr/bin/gpg";
 
@@ -172,7 +172,7 @@ else
 $PortObj->baudrate(115200);
 $PortObj->parity("none");
 $PortObj->databits(8);
-$PortObj->stopbits(1);        
+$PortObj->stopbits(1);
 }
 }
 
@@ -286,8 +286,8 @@ sub SendIt($)
   #  {
   #    $PortObj->write(substr($_[0],$_,1));
   #  }
-  
-}  
+
+}
 
 
 my $modus=0;
@@ -313,17 +313,17 @@ sub SendHandshaked($)
       $xor ^= unpack("C",substr($_[0],$_,1));
     }
     #print "XOR: $xor\n";
-  
+
     my $tryagain=1;
     while($tryagain)
     {
       SendIt($_[0].pack("C",$xor)."rie4Ech7");
-  
+
       Error "Packet receipt was not confirmed in 5 seconds. Connection lost!\n" if(!scalar($sel->can_read(5)));
 
       $data="";
       $length=read SER,$data,1;
-    
+
       if($length && $data eq "\x10")
       {
         SysLog "Sent successfully!...\n";
@@ -335,14 +335,14 @@ sub SendHandshaked($)
       }
       else
       {
-        Error "I cannot send! $length ".unpack("C",$data)."\n"; 
+        Error "I cannot send! $length ".unpack("C",$data)."\n";
       }
     }
 
   }
   else
   {
-    print "!Cannot send! $length \n"; 
+    print "!Cannot send! $length \n";
     Error "!Stopped sending.\n";
   }
 }
@@ -423,7 +423,7 @@ sub Request($$$$$$$$$$$)
   my @fields=unpack3array(substr($data,3,-9));
 
   SysLog "Answer from Server: ".hexdump($data)."\n" if($debug);
+
   #if(open OUT,">result.dat")
   #{
   #  print OUT $data;
@@ -444,9 +444,9 @@ sub calculateDays($)
     my @sum = $dbh->selectrow_array("select sum(`points`) as `total` from `notary` where `to`='".$_[0]."' and `deleted`=0 group by `to`");
     SysLog("Summe: $sum[0]\n") if($debug);
 
-    return ($sum[0]>=50)?730:180;
+    return ($sum[0]>=50)?30:3;
   }
-  return 180;
+  return 3;
 }
 
 sub X509extractSAN($)
@@ -461,8 +461,8 @@ sub X509extractSAN($)
     {
       $SAN.="," if($SAN ne "");
       $SAN.= trim($bit[1]);
-    } 
-    else 
+    }
+    else
     {
       $newsubject .= "/".$val;
     }
@@ -470,7 +470,7 @@ sub X509extractSAN($)
   $newsubject=~s{^//}{/};
   $newsubject=~s/[\n\r\t\x00"\\']//g;
   $SAN=~s/[ \n\r\t\x00"\\']//g;
-  return($SAN,$newsubject); 
+  return($SAN,$newsubject);
 }
 
 sub X509extractExpiryDate($)
@@ -526,25 +526,25 @@ sub X509extractSerialNumber($)
   return "";
 }
 
-sub OpenPGPextractExpiryDate ($) 
+sub OpenPGPextractExpiryDate ($)
 {
   my $r="";
   my $cts;
   my @date;
+
   open(RGPG, $gpgbin.' -vv '.$_[0].' 2>&1 |') or Error('Can\'t start GnuPG($gpgbin): '.$!."\n");
   open(OUT,  '> infogpg.txt'           ) or Error('Can\'t open output file: infogpg.txt: '.$!);
   $/="\n";
-  while (<RGPG>) 
+  while (<RGPG>)
   {
     print OUT $_;
-    unless ($r) 
+    unless ($r)
     {
       if ( /^\s*version \d+, created (\d+), md5len 0, sigclass (?:0x[0-9a-fA-F]+|\d+)\s*$/ )
       {
         SysLog "Detected CTS: $1\n";
         $cts = int($1);
-      } elsif ( /^\s*critical hashed subpkt \d+ len \d+ \(sig expires after ((\d+)y)?((\d+)d)?((\d+)h)?(\d+)m\)\s*$/ ) 
+      } elsif ( /^\s*critical hashed subpkt \d+ len \d+ \(sig expires after ((\d+)y)?((\d+)d)?((\d+)h)?(\d+)m\)\s*$/ )
       {
         SysLog "Detected FRAME $2 $4 $6 $8\n";
         $cts += $2 * 31536000; # secs per year (60 * 60 * 24 * 365)
@@ -560,19 +560,19 @@ sub OpenPGPextractExpiryDate ($)
     }
   }
 
-  close(OUT );      
+  close(OUT );
   close(RGPG);
 
   SysLog "CTS: $cts  R: $r\n";
-  if ( $r ) 
+
+  if ( $r )
   {
     @date = gmtime($r);
     $r = sprintf('%.4i-%.2i-%.2i %.2i:%.2i:%.2i',            # date format
     $date[5] + 1900, $date[4] + 1, $date[3], # day
     $date[2],        $date[1],     $date[0], # time
     );
-                                                       
+
   }
   SysLog "$r\n";
   return $r;
@@ -605,7 +605,7 @@ sub setUsersLanguage($)
   if($lang ne "")
   {
     $ENV{"LANG"}=$lang;
-    setlocale(LC_ALL, $lang);     
+    setlocale(LC_ALL, $lang);
   } else {
     $ENV{"LANG"}="en_AU";
     setlocale(LC_ALL, "en_AU");
@@ -642,7 +642,7 @@ sub sendmail($$$$$$$)
   my ($to, $subject, $message, $from, $replyto, $toname, $fromname)=@_;
   my $errorsto="returns\@cacert.org";
   my $extra="";
-  
+
 
   # sendmail($user{email}, "[CAcert.org] Your GPG/PGP Key", $body, "support\@cacert.org", "", "", "CAcert Support");
   my @lines=split("\n",$message);
@@ -653,14 +653,14 @@ sub sendmail($$$$$$$)
     if($line eq ".")
     {
       $message .= " .\n";
-    } else 
+    } else
     {
       $message .= $line."\n";
-    } 
+    }
   }
 
   $fromname = $from if($fromname eq "");
-               
+
   my @bits = split(",", $from);
   $from = addslashes($bits['0']);
   $fromname = addslashes($fromname);
@@ -672,7 +672,7 @@ sub sendmail($$$$$$$)
   SysLog "SMTP: ".<$smtp>;
   print $smtp "MAIL FROM:<returns\@cacert.org>\r\n";
   SysLog "MAIL FROM: ".<$smtp>;
+
   @bits = split(",", $to);
   foreach my $user (@bits)
   {
@@ -707,7 +707,7 @@ sub sendmail($$$$$$$)
        print $smtp "Content-Type: text/plain; charset=\"utf-8\"\r\n";
        print $smtp "Content-Transfer-Encoding: 8bit\r\n";
   }
-  else 
+  else
   {
        print $smtp "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
        print $smtp "Content-Transfer-Encoding: quoted-printable\r\n";
@@ -756,7 +756,7 @@ sub HandleCerts($$)
     {
       #Weird SQL structure ...
       my @sqlres=$dbh->selectrow_array("select memid from domains where id='".int($row{'domid'})."'");
-      $row{'memid'}=$sqlres[0]; 
+      $row{'memid'}=$sqlres[0];
       SysLog("Fetched memid: $row{'memid'}\n") if($debug);
     }
 
@@ -832,7 +832,7 @@ sub HandleCerts($$)
       SysLog "SAN: --$SAN--\n" if($debug);
       SysLog "memid: $row{'memid'}\n" if($debug);
 
-      my $days=$org?($server?(365*2):365):calculateDays($row{"memid"});
+      my $days=$org?($server?(30):7):calculateDays($row{"memid"});
 
       my $md_id = 0;
       $md_id = 1 if( $row{'md'} eq "md5");
@@ -857,7 +857,7 @@ sub HandleCerts($$)
           print OUT $crt;
           close OUT;
           system "$opensslbin x509 -in $crtname.der -inform der -out $crtname";
-        }      
+        }
       }
       else
       {
@@ -901,7 +901,7 @@ sub HandleCerts($$)
       $body .= _("Best regards")."\n"._("CAcert.org Support!")."\n\n";
       sendmail($user{email}, "[CAcert.org] "._("Your certificate"), $body, "support\@cacert.org", "", "", "CAcert Support");
     }
-    else 
+    else
     {
       SysLog("Could not find the issued certificate. $crtname ".$row{"id"}."\n");
       $dbh->do("update `$table` set warning=warning+1 where `id`='".$row{'id'}."'");
@@ -914,7 +914,7 @@ sub DoCRL($$)
 {
   my $crl=$_[0];
   my $crlname=$_[1];
-  
+
   if(length($crl))
   {
     if($crl=~m/^-----BEGIN X509 CRL-----/)
@@ -929,7 +929,7 @@ sub DoCRL($$)
       open OUT,">$crlname.patch";
       print OUT $crl;
       close OUT;
-      my $res=system "xdelta patch $crlname.patch $crlname $crlname.tmp"; 
+      my $res=system "xdelta patch $crlname.patch $crlname $crlname.tmp";
       #print "xdelta res: $res\n";
       if($res==512)
       {
@@ -939,7 +939,7 @@ sub DoCRL($$)
       }
     }
 
-    my $res=`openssl crl -verify -in $crlname.tmp -inform der -noout 2>&1`;    
+    my $res=`openssl crl -verify -in $crlname.tmp -inform der -noout 2>&1`;
     SysLog "verify: $res\n";
     if($res=~m/verify OK/)
     {
@@ -1023,17 +1023,29 @@ sub RevokeCerts($$)
 
       if($result)
       {
-        setUsersLanguage($row{memid});
-
-        my %user=getUserData($row{memid});
-
         $dbh->do("update `$table` set `revoked`=now() where `id`='".$row{'id'}."'");
 
-        my $body = _("Hi")." $user{fname},\n\n";
-        $body .= sprintf(_("Your certificate for %s has been revoked, as per request.")."\n\n", $row{'CN'});
-        $body .= _("Best regards")."\n"._("CAcert.org Support!")."\n\n";
-       SysLog("Sending email to ".$user{"email"}."\n") if($debug);
-        sendmail($user{email}, "[CAcert.org] "._("Your certificate"), $body, "support\@cacert.org", "", "", "CAcert Support");
+        if($org eq "")
+        {
+          if($server)
+          {
+            my @a=$dbh->selectrow_array("select `memid` from `domains` where `id`='".int($row{domid})."'");
+            sendRevokeMail($a[0],  $row{'CN'}, $row{'serial'});
+          }
+          else
+          {
+            sendRevokeMail($row{memid}, $row{'CN'}, $row{'serial'});
+          }
+        }
+        else
+        {
+          my $orgsth = $dbh->prepare("select `memid` from `org` where `orgid`='".int($row{orgid})."'");
+          $orgsth->execute();
+          while ( my ($memid) = $orgsth->fetchrow_array() )
+          {
+            sendRevokeMail($memid, $row{'CN'}, $row{'serial'});
+          }
+        }
       }
 
     }
@@ -1046,6 +1058,21 @@ sub RevokeCerts($$)
 
 }
 
+sub sendRevokeMail()
+{
+    my $memid = $_[0];
+    my $certName = $_[1];
+    my $serial = $_[2];
+    setUsersLanguage($memid);
+
+    my %user=getUserData($memid);
+
+    my $body = _("Hi")." $user{fname},\n\n";
+    $body .= sprintf(_("Your certificate for '%s' with the serial number '%s' has been revoked, as per request.")."\n\n", $certName, $serial);
+    $body .= _("Best regards")."\n"._("CAcert.org Support!")."\n\n";
+    SysLog("Sending email to ".$user{"email"}."\n") if($debug);
+    sendmail($user{email}, "[CAcert.org] "._("Your certificate"), $body, "support\@cacert.org", "", "", "CAcert Support");
+}
 
 
 
@@ -1057,7 +1084,7 @@ sub HandleGPG()
   while ( $rowdata = $sth->fetchrow_hashref() )
   {
     my %row=%{$rowdata};
-  
+
     my $prefix="gpg";
     my $short=int($row{'id'}/1000);
     my $csrname = "../csr/$prefix-".$row{'id'}.".csr";
@@ -1071,11 +1098,11 @@ sub HandleGPG()
 
     #my $csrname = "../csr/gpg-".$row{'id'}.".csr";
     #my $crtname = "../crt/gpg-".$row{'id'}.".crt";
-  
+
     SysLog "Opening $csrname\n";
-  
+
     my $crt="";
-  
+
     if(-s $csrname && open(IN,"<$csrname"))
     {
       undef $/;
@@ -1101,12 +1128,12 @@ sub HandleGPG()
     {
       SysLog "Opening $crtname\n";
       setUsersLanguage($row{memid});
-  
+
       my $date=OpenPGPextractExpiryDate($crtname);
       my %user=getUserData($row{memid});
-  
+
       $dbh->do("update `gpg` set `crt`='$crtname', issued=now(), `expire`='$date' where `id`='".$row{'id'}."'");
-  
+
       my $body = _("Hi")." $user{fname},\n\n";
       $body .= sprintf(_("Your CAcert signed key for %s is available online at:")."\n\n", $row{'email'});
       $body .= "https://www.cacert.org/gpg.php?id=3&cert=$row{id}\n\n";
@@ -1153,5 +1180,5 @@ while ( -f "./client.pl-active" )
   my $timestamp=strftime("%m%d%H%M%Y.%S",gmtime);
   Request($ver,0,0,0,0,0,0,0,$timestamp,"","");
   sleep(1);
-  usleep(1700000); 
+  usleep(1700000);
 }
diff --git a/CommModule/serial.conf b/CommModule/serial.conf
deleted file mode 100755 (executable)
index bd9980c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Device::SerialPort_Configuration_File -- DO NOT EDIT --
-/dev/ttyUSB0
-
-C_CFLAG,7346
-C_IFLAG,0
-C_ISPEED,4098
-C_LFLAG,2608
-C_OFLAG,4
-C_OSPEED,4098
-C_VERASE,127
-C_VQUIT,28
-C_VSUSP,26
-C_VINTR,3
-C_VSTOP,19
-C_VSTART,17
-C_VKILL,21
-C_VMIN,0
-C_VEOF,4
-C_VEOL,0
-C_VTIME,0
-CFG_1,none
-RCONST,0
-CFG_2,none
-HNAME,localhost
-ALIAS,/dev/ttyUSB0
-CFG_3,none
-U_MSG,0
-DATYPE,raw
-E_MSG,0
-HADDR,0
-RTOT,0
-DVTYPE,none
diff --git a/README b/README
deleted file mode 100644 (file)
index 7f2ca78..0000000
--- a/README
+++ /dev/null
@@ -1,17 +0,0 @@
-LibreSSL Documentation
-
-(c) 2005-2008 by CAcert Inc.
-License: GNU-GPLv2
-
-System Requirements:
-Linux/POSIX
-PHP
-GetText
-UFPDF - PDF generation library from http://acko.net/node/56
-OpenSSL - X.509 toolkit from http://www.openssl.org/
-openssl-vulnkey including blacklists for all common key sizes
-GnuPG - OpenPGP toolkit from http://www.gnupg.org/
-whois - whois client from http://www.linux.it/~md/software/
-XEnroll - Enrollment Active-X control for IE5/6 from Microsoft (search for xenroll.cab)
-CommModule - CAcert Communication Module
-
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..39c9d68
--- /dev/null
+++ b/README.md
@@ -0,0 +1,19 @@
+LibreSSL Documentation
+======================
+
+(c) 2005-2013 by CAcert Inc.
+License: GNU-GPLv2
+
+## System Requirements:
+
+ * Linux/POSIX
+ * PHP 5.3
+ * GetText PECL module for PHP
+ * UFPDF - PDF generation library from http://acko.net/node/56
+ * OpenSSL - X.509 toolkit from http://www.openssl.org/
+ * openssl-vulnkey including blacklists for all common key sizes
+ * GnuPG - OpenPGP toolkit from http://www.gnupg.org/
+ * whois - whois client from http://www.linux.it/~md/software/
+ * XEnroll - Enrollment Active-X control for IE5/6 from Microsoft (search for xenroll.cab)
+ * CommModule - CAcert Communication Module
+
diff --git a/config/ttp.ini b/config/ttp.ini
new file mode 100644 (file)
index 0000000..d0a0913
--- /dev/null
@@ -0,0 +1,6 @@
+; list of countries and the TTP CAP form to be used
+[ttp_country]
+Australia=ttp
+Puerto Rico=ttp
+US Virgin Island=ttp
+USA =ttp
\ No newline at end of file
diff --git a/crt/DIR b/crt/DIR
new file mode 100644 (file)
index 0000000..87975fb
--- /dev/null
+++ b/crt/DIR
@@ -0,0 +1 @@
+# This directory has to be writeable by the web server
diff --git a/csr/DIR b/csr/DIR
new file mode 100644 (file)
index 0000000..87975fb
--- /dev/null
+++ b/csr/DIR
@@ -0,0 +1 @@
+# This directory has to be writeable by the web server
index 26845cd..28bb6f9 100644 (file)
@@ -905,7 +905,8 @@ function buildSubjectFromSession() {
                                                `rootcert`='".intval($row['rootcert'])."',
                                                `type`='".intval($row['type'])."',
                                                `pkhash`='".mysql_real_escape_string($row['pkhash'])."',
-                                               `description`='".mysql_real_escape_string($row['description'])."'";
+                                               `description`='".mysql_real_escape_string($row['description'])."',
+                                               `md`='".HashAlgorithms::clean($row['md'])."'";
                                mysql_query($query);
                                $newid = mysql_insert_id();
                                $newfile=generatecertpath("csr","server",$newid);
@@ -1085,7 +1086,8 @@ function buildSubjectFromSession() {
                                                `disablelogin`='".intval($row['disablelogin'])."',
                                                `codesign`='".intval($row['codesign'])."',
                                                `rootcert`='".intval($row['rootcert'])."',
-                                               `description`='".mysql_real_escape_string($row['description'])."'";
+                                               `description`='".mysql_real_escape_string($row['description'])."',
+                                               `md`='".HashAlgorithms::clean($row['md'])."'";
                                mysql_query($query);
                                $newid = mysql_insert_id();
                                $newfile=generatecertpath("csr","client",$newid);
@@ -1210,6 +1212,23 @@ function buildSubjectFromSession() {
                exit;
        }
 
+       if($oldid == 6 && $_REQUEST['certid'] != "")
+       {
+               if(trim($_REQUEST['description']) != ""){
+                       $description= trim(mysql_real_escape_string(stripslashes($_REQUEST['description'])));
+               }else{
+                       $description= "";
+               }
+
+               if(trim($_REQUEST['disablelogin']) == "1"){
+                       $disablelogin = 1;
+               }else{
+                       $disablelogin = 0;
+               }
+
+               mysql_query("update `emailcerts` set `disablelogin`='$disablelogin', `description`='$description' where `id`='".$_REQUEST['certid']."' and `memid`='".$_SESSION['profile']['id']."'");
+       }
+
        if($oldid == 13 && $process != "" && $showdetails!="")
        {
                csrf_check("perschange");
@@ -1560,7 +1579,12 @@ function buildSubjectFromSession() {
                        }
                        mysql_query("update `orgemailcerts` set `csr_name`='$CSRname' where `id`='$emailid'");
                } else if($_REQUEST['keytype'] == "MS" || $_REQUEST['keytype']=="VI") {
-                       $csr = "-----BEGIN CERTIFICATE REQUEST-----\n".clean_csr($_REQUEST['CSR'])."-----END CERTIFICATE REQUEST-----\n";
+                       $csr = clean_csr($_REQUEST['CSR']);
+                       if(strpos($csr,"---BEGIN") === FALSE)
+                       {
+                               // In case the CSR is missing the ---BEGIN lines, add them automatically:
+                               $csr = "-----BEGIN CERTIFICATE REQUEST-----\n".$csr."\n-----END CERTIFICATE REQUEST-----\n";
+                       }
 
                        if (($weakKey = checkWeakKeyCSR($csr)) !== "")
                        {
@@ -1709,7 +1733,8 @@ function buildSubjectFromSession() {
                                                `modified`=NOW(),
                                                `codesign`='".intval($row['codesign'])."',
                                                `rootcert`='".intval($row['rootcert'])."',
-                                               `description`='".mysql_real_escape_string($row['description'])."'";
+                                               `description`='".mysql_real_escape_string($row['description'])."',
+                                               `md`='".HashAlgorithms::clean($row['md'])."'";
                                mysql_query($query);
                                $newid = mysql_insert_id();
                                $newfile=generatecertpath("csr","orgclient",$newid);
@@ -2061,7 +2086,8 @@ function buildSubjectFromSession() {
                                                `subject`='".mysql_real_escape_string($row['subject'])."',
                                                `type`='".intval($row['type'])."',
                                                `rootcert`='".intval($row['rootcert'])."',
-                                               `description`='".mysql_real_escape_string($row['description'])."'";
+                                               `description`='".mysql_real_escape_string($row['description'])."',
+                                               `md`='".HashAlgorithms::clean($row['md'])."'";
                                mysql_query($query);
                                $newid = mysql_insert_id();
                                //echo "NewID: $newid<br/>\n";
@@ -2229,7 +2255,7 @@ function buildSubjectFromSession() {
                                                `contact`='".$_SESSION['_config']['contact']."',
                                                `L`='".$_SESSION['_config']['L']."',
                                                `ST`='".$_SESSION['_config']['ST']."',
-                                               `C`='".$_SESSION['_config']['C']."',
+                                               `C`='".strtoupper($_SESSION['_config']['C'])."',
                                                `comments`='".$_SESSION['_config']['comments']."'");
                        showheader(_("My CAcert.org Account!"));
                        printf(_("'%s' has just been successfully added as an organisation to the database."), sanitizeHTML($_SESSION['_config']['O']));
@@ -2257,7 +2283,7 @@ function buildSubjectFromSession() {
                                                `contact`='".$_SESSION['_config']['contact']."',
                                                `L`='".$_SESSION['_config']['L']."',
                                                `ST`='".$_SESSION['_config']['ST']."',
-                                               `C`='".$_SESSION['_config']['C']."',
+                                               `C`='".strtoupper($_SESSION['_config']['C'])."',
                                                `comments`='".$_SESSION['_config']['comments']."'
                                        where `id`='".intval($_SESSION['_config']['orgid'])."'");
                        showheader(_("My CAcert.org Account!"));
@@ -2780,8 +2806,8 @@ function buildSubjectFromSession() {
                        $row = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='".intval($_REQUEST['userid'])."'"));
                        printf(_("The password for %s has been updated successfully in the system."), sanitizeHTML($row['email']));
 
-               $my_translation = L10n::get_translation();
-               L10n::set_recipient_language(intval($_REQUEST['userid']));
+                       $my_translation = L10n::get_translation();
+                       L10n::set_recipient_language(intval($_REQUEST['userid']));
                        $body  = sprintf(_("Hi %s,"),$row['fname'])."\n\n";
                        $body .= _("You are receiving this email because a CAcert administrator ".
                                        "has changed the password on your account.")."\n\n";
@@ -2790,7 +2816,7 @@ function buildSubjectFromSession() {
 
                        sendmail($row['email'], "[CAcert.org] "._("Password Update Notification"), $body,
                                                "support@cacert.org", "", "", "CAcert Support");
-               L10n::set_translation($my_translation);
+                       L10n::set_translation($my_translation);
                }
 
                showfooter();
index 0fda2f1..e2f60f6 100644 (file)
 <title><?=$title?></title>
 <? if(array_key_exists('header',$_SESSION) && $_SESSION['_config']['header'] != "") { ?><?=$_SESSION['_config']['header']?><? } ?>
 <link rel="stylesheet" href="/styles/default.css" type="text/css" />
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <script language="JavaScript" type="text/javascript">
 function explode(e) {
     if (document.getElementById(e).style.display == 'none') {
index 1031247..70031f4 100644 (file)
 //     if($_SESSION['profile']['id'] > 0)
 //             session_regenerate_id();
 
+       //cf. http://stackoverflow.com/a/14532168
+       if(!defined('ENT_HTML401'))     define('ENT_HTML401', 0);
+       if(!defined('ENT_XML1'))        define('ENT_XML1', 16);
+       if(!defined('ENT_XHTML'))       define('ENT_XHTML', 32);
+       if(!defined('ENT_HTML5'))       define('ENT_HTML5', (32|16));
+
        $pageLoadTime_Start = microtime(true);
 
        $junk = array(_("Face to Face Meeting"), _("Trusted Third Parties"), _("Thawte Points Transfer"), _("Administrative Increase"),
                }
        }
 
+       function isValidWildcard($name){
+               if(substr($name,0,2) == "*."){
+                       $name = substr($name, 2);
+               }
+               if(!preg_match('/^(\\.(?!-)[a-z0-9_-]*[a-z0-9])+$/i','.'.$name)){
+                       return false;
+               }
+               return strpos($name, "*") === false;
+       }
+
        function getcn()
        {
                unset($_SESSION['_config']['rows']);
                        $bits = explode(".", $CN);
                        $dom = "";
                        $cnok = 0;
+
+                       if(!isValidWildcard($CN)){
+                               $_SESSION['_config']['rejected'][] = $CN;
+                               continue;
+                       }
+
                        for($i = count($bits) - 1; $i >= 0; $i--)
                        {
                                if($dom)
                                        $dom = $bits[$i];
                                $_SESSION['_config']['row'] = "";
                                $dom = mysql_real_escape_string($dom);
-                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
+                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` = '$dom' and `deleted`=0 and `hash`=''";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
                        else
                                continue;
 
+                       if(!isValidWildcard($alt)){
+                               $_SESSION['_config']['rejected'][] = $alt;
+                               continue;
+                       }
+
                        $bits = explode(".", $alt);
                        $dom = "";
                        $altok = 0;
                                        $dom = $bits[$i];
                                $_SESSION['_config']['altrow'] = "";
                                $dom = mysql_real_escape_string($dom);
-                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` like '$dom' and `deleted`=0 and `hash`=''";
+                               $query = "select * from domains where `memid`='".intval($_SESSION['profile']['id'])."' and `domain` = '$dom' and `deleted`=0 and `hash`=''";
                                $res = mysql_query($query);
                                if(mysql_num_rows($res) > 0)
                                {
                        $CN = $_SESSION['_config']["$cnc.CN"];
                        $bits = explode(".", $CN);
                        $dom = "";
+
+                        if(!isValidWildcard($CN)){
+                                $_SESSION['_config']['rejected'][] = $CN;
+                                continue;
+                        }
+
                        for($i = count($bits) - 1; $i >= 0; $i--)
                        {
                                if($dom)
                        else
                                continue;
 
+                        if(!isValidWildcard($alt)){
+                                $_SESSION['_config']['rejected'][] = $alt;
+                                continue;
+                        }
+
                        $bits = explode(".", $alt);
                        $dom = "";
                        for($i = count($bits) - 1; $i >= 0; $i--)
 
                        foreach($mxhosts as $key => $domain)
                        {
-                               $fp = @fsockopen($domain,25,$errno,$errstr,5);
+                               $fp_opt = array(
+                                       'ssl' => array(
+                                               'verify_peer'   => false,       // Opportunistic Encryption
+                                               )
+                                       );
+                               $fp_ctx = stream_context_create($fp_opt);
+                               $fp = @stream_socket_client("tcp://$domain:25",$errno,$errstr,5,STREAM_CLIENT_CONNECT,$fp_ctx);
                                if($fp)
                                {
+                                       stream_set_blocking($fp, true);
 
-                                       $line = fgets($fp, 4096);
-                                        while(substr($line, 0, 4) == "220-")
-                                               $line = fgets($fp, 4096);
-                                       if(substr($line, 0, 3) != "220")
+                                       $has_starttls = false;
+
+                                       do {
+                                               $line = fgets($fp, 4096);
+                                       } while(substr($line, 0, 4) == "220-");
+                                       if(substr($line, 0, 3) != "220") {
+                                               fclose($fp);
                                                continue;
-                                       fputs($fp, "HELO www.cacert.org\r\n");
-                                       $line = fgets($fp, 4096);
-                                       while(substr($line, 0, 3) == "220")
+                                       }
+
+                                       fputs($fp, "EHLO www.cacert.org\r\n");
+                                       do {
                                                $line = fgets($fp, 4096);
-                                       if(substr($line, 0, 3) != "250")
+                                               $has_starttls |= trim($line) == "250-STARTTLS";
+                                       } while(substr($line, 0, 4) == "250-");
+                                       if(substr($line, 0, 3) != "250") {
+                                               fclose($fp);
                                                continue;
-                                       fputs($fp, "MAIL FROM:<returns@cacert.org>\r\n");
-                                       $line = fgets($fp, 4096);
+                                       }
+
+                                       if($has_starttls) {
+                                               fputs($fp, "STARTTLS\r\n");
+                                               do {
+                                                       $line = fgets($fp, 4096);
+                                               } while(substr($line, 0, 4) == "220-");
+                                               if(substr($line, 0, 3) != "220") {
+                                                       fclose($fp);
+                                                       continue;
+                                               }
+
+                                               stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
+
+                                               fputs($fp, "EHLO www.cacert.org\r\n");
+                                               do {
+                                                       $line = fgets($fp, 4096);
+                                                       $has_starttls |= trim($line) == "250-STARTTLS";
+                                               } while(substr($line, 0, 4) == "250-");
+                                               if(substr($line, 0, 3) != "250") {
+                                                       fclose($fp);
+                                                       continue;
+                                               }
+                                       }
 
-                                       if(substr($line, 0, 3) != "250")
+                                       fputs($fp, "MAIL FROM:<returns@cacert.org>\r\n");
+                                       do {
+                                               $line = fgets($fp, 4096);
+                                       } while(substr($line, 0, 4) == "250-");
+                                       if(substr($line, 0, 3) != "250") {
+                                               fclose($fp);
                                                continue;
+                                       }
+
                                        fputs($fp, "RCPT TO:<$email>\r\n");
-                                       $line = trim(fgets($fp, 4096));
+                                       do {
+                                               $line = fgets($fp, 4096);
+                                       } while(substr($line, 0, 4) == "250-");
+                                       if(substr($line, 0, 3) != "250") {
+                                               fclose($fp);
+                                               continue;
+                                       }
+
                                        fputs($fp, "QUIT\r\n");
                                        fclose($fp);
 
                                        $line = mysql_real_escape_string(trim(strip_tags($line)));
                                        $query = "insert into `pinglog` set `when`=NOW(), `email`='$myemail', `result`='$line'";
-                                       if(is_array($_SESSION['profile'])) $query.=", `uid`='".intval($_SESSION['profile']['id'])."'";
+                                       if(isset($_SESSION['profile']) && is_array($_SESSION['profile']) && isset($_SESSION['profile']['id'])) $query.=", `uid`='".intval($_SESSION['profile']['id'])."'";
                                        mysql_query($query);
 
                                        if(substr($line, 0, 3) != "250")
                        $subject="";
                        if(mysql_num_rows($res) > 0)
                        {
-                               printf(_("Your certificate request is still queued and hasn't been processed yet. Please wait, and go to Certificates -> View to see it's status."));
+                               printf('<p>' . _("Your certificate request is still queued and hasn't been processed yet. Please wait, and go to Certificates -> View to see it's status." . '</p>'));
                                $subject="[CAcert.org] Certificate TIMEOUT";
                                $body = "A certificate has timed out!\n\n";
                        }
                        else
                        {
-                               printf(_("Your certificate request has failed to be processed correctly, see %sthe WIKI page%s for reasons and solutions.")." certid:$table:".intval($certid), "<a href='http://wiki.cacert.org/wiki/FAQ/CertificateRenewal'>", "</a>");
+                               printf('<p>' . _("Your certificate request has failed to be processed correctly, see %sthe WIKI page%s for reasons and solutions.") . " certid:$table:".intval($certid) . '</p>', "<a href='http://wiki.cacert.org/wiki/FAQ/CertificateRenewal'>", "</a>");
                                $subject="[CAcert.org] Certificate FAILURE";
                                $body = "A certificate has failed: $table $certid $id $show\n\n";
                        }
 
                        $body .= _("Best regards")."\n"._("CAcert.org Support!");
 
-                       sendmail("philipp@cacert.org", $subject, $body, "returns@cacert.org", "", "", "CAcert Support");
+                       sendmail("sw-message@cacert.org", $subject, $body, "returns@cacert.org", "", "", "CAcert Support");
 
                        if($show) showfooter();
                        if($show) exit;
                return $res;
        }
 
+       /**
+         * Returns the given ip address truncated to /16 (ipv4) or to /48 (ipv6)
+         */
+       function anonymizeIP($ip){
+               $bits = @inet_pton($ip);
+               if($bits === false) {
+                       return false;
+               }
 
-?>
+               if(strlen($bits) == 4) {
+                       $bits[2] = "\0";
+                       $bits[3] = "\0";
+                       $newIP = @inet_ntop($bits);
+                       if($newIP !== false) {
+                               $newIP .= "/16";
+                       }
+                       return $newIP;
+               } else if(strlen($bits) == 16) {
+                       for($i=6;$i<16;$i++){
+                               $bits[$i]="\0";
+                       }
+                       $newIP = @inet_ntop($bits);
+                       if($newIP !== false) {
+                               $newIP .= "/48";
+                       }
+                       return $newIP;
+               }
+               return false;
+       }
index 4c1bd30..10c4e0a 100644 (file)
@@ -38,7 +38,7 @@ google_color_text = "000000";
 google_color_border = "FFFFFF";
 //-->
 </script>
-<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><? } else { 
+<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><? } else {
 ?><h2><?=_("Free digital certificates!")?></h2><? } ?></div>
   </div>
   <div id="pageNav">
@@ -47,15 +47,15 @@ google_color_border = "FFFFFF";
       <? if(array_key_exists('mconn',$_SESSION) && $_SESSION['mconn']) { ?>
       <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=1"><?=_("Join")?></a>
       <? } ?>
-      <a href="/policy/CAcertCommunityAgreement.php"><?=_("Community Agreement")?></a>
+      <a href="/policy/CAcertCommunityAgreement.html"><?=_("Community Agreement")?></a>
       <a href="/index.php?id=3"><?=_("Root Certificate")?></a>
     </div>
     <? if(array_key_exists('mconn',$_SESSION) && $_SESSION['mconn']) { ?>
     <div class="relatedLinks">
       <h3 class="pointer"><?=_("My Account")?></h3>
-      <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=4"><?=_("Password Login")?></a> 
+      <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=4"><?=_("Password Login")?></a>
       <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=5"><?=_("Lost Password")?></a>
-      <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=4&amp;noauto=1"><?=_("Net Cafe Login")?></a> 
+      <a href="https://<?=$_SESSION['_config']['normalhostname']?>/index.php?id=4&amp;noauto=1"><?=_("Net Cafe Login")?></a>
       <a href="https://<?=$_SESSION['_config']['securehostname']?>/index.php?id=4"><?=_("Certificate Login")?></a>
     </div>
     <? } ?>
@@ -137,8 +137,8 @@ if(!function_exists("showfooter"))
         <a href="/policy/PrivacyPolicy.html"><?=_("Privacy Policy")?></a> |
         <a href="/index.php?id=51"><?=_("Mission Statement")?></a> | <a href="/index.php?id=11"><?=_("Contact Us")?></a> |
        &copy;2002-<?=date("Y")?> <?=_("by CAcert")?></div>
-</div>  
-</body>             
+</div>
+</body>
 </html><?
        }
 }
index 2713a81..15dee8a 100644 (file)
@@ -121,7 +121,7 @@ if (array_key_exists('HTTP_USER_AGENT',$_SERVER) && strstr($_SERVER['HTTP_USER_A
                        <input type="hidden" name="keytype" value="NS">
                        <?=_("Keysize:")?> <keygen name="SPKAC" challenge="<? $_SESSION['spkac_hash']=make_hash(); echo $_SESSION['spkac_hash']; ?>">
 
-                       <input type="submit" name="submit" value="<?=_("Create Certificate Request")?>">
+                       <input type="submit" name="submit" value="<?=_("Generate key pair within browser")?>">
                        <input type="hidden" name="oldid" value="<?=intval($id)?>">
                </form>
        </p>
index 127c6b7..5458788 100644 (file)
@@ -32,9 +32,9 @@
 function get_user_id_from_cert($serial, $issuer_cn)
 {
        $query = "select `memid` from `emailcerts` where
-                       `serial`='".mysql_escape_string($serial)."' and
+                       `serial`='".mysql_real_escape_string($serial)."' and
                        `rootcert`= (select `id` from `root_certs` where
-                               `Cert_Text`='".mysql_escape_string($issuer_cn)."') and
+                               `Cert_Text`='".mysql_real_escape_string($issuer_cn)."') and
                        `revoked`=0 and disablelogin=0 and
                        UNIX_TIMESTAMP(`expire`) - UNIX_TIMESTAMP() > 0";
        $res = mysql_query($query);
index 3b8e736..63c426e 100644 (file)
@@ -332,15 +332,15 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
 
 ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-       <tr>
-               <td class="title"><?=_("Assurer Ranking")?></td>
-       </tr>
-       <tr>
-               <td class="DataTD"><?=sprintf(_("You have made %s assurances which ranks you as the #%s top assurer."), intval($num_of_assurances), intval($rank_of_assurer) )?></td>
-       </tr>
-       <tr>
-               <td class="DataTD"><?=sprintf(_("You have received %s assurances which ranks you as the #%s top assuree."), intval($num_of_assurees), intval($rank_of_assuree) )?></td>
-       </tr>
+    <tr>
+       <td class="title"><?=_("Assurer Ranking")?></td>
+    </tr>
+    <tr>
+       <td class="DataTD"><?=sprintf(_("You have made %s assurances which ranks you as the #%s top assurer."), intval($num_of_assurances), intval($rank_of_assurer) )?></td>
+    </tr>
+    <tr>
+       <td class="DataTD"><?=sprintf(_("You have received %s assurances which ranks you as the #%s top assuree."), intval($num_of_assurees), intval($rank_of_assuree) )?></td>
+    </tr>
 </table>
 <br/>
 <?
@@ -377,16 +377,16 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
                if ($support == 1)
                {
 ?>
-               <td class="DataTD"><strong><?=_("When")?></strong></td>
-               <td class="DataTD"><strong><?=_("Email")?></strong></td>
+       <td class="DataTD"><strong><?=_("When")?></strong></td>
+       <td class="DataTD"><strong><?=_("Email")?></strong></td>
 <?
                }
 ?>
-               <td class="DataTD"><strong><?=_("Who")?></strong></td>
-               <td class="DataTD"><strong><?=_("Points")?></strong></td>
-               <td class="DataTD"><strong><?=_("Location")?></strong></td>
-               <td class="DataTD"><strong><?=_("Method")?></strong></td>
-               <td class="DataTD"><strong><?=_("Experience Points")?></strong></td>
+       <td class="DataTD"><strong><?=_("Who")?></strong></td>
+       <td class="DataTD"><strong><?=_("Points")?></strong></td>
+       <td class="DataTD"><strong><?=_("Location")?></strong></td>
+       <td class="DataTD"><strong><?=_("Method")?></strong></td>
+       <td class="DataTD"><strong><?=_("Experience Points")?></strong></td>
 <?
                if ($log == 1)
                {
@@ -395,7 +395,7 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
 <?
                }
 ?>
-       </tr>
+    </tr>
 <?
        }
 
@@ -427,7 +427,7 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
                if ($log == 1)
                {
 ?>
-               <td class="DataTD">&nbsp;</td>
+       <td class="DataTD">&nbsp;</td>
 <?
                }
 ?>
@@ -532,14 +532,14 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
        {
 ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-       <tr>
-               <td colspan="4" class="title"><?=_("Summary of your Points")?></td>
-       </tr>
-       <tr>
-               <td class="DataTD"><strong><?=_("Description")?></strong></td>
-               <td class="DataTD"><strong><?=_("Points")?></strong></td>
-               <td class="DataTD"><strong><?=_("Countable Points")?></strong></td>
-               <td class="DataTD"><strong><?=_("Remark")?></strong></td>
+    <tr>
+       <td colspan="4" class="title"><?=_("Summary of your Points")?></td>
+    </tr>
+    <tr>
+       <td class="DataTD"><strong><?=_("Description")?></strong></td>
+       <td class="DataTD"><strong><?=_("Points")?></strong></td>
+       <td class="DataTD"><strong><?=_("Countable Points")?></strong></td>
+       <td class="DataTD"><strong><?=_("Remark")?></strong></td>
     </tr>
 <?
        }
@@ -555,12 +555,12 @@ define('THAWTE_REVOCATION_DATETIME', '2010-11-16 00:00:00');
        function output_summary_row($title,$points,$points_countable,$remark)
        {
 ?>
-       <tr>
-               <td class="DataTD"><strong><?=$title?></strong></td>
-               <td class="DataTD"><?=$points?></td>
-               <td class="DataTD"><?=$points_countable?></td>
-               <td class="DataTD"><?=$remark?></td>
-       </tr>
+    <tr>
+       <td class="DataTD"><strong><?=$title?></strong></td>
+       <td class="DataTD"><?=$points?></td>
+       <td class="DataTD"><?=$points_countable?></td>
+       <td class="DataTD"><?=$remark?></td>
+    </tr>
 <?
        }
 
@@ -1402,6 +1402,173 @@ function get_user_agreements($memid, $type=null, $active=null){
                return (strtotime($date)<=time()+$diff*86400);
        }
 
+       // table layout for organisation
+       /**
+        * org_edit_org_table()
+        *
+        * @param mixed $orgname
+        * @param mixed $contactmail
+        * @param mixed $town
+        * @param mixed $state
+        * @param mixed $country
+        * @param mixed $comment
+        * @param integer $type  0 - new, 1, edit
+        * @return
+        */
+       function org_edit_org_table($orgname, $contactmail, $town, $state, $country, $comment, $type=0){
+               if ($type > 0) {
+                       $title = _('Edit Organisation');
+                       $action = _('Update');
+               } else {
+                       $title = _('New Organisation');
+                       $action = _('Next');
+               }
+               org_edit_org_table_header($title);
+               org_edit_org_table_row(_('Organisation Name'), 'O', $orgname, 64);
+               org_edit_org_table_row(_('Contact Email'), 'contact', $contactmail, 255);
+               org_edit_org_table_row(_('Town/Suburb'), 'L', $town, 128);
+               org_edit_org_table_row(_('State/Province'), 'ST', $state, 128);
+               org_edit_org_table_country(_('Country'), 'C', $country, 2);
+               org_edit_org_table_comment(_('Comments'), 'comments', $comment);
+               org_edit_org_table_footer($action);
+       }
+
+       /**
+        * org_edit_org_table_header()
+        *
+        * @param mixed $title
+        * @return
+        */
+       function org_edit_org_table_header($title){
+?>
+               <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
+                       <tr>
+                               <td colspan="3" class="title"><?=$title?></td>
+                       </tr>
+<?
+       }
+
+       /**
+        * org_edit_org_table_row()
+        *
+        * @param mixed $label
+        * @param mixed $name
+        * @param mixed $value
+        * @param mixed $length
+        * @return
+        */
+       function org_edit_org_table_row($label, $name, $value, $length){
+?>
+                       <tr>
+                               <td class="DataTD"><?=$label?>:</td>
+                               <td class="DataTD"><input type="text" name="<?=$name?>" value="<?=SanitizeHTML($value)?>" maxlength="<?=intval($length)?>" size="90"></td>
+                               <td class="DataTD"><? printf(_('max %d characters'),$length)?></td>
+                       </tr>
+<?
+       }
+
+       /**
+        * org_edit_org_table_country()
+        *
+        * @param mixed $label
+        * @param mixed $name
+        * @param mixed $value
+        * @param mixed $length
+        * @return
+        */
+       function org_edit_org_table_country($label, $name, $value, $length){
+?>
+                       <tr>
+                               <td class="DataTD"><?=$label?>:</td>
+                               <td class="DataTD">
+                                       <input type="text" name="<?=$name?>" value="<?=SanitizeHTML($value)?>" maxlength="<?=intval($length)?>" size="<?=intval($length)?>" />
+                                       <? printf(_('(2 letter %s ISO code %s )'), '<a href="http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm">', '</a>')?>
+                               </td>
+                               <td class="DataTD"><?=sprintf(_('max %d characters'),$length)?></td>
+                       </tr>
+<?
+       }
+
+       /**
+        * org_edit_org_table_comment()
+        *
+        * @param mixed $label
+        * @param mixed $name
+        * @param mixed $value
+        * @return
+        */
+       function org_edit_org_table_comment($label, $name, $value){
+?>
+                       <tr>
+                               <td class="DataTD"><?=$label?>:</td>
+                               <td class="DataTD"><textarea name="<?=$name?>" cols=60 rows=10><?=SanitizeHTML($value)?></textarea></td>
+                               <td class="DataTD">&nbsp</td>
+                       </tr>
+<?
+       }
+
+       /**
+        * org_edit_org_table_footer()
+        *
+        * @param mixed $label
+        * @return
+        */
+       function org_edit_org_table_footer($label){
+?>
+                       <tr>
+                               <td class="DataTD" colspan="3"><input type="submit" name="process" value="<?=$label?>"></td>
+                       </tr>
+               </table>
+<?
+    }
+
+       /**
+        * get_array_from_ini()
+        *  gets an array from an ini file and trims all entries
+        * @param mixed $inifile, path and filename of the ini file
+        * @return
+        */
+       function get_array_from_ini($inifile){
+               $array = parse_ini_file('../config/ttp.ini');
+               ksort($array);
+               foreach($array as $key => $value)
+               {
+                       unset($array[$key]);
+                       $array[trim($key)] = trim($value);
+               }
+               return  $array;
+       }
+
+       /**
+       *  create_selectbox_HTML()
+        *
+        * @param mixed $name, name for the select element
+        * @param mixed $options, array with the data for the dropdown
+        * @param string $value, TRUE if the value for the option should be added
+        * @param string $firstline, if the should be a first line like┬┤Choose country
+        * @param string $selected, if selection matches option key the
+        *         entry is preselected in the dropdownbox
+        * @return
+        */
+       function create_selectbox_HTML($name, array $options, $firstline = '', $value='', $selected = ''){
+               $return_str='<select name="' . $name . '">';
+               if (''!= $firstline) {
+                       $return_str .= '<option>' . $firstline .'</option>';
+               }
+               foreach ($options as $key => $avalue) {
+                       $return_str.='<option';
+                       if ($value) {
+                               $return_str.=' value="'.$avalue.'"';
+                       }
+                       if ($key==$selected){
+                               $return_str.=' selected="selected"';
+                       }
+                       $return_str.='>'.$key.'</option>';
+               }
+               $return_str.='</select>';
+               return  $return_str;
+       }
+
 /**
  * Write some information to the adminlog
  *
@@ -2138,3 +2305,33 @@ function output_gpg_certs($row, $support=0, $readonly=true){
        </tr>
        <?
 }
+
+/**
+ * revoke_assurance()
+ * revokes an assurance and adjusts the old point calculation
+ * @param mixed $assuranceid - id of the assurance
+ * @param mixed $toid        - id of the assuree
+ * @return
+ */
+function revoke_assurance($assuranceid, $toid){
+       $assuranceid = intval($assuranceid);
+       $toid = intval($toid);
+       $points = 0;
+
+       $query = "update `notary` set `deleted` = NOW() where `id` = '$assuranceid' LIMIT 1";
+       mysql_query($query);
+
+       $query = "select * from `notary` where `to` = '$toid' and `method` != 'Administrative Increase' and `deleted` = 0 order by `when`";
+       $res = mysql_query($query);
+       while($row = mysql_fetch_assoc($res)){
+               $maxToAward = max(100 - $points, 0);
+               $newpoints = min($row['awarded'], $maxToAward);
+
+               $points += $row['awarded'];
+
+               $query = "update `notary` set `points` = '". (int)$newpoints ."' where `id`='" . (int)$row['id'] . "' LIMIT 1";
+               mysql_query($query);
+       }
+
+       fix_assurer_flag($toid);
+}
index ea28c0e..767e721 100644 (file)
@@ -14,8 +14,8 @@
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/ ?>
-<?
+*/
+
   $query = "select * from `users` where `id`='".intval($_SESSION['profile']['id'])."' and `users`.`deleted`=0";
   $res = mysql_query($query);
   $user = mysql_fetch_assoc($res);
 
   if($showdetails){
     $body  = sprintf(_("Hi %s,"),$user['fname'])."\n\n";
-    $body .= _("You receive this automatic mail since you yourself or someone ".
+    $ip = anonymizeIp($_SERVER['REMOTE_ADDR']);
+    if($ip === false) {
+      $ip = _("Error anonymising IP/network information");
+    }
+    $body .= sprintf(_("You receive this automatic mail since you yourself or someone ".
       "else looked up your secret questions and answers for a forgotten ".
       "password.\n\n".
+      "Network: %s\nTime: %s\n\n".
       "If it was you who looked up or changed that data, or clicked ".
       "through the menu in your account, everything is in best order ".
       "and you can ignore this mail.\n\n".
       "But if you received this mail without a recognisable reason, ".
       "there is a danger that an unauthorised person accessed your ".
       "account, and you should promptly change your password and your ".
-      "secret questions and answers.")."\n\n";
+      "secret questions and answers."),
+      $ip,
+      date("Y-m-d H:i:s T"))."\n\n";
 
     $body .= _("Best regards")."\n"._("CAcert Support");
 
index 8783bc5..829897f 100644 (file)
@@ -104,6 +104,7 @@ if (array_key_exists('emails',$_SESSION['_config']) && is_array($_SESSION['_conf
 </table>
 <input type="hidden" name="oldid" value="<?=$id?>">
 </form>
+<?=_("Please fill out the form, when all data is entered and you click \"Next\" you can add either a CSR (certificate signing request) or create a new key with your browser. Even in the case that a CSR is given the data from this form will be used for the certificate. Only the public key information of the CSR will be copied.")?>
 
 <script language="javascript">
 function showExpert(a)
index 8ac8b65..0d5c2c7 100644 (file)
 */
 
 require_once($_SESSION['_config']['filepath'].'/includes/keygen.php');
+
+?>
+ -- <?=_("or")?> --
+               <form method="post" action="account.php">
+                       <input type="hidden" name="keytype" value="VI">
+                       <textarea rows="20" cols="40" name="CSR"></textarea>
+                       <input type="submit" name="submit" value="<?=_("Submit CSR")?>">
+                       <input type="hidden" name="oldid" value="17">
+               </form>
index 959111f..d7259f3 100644 (file)
                        showfooter();
                        exit;
                }
+       } else if($row['keytype'] == "VI"){
+               showheader(_("My CAcert.org Account!"));
+               echo "<pre>".$cert."</pre>";
+               showfooter();
        } else {
                showheader(_("My CAcert.org Account!"));
 ?>
index 14a47c0..2ad526e 100644 (file)
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */ ?>
 <?
-       // Reset session variables regarding Org's, present empty form  
-       if (array_key_exists('O',$_SESSION['_config']))         $_SESSION['_config']['O'] = "";
-  if (array_key_exists('contact',$_SESSION['_config']))   $_SESSION['_config']['contact'] = "";        
-  if (array_key_exists('L',$_SESSION['_config']))         $_SESSION['_config']['L'] = "";
-  if (array_key_exists('ST',$_SESSION['_config']))        $_SESSION['_config']['ST'] = "";
-  if (array_key_exists('C',$_SESSION['_config']))         $_SESSION['_config']['C'] = "";
-  if (array_key_exists('comments',$_SESSION['_config']))  $_SESSION['_config']['comments'] = "";
-       
+$orgname = '';
+$contactmail = '';
+$town = '';
+$state = '';
+$country = '';
+$comment = '';
+
+       // Reset session variables regarding Org's, present empty form
+if (array_key_exists('O',$_SESSION['_config']))         $_SESSION['_config']['O'] = "";
+if (array_key_exists('contact',$_SESSION['_config']))   $_SESSION['_config']['contact'] = "";
+if (array_key_exists('L',$_SESSION['_config']))         $_SESSION['_config']['L'] = "";
+if (array_key_exists('ST',$_SESSION['_config']))        $_SESSION['_config']['ST'] = "";
+if (array_key_exists('C',$_SESSION['_config']))         $_SESSION['_config']['C'] = "";
+if (array_key_exists('comments',$_SESSION['_config']))  $_SESSION['_config']['comments'] = "";
+
 ?>
 <form method="post" action="account.php">
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="2" class="title"><?=_("New Organisation")?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Organisation Name")?>:</td>
-    <td class="DataTD"><input type="text" name="O" value="" maxlength="50" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Contact Email")?>:</td>
-    <td class="DataTD"><input type="text" name="contact" value="" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Town/Suburb")?>:</td>
-    <td class="DataTD"><input type="text" name="L" value="" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("State/Province")?>:</td>
-    <td class="DataTD"><input type="text" name="ST" value="" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Country")?>:</td>
-    <td class="DataTD"><input type="text" name="C" value="" size="5">
-        <?php printf(_('(2 letter %s ISO code %s )'),
-            '<a href="http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm">',
-            '</a>')?>
-    </td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Comments")?>:</td>
-    <td class="DataTD"><textarea name="comments" cols="60" rows="10"></textarea></td>
-  </tr>
-  <tr>
-    <td class="DataTD" colspan="2"><input type="submit" name="process" value="<?=_("Next")?>"></td>
-  </tr>
-</table>
+<?
+org_edit_org_table($orgname, $contactmail, $town, $state, $country, $comment, 0);
+?>
 <input type="hidden" name="oldid" value="<?=$id?>">
 </form>
index a1086d4..d07a781 100644 (file)
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */ ?>
 <?
-       $row = mysql_fetch_assoc(mysql_query("select * from `orginfo` where `id`='".intval($_REQUEST['orgid'])."'"));
+    $orgid = intval($_REQUEST['orgid']);
+    $row = mysql_fetch_assoc(mysql_query("select * from `orginfo` where `id`='" . $orgid . "'"));
+    $orgname = $row['O'];
+    $contactmail = $row['contact'];
+    $town = $row['L'];
+    $state = $row['ST'];
+    $country = $row['C'];
+    $comment = $row['comments'];
 ?>
 <form method="post" action="account.php">
-<table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
-  <tr>
-    <td colspan="2" class="title"><?=_("Edit Organisation")?></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Organisation Name")?>:</td>
-    <td class="DataTD"><input type="text" name="O" value="<?=$row['O']?>" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Contact Email")?>:</td>
-    <td class="DataTD"><input type="text" name="contact" value="<?=($row['contact'])?>" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Town/Suburb")?>:</td>
-    <td class="DataTD"><input type="text" name="L" value="<?=($row['L'])?>" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("State/Province")?>:</td>
-    <td class="DataTD"><input type="text" name="ST" value="<?=($row['ST'])?>" size="90"></td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Country")?>:</td>
-    <td class="DataTD"><input type="text" name="C" value="<?=($row['C'])?>" size="5">
-        <?php printf(_('(2 letter %s ISO code %s )'),
-            '<a href="http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm">',
-            '</a>')?>
-    </td>
-  </tr>
-  <tr>
-    <td class="DataTD"><?=_("Comments")?>:</td>
-    <td class="DataTD"><textarea name="comments" cols=60 rows=10><?=($row['comments'])?></textarea></td>
-  </tr>
-  <tr>
-    <td class="DataTD" colspan="2"><input type="submit" name="process" value="<?=_("Update")?>"></td>
-  </tr>
-</table>
+<?
+    org_edit_org_table($orgname, $contactmail, $town, $state, $country, $comment, 1);
+?>
 <input type="hidden" name="oldid" value="<?=intval($id)?>">
-<input type="hidden" name="orgid" value="<?=intval($_REQUEST['orgid'])?>">
+<input type="hidden" name="orgid" value="<?=$orgid?>">
 <input type="hidden" name="csrf" value="<?=make_csrf('orgdetchange')?>" />
 </form>
index a809595..18fa5da 100644 (file)
@@ -25,8 +25,7 @@ if(!array_key_exists('secrethash',$_SESSION['_config'])) $_SESSION['_config']['s
 <p><?=sprintf(_("If you are having trouble with your username or password, please visit our %swiki page%s for more information"), "<a href='http://wiki.cacert.org/wiki/FAQ/LostPasswordOrAccount' target='_new'>", "</a>");?></p>
 <p><?=_("Before contacting us, be sure to read the information on our official and unofficial HowTo and FAQ pages.")?> - <a href="//wiki.cacert.org/HELP/"><?=_("Go here for more details.")?></a></p>
 <p><?=_("General questions about CAcert should be sent to the general support list, please send all emails in ENGLISH only, this list has many more volunteers then those directly involved with the running of the website, everyone on the mailing list understands english, even if this isn't their native language this will increase your chance at a competent reply. While it's best if you sign up to the mailing list to get replied to, you don't have to, but please make sure you note this in your email, otherwise it might seem like you didn't get a reply to your question.")?></p>
-<p><a href="https://lists.cacert.org/wws/info/cacert-support"><?=_("Click here to go to the Support List")?></a></p>
-<p><?=_("You can alternatively use the form below, however joining the list is the prefered option to support your queries")?></p>
+<p><?=_("You can use the form below to contact the support team directly. The mail is NOT send to the mailing list.")?></p>
 <form method="post" action="account.php" name="form1">
   <input type="hidden" name="oldid" value="<?=$id?>">
 <!--   <input type="hidden" name="support" value="yes"> --> 
@@ -35,23 +34,32 @@ if(!array_key_exists('secrethash',$_SESSION['_config'])) $_SESSION['_config']['s
     <label>If you're human leave this blank:</label>
     <input name="robotest" type="text" id="robotest" class="robotest" />
   </p>
-<table border="0">
-    <tr><td width="100"><?=_("Your Name")?>:</td><td width="100"><input type="text" name="who"></td><td width="100"></td><td width="100"></td>
-    <tr><td width="100"><?=_("Your Email")?>:</td><td colspan="3"><input type="text" name="email"></td>
-    <tr><td width="100"><?=_("Subject")?>:</td><td colspan="3"><input type="text" name="subject"></td></tr>
-    <tr><td width="100" valign="top"><?=_("Message")?>:</td><td colspan="3"><textarea name="message" cols="70" rows="10"></textarea></td></tr>
-
+  <table border="0">
+    <tr>
+      <td width="100"><?=_("Your Name")?>:</td>
+      <td width="300"><input type="text" name="who"></td>
+    </tr>
+    <tr>
+      <td><?=_("Your Email")?>:</td>
+      <td><input type="text" name="email"></td>
+    </tr>
+    <tr>
+      <td><?=_("Subject")?>:</td>
+      <td><input type="text" name="subject"></td>
+    </tr>
+    <tr>
+      <td valign="top"><?=_("Message")?>:</td>
+      <td><textarea name="message" cols="70" rows="10"></textarea></td>
+    </tr>
     <tr>
-      <td colspan="2"><font color="#ff0000"><?=_("Warning: Please do not use \"send to mailing list\" when you entered confidential data. The request is being sent to a public mailinglist.")?></font></td>
       <td colspan="2"><?=_("For confidential data use \"send to support\".")?></td>
     </tr>
     <tr>
-      <td colspan="2"><input type="submit" name="process[0]" value="<?=_("Send to mailing list")?>"></td>
       <td colspan="2"><input type="submit" name="process[1]" value="<?=_("Send to support")?>"></td>
     </tr>
   </table>
 </form>
-
+<p><a href="https://lists.cacert.org/wws/info/cacert-support"><?=_("Click here to go to the Support List")?></a></p>
 <p><b>IRC</b></p>
 <p><a href="irc://irc.CAcert.org/CAcert">irc://irc.CAcert.org/CAcert</a></p>
 <p><b>Secure IRC</b></p>
index d61d8db..f644025 100644 (file)
@@ -57,7 +57,7 @@ require_once($_SESSION['_config']['filepath'].'/includes/lib/l10n.php');
        $res = mysql_query($query);
        while($row = mysql_fetch_assoc($res))
        {
-               $lang = mysql_fetch_assoc(mysql_query("select * from `languages` where `locale`='".mysql_escape_string($row['lang'])."'"));
+               $lang = mysql_fetch_assoc(mysql_query("select * from `languages` where `locale`='".mysql_real_escape_string($row['lang'])."'"));
 ?>
   <tr>
     <td class="DataTD"><?=_("Additional Language")?>:</td>
index c889ce3..b876330 100644 (file)
@@ -37,7 +37,7 @@ if(intval(array_key_exists('userid',$_REQUEST)?$_REQUEST['userid']:0) <= 0)
 {
     $_REQUEST['userid'] = 0;
 
-    $emailsearch = $email = mysql_real_escape_string(stripslashes($_REQUEST['email']));
+    $emailsearch = $email = mysql_real_escape_string(stripslashes(trim($_REQUEST['email'])));
 
     //Disabled to speed up the queries
     //if(!strstr($email, "%"))
@@ -136,8 +136,7 @@ if(intval($_REQUEST['userid']) > 0) {
                 if ($res) {
                     $trow = mysql_fetch_assoc($res);
                     if ($trow) {
-                        mysql_query("update `notary` set `deleted`=NOW() where `id`='".intval($assurance)."'");
-                        fix_assurer_flag($trow['to']);
+                        revoke_assurance(intval($assurance),$trow['to']);
                     }
                 }
             }
index 0218fa0..e1e6206 100644 (file)
        $userid=0; if(array_key_exists('userid',$_GET)) $userid=intval($_GET['userid']);
        if($userid <= 0)
        {
-               $domainsearch = $domain = mysql_escape_string(stripslashes($_POST['domain']));
+               $domainsearch = $domain = mysql_real_escape_string(stripslashes($_POST['domain']));
                if(!strstr($domain, "%"))
                        $domainsearch = "%$domain%";
                if(preg_match("/^\d+$/",$domain))
                        $domainsearch = "";
+               //check if request is id if not set search ID to -1
+               $domainid = intval($domain);
+               if($domain !== $domainid){
+                       $domainid = -1;
+               }
+
                $query = "select `users`.`id` as `id`, `domains`.`domain` as `domain`, `domains`.`id`as `domid` from `users`,`domains`
                                where `users`.`id`=`domains`.`memid` and
-                               (`domains`.`domain` like '$domainsearch' or `domains`.`id`='$domain') and
+                               (`domains`.`domain` like '$domainsearch' or `domains`.`id`='$domainid') and
                                `domains`.`deleted`=0 and `users`.`deleted`=0 and
                                `users`.`verified`=1
                                group by `users`.`id` limit 100";
@@ -64,8 +70,7 @@
                        </tr>
                </table><br><br><?
                }
-
-               $query = "select `orgid`,`domain`,`id` from `orgdomains` where `domain` like '$domainsearch' or `id`='$domain' limit 100";
+               $query = "select `orgid`,`domain`,`id` from `orgdomains` where `domain` like '$domainsearch' or `id`='$domainid' limit 100";
                $res = mysql_query($query);
                if(mysql_num_rows($res) >= 1) { ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
index cc9e2d6..1ec04b2 100644 (file)
@@ -16,7 +16,7 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */ ?>
 <?
-       $town = array_key_exists('town',$_REQUEST)?mysql_escape_string(stripslashes($_REQUEST['town'])):"";
+       $town = array_key_exists('town',$_REQUEST)?mysql_real_escape_string(stripslashes($_REQUEST['town'])):"";
        $regid = array_key_exists('regid',$_REQUEST)?intval($_REQUEST['regid']):0;
        $ccid = array_key_exists('ccid',$_REQUEST)?intval($_REQUEST['ccid']):0;
        $start = array_key_exists('start',$_REQUEST)?intval($_REQUEST['start']):0;
index 753b4af..35dce33 100644 (file)
@@ -19,7 +19,7 @@
        $ccid = array_key_exists('ccid',$_REQUEST)?intval($_REQUEST['ccid']):0;
        $regid = array_key_exists('regid',$_REQUEST)?intval($_REQUEST['regid']):0;
        $locid = array_key_exists('locid',$_REQUEST)?intval($_REQUEST['locid']):0;
-       $name = array_key_exists('name',$_REQUEST)?mysql_escape_string($_REQUEST['name']):"";
+       $name = array_key_exists('name',$_REQUEST)?mysql_real_escape_string($_REQUEST['name']):"";
 
        if($ccid > 0 && $_REQUEST['action'] == "add") { ?>
 <form method="post" action="account.php">
index de8d1a3..fc21d39 100644 (file)
@@ -113,8 +113,8 @@ if (array_key_exists('format', $_REQUEST)) {
        $crtname=escapeshellarg($row['crt_name']);
        $cert = shell_exec("/usr/bin/openssl x509 -in $crtname -outform PEM");
        echo "<pre>$cert</pre>";
+?>
 
-       ?>
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
        <tr>
                <td colspan="2" class="title"><?=_("Information about the certificate")?></td>
index c5301d3..de5cb7c 100644 (file)
 
 <p><?=_("CAcert.org is a community-driven Certificate Authority that issues certificates to the public at large for free.")?></p>
 
-<p><?=_("CAcert's goal is to promote awareness and education on computer security through the use of encryption, specifically by providing cryptographic certificates. These certificates can be used to digitally sign and encrypt email, authenticate and authorize users connecting to websites and secure data transmission over the internet. Any application that supports the Secure Socket Layer Protocol (SSL or TLS) can make use of certificates signed by CAcert, as can any application that uses X.509 certificates, e.g. for encryption or code signing and document signatures.")?></p>
+<p><?=_("CAcert's goal is to promote awareness and education on computer security through the use of encryption, specifically by providing cryptographic certificates. These certificates can be used to digitally sign and encrypt email, authenticate and authorize users connecting to websites and secure data transmission over the internet. Any application that supports the Secure Socket Layer protocol (SSL or TLS) can make use of certificates signed by CAcert, as can any application that uses X.509 certificates, e.g. for encryption or code signing and document signatures.")?></p>
 
 <p><?=sprintf(_("If you want to have free certificates issued to you, %s join the CAcert Community %s."),'<a href="https://www.cacert.org/index.php?id=1">', '</a>')?></p>
 
-<p><?=sprintf(_("If you want to use certificates issued by CAcert, read the CAcert %s Root Distribution License %s."),'<a href="/policy/RootDistributionLicense.php">',"</a>")?>
+<p><?=sprintf(_("If you want to use certificates issued by CAcert, read the CAcert %s Root Distribution License %s."),'<a href="/policy/RootDistributionLicense.html">',"</a>")?>
 <?=sprintf(_("This license applies to using the CAcert %s root keys %s."),'<a href="/index.php?id=3">','</a>')?></p>
 
 
@@ -87,7 +87,7 @@
 
 <p><?=sprintf(_("Have you passed the CAcert %s Assurer Challenge %s yet?"),'<a href="http://wiki.cacert.org/wiki/AssurerChallenge">','</a>')?></p>
 
-<p><?=sprintf(_("Have you read the CAcert %sCommunity Agreement%s yet?"),'<a href="/policy/CAcertCommunityAgreement.php">','</a>')?></p>
+<p><?=sprintf(_("Have you read the CAcert %sCommunity Agreement%s yet?"),'<a href="/policy/CAcertCommunityAgreement.html">','</a>')?></p>
 
 <p><?=sprintf(_("For general documentation and help, please visit the CAcert %sWiki Documentation site %s."),'<a href="http://wiki.CAcert.org">','</a>')?>
 <?=sprintf(_("For specific policies, see the CAcert %sApproved Policies page%s."),'<a href="/policy/">',"</a>")?></p>
index 3315d69..05e59df 100644 (file)
 
   <tr>
     <td class="DataTD" width="125"><?=_("First Name")?>: </td>
-    <td class="DataTD" width="125"><input type="text" name="fname" size="30" value="<?=array_key_exists('fname',$_REQUEST)?sanitizeHTML($_REQUEST['fname']):""?>" autocomplete="off"></td>
-    <td rowspan="4" class="DataTD" width="125"><? printf(_("Help on Names %sin the wiki%s"),'<a href="//wiki.cacert.org/FAQ/HowToEnterNamesInJoinForm" target="_blank">','</a>')?></td>
+    <td class="DataTD" width="125"><input type="text" name="fname" size="30" value="<?=array_key_exists('fname',$_REQUEST)?sanitizeHTML($_REQUEST['fname']):""?>" tabindex="1" autocomplete="off"></td>
+    <td rowspan="4" class="DataTD" width="125"><? printf(_("Help on Names %sin the wiki%s"),'<a tabindex="1" href="//wiki.cacert.org/FAQ/HowToEnterNamesInJoinForm" target="_blank">','</a>')?></td>
   </tr>
 
   <tr>
     <td class="DataTD" valign="top"><?=_("Middle Name(s)")?><br>
       (<?=_("optional")?>)
     </td>
-    <td class="DataTD"><input type="text" name="mname" size="30" value="<?=array_key_exists('mname',$_REQUEST)?sanitizeHTML($_REQUEST['mname']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="mname" size="30" value="<?=array_key_exists('mname',$_REQUEST)?sanitizeHTML($_REQUEST['mname']):""?>" tabindex="3" autocomplete="off"></td>
   </tr>
 
   <tr>
     <td class="DataTD"><?=_("Last Name")?>: </td>
-    <td class="DataTD"><input type="text" name="lname" size="30" value="<?=array_key_exists('lname',$_REQUEST)?sanitizeHTML($_REQUEST['lname']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="lname" size="30" value="<?=array_key_exists('lname',$_REQUEST)?sanitizeHTML($_REQUEST['lname']):""?>" tabindex="4" autocomplete="off"></td>
   </tr>
 
   <tr>
     <td class="DataTD"><?=_("Suffix")?><br>
       (<?=_("optional")?>)</td>
-    <td class="DataTD"><input type="text" name="suffix" size="30" value="<?=array_key_exists('suffix',$_REQUEST)?sanitizeHTML($_REQUEST['suffix']):""?>" autocomplete="off"><br><?=sprintf(_("Please only write Name Suffixes into this field."))?></td>
+    <td class="DataTD"><input type="text" name="suffix" size="30" value="<?=array_key_exists('suffix',$_REQUEST)?sanitizeHTML($_REQUEST['suffix']):""?>" tabindex="5" autocomplete="off"><br><?=sprintf(_("Please only write Name Suffixes into this field."))?></td>
   </tr>
 
   <tr>
     <td class="DataTD"><?=_("Date of Birth")?><br>
            (<?=_("dd/mm/yyyy")?>)</td>
-    <td class="DataTD"><nobr><select name="day">
+    <td class="DataTD"><nobr><select name="day" tabindex="6">
 <?
        for($i = 1; $i <= 31; $i++)
        {
@@ -71,7 +71,7 @@
        }
 ?>
     </select>
-    <select name="month">
+    <select name="month" tabindex="7">
 <?
        for($i = 1; $i <= 12; $i++)
        {
        }
 ?>
     </select>
-    <input type="text" name="year" value="<?=array_key_exists('year',$_SESSION['signup']) ? sanitizeHTML($_SESSION['signup']['year']):""?>" size="4" autocomplete="off"></nobr>
+    <input type="text" name="year" value="<?=array_key_exists('year',$_SESSION['signup']) ? sanitizeHTML($_SESSION['signup']['year']):""?>" size="4" tabindex="8" autocomplete="off"></nobr>
     </td>
     <td class="DataTD">&nbsp;</td>
   </tr>
 
   <tr>
     <td class="DataTD"><?=_("Email Address")?>: </td>
-    <td class="DataTD"><input type="text" name="email" size="30" value="<?=array_key_exists('email',$_REQUEST)?sanitizeHTML($_REQUEST['email']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="email" size="30" value="<?=array_key_exists('email',$_REQUEST)?sanitizeHTML($_REQUEST['email']):""?>" tabindex="9" autocomplete="off"></td>
     <td class="DataTD"><?=_("I own or am authorised to control this email address")?></td>
   </tr>
 
   <tr>
     <td class="DataTD"><?=_("Pass Phrase")?><font color="red">*</font>: </td>
-    <td class="DataTD"><input type="password" name="pword1" size="30" autocomplete="off"></td>
+    <td class="DataTD"><input type="password" name="pword1" size="30" tabindex="10" autocomplete="off"></td>
     <td class="DataTD" rowspan="2">&nbsp;</td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Pass Phrase Again")?><font color="red">*</font>: </td>
-    <td class="DataTD"><input type="password" name="pword2" size="30" autocomplete="off"></td>
+    <td class="DataTD"><input type="password" name="pword2" size="30" tabindex="11" autocomplete="off"></td>
   </tr>
 
   <tr>
 
   <tr>
     <td class="DataTD">1)</td>
-    <td class="DataTD"><input type="text" name="Q1" size="30" value="<?=array_key_exists('Q1',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q1']):""?>"></td>
-    <td class="DataTD"><input type="text" name="A1" size="30" value="<?=array_key_exists('A1',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A1']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="Q1" size="30" value="<?=array_key_exists('Q1',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q1']):""?>" tabindex="12"></td>
+    <td class="DataTD"><input type="text" name="A1" size="30" value="<?=array_key_exists('A1',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A1']):""?>" tabindex="13" autocomplete="off"></td>
   </tr>
 
   <tr>
     <td class="DataTD">2)</td>
-    <td class="DataTD"><input type="text" name="Q2" size="30" value="<?=array_key_exists('Q2',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q2']):""?>"></td>
-    <td class="DataTD"><input type="text" name="A2" size="30" value="<?=array_key_exists('A2',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A2']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="Q2" size="30" value="<?=array_key_exists('Q2',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q2']):""?>" tabindex="14"></td>
+    <td class="DataTD"><input type="text" name="A2" size="30" value="<?=array_key_exists('A2',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A2']):""?>" tabindex="15" autocomplete="off"></td>
   </tr>
 
   <tr>
     <td class="DataTD">3)</td>
-    <td class="DataTD"><input type="text" name="Q3" size="30" value="<?=array_key_exists('Q3',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q3']):""?>"></td>
-    <td class="DataTD"><input type="text" name="A3" size="30"value="<?=array_key_exists('A3',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A3']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="Q3" size="30" value="<?=array_key_exists('Q3',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q3']):""?>" tabindex="16"></td>
+    <td class="DataTD"><input type="text" name="A3" size="30"value="<?=array_key_exists('A3',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A3']):""?>" tabindex="17" autocomplete="off"></td>
   </tr>
 
   <tr>
     <td class="DataTD">4)</td>
-    <td class="DataTD"><input type="text" name="Q4" size="30"" value="<?=array_key_exists('Q4',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q4']):""?>"></td>
-    <td class="DataTD"><input type="text" name="A4" size="30" value="<?=array_key_exists('A4',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A4']):""?>" autcomplete="off"></td>
+    <td class="DataTD"><input type="text" name="Q4" size="30"" value="<?=array_key_exists('Q4',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q4']):""?>" tabindex="18"></td>
+    <td class="DataTD"><input type="text" name="A4" size="30" value="<?=array_key_exists('A4',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A4']):""?>" tabindex="19" autcomplete="off"></td>
   </tr>
 
   <tr>
   <td class="DataTD">5)</td>
-    <td class="DataTD"><input type="text" name="Q5" size="30" value="<?=array_key_exists('Q5',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q5']):""?>"></td>
-    <td class="DataTD"><input type="text" name="A5" size="30" value="<?=array_key_exists('A5',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A5']):""?>" autocomplete="off"></td>
+    <td class="DataTD"><input type="text" name="Q5" size="30" value="<?=array_key_exists('Q5',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['Q5']):""?>" tabindex="20"></td>
+    <td class="DataTD"><input type="text" name="A5" size="30" value="<?=array_key_exists('A5',$_SESSION['signup'])?sanitizeHTML($_SESSION['signup']['A5']):""?>" tabindex="21" autocomplete="off"></td>
   </tr>
 
   <tr>
   <tr>
     <td class="DataTD" valign="top"><?=_("Alert me if")?>: </td>
     <td class="DataTD" align="left">
-        <input type="checkbox" name="general" value="1" <?=array_key_exists('general',$_SESSION['signup'])? ($_SESSION['signup']['general'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("General Announcements")?><br>
-       <input type="checkbox" name="country" value="1" <?=array_key_exists('country',$_SESSION['signup'])? ($_SESSION['signup']['country'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Country Announcements")?><br>
-       <input type="checkbox" name="regional" value="1" <?=array_key_exists('regional',$_SESSION['signup'])? ($_SESSION['signup']['regional'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Regional Announcements")?><br>
-       <input type="checkbox" name="radius" value="1" <?=array_key_exists('radius',$_SESSION['signup'])? ($_SESSION['signup']['radius'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Within 200km Announcements")?></td>
+        <input type="checkbox" name="general" value="1" tabindex="22" <?=array_key_exists('general',$_SESSION['signup'])? ($_SESSION['signup']['general'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("General Announcements")?><br>
+       <input type="checkbox" name="country" value="1" tabindex="23" <?=array_key_exists('country',$_SESSION['signup'])? ($_SESSION['signup']['country'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Country Announcements")?><br>
+       <input type="checkbox" name="regional" value="1" tabindex="24" <?=array_key_exists('regional',$_SESSION['signup'])? ($_SESSION['signup']['regional'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Regional Announcements")?><br>
+       <input type="checkbox" name="radius" value="1" tabindex="25" <?=array_key_exists('radius',$_SESSION['signup'])? ($_SESSION['signup']['radius'] == "0" ?"":"checked=\"checked\""):"checked=\"checked\"" ?>><?=_("Within 200km Announcements")?></td>
     <td class="DataTD">&nbsp;</td>
   </tr>
 
     <td class="DataTD" colspan="3"><?=_("When you click on next, we will send a confirmation email to the email address you have entered above.")?></td>
   </tr>
   <tr>
-    <td class="DataTD" colspan="3"><input type="checkbox" name="cca_agree" value="1" <?=array_key_exists('cca_agree',$_SESSION['signup'])? ($_SESSION['signup']['cca_agree'] == "1" ?"checked=\"checked\"":""):"" ?> ><?=_("I agree to the terms and conditions of the CAcert Community Agreement")?>: <a href="/policy/CAcertCommunityAgreement.php">http://www.cacert.org/policy/CAcertCommunityAgreement.php</a></td>
+    <td class="DataTD" colspan="3">
+      <input type="checkbox" name="cca_agree" tabindex="26" value="1" <?=array_key_exists('cca_agree',$_SESSION['signup'])? ($_SESSION['signup']['cca_agree'] == "1" ?"checked=\"checked\"":""):"" ?> >
+      <br/>
+      <?=_("I agree to the terms and conditions of the CAcert Community Agreement")?>: <a href="/policy/CAcertCommunityAgreement.html" tabindex="28" >http://www.cacert.org/policy/CAcertCommunityAgreement.php</a>
+    </td>
   </tr>
 
   <tr>
-    <td class="DataTD" colspan="3"><input type="submit" name="process" value="<?=_("Next")?>"></td>
+    <td class="DataTD" colspan="3"><input type="submit" name="process" value="<?=_("Next")?>" tabindex="27"></td>
   </tr>
 
 </table>
index 7280e09..7dd8200 100644 (file)
@@ -17,5 +17,5 @@
 */
 
     header('HTTP/1.0 301 Moved Permanently');
-    header('Location: http://www.cacert.org/policy/CertificationPracticeStatement.php');
+    header('Location: http://www.cacert.org/policy/CertificationPracticeStatement.html');
     exit();
index d1ef4df..86d86ee 100644 (file)
@@ -25,33 +25,41 @@ if(!array_key_exists('secrethash',$_SESSION['_config'])) $_SESSION['_config']['s
 <p><?=sprintf(_("If you are having trouble with your username or password, please visit our %swiki page%s for more information"), "<a href='http://wiki.cacert.org/wiki/FAQ/LostPasswordOrAccount' target='_new'>", "</a>");?></p>
 <p><?=_("Before contacting us, be sure to read the information on our official and unofficial HowTo and FAQ pages.")?> - <a href="//wiki.cacert.org/HELP/"><?=_("Go here for more details.")?></a></p>
 <p><?=_("General questions about CAcert should be sent to the general support list, please send all emails in ENGLISH only, this list has many more volunteers then those directly involved with the running of the website, everyone on the mailing list understands english, even if this isn't their native language this will increase your chance at a competent reply. While it's best if you sign up to the mailing list to get replied to, you don't have to, but please make sure you note this in your email, otherwise it might seem like you didn't get a reply to your question.")?></p>
-<p><a href="https://lists.cacert.org/wws/info/cacert-support"><?=_("Click here to go to the Support List")?></a></p>
-<p><?=_("You can alternatively use the form below, however joining the list is the prefered option to support your queries")?></p>
+<p><?=_("You can use the form below to contact the support team directly. The mail is NOT send to the mailing list.")?></p>
 <form method="post" action="index.php" name="form1">
   <input type="hidden" name="oldid" value="<?=$id?>">
-<!--   <input type="hidden" name="support" value="yes"> --> 
+<!--   <input type="hidden" name="support" value="yes"> -->
   <input type="hidden" name="secrethash2" value="">
   <p class="robotic" id="pot">
     <label>If you're human leave this blank:</label>
     <input name="robotest" type="text" id="robotest" class="robotest" />
   </p>
   <table border="0">
-    <tr><td width="100"><?=_("Your Name")?>:</td><td width="100"><input type="text" name="who"></td><td width="100"></td><td width="100"></td>
-    <tr><td width="100"><?=_("Your Email")?>:</td><td colspan="3"><input type="text" name="email"></td>
-    <tr><td width="100"><?=_("Subject")?>:</td><td colspan="3"><input type="text" name="subject"></td></tr>
-    <tr><td width="100" valign="top"><?=_("Message")?>:</td><td colspan="3"><textarea name="message" cols="70" rows="10"></textarea></td></tr>
-
     <tr>
-      <td colspan="2"><font color="#ff0000"><?=_("Warning: Please do not use \"send to mailing list\" when you entered confidential data. The request is being sent to a public mailinglist.")?></font></td>
+      <td width="100"><?=_("Your Name")?>:</td>
+      <td width="300"><input type="text" name="who"></td>
+    </tr>
+    <tr>
+      <td><?=_("Your Email")?>:</td>
+      <td><input type="text" name="email"></td>
+    </tr>
+    <tr>
+      <td><?=_("Subject")?>:</td>
+      <td><input type="text" name="subject"></td>
+    </tr>
+    <tr>
+      <td valign="top"><?=_("Message")?>:</td>
+      <td><textarea name="message" cols="70" rows="10"></textarea></td>
+    </tr>
+    <tr>
       <td colspan="2"><?=_("For confidential data use \"send to support\".")?></td>
     </tr>
     <tr>
-      <td colspan="2"><input type="submit" name="process[0]" value="<?=_("Send to mailing list")?>"></td>
       <td colspan="2"><input type="submit" name="process[1]" value="<?=_("Send to support")?>"></td>
     </tr>
   </table>
 </form>
-
+<p><a href="https://lists.cacert.org/wws/info/cacert-support"><?=_("Click here to go to the Support List")?></a></p>
 <p><b>IRC</b></p>
 <p><a href="irc://irc.CAcert.org/CAcert">irc://irc.CAcert.org/CAcert</a></p>
 <p><b>Secure IRC</b></p>
index c2cb391..ba3b4ed 100644 (file)
@@ -16,7 +16,7 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */ ?>
 
-<p><?=sprintf(_("You are bound by the %s Root Distribution Licence %s for any re-distributions of CAcert's roots."),"<a href='/policy/RootDistributionLicense.php'>","</a>")?></p>
+<p><?=sprintf(_("You are bound by the %s Root Distribution Licence %s for any re-distributions of CAcert's roots."),"<a href='/policy/RootDistributionLicense.html'>","</a>")?></p>
 
 <p>
 Class 1 <?=_("PKI Key")?><br>
index a107c29..7c52447 100644 (file)
@@ -16,7 +16,7 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */ ?>
 
-<p><?=sprintf(_("You are bound by the %s Root Distribution Licence %s for any re-distributions of CAcert's roots."),"<a href='/policy/RootDistributionLicense.php'>","</a>")?></p>
+<p><?=sprintf(_("You are bound by the %s Root Distribution Licence %s for any re-distributions of CAcert's roots."),"<a href='/policy/RootDistributionLicense.html'>","</a>")?></p>
 
 <h3><?=_("Windows Installer") ?></h3>
 <ul class="no_indent">
@@ -29,6 +29,7 @@
 <ul class="no_indent">
        <li><a href="certs/root.crt"><?=_("Root Certificate (PEM Format)")?></a></li>
        <li><a href="certs/root.der"><?=_("Root Certificate (DER Format)")?></a></li>
+       <li><a href="certs/root.cer"><?=_("Root Certificate (CER Format base64 encoded)")?></a></li>
        <li><a href="certs/root.txt"><?=_("Root Certificate (Text Format)")?></a></li>
        <li><a href="<?=$_SERVER['HTTPS']?"https":"http"?>://crl.cacert.org/revoke.crl">CRL</a></li>
        <li><?=_("SHA1 Fingerprint:")?> 13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33</li>
@@ -39,6 +40,7 @@
 <ul class="no_indent">
        <li><a href="certs/class3.crt"><?=_("Intermediate Certificate (PEM Format)")?></a></li>
        <li><a href="certs/class3.der"><?=_("Intermediate Certificate (DER Format)")?></a></li>
+       <li><a href="certs/class3.der"><?=_("Intermediate Certificate (CER Format base64 encoded)")?></a></li>
        <li><a href="certs/class3.txt"><?=_("Intermediate Certificate (Text Format)")?></a></li>
        <li><a href="<?=$_SERVER['HTTPS']?"https":"http"?>://crl.cacert.org/class3-revoke.crl">CRL</a></li>
 <?php /*
diff --git a/pages/index/feed.rss b/pages/index/feed.rss
new file mode 100644 (file)
index 0000000..def221f
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.5.1" -->
+<rss version="0.92">
+       <channel>
+               <title>CAcert NEWS Blog</title>
+               <link>http://blog.cacert.org</link>
+               <description>CAcert NEWS and up coming events.</description>
+               <lastBuildDate>Fri, 20 Aug 2010 11:54:30 +0000</lastBuildDate>
+               <docs>http://backend.userland.com/rss092</docs>
+               <language>en</language>
+
+               <item>
+                       <title>Looking for confirmation email on creating account?</title>
+                       <description>Please go to https://ca-mgr1.it-sls.de/login login with your just created account and password. Under MAIL you'll find your individual confirmation email.
+                       </description>
+                       <link>https://ca-mgr1.it-sls.de/testsystemdoc.html</link>
+               </item>
+               <item>
+                       <title>You are interested in helping Testing ?</title>
+                       <description>Create your test account on the Testserver. Beware of the confirmation email (see above) Entry page for Testers: https://wiki.cacert.org/Software/CurrentTest. Please contact Ulrich becoming a Testteam member.</description>
+                       <link>https://wiki.cacert.org/Software/CurrentTest</link>
+               </item>
+               <item>
+                       <title>Dear Testers</title>
+                       <description>We had one work with no activity on the testserver caused by inactivity by the Software-Assessment team, caused by router problems at the hosting site of the testserver. Probably latter has been fixed.
+
+                               The reported bugs can be categorized into
+                               1. Testserver-Mgmt-System related
+                               2. Production Server recovery process to Testserver
+                               3. general software errors
+
+                               Group 1+2 are essential for our current test phase, as they covers the problems in building the base testserver environment that is needed for testing.
+
+                               So language and country selection support is an essential feature we've worked on the last week.
+
+                               One problem couldn't be solved till today: secondary language selection all other country and language related bugs should be fixed in the meantime.
+
+                               Also the Show my Points details now has the correct script (after some confusion in the Software-Assessment team and one developer), comparable to the script on the production website.
+
+                               On the main entry page for testers https://wiki.cacert.org/Software/CurrentTest the updates on the bugs are marked with (i) so here comes the 2nd test round ...
+
+                               Please report your found bugs and also success reports to the listed bug numbers
+
+                               Thanks for your assistance .... ;)</description>
+                       <link>https://cacert1.it-sls.de/</link>
+               </item>
+       </channel>
+</rss>
index a0bbf50..e6b20ca 100644 (file)
@@ -65,9 +65,9 @@ document.f.location.focus();
        {
                $bits = explode(",", $_REQUEST['location']);
 
-               $loc = trim(mysql_escape_string($bits['0']));
-               $reg = ""; if(array_key_exists('1',$bits)) $reg=trim(mysql_escape_string($bits['1']));
-               $ccname = ""; if(array_key_exists('2',$bits)) $ccname=trim(mysql_escape_string($bits['2']));
+               $loc = trim(mysql_real_escape_string($bits['0']));
+               $reg = ""; if(array_key_exists('1',$bits)) $reg=trim(mysql_real_escape_string($bits['1']));
+               $ccname = ""; if(array_key_exists('2',$bits)) $ccname=trim(mysql_real_escape_string($bits['2']));
 
                $query = "select `locations`.`id` as `locid` from `locations`, `regions`, `countries` where
                        `locations`.`name` like '$loc%' and `regions`.`name` like '$reg%' and `countries`.`name` like '$ccname%' and
index eac7e18..1143769 100644 (file)
@@ -21,9 +21,9 @@ if(array_key_exists('location',$_REQUEST) && $_REQUEST['location'] != "") {
        {
                $bits = explode(",", $_REQUEST['location']);
 
-               $loc = trim(mysql_escape_string($bits['0']));
-               $reg = ''; if(array_key_exists('1',$bits)) $reg=trim(mysql_escape_string($bits['1']));
-               $ccname = ''; if(array_key_exists('2',$bits)) $ccname=trim(mysql_escape_string($bits['2']));
+               $loc = trim(mysql_real_escape_string($bits['0']));
+               $reg = ''; if(array_key_exists('1',$bits)) $reg=trim(mysql_real_escape_string($bits['1']));
+               $ccname = ''; if(array_key_exists('2',$bits)) $ccname=trim(mysql_real_escape_string($bits['2']));
                $query = "select `locations`.`id` as `locid` from `locations`, `regions`, `countries` where
                        `locations`.`name` like '$loc%' and `regions`.`name` like '$reg%' and `countries`.`name` like '$ccname%' and
                        `locations`.`regid`=`regions`.`id` and `locations`.`ccid`=`countries`.`id`
diff --git a/pages/wot/16.php b/pages/wot/16.php
new file mode 100644 (file)
index 0000000..069b7a2
--- /dev/null
@@ -0,0 +1,143 @@
+<?php
+/*LibreSSL - CAcert web application
+Copyright (C) 2004-2008  CAcert Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; version 2 of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+//*******************  TTP Console ************
+
+if ($_SESSION['profile']['ttpadmin'] < 1) {
+       echo _("You are not allowed to view this page.");
+       exit;
+}
+
+//Check for test or productive environment, in case of test the user data for the print out is extended by 'test system'
+$testserver='';
+if ($_SESSION['_config']['normalhostname']=='cacert1.it-sls.de') {
+       $testserver=' test system';
+}
+
+$row = $_SESSION['_config']['notarise'];
+$fname = $row['fname'];
+$mname = $row['mname'];
+$lname = $row['lname'];
+$suffix = $row['suffix'];
+$fullname = $fname." ".$mname." ".$lname." ".$suffix;
+$email = $row['email'];
+$dob = date_format(new DateTime($row['dob']), 'Y-m-d');
+$userid = $row['id'];
+
+//List TTP Assurances and TotalPoints
+//changed get_received_assurances ($userid, $support)
+
+//include_once($_SESSION['_config']['filepath']."/includes/wot.inc.php");
+include_once($_SESSION['_config']['filepath']."/includes/notary.inc.php");
+
+output_received_assurances(intval($userid),2); //support==2 => TTP
+
+
+$query = "select sum(`points`) as `points` from `notary` where `to`='".intval($userid)."'";
+$dres = mysql_query($query);
+$drow = mysql_fetch_assoc($dres);
+
+$points=$drow['points'];
+if ($points<1) {
+       $points=0;
+}
+
+$res = get_received_assurances(intval($userid), 2);
+$ttp_assurances_count=$num_rows = mysql_num_rows($res);
+
+//Form
+?>
+<table align="center" class="wrapper">
+       <tr>
+               <td class="title"><?=sprintf(_('Total assurance points for %s'),$fullname)?></td>
+       </tr>
+       <tr>
+               <td><?=sprintf(_('%s points'), $points)?></td>
+       </tr>
+</table>
+<br/>
+<form action="https://pdf.cacert.eu/cacertpdf.php" method="get" accept-charset="UTF-8">
+       <table align="center" class="wrapper">
+               <tr>
+                       <td colspan="2" class="title"><?= _('TTP CAP form creation')?></td>
+               </tr>
+               <tr>
+                       <td colspan="2" class="title"><?= _('User information')?></td>
+               </tr>
+               <tr>
+                       <td><?=_('Fullname')?><input type="hidden" name="fullname" value="<?=$fullname.$testserver?>"/></td>
+                       <td><?=$fullname?></td>
+               </tr>
+               <tr>
+                       <td><?=_('Date of Birth')?><input type="hidden" name="dob" value="<?=$dob.$testserver?>"/></td>
+                       <td><?=$dob?></td>
+               </tr>
+               <tr>
+                       <td><?=_('Email')?><input type="hidden" name="email" value="<?=$email.$testserver?>"/></td>
+                       <td><?=$email?></td>
+               </tr>
+               <tr></tr>
+               <tr>
+                       <td><?=_('Country where the TTP will be visited')?></td>
+                       <td>
+                               <?
+                               $ttpcountries=get_array_from_ini('../config/ttp.ini');
+                               echo create_selectbox_HTML('type',$ttpcountries, '',TRUE);
+                               ?>
+                       </td>
+               </tr>
+               <tr>
+                       <td colspan="2" class="title"><?=_('TTP Admin postal address, including name, street, country etc.')?></td>
+               </tr>
+               <tr>
+                       <td><?=_('Line').' 1'?></td>
+                       <td><input type="text" name="adress" /></td>
+               </tr>
+               <tr>
+                       <td><?=_('Line').' 2'?></td>
+                       <td><input type="text" name="adress1" /></td>
+               </tr>
+               <tr>
+                       <td><?=_('Line').' 3'?></td>
+                       <td><input type="text" name="adress2" /></td>
+               </tr>
+               <tr>
+                       <td><?=_('Line').' 4'?></td>
+                       <td><input type="text" name="adress3" /></td>
+               </tr>
+               <tr>
+                       <td><?=_('Line').' 5'?></td>
+                       <td><input type="text" name="adress4" /></td>
+               </tr>
+               <tr>
+                       <td colspan="2" class="title">
+                       <?
+                       if ($points>=100 || $ttp_assurances_count>=2) {
+                               echo _('No TTP assurance allowed');
+                       }else{
+                               ?><input type="submit" value="<?=_('Create TTP CAP pdf file')?>"/><?
+                       }?>
+                       </td>
+               </tr>
+       </table>
+       <input type="hidden" name="lang" value="en"/>
+</form>
+
+<div class="blockcenter">
+       <a href="wot.php?id=6&amp;userid=<?=$userid ?>"><?=_("Back")?></a>
+</div>
index 0864ffd..cb3a008 100644 (file)
 */ ?>
 <h3><?=_("CAcert Web of Trust Rules")?></h3>
 
-<p><?=_("It is essential that CAcert Assurers understand and follow the rules below to ensure that applicants for assurance are suitably identified, which, in turn, maintains trust in the system.")?></p>
+<p><?=_("CAcert Assurers should understand and follow the rules.")?></p>
+<p><?=_("The assurance process consists of two parts")?></p>
+<ol>
+   <li><?=_("a face to face meeting between the assurer and the assuree")?></li>
+   <li><?=_("the assurer validating that data while entering it to the CAcert system")?></li>
+</ol>
+<h4><?=_("Face to face meeting")?></h4>
+<ul>
+   <li><?=_("Assurer and assuree have to meet in person")?></li>
+   <li><?=_("A CAcert Assurance Programme (CAP) form has to be filled and signed by the assuree. It must contain the following information:")?>
+     <ul>
+       <li><?=_("All names of the assuree that appear in the account")?></li>
+       <li><?=_("Date of birth of the assuree")?></li>
+       <li><?=_("Primary email address of the assuree")?></li>
+       <li><?=sprintf(_("The acceptance of the %sCAcert Community Agreement%s (CCA) by the assuree"), "<a href=\"/policy/CAcertCommunityAgreement.html\">", "</a>")?></li>
+       <li><?=_("The agreement to enter an assurance by the assuree")?></li>
+       <li><?=_("The signature of the assuree")?></li>
+       <li><?=_("The date of the signature")?></li>
+      </ul></li>
+   <li><?=("At least one government issued photo identification document (ID-Card, drivers license, passport, ...) of the assuree has to be checked by the assurer. We prefer and advise to check two such documents, if possible.")?></li>
+</ul>
+<ul>
+   <li><?=_("The assurer has to compare the data of the document with the data entered in the CAP-form. Missing data needs to be added. The signatures on the documents and CAP-form should be compared. The photo should match the person. If there is any doubt in those points, the assurer should consider to either reduce the points (for minor issues) or decide to refuse to finish the assurance at all.")?></li>
+   <li><?=_("It is recommended that the assurer also notes if the assuree has an account and to repeat entries that may be hard to read in the assurers hand.")?></li>
+   <li><?=_("The assurer is asked to verify, if the assuree understands the crucial points of the CAcert Community Agreement and the assurance process.")?></li>
+   <li><?=_("If there are major issues the assurer (or the assuree) should consider to file a dispute, by sending a mail to support@cacert.org.")?></li>
+   <li><?=_("If the assurer is convinced that the assurance was ok, the assurer has to approve this by adding the following data to the CAP-form.")?>
+     <ul>
+       <li><?=_("Name of the assurer")?></li>
+       <li><?=_("Date of the assurance")?></li>
+       <li><?=_("Place of the assurance")?></li>
+       <li><?=_("Record over the type of documents used during the assurance (no numbers may be noted)")?></li>
+       <li><?=_("Points issued by the assurer")?></li>
+       <li><?=sprintf(_("That the assurance was done under the %sAssurance Policy%s (AP)"), "<a href=\"/policy/AssurancePolicy.html\">", "</a>")?></li>
+       <li><?=_("The signature of the assurer")?></li>
+     </ul>
+   </li>
+</ul>
+<h4><?=_("Validating and entering the data to the CAcert system")?></h4>
+<p><?=_("After the meeting the assurer has to log into the CAcert webpage and follow the \"Assure Someone\" link.")?></p>
+<ul>
+   <li><?=_("The primary email address and the date of birth from the assuree, as written on the CAP-form have to be entered by the assurer.")?></li>
+   <li><?=_("Only if they were entered correctly the assurer gets access to the assurance page with the remaining data of the assuree.")?></li>
+   <li><?=_("This page shows the names, date of birth and primary email address of the assuree.")?></li>
+   <li><?=_("It has to be compared to the data written on the CAP-form by the assurer.")?></li>
+   <li><?=sprintf(_("If the data matches completely, the assurer may enter the assurance. (The acceptable discrepancies for the names can be found in the %sAssurance Handbook%s (AH))"), "<a href=\"//wiki.cacert.org/AssuranceHandbook2\">", "</a>")?></li>
+   <li><?=_("The assurer has to enter the assurance points.")?></li>
+   <li><?=_("The assurer has to acknowledge the face-to-face meeting with the assuree, that the data on the pages matches the assuree, and that the CCA is accepted by the assurer.
+")?></li>
+</ul>
+<h4><?=_("Privacy")?></h4>
+<p><?=_("The assurer is responsible to maintain the confidentiality and privacy of the assuree.")?></p>
+<p><?=_("In particular the CAP-forms have to be stored safely for at least 7 years and not to be shown to anybody but")?></p>
+<ul>
+   <li><?=_("the assuree")?></li>
+   <li><?=_("the Arbitrator of a valid arbitration case who requests to see it with a good reason based on the case")?></li>
+   <li><?=_("another person named by such an Arbitrator.")?></li>
+</ul>
+<p><?=_("Exceptions may be made only with the explicit consent of the assuree.")?></p>
 
-<p><?=_("Contact")?><br>
-<br>
-* <?=_("You must meet the applicant in person;")?><br>
-* <?=_("You must sight at least one form of government issued photo identification.  It's preferable if 2 forms of Government issued photo ID are presented, as less points may be issued if there is any doubt on the person by the person issuing points;")?><br>
-* <?=_("Complete the assurance form if the applicant has not already done so.  Ensure that all information matches.")?><br>
-</p>
+<h4><?=_("Fees")?></h4>
+<p><?=_("The assurer may charge a fee for the expenses however not for the assurance itself, but only if the assuree has been advised of the amount prior to the meeting.")?></p>
 
-<p><?=_("Processing")?><br>
-<?=_("After the meeting, visit the CAcert Web site's make an Assurance page and:")?><br>
-<br>
-* <?=_("Enter the applicant's email address;")?><br>
-* <?=_("Compare the online information to the information recorded on the paper form;")?><br>
-* <?=_("If, and only if, the two match completely - you may award trust points up to the maximum points you are able to allocate;")?><br>
-</p>
-
-<p><?=_("Privacy")?><br>
-<?=_("It is imperative that you maintain the confidentiality and privacy of the applicant, and never disclose the information obtained without the applicant's consent.")?></p>
-
-<p><?=_("Fees")?><br>
-<?=_("You may charge a fee for your expenses if the applicant has been advised of the amount prior to the meeting.")?></p>
-
-<p><?=_("Liability")?><br>
-<?=_("A CAcert Assurer who knowingly, or reasonably ought to have known, assures an applicant contrary to this policy may be held liable.")?></p>
-
-<p><?=_("Assurance Points")?><br>
-<?=_("CAcert may, from time to time, alter the amount of Assurance Points that a class of assurer may assign as is necessary to effect a policy or rule change.  We may also alter the amount of Assurance Points available to an individual, or new class of assurer, should another policy of CAcert require this.")?></p>
+<h4><?=_("Liability")?></h4>
+<p><?=_("An assurer who assures someone contrary to this process, as it is defined in the Assurance Policy (AP) may be held liable up to 1000 EUR per case.")?></p>
index 628e6a5..954bc76 100644 (file)
@@ -43,12 +43,13 @@ if ($_SESSION['profile']['points']<100){
                <form method="post" action="wot.php">
                <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
                        <tr>
-                               <td class="DataTD"><?=_("Country where you want to visit the TTP")?></td>
-                               <td class="DataTD"><select size="1" name="country">
-                                               <option>Australia</option>
-                                               <option>Puerto Rico</option>
-                                               <option>USA</option>
-                                       </select></td>
+                               <td class="DataTD"><?=_('Country where you want to visit the TTP')?></td>
+                               <td class="DataTD">
+                                       <?
+                                               $ttpcountries=get_array_from_ini('../config/ttp.ini');
+                                               echo create_selectbox_HTML('country',$ttpcountries, _('Choose country'));
+                                       ?>
+                               </td>
                        </tr>
                        <tr>
                                <td class="DataTD"><?=_("I want to take part in the TTP Topup programme")?></td>
@@ -72,7 +73,7 @@ if ($_SESSION['profile']['points']<100){
                </form>
 */
 ?>
-       <p><?=_("We are working to develop the TTP TOPUP process to be able to fill the gap of the missing 30 assurance points to 100 assurance points. Meanwhile you have to close this gap with face to face assurances from CAcert Assurers. Think not only travelling to populated countries, but as well to assurers visiting your country or area.")?></p>  
+       <p><?=_("We are working to develop the TTP TOPUP process to be able to fill the gap of the missing 30 assurance points to 100 assurance points. Meanwhile you have to close this gap with face to face assurances from CAcert Assurers. Think not only travelling to populated countries, but as well to assurers visiting your country or area.")?></p>
 <?
        }
 } else {
index 4094a18..edecc20 100644 (file)
 */ ?>
 <?
 
-        if(!array_key_exists('notarise',$_SESSION['_config']))
+if(!array_key_exists('notarise',$_SESSION['_config']))
        {
-          echo "Error: No user data found.";
-         exit;
+               echo "Error: No user data found.";
+               exit;
        }
 
        $row = $_SESSION['_config']['notarise'];
        $_SESSION['assuresomeone']['month'] = 0;
        $_SESSION['assuresomeone']['day'] = 0;
 
-       if($_SESSION['profile']['ttpadmin'] == 1)
-//             $methods = array("Face to Face Meeting", "Trusted 3rd Parties", "TopUP");
-//     else
-               $methods = array("Face to Face Meeting", "Trusted 3rd Parties");
+       if($_SESSION['profile']['ttpadmin'] == 2)
+               $methods = array('Face to Face Meeting', 'TTP-Assisted', 'TTP-TOPUP');
+       elseif($_SESSION['profile']['ttpadmin'] == 1)
+               $methods = array('Face to Face Meeting', 'TTP-Assisted');
        else
-               $methods = array("Face to Face Meeting");
+               $methods = array('Face to Face Meeting');
 
        $mnames = array(
                '01' => _('January'),
        AssureTextLine("",_("Only tick the next box if the Assurance was face to face."));
        AssureBoxLine("assertion",_("I believe that the assertion of identity I am making is correct, complete and verifiable. I have seen original documentation attesting to this identity. I accept that the CAcert Arbitrator may call upon me to provide evidence in any dispute, and I may be held responsible."),array_key_exists('assertion',$_POST) && $_POST['assertion'] == 1);
        AssureBoxLine("rules",_("I have read and understood the CAcert Community Agreement (CCA), Assurance Policy and the Assurance Handbook. I am making this Assurance subject to and in compliance with the CCA, Assurance policy and handbook."),array_key_exists('rules',$_POST) && $_POST['rules'] == 1);
-       AssureTextLine(_("Policy"),"<a href=\"/policy/CAcertCommunityAgreement.php\" target=\"_blank\">"._("CAcert Community Agreement")."</a> -<a href=\"/policy/AssurancePolicy.php\" target=\"_blank\">"._("Assurance Policy")."</a> - <a href=\"http://wiki.cacert.org/AssuranceHandbook2\" target=\"_blank\">"._("Assurance Handbook")."</a>");
+       AssureTextLine(_("Policy"),"<a href=\"/policy/CAcertCommunityAgreement.html\" target=\"_blank\">"._("CAcert Community Agreement")."</a> - <a href=\"/policy/AssurancePolicy.html\" target=\"_blank\">"._("Assurance Policy")."</a> - <a href=\"http://wiki.cacert.org/AssuranceHandbook2\" target=\"_blank\">"._("Assurance Handbook")."</a>");
        AssureInboxLine("points",_("Points"),"","<br />(Max. ".maxpoints().")");
        AssureFoot($id,_("I confirm this Assurance"));
+
+       if($_SESSION['profile']['ttpadmin'] >= 1) {
+               ?><div class='blockcenter'><a href="wot.php?id=16"><?=_('Show TTP details')?></a></div><?
+       }
+
 ?>
old mode 100644 (file)
new mode 100755 (executable)
index 8976341..d3a0fd5 100644 (file)
 
        if($id == 1)
        {
-               $email = mysql_escape_string(trim($_REQUEST["email"]));
-               $password = mysql_escape_string(stripslashes(trim($_REQUEST["pword"])));
-               $URL = mysql_escape_string(trim($_REQUEST["notaryURL"]));
-               $CN = mysql_escape_string($_SESSION['_config']['CN']);
+               $email = mysql_real_escape_string(trim($_REQUEST["email"]));
+               $password = mysql_real_escape_string(stripslashes(trim($_REQUEST["pword"])));
+               $URL = mysql_real_escape_string(trim($_REQUEST["notaryURL"]));
+               $CN = mysql_real_escape_string($_SESSION['_config']['CN']);
                $memid = intval($_SESSION['_config']['uid']);
                $user = mysql_fetch_assoc(mysql_query("select * from `users` where `id`='$memid'"));
                $tmp = mysql_fetch_assoc(mysql_query("select sum(`points`) as `points` from `notary` where `to`='$memid'"));
@@ -99,7 +99,7 @@
                        if($nofile == 0)
                        {
                                $filename = $photoid['tmp_name'];
-                               $newfile = mysql_escape_string('/www/photoid/'.$tverify.".".$ext);
+                               $newfile = mysql_real_escape_string('/www/photoid/'.$tverify.".".$ext);
                                move_uploaded_file($filename, $newfile);
                                $query = "update `tverify` set `photoid`='$newfile' where `id`='$tverify'";
                                mysql_query($query);
diff --git a/www/.gitignore b/www/.gitignore
new file mode 100644 (file)
index 0000000..faca589
--- /dev/null
@@ -0,0 +1,5 @@
+# Ignore CRLs autogenerated by the CommModule
+/class3-revoke.crl
+/class3-revoke.crl.patch
+/revoke.crl
+/revoke.crl.patch
index bd01047..cc48170 100644 (file)
@@ -4,4 +4,4 @@ errordocument 404 /error404.php
 errordocument 403 /error403.php
 errordocument 401 /error401.php
 
-RedirectPermanent /cps.php http://www.cacert.org/policy/CertificationPracticeStatement.php
+RedirectPermanent /cps.php http://www.cacert.org/policy/CertificationPracticeStatement.html
index bad60e8..f5eaa9c 100644 (file)
@@ -14,13 +14,13 @@ if (!preg_match('/^(mem|org)-[0-9]+$/', @$_POST['usernym']))
 
 if (preg_match('/^mem-[0-9]+$/', @$_POST['usernym']))
 {
-  mysql_query("update emailcerts set coll_found=1 where memid='".mysql_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
-  mysql_query("update domaincerts set coll_found=1 where memid='".mysql_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
+  mysql_query("update emailcerts set coll_found=1 where memid='".mysql_real_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
+  mysql_query("update domaincerts set coll_found=1 where memid='".mysql_real_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
 }
 else
 {
-  mysql_query("update orgemailcerts set coll_found=1 where memid='".mysql_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
-  mysql_query("update orgdomaincerts set coll_found=1 where memid='".mysql_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
+  mysql_query("update orgemailcerts set coll_found=1 where memid='".mysql_real_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
+  mysql_query("update orgdomaincerts set coll_found=1 where memid='".mysql_real_escape_string(substr(@$_POST['usernym'],4))."' and pkhash!='' and pkhash='".$_POST['pkhash']."';");
 }
 
 //exec(REPORT_WEAK . ' ' . $_POST['usernym'] . ' ' . lower($_POST['pkhash']));
index f937069..6fceb04 100644 (file)
@@ -15,8 +15,8 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
-       $username = mysql_escape_string($_REQUEST['username']);
-       $password = mysql_escape_string($_REQUEST['password']);
+       $username = mysql_real_escape_string($_REQUEST['username']);
+       $password = mysql_real_escape_string($_REQUEST['password']);
 
        $query = "select * from `users` where `email`='$username' and (`password`=old_password('$password') or `password`=sha1('$password'))";
        $res = mysql_query($query);
index 27b7b1b..80a4e79 100644 (file)
@@ -20,7 +20,7 @@
    
   if ($ipadress=='72.36.220.19' && $_SERVER['HTTPS']=="on")
   {
-    $serial=mysql_escape_string($_REQUEST["serial"]);
+    $serial=mysql_real_escape_string($_REQUEST["serial"]);
     $root=intval($_REQUEST["root"]);
        
     $sql="select memid from emailcerts where serial='$serial' and rootcert='$root'";
diff --git a/www/cacert1-class3-revoke.crl b/www/cacert1-class3-revoke.crl
new file mode 120000 (symlink)
index 0000000..3bcd255
--- /dev/null
@@ -0,0 +1 @@
+class3-revoke.crl
\ No newline at end of file
diff --git a/www/cacert1-revoke.crl b/www/cacert1-revoke.crl
new file mode 120000 (symlink)
index 0000000..e7b822f
--- /dev/null
@@ -0,0 +1 @@
+revoke.crl
\ No newline at end of file
index cc3fad6..8e5fe01 100644 (file)
        echo '<tbody>', "\n";
        echo '<tr>', "\n";
        echo '    <td colspan="3">'._("Make sure you have read and agreed with the CAcert Community Agreement");
-       echo '(<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php">CCA</a>)<br>', "\n";
+       echo '(<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.html">CCA</a>)<br>', "\n";
        echo '</td>', "    \n", '</tr>', "\n";
 /*
        echo '</tbody>', "\n";
        echo '</td>', "\n".'</tr>', "\n";
        echo '<tr>', "\n". '    <td colspan="3"><input type="checkbox" checked name="checked" value="2"> ';
        echo _("I agree to the CAcert Community Agreement.").' (';
-       echo '<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php">CCA</a>)</dd>', "\n";
+       echo '<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.html">CCA</a>)</dd>', "\n";
        echo '</td>', "\n".'</tr>', "\n";
 /*
        echo '</tbody>', "\n";
index dc283fb..40b269a 100644 (file)
                        $this->SetFont("Arial", "", "9");
                        if($_SESSION['_config']['language'] == "ja")
                                $this->SetFont('SJIS','',9);
-                       $this->MultiCell($this->w - 29, 3, recode($_SESSION['_config']['recode'], _("I agree to the CAcert Community Agreement.")." ( http://www.cacert.org/policy/CAcertCommunityAgreement.php )"));
+                       $this->MultiCell($this->w - 29, 3, recode($_SESSION['_config']['recode'], _("I agree to the CAcert Community Agreement.")." ( http://www.cacert.org/policy/CAcertCommunityAgreement.html )"));
 // new da end
                        $this->SetXY(13, $top + 55); //45->55
                        $this->Write(0, recode($_SESSION['_config']['recode'], _("Applicant's signature")).": __________________________________");
                                $this->Write(0, str_pad($date, 13, " "));
                        }
 
-               }       
+               }
        }
 
        $format = array_key_exists('format',$_REQUEST)?$_REQUEST['format']:"";
        $pdf->AddPage();
        $pdf->Body(array_key_exists('name',$_REQUEST)?$_REQUEST['name']:"", array_key_exists('dob',$_REQUEST)?$_REQUEST['dob']:"", array_key_exists('email',$_REQUEST)?$_REQUEST['email']:"", array_key_exists('assurer',$_REQUEST)?$_REQUEST['assurer']:"", array_key_exists('date',$_REQUEST)?$_REQUEST['date']:"", $maxpoints, array_key_exists('document1',$_REQUEST)?$_REQUEST['document1']:"", array_key_exists('document2',$_REQUEST)?$_REQUEST['document2']:"", array_key_exists('location',$_REQUEST)?$_REQUEST['location']:"");
        header("Expires: ".gmdate("D, j M Y G:i:s \G\M\T", time()+10800));
-       header("Content-Disposition: attachment; filename=cap.pdf"); 
+       header("Content-Disposition: attachment; filename=cap.pdf");
        header("Cache-Control: public, max-age=10800");
        header("Pragma: cache");
        $pdf->output();
index 41a0894..273b0e6 100644 (file)
@@ -68,7 +68,7 @@ define('REV', '$Revision: 1.4 $');
 **     On transliteration and abbreviation of a name:
 **        if shoes a std way show accepted conversion as pdf comment
 **     Orientation: on landscape (dflt) print 2-up
-**     PDF URL links are used to web, wiki, and faq for more info search 
+**     PDF URL links are used to web, wiki, and faq for more info search
 **     Only on non-ascii chars in a name the utf8 routines are loaded
 **     PDF reader has wiki info url's and easy email feedback
 **  ENABLED:
@@ -92,7 +92,7 @@ define('REV', '$Revision: 1.4 $');
 **         recode(), recode_string(0 is said to have too many (japanese) defeats
 **         recode_string() is only used on GET[] input (html->utf-8),
 **  UTF-8  use routines from http://www.sourceforge.net/projects/phputf8
-**         which replaces php recode() package. 
+**         which replaces php recode() package.
 **         on many places own utf-8 handling code exists and is loaded (tcpdf problem)
 **  _() translation routine. The returned HTML string is translated to utf-8 string.
 **  the GET() routines expects utf-8 code (see test defs) but might be changed
@@ -196,7 +196,7 @@ define('REV', '$Revision: 1.4 $');
 **     Form Revision string is generated from RCS revision string.
 **     More info on PDF fields:
 **        http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf
-**     
+**
 */
 
 // use next define if you test this code
@@ -235,7 +235,7 @@ if( defined( 'TEST' ) ) {
         //$_GET['orientation'] = 'portrait'; // default 2 pages, or portrait
     }
     $_GET['nocca'] = isset($_SERVER['CCA']) ? $_SERVER['CCA'] : '';
-    //$_GET['policy1'] = 'policy/PolicyOnPolicy.php';
+    //$_GET['policy1'] = 'policy/PolicyOnPolicy.html';
     if( isset($_SERVER['FORM']) AND $_SERVER['FORM'] == 'noform' )
         $_GET['noform'] = 'true';
 
@@ -310,7 +310,7 @@ define('ARBIT', WIKI.'/ArbitrationForum');
 // CAcert Community Agreement
 define('CCA', 'CAcertCommunityAgreement'); // default policy to print
 define('POLICY','policy/'); // default polciy doc directory
-define('EXT','.php'); // default polciy doc extention, should be html
+define('EXT','.html'); // default polciy doc extention, should be html
 /* finger print CAcert Root Key */ // should obtain this automatically
 define('CLASS1_SHA1','135C EC36 F49C B8E9 3B1A B270 CD80 8846 76CE 8F33');
 define('CLASS3_SHA1','AD7C 3F64 FC44 39FE F4E9 0BE8 F47C 6CFA 8AAD FDCE');
@@ -484,16 +484,16 @@ class CAPPDF extends TCPDF {
 
     //number of colums
     /*protected*/ var $ncols=1;
-    
+
     // columns width
     /*protected*/ var $colwidth=0;
 
     // space between columns
     /*protected*/ var $column_space = 0;
-    
+
     //Current column
     /*protected*/ var $col=0;
-    
+
     //Ordinate of column start
     /*protected*/ var $y0;
 
@@ -535,7 +535,7 @@ class CAPPDF extends TCPDF {
         $this->SetDisplayMode(intval($this->scale), 'SinglePage', 'UseOC');
         return( $format );
     }
-        
+
     //Set position at a given column
     /*private*/ function SetCol($col = -1) {
         static $pagecolwidth = 1.0;
@@ -576,7 +576,7 @@ class CAPPDF extends TCPDF {
            $this->myFooter(); // print footer msg if defined
         }
         if( $col >= $this->ncols ) {
-                $this->addPage(); $col = 0; 
+                $this->addPage(); $col = 0;
                 $this->ScaleXY($this->scale,0,0);
                 $this->y0 = 0;  //no header/footer done...
         } elseif ( $col > 0  AND $col < $this->ncols) {
@@ -599,7 +599,7 @@ class CAPPDF extends TCPDF {
         $this->PrintTable('', 0); // if in table reprint title table
         $this->InFooter = false;
     }
-    
+
     //Method accepting or not automatic page break
     /*public*/ function AcceptPageBreak() {
        $this->SetCol();
@@ -688,7 +688,7 @@ class CAPPDF extends TCPDF {
             elseif( preg_match('/\./', $nm ) ) {
                 if( $first_name < 0 ) $first_name = $j;
                 if( $first_name >= 0 ) $success = TRUE; // was abbreviated
-                continue; // title 
+                continue; // title
             }
             if( $first_name < 0 ) $first_name = $j;
             if( $married == 0 ) $fam = $j;
@@ -710,7 +710,7 @@ class CAPPDF extends TCPDF {
             elseif( preg_match('/\./', $nm ) ) $name .= $nm;
             elseif( $j < $fam ) { // need to abbreviate
                  // not utf8
-                 // and abbreviate 
+                 // and abbreviate
                 if( $j == $first_name )
                     $abr = '('. $substr( $nm, 1 ) . ')';
                 else $abr = '.';
@@ -724,7 +724,7 @@ class CAPPDF extends TCPDF {
             $nm = $tk[0];
             if( $ext < 0 AND preg_match('/(^[^A-Z]|\.)/', $nm ) ) continue;
             if( $ext < 0 ) $ext = $j+1;
-            if( preg_match('/\./', $nm ) ) {  $success = TRUE; break; } 
+            if( preg_match('/\./', $nm ) ) {  $success = TRUE; break; }
         }
         return( $success? $name : '' ); // and return abbriviated name
     }
@@ -841,7 +841,7 @@ class CAPPDF extends TCPDF {
         $this->StatementAssuree( $assuree['date']);
         $this->StatementAssurer( $assurer, $assurance );
     }
-    
+
     //Add form and/or CCA (on duplex only when more as one page is printed)
     /*public*/ function PrintForm( $assuree = NULL, $assurer = NULL, $assurance = NULL, $page = NULL ) {
 
@@ -1033,7 +1033,7 @@ class CAPPDF extends TCPDF {
         $this->Line($this->lMargin,$tSide+$height,$this->lMargin+$this->colwidth,$tSide+$height);
         $this->Line($this->lMargin+$this->colwidth,$tSide-1, $this->lMargin+$this->colwidth, $tSide+$height);
         $this->SetDrawColor(0);
-       $this->SetY($tSide + $height + 1); // set Y ordinate to plus 7 
+       $this->SetY($tSide + $height + 1); // set Y ordinate to plus 7
         $tSide = -1; $title = '';
        return($this->GetY());
     }
@@ -1045,7 +1045,7 @@ class CAPPDF extends TCPDF {
         $id_type = $names == NULL ? '' : $names['idtype'];
         // store current margin values
        static $nr = 0;
-        static $idtypes = NULL; 
+        static $idtypes = NULL;
         static $listpoints = NULL;
         static $ComboProps = array( 'fillColor'=> LBLUE, 'strokeColor'=> LLBLUE, 'editable'=> 'true', 'textSize' => 9, 'rotate'=> '0');
         static $TextProps = array('strokeColor'=> LLBLUE, 'value' => ' ', 'fillColor'=> LBLUE, 'doNotScrole'=> 'false', 'textSize' => 12, 'rotate'=> '0');
@@ -1146,7 +1146,7 @@ class CAPPDF extends TCPDF {
             $this->SetFont(FONT, 'B', (F_SIZE+1)/6*H);
             $this->Cell($this->colwidth-37, 2, '('.$id_type .')', 0, 0, 'R');
             // hide id type print on screen with the formfields, just nicety
-            // one could extend the name field, but this has more drawbacks 
+            // one could extend the name field, but this has more drawbacks
             $this->TextField(sprintf('AssureeNames_%d_None',$nr), $this->SetFieldXY($this->lMargin+$this->colwidth-38,$savey+0.5,20), 7/6*H, $TextBlankProps);
             $this->SetFieldXY();
         }
@@ -1200,7 +1200,7 @@ class CAPPDF extends TCPDF {
         // all (max) three names with ID type right aligned.
         $cnt = $assuree['namecnt'];
         $space = $this->getPageHeight()/$this->scale*100.0 -MINH ; // margin
-        for( $i = 0; $i < $cnt; $i++ )  { // names to be printed 
+        for( $i = 0; $i < $cnt; $i++ )  { // names to be printed
             $this->PrintName( $assuree['names'][$i], $assurer['maxpoints'] < 0? 35: $assurer['maxpoints'] );
             if( $space < $this->getY() ) break;
         }
@@ -1390,7 +1390,7 @@ class CAPPDF extends TCPDF {
         $this->SetFieldXY();
         $TextProps['value'] = $assurer['email'] ? $assurer['email'] : $this->unhtmlentities( _('email') ) . '?';
         $TextProps['userName'] = $this->unhtmlentities( _('On mutual assurance provide email address of Assurer.') );
-        $this->TextField('AssurerEmail', $this->SetFieldXY($this->lMargin+68.5, $savey+1, 35), 5, $TextProps ); 
+        $this->TextField('AssurerEmail', $this->SetFieldXY($this->lMargin+68.5, $savey+1, 35), 5, $TextProps );
         $this->SetFieldXY();
         $this->SetXY($this->lMargin+2, $savey+5);
 
@@ -1457,7 +1457,7 @@ class CAPPDF extends TCPDF {
 // get $form, $orientation, $assuree, $assurer, $assurance info
 // FONT and BW are set already
 
-// import info 
+// import info
 function GET( $key = '' ) {
     return ( array_key_exists( $key, $_GET) ? $_GET[$key] : '');
 }
@@ -1532,7 +1532,7 @@ for( $i = 1; $i <= 9 AND $j < 2; $i++) { // max 9 names we only print 4 max...
         $assuree[ 'namecnt' ]++;
         $assuree[ 'names' ] [] = array (
             'name' => $name ? $name : '',
-            'idtype' => my_recode(GET(Dstr('ID',$i)))? my_recode(GET(Dstr('ID',$i))) : '', 
+            'idtype' => my_recode(GET(Dstr('ID',$i)))? my_recode(GET(Dstr('ID',$i))) : '',
             'points' => my_recode(GET(Dstr('Pnts',$i))) != '' ? intval(my_recode(GET(Dstr('Pnts',$i)))) : -1
         );
         if( $name  != '' AND
@@ -1565,7 +1565,7 @@ unset( $document ); unset( $i ); unset( $j); // unset($_GET);
        PDF_UNIT /* mm */,
        /* PDF_PAGE_FORMAT */ $page['format'],
        true
-       ); 
+       );
     $pdf->SetFormat( $page['format']  ); // set paper size scaling
 
 // protection is encryption and this will cause 3.5 times performance loss
@@ -1588,10 +1588,10 @@ unset( $document ); unset( $i ); unset( $j); // unset($_GET);
     $pdf->SetAutoPageBreak(TRUE, MARGIN*0.707);
 
 //set image scale factor
-    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
+    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
 
 //set some language-dependent strings
-    $pdf->setLanguageArray($l); 
+    $pdf->setLanguageArray($l);
 
 //initialize document
     $pdf->AliasNbPages();
@@ -1608,6 +1608,6 @@ unset( $document ); unset( $i ); unset( $j); // unset($_GET);
     $pdf->Output('CAcert CAP.pdf', 'I');
 
 //============================================================+
-// END OF FILE                                                 
+// END OF FILE
 //============================================================+
 ?>
index feb92d4..eefbb85 100644 (file)
@@ -31,8 +31,10 @@ function sanitize_string($buffer) {
 }
 
 define ('UNDEFINED', 'nd');
-define ('ALLOWED_IP', '213.154.225.243');
-define ('ALLOWED_IP2', '172.16.2.27');
+// Specific for testserver: Accept Test-CATS-Server
+define ('ALLOWED_IP', '192.109.159.27');
+//define ('ALLOWED_IP', '213.154.225.243');
+define ('ALLOWED_IP2', '192.109.159.28');
 define ('CONFIG_FILEPATH', '/www/');
 
 $remote_addr = (isset($_SERVER['REMOTE_ADDR']))?$_SERVER['REMOTE_ADDR']:UNDEFINED;
index 120f516..e526392 100644 (file)
@@ -1,30 +1,31 @@
 -----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.2.2 (GNU/Linux)
+Version: GnuPG v1.4.9 (GNU/Linux)
 
-mQGiBD8OdRwRBACEr0/NPA88qp8f6KyIMMveLQ1FOuLi0aDQDPybG7u1nrBoi3VI
-tSRyfYcdExVxWQjTGd9qbShzXBw2DsxjA6YjiGzWKpVcqtj9uUDpSlylBaoadUzu
-Sf3r3IkOHR2QJeC+9v2il30xy5XLMxDRbQYaSmf4uwTlIOUWNn118KpdawCgoNny
-p4DR9EvRgCmY5z6IKHA2WscD/AhAKDVHCIAoZHzSB/puNOuVUSKRbIWNAqUAYosz
-GRzYWb8O/3Ja4fNb3IMQ1gIsEcnUJFHnzID3pTjqWyiCId/NSX3fLuQxZHZE9n8P
-PqlZIvqMrOfCT0RJQa0zTFcrgepnmnHLj7qmtXQZm+YkTvlihOZNtVA4JNzrxDrQ
-egkqA/4hr0LezNJfkUhWnbW604p7AmmKK7Hi/ZixAfnxN0adgnV7oC3Q4VM8aB2i
-gReSuifluHiaJmf/WsA3KH4bdyLRbagz6dOPkXY8bQKy9yRxQz9oYwudlluYoZXe
-gSQI2Jle9U2ENefa9ouvVlsB0he1qzF6VzHXAXpLsANt5smDh7Q0Q0EgQ2VydCBT
-aWduaW5nIEF1dGhvcml0eSAoUm9vdCBDQSkgPGdwZ0BjYWNlcnQub3JnPohfBBMR
-AgAfBQI/DnUcBQk4ZAkABAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDSuw0BZdD9WEFX
-AJ9C6WBcYfTYw1uvZ+N85TPGG5PMKQCcCM1tyULC5J6pfwevywS6cEwfagW5Ag0E
-Pw51MBAIANUbl1u0j+mnVJk1fKbJ+Ul6SAYpNtordfgrgrmlnOhMCFcROrCzsaaI
-1ehohxMbTnIj0RP0g/KotahAurqB98qzHIxXZMEJSzBE2OCNvlIXqUyT1jwhAUN6
-e71s084Lml84gD4cIr7+2YtwIu+6zrE+YdjfMT1NibM3vmiXaknrk4aADb02ZS5U
-iDeRstUO5PG7qVg4umR0HZJ1Ck2U7Kdjaekzzlm0q/vYMZKTYX37NkZRUU0QFLsM
-tACEaZnwKf9hMAWJwG1OFyJeLVH8xvzCkI4I+fpAvAQj6LVAh41SHl7EivH6SiTp
-/+61idoz/CGqeLBxuex6Z+Y53U54FmcAAwUH/2chzBs1YWFX5LuLGEW3R3UW/wDb
-RnYpsSR+pnMBVh18WS0nF08R/SXtb12RsqN5H+GtELOZng6IWL5hhgNaYvF1F4sW
-Ezm2nyVmTsu7/DtHLmXtzz1oNLQ9pzJkoqP2pGtPYQKvmiuoNbt+l1prwjt5zn1D
-slLn8w0+9/PP1YdKpuZ/189yQP6iYsLHxBxg/50MbSzoFwiT22aJCdF+OJ7zRwDy
-GhjnfV7HVwdEDV5rvb7aRolRmZZF2UADSPu52BWT4PI0nVnewAgivyELqVU3Zc3P
-aWqmH5BAh22MjbsbXrWZXK/WOfZCNlPVdfHxwFGxnlwsHgmyrkPAs3szJGiITAQY
-EQIADAUCPw51MAUJOGQJAAAKCRDSuw0BZdD9WMw8AJwIVUzB2WQJGAbf/aXzCABn
-QWdKwACdEWUSf69RZiJgp4oMfXMx0fDEh2I=
-=OaPO
+mQGiBE3TAtQRBACuFhUNT3BOIXflZx8ENFN2hf0KHDgReWMW5+hcx8M2C9mueAST
+89x0QxtdWUbsrMFSr3UvDIKjoPFVzV+WT/dez5aADSrnR4OxYPfzcNIWPjm8su/9
+HrH6+ivaH+iOoBOuhYrHthun+1fsqLedhTMNqb+tt6OfzqIuyFkmpm+FqwCg5ECF
+s53E7j6BJuKYLeWqFDqFOH0D/1pnXyBF78YurXcwwA7eSQWoc3f1g5lwyqOWwcLv
+ynI/dcPV5BosEUcqEjaNEyBR0LFRZC7tnw2VLPzr65aLA6SrFqEJ2bEdWkO9vM5g
+8InhmcqTz7Yg/QGnyGT0iNBMG8zg4Ajz20Ty6GE887HMao6qpYKXSbujMRWVjVLn
+VjpgA/9i1gsBjpGwr5rJ67dyDLVkJ5XMEP2ivgAhzKQ/inyLk2N3Nbm0YKWgrZRE
++pEcZVsLn2jHqd5yu1zVr3Cm44HHaB/A4ew+hRio9vbhJy7cfanfZpAL8Rg8wZbQ
+t4x6zvrs0fXXNuD1BiSucOK4qGZ2vWukggmhAlHu5x5hws5qtbRLQ0FjZXJ0IFRl
+c3QgU2VydmVyIFNpZ25pbmcgQXV0aG9yaXR5IChmb3IgdGVzdGluZyBvbmx5ISEh
+KSA8Z3BnQGNhY2VydC5vcmc+iGYEExECACYFAk3TAtQCGwMFCSWYBgAGCwkIBwMC
+BBUCCAMEFgIDAQIeAQIXgAAKCRBL5zSBd/dRrLxrAJ9kaSLRAlcy9e57yuAAxoZy
+weX20ACg44B1AA26G0OePf9o3YBdUTjPsES5Ag0ETdMC1BAIAI9UEZ2NKbJfVWc+
+CBb5kKhO6qazLDnRsRkMY5WE1PTBP09ieAaQ7cv424e6fKdZxSO5vUQ27tLmcQXo
+ICoREsDuSyESvEPbyBOro5LIY+z52TihqEHLPUN7OxlbPLX81AIKOCgEIUtpcYoX
+MiwXPVO50Swo3PCCQiOQ7ewvkd32ZbSPl50B+/59JiDsQsnx1o+Ls7WkALzQ6w7T
+UxLIVYWuFd9Hg/VOXBH67e81p/O7SDy6pMkDQaA9F22rA5Vv5TBJ2BAKWYfYK47i
+HxtUhw2/WBUzhcw2AGqCnCy9nrYELLAqljnlCdWLyvhuWyUAG87D/1/5qD0+9idh
+jcFWH/MAAwUH/2R7AWSZzbomxTcO5Q7/WxzTDtgUEy7eRbjqFMAusiQlTYDdeHz8
+PfWok6mGhUapJaGnA05hy6aYBIzl4idmQgz39xD47O0qeDWve6YwrDuLYju6JIwv
+YfNiNAOjrZcRW4PCYeJfIK0WHV3+3kkneOX4Mql9QNKWs5W2LReMnHyq6POWasuf
+EgDu0TfqaJTeK3IXKrEJI8G4R4xdHXmZ16Is5T49w09mvMan+TTGczzjWn0aWD3D
+DOlTKK7h+82MSNCTiCi7aNoEyMTfeadSsrbqiaqtF0P/fyBDpGWFj3/A4foAcgtx
+KVt0UHf1Va1g8M+czG3pCOne6dyafZGAe7qITwQYEQIADwUCTdMC1AIbDAUJJZgG
+AAAKCRBL5zSBd/dRrAC5AKDdxp26zp4Km3jItBdeMD/gv8qxMgCgmmH1kizLe5Rk
+yYchS2oleEWXIqM=
+=9tD2
 -----END PGP PUBLIC KEY BLOCK-----
index 087ca0e..1899afb 100644 (file)
@@ -1,42 +1,43 @@
 -----BEGIN CERTIFICATE-----
-MIIHWTCCBUGgAwIBAgIDCkGKMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv
-b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
-Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
-dEBjYWNlcnQub3JnMB4XDTExMDUyMzE3NDgwMloXDTIxMDUyMDE3NDgwMlowVDEU
-MBIGA1UEChMLQ0FjZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0
-Lm9yZzEcMBoGA1UEAxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDCCAiIwDQYJKoZIhvcN
-AQEBBQADggIPADCCAgoCggIBAKtJNRFIfNImflOUz0Op3SjXQiqL84d4GVh8D57a
-iX3h++tykA10oZZkq5+gJJlz2uJVdscXe/UErEa4w75/ZI0QbCTzYZzA8pD6Ueb1
-aQFjww9W4kpCz+JEjCUoqMV5CX1GuYrz6fM0KQhF5Byfy5QEHIGoFLOYZcRD7E6C
-jQnRvapbjZLQ7N6QxX8KwuPr5jFaXnQ+lzNZ6MMDPWAzv/fRb0fEze5ig1JuLgia
-pNkVGJGmhZJHsK5I6223IeyFGmhyNav/8BBdwPSUp2rVO5J+TJAFfpPBLIukjmJ0
-FXFuC3ED6q8VOJrU0gVyb4z5K+taciX5OUbjchs+BMNkJyIQKopPWKcDrb60LhPt
-XapI19V91Cp7XPpGBFDkzA5CW4zt2/LP/JaT4NsRNlRiNDiPDGCbO5dWOK3z0luL
-oFvqTpa4fNfVoIZwQNORKbeiPK31jLvPGpKK5DR7wNhsX+kKwsOnIJpa3yxdUly6
-R9Wb7yQocDggL9V/KcCyQQNokszgnMyXS0XvOhAKq3A6mJVwrTWx6oUrpByAITGp
-rmB6gCZIALgBwJNjVSKRPFbnr9s6JfOPMVTqJouBWfmh0VMRxXudA/Z0EeBtsSw/
-LIaRmXGapneLNGDRFLQsrJ2vjBDTn8Rq+G8T/HNZ92ZCdB6K4/jc0m+YnMtHmJVA
-BfvpAgMBAAGjggINMIICCTAdBgNVHQ4EFgQUdahxYEyIE/B42Yl3tW3Fid+8sXow
-gaMGA1UdIwSBmzCBmIAUFrUyG9TH8+DmjvO90rA67rI5GNGhfaR7MHkxEDAOBgNV
-BAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAG
-A1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
-c3VwcG9ydEBjYWNlcnQub3JnggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUH
-AQEEUTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggr
-BgEFBQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBB
-MD8GCCsGAQQBgZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9y
-Zy9pbmRleC5waHA/aWQ9MTAwNAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0Fj
-ZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5
-b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5D
-QWNlcnQub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQApKIWuRKm5r6R5E/CooyuXYPNc
-7uMvwfbiZqARrjY3OnYVBFPqQvX56sAV2KaC2eRhrnILKVyQQ+hBsuF32wITRHhH
-Va9Y/MyY9kW50SD42CEH/m2qc9SzxgfpCYXMO/K2viwcJdVxjDm1Luq+GIG6sJO4
-D+Pm1yaMMVpyA4RS5qb1MyJFCsgLDYq4Nm+QCaGrvdfVTi5xotSu+qdUK+s1jVq3
-VIgv7nSf7UgWyg1I0JTTrKSi9iTfkuO960NAkW4cGI5WtIIS86mTn9S8nK2cde5a
-lxuV53QtHA+wLJef+6kzOXrnAzqSjiL2jA3k2X4Ndhj3AfnvlpaiVXPAPHG0HRpW
-Q7fDCo1y/OIQCQtBzoyUoPkD/XFzS4pXM+WOdH4VAQDmzEoc53+VGS3FpQyLu7Xt
-hbNc09+4ufLKxw0BFKxwWMWMjTPUnWajGlCVI/xI4AZDEtnNp4Y5LzZyo4AQ5OHz
-0ctbGsDkgJp8E3MGT9ujayQKurMcvEp4u+XjdTilSKeiHq921F73OIZWWonO1sOn
-ebJSoMbxhbQljPI/lrMQ2Y1sVzufb4Y6GIIiNsiwkTjbKqGTqoQ/9SdlrnPVyNXT
-d+pLncdBu8fA46A/5H2kjXPmEkvfoXNzczqA6NXLji/L6hOn1kGLrPo8idck9U60
-4GGSt/M3mMS+lqO3ig==
+MIIHgjCCBWqgAwIBAgICEBswDQYJKoZIhvcNAQELBQAwgYcxCzAJBgNVBAYTAkFV
+MRgwFgYDVQQIEw9OZXcgU291dGggV2FsZXMxGjAYBgNVBAoTEUNBY2VydCBUZXN0
+c2VydmVyMSEwHwYDVQQLExhodHRwOi8vY2FjZXJ0MS5pdC1zbHMuZGUxHzAdBgNV
+BAMTFkNBY2VydCBUZXN0c2VydmVyIFJvb3QwHhcNMTEwNTAxMTgyNTA5WhcNMjEw
+NDI4MTgyNTA5WjBiMRkwFwYDVQQKExBDQWNlcnQgVGVzdHNldmVyMSEwHwYDVQQL
+ExhodHRwOi8vY2FjZXJ0MS5pdC1zbHMuZGUxIjAgBgNVBAMTGUNBY2VydCBUZXN0
+c2VydmVyIENsYXNzIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDI
+576JQukwI58zuNidaS0HUYVCBmy4mpV7VhydDtW07hDu5lYGmbcuBW+SfjPCjMMR
+QVEiNrWv3tLclBKah/ubOmgP1HenQxRfGiJkuPk7dwlM7qqPfRn/H1Pm1w1bj/e1
+yZkeNc0UzMPdRbD9InR3/hwHQ1hfLHKGbbYc6uTb+0UOgGAsMwb/WVb+8mSrgERZ
+9pFhw8uK5+BFgJwSdsTsN68h5ZDL4VIf9Zq8z8jNGcXK0DSoZ0vT0y6EyVdXiXNS
+PF/zAPTbBBQcBGmhKBlcTLwcPHLeHIEfwRGf72wqBYNNrT0J37yTci31x+xC0/iQ
+wjPD4rRhYFxm/UW9sFtEJVtIf9o/oj2Mh2FGRa0DDk0oX+jewZEnTy+MUd0k4LFy
+Md6Ucn4lJsb3uHnjZ8ayz5DEMDQ/3Mzjf6CjhOc4oXm5UXuE2gsZyno93fLtTXAc
+4w0KzMcZ2diAp5Tdpq0w3pMJUAFoehFScBRK7Kb9xuXVPxoSvGCVPNXXUsEioIlf
+T2StKvDVBPBTtWRnE0BLYTJaWQAnWp64QgWiVn+JmdGkIm4sHpB1FweN4msdkgic
+6JAlYJRp71tSjuEnJwVtgqLqpUtLPTpJ64/0lDlazCJ5NaduTpAA+MSqXlHSA/Rb
+Q1VSaKdRadqLYOUoqGFwHdldeyZpAwp0ibM62GmVrQIDAQABo4ICGjCCAhYwHQYD
+VR0OBBYEFISE4B0WSV6xxeXnzy2oVnRL6JKUMIG0BgNVHSMEgawwgamAFIXXBQrW
+j/IELV7ry/32aYsfTgb+oYGNpIGKMIGHMQswCQYDVQQGEwJBVTEYMBYGA1UECBMP
+TmV3IFNvdXRoIFdhbGVzMRowGAYDVQQKExFDQWNlcnQgVGVzdHNlcnZlcjEhMB8G
+A1UECxMYaHR0cDovL2NhY2VydDEuaXQtc2xzLmRlMR8wHQYDVQQDExZDQWNlcnQg
+VGVzdHNlcnZlciBSb290ggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEE
+UTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEF
+BQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBGBgNVHSAEPzA9MDsG
+BCsGAQUwMzAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5DQWNlcnQub3JnL2luZGV4
+LnBocD9pZD0xMDA0BglghkgBhvhCAQgEJxYlaHR0cDovL3d3dy5DQWNlcnQub3Jn
+L2luZGV4LnBocD9pZD0xMDBQBglghkgBhvhCAQ0EQxZBVG8gZ2V0IHlvdXIgb3du
+IGNlcnRpZmljYXRlIGZvciBGUkVFLCBnbyB0byBodHRwOi8vd3d3LkNBY2VydC5v
+cmcwDQYJKoZIhvcNAQELBQADggIBAFWedxYAhAD+hiOxIqMoynyAdMaBbmCg7zJc
+Eq6pgbP7cHL+4zzIP4Zc/tPsmbL7il3cILb0+ETwmXRnC6c9E2xWke6jv9qzQ0Aj
+QI7FQdD/0cJgKagMTn+aBgyiGG6U0zTKU7cK3Ae3zSjtdaibEJyQoQlLuEzZzDYO
+LBXJXDEInhrZ+gqWRnWDOJwdr/19alqgF8nvxKQ136vV8Lqmsrzcs0O+6v53YeVj
+9AYyeCLK2XPCyhGpia2t7uPIN1zolCgJLXQcJEg3dGRqsmAeuB7PylOz9xuxXjYR
+Sq6fcOP31CxhSeHwTqTxzkuz/u+l4RBq/0LkMS/QBBmnjaqPy3TbEwner/xMWxyL
+i9DPLPrXnJXrxczV5ScUt+0cMYWDY+A+pnxwd0s/TzfDIChidSTKSbY9kPcbxCVO
+W+Pz6muoYWrPuj02rZDIN29rIQAe73vh3C++zvAB6SfbfTTMij97K86fc9Rs6amK
+CwdhKWKFibL6z0FhxAvjpxo3Fugm4q9sDAzx3GHUJ1vzq3ZJAbY1CiPglUb9rAi+
+cpFkrnSP9paa/w5iYrSTOBduGdBp8kcrHXB9RuSLndL+J41xexIBb+tSTQ8H8pzk
+iRTOfmYoGiizERHM1OUl9BPW/2+UZ9o4KUl7sPakniMkpm1dBKhvXj9rcA8+SUpp
+Raog64+T
 -----END CERTIFICATE-----
index 56f8c88..e13d2b9 100644 (file)
Binary files a/www/certs/class3.der and b/www/certs/class3.der differ
index a77aa14..68533d8 100644 (file)
@@ -1,59 +1,59 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number: 672138 (0xa418a)
+        Serial Number: 4123 (0x101b)
         Signature Algorithm: sha256WithRSAEncryption
-        Issuer: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
+        Issuer: C=AU, ST=New South Wales, O=CAcert Testserver, OU=http://cacert1.it-sls.de, CN=CAcert Testserver Root
         Validity
-            Not Before: May 23 17:48:02 2011 GMT
-            Not After : May 20 17:48:02 2021 GMT
-        Subject: O=CAcert Inc., OU=http://www.CAcert.org, CN=CAcert Class 3 Root
+            Not Before: May  1 18:25:09 2011 GMT
+            Not After : Apr 28 18:25:09 2021 GMT
+        Subject: O=CAcert Testsever, OU=http://cacert1.it-sls.de, CN=CAcert Testserver Class 3
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (4096 bit)
                 Modulus (4096 bit):
-                    00:ab:49:35:11:48:7c:d2:26:7e:53:94:cf:43:a9:
-                    dd:28:d7:42:2a:8b:f3:87:78:19:58:7c:0f:9e:da:
-                    89:7d:e1:fb:eb:72:90:0d:74:a1:96:64:ab:9f:a0:
-                    24:99:73:da:e2:55:76:c7:17:7b:f5:04:ac:46:b8:
-                    c3:be:7f:64:8d:10:6c:24:f3:61:9c:c0:f2:90:fa:
-                    51:e6:f5:69:01:63:c3:0f:56:e2:4a:42:cf:e2:44:
-                    8c:25:28:a8:c5:79:09:7d:46:b9:8a:f3:e9:f3:34:
-                    29:08:45:e4:1c:9f:cb:94:04:1c:81:a8:14:b3:98:
-                    65:c4:43:ec:4e:82:8d:09:d1:bd:aa:5b:8d:92:d0:
-                    ec:de:90:c5:7f:0a:c2:e3:eb:e6:31:5a:5e:74:3e:
-                    97:33:59:e8:c3:03:3d:60:33:bf:f7:d1:6f:47:c4:
-                    cd:ee:62:83:52:6e:2e:08:9a:a4:d9:15:18:91:a6:
-                    85:92:47:b0:ae:48:eb:6d:b7:21:ec:85:1a:68:72:
-                    35:ab:ff:f0:10:5d:c0:f4:94:a7:6a:d5:3b:92:7e:
-                    4c:90:05:7e:93:c1:2c:8b:a4:8e:62:74:15:71:6e:
-                    0b:71:03:ea:af:15:38:9a:d4:d2:05:72:6f:8c:f9:
-                    2b:eb:5a:72:25:f9:39:46:e3:72:1b:3e:04:c3:64:
-                    27:22:10:2a:8a:4f:58:a7:03:ad:be:b4:2e:13:ed:
-                    5d:aa:48:d7:d5:7d:d4:2a:7b:5c:fa:46:04:50:e4:
-                    cc:0e:42:5b:8c:ed:db:f2:cf:fc:96:93:e0:db:11:
-                    36:54:62:34:38:8f:0c:60:9b:3b:97:56:38:ad:f3:
-                    d2:5b:8b:a0:5b:ea:4e:96:b8:7c:d7:d5:a0:86:70:
-                    40:d3:91:29:b7:a2:3c:ad:f5:8c:bb:cf:1a:92:8a:
-                    e4:34:7b:c0:d8:6c:5f:e9:0a:c2:c3:a7:20:9a:5a:
-                    df:2c:5d:52:5c:ba:47:d5:9b:ef:24:28:70:38:20:
-                    2f:d5:7f:29:c0:b2:41:03:68:92:cc:e0:9c:cc:97:
-                    4b:45:ef:3a:10:0a:ab:70:3a:98:95:70:ad:35:b1:
-                    ea:85:2b:a4:1c:80:21:31:a9:ae:60:7a:80:26:48:
-                    00:b8:01:c0:93:63:55:22:91:3c:56:e7:af:db:3a:
-                    25:f3:8f:31:54:ea:26:8b:81:59:f9:a1:d1:53:11:
-                    c5:7b:9d:03:f6:74:11:e0:6d:b1:2c:3f:2c:86:91:
-                    99:71:9a:a6:77:8b:34:60:d1:14:b4:2c:ac:9d:af:
-                    8c:10:d3:9f:c4:6a:f8:6f:13:fc:73:59:f7:66:42:
-                    74:1e:8a:e3:f8:dc:d2:6f:98:9c:cb:47:98:95:40:
-                    05:fb:e9
+                    00:c8:e7:be:89:42:e9:30:23:9f:33:b8:d8:9d:69:
+                    2d:07:51:85:42:06:6c:b8:9a:95:7b:56:1c:9d:0e:
+                    d5:b4:ee:10:ee:e6:56:06:99:b7:2e:05:6f:92:7e:
+                    33:c2:8c:c3:11:41:51:22:36:b5:af:de:d2:dc:94:
+                    12:9a:87:fb:9b:3a:68:0f:d4:77:a7:43:14:5f:1a:
+                    22:64:b8:f9:3b:77:09:4c:ee:aa:8f:7d:19:ff:1f:
+                    53:e6:d7:0d:5b:8f:f7:b5:c9:99:1e:35:cd:14:cc:
+                    c3:dd:45:b0:fd:22:74:77:fe:1c:07:43:58:5f:2c:
+                    72:86:6d:b6:1c:ea:e4:db:fb:45:0e:80:60:2c:33:
+                    06:ff:59:56:fe:f2:64:ab:80:44:59:f6:91:61:c3:
+                    cb:8a:e7:e0:45:80:9c:12:76:c4:ec:37:af:21:e5:
+                    90:cb:e1:52:1f:f5:9a:bc:cf:c8:cd:19:c5:ca:d0:
+                    34:a8:67:4b:d3:d3:2e:84:c9:57:57:89:73:52:3c:
+                    5f:f3:00:f4:db:04:14:1c:04:69:a1:28:19:5c:4c:
+                    bc:1c:3c:72:de:1c:81:1f:c1:11:9f:ef:6c:2a:05:
+                    83:4d:ad:3d:09:df:bc:93:72:2d:f5:c7:ec:42:d3:
+                    f8:90:c2:33:c3:e2:b4:61:60:5c:66:fd:45:bd:b0:
+                    5b:44:25:5b:48:7f:da:3f:a2:3d:8c:87:61:46:45:
+                    ad:03:0e:4d:28:5f:e8:de:c1:91:27:4f:2f:8c:51:
+                    dd:24:e0:b1:72:31:de:94:72:7e:25:26:c6:f7:b8:
+                    79:e3:67:c6:b2:cf:90:c4:30:34:3f:dc:cc:e3:7f:
+                    a0:a3:84:e7:38:a1:79:b9:51:7b:84:da:0b:19:ca:
+                    7a:3d:dd:f2:ed:4d:70:1c:e3:0d:0a:cc:c7:19:d9:
+                    d8:80:a7:94:dd:a6:ad:30:de:93:09:50:01:68:7a:
+                    11:52:70:14:4a:ec:a6:fd:c6:e5:d5:3f:1a:12:bc:
+                    60:95:3c:d5:d7:52:c1:22:a0:89:5f:4f:64:ad:2a:
+                    f0:d5:04:f0:53:b5:64:67:13:40:4b:61:32:5a:59:
+                    00:27:5a:9e:b8:42:05:a2:56:7f:89:99:d1:a4:22:
+                    6e:2c:1e:90:75:17:07:8d:e2:6b:1d:92:08:9c:e8:
+                    90:25:60:94:69:ef:5b:52:8e:e1:27:27:05:6d:82:
+                    a2:ea:a5:4b:4b:3d:3a:49:eb:8f:f4:94:39:5a:cc:
+                    22:79:35:a7:6e:4e:90:00:f8:c4:aa:5e:51:d2:03:
+                    f4:5b:43:55:52:68:a7:51:69:da:8b:60:e5:28:a8:
+                    61:70:1d:d9:5d:7b:26:69:03:0a:74:89:b3:3a:d8:
+                    69:95:ad
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Key Identifier: 
-                75:A8:71:60:4C:88:13:F0:78:D9:89:77:B5:6D:C5:89:DF:BC:B1:7A
+                84:84:E0:1D:16:49:5E:B1:C5:E5:E7:CF:2D:A8:56:74:4B:E8:92:94
             X509v3 Authority Key Identifier: 
-                keyid:16:B5:32:1B:D4:C7:F3:E0:E6:8E:F3:BD:D2:B0:3A:EE:B2:39:18:D1
-                DirName:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
+                keyid:85:D7:05:0A:D6:8F:F2:04:2D:5E:EB:CB:FD:F6:69:8B:1F:4E:06:FE
+                DirName:/C=AU/ST=New South Wales/O=CAcert Testserver/OU=http://cacert1.it-sls.de/CN=CAcert Testserver Root
                 serial:00
 
             X509v3 Basic Constraints: critical
@@ -63,7 +63,7 @@ Certificate:
                 CA Issuers - URI:http://www.CAcert.org/ca.crt
 
             X509v3 Certificate Policies: 
-                Policy: 1.3.6.1.4.1.18506
+                Policy: Security
                   CPS: http://www.CAcert.org/index.php?id=10
 
             Netscape CA Policy Url: 
@@ -71,74 +71,75 @@ Certificate:
             Netscape Comment: 
                 To get your own certificate for FREE, go to http://www.CAcert.org
     Signature Algorithm: sha256WithRSAEncryption
-        29:28:85:ae:44:a9:b9:af:a4:79:13:f0:a8:a3:2b:97:60:f3:
-        5c:ee:e3:2f:c1:f6:e2:66:a0:11:ae:36:37:3a:76:15:04:53:
-        ea:42:f5:f9:ea:c0:15:d8:a6:82:d9:e4:61:ae:72:0b:29:5c:
-        90:43:e8:41:b2:e1:77:db:02:13:44:78:47:55:af:58:fc:cc:
-        98:f6:45:b9:d1:20:f8:d8:21:07:fe:6d:aa:73:d4:b3:c6:07:
-        e9:09:85:cc:3b:f2:b6:be:2c:1c:25:d5:71:8c:39:b5:2e:ea:
-        be:18:81:ba:b0:93:b8:0f:e3:e6:d7:26:8c:31:5a:72:03:84:
-        52:e6:a6:f5:33:22:45:0a:c8:0b:0d:8a:b8:36:6f:90:09:a1:
-        ab:bd:d7:d5:4e:2e:71:a2:d4:ae:fa:a7:54:2b:eb:35:8d:5a:
-        b7:54:88:2f:ee:74:9f:ed:48:16:ca:0d:48:d0:94:d3:ac:a4:
-        a2:f6:24:df:92:e3:bd:eb:43:40:91:6e:1c:18:8e:56:b4:82:
-        12:f3:a9:93:9f:d4:bc:9c:ad:9c:75:ee:5a:97:1b:95:e7:74:
-        2d:1c:0f:b0:2c:97:9f:fb:a9:33:39:7a:e7:03:3a:92:8e:22:
-        f6:8c:0d:e4:d9:7e:0d:76:18:f7:01:f9:ef:96:96:a2:55:73:
-        c0:3c:71:b4:1d:1a:56:43:b7:c3:0a:8d:72:fc:e2:10:09:0b:
-        41:ce:8c:94:a0:f9:03:fd:71:73:4b:8a:57:33:e5:8e:74:7e:
-        15:01:00:e6:cc:4a:1c:e7:7f:95:19:2d:c5:a5:0c:8b:bb:b5:
-        ed:85:b3:5c:d3:df:b8:b9:f2:ca:c7:0d:01:14:ac:70:58:c5:
-        8c:8d:33:d4:9d:66:a3:1a:50:95:23:fc:48:e0:06:43:12:d9:
-        cd:a7:86:39:2f:36:72:a3:80:10:e4:e1:f3:d1:cb:5b:1a:c0:
-        e4:80:9a:7c:13:73:06:4f:db:a3:6b:24:0a:ba:b3:1c:bc:4a:
-        78:bb:e5:e3:75:38:a5:48:a7:a2:1e:af:76:d4:5e:f7:38:86:
-        56:5a:89:ce:d6:c3:a7:79:b2:52:a0:c6:f1:85:b4:25:8c:f2:
-        3f:96:b3:10:d9:8d:6c:57:3b:9f:6f:86:3a:18:82:22:36:c8:
-        b0:91:38:db:2a:a1:93:aa:84:3f:f5:27:65:ae:73:d5:c8:d5:
-        d3:77:ea:4b:9d:c7:41:bb:c7:c0:e3:a0:3f:e4:7d:a4:8d:73:
-        e6:12:4b:df:a1:73:73:73:3a:80:e8:d5:cb:8e:2f:cb:ea:13:
-        a7:d6:41:8b:ac:fa:3c:89:d7:24:f5:4e:b4:e0:61:92:b7:f3:
-        37:98:c4:be:96:a3:b7:8a
+        55:9e:77:16:00:84:00:fe:86:23:b1:22:a3:28:ca:7c:80:74:
+        c6:81:6e:60:a0:ef:32:5c:12:ae:a9:81:b3:fb:70:72:fe:e3:
+        3c:c8:3f:86:5c:fe:d3:ec:99:b2:fb:8a:5d:dc:20:b6:f4:f8:
+        44:f0:99:74:67:0b:a7:3d:13:6c:56:91:ee:a3:bf:da:b3:43:
+        40:23:40:8e:c5:41:d0:ff:d1:c2:60:29:a8:0c:4e:7f:9a:06:
+        0c:a2:18:6e:94:d3:34:ca:53:b7:0a:dc:07:b7:cd:28:ed:75:
+        a8:9b:10:9c:90:a1:09:4b:b8:4c:d9:cc:36:0e:2c:15:c9:5c:
+        31:08:9e:1a:d9:fa:0a:96:46:75:83:38:9c:1d:af:fd:7d:6a:
+        5a:a0:17:c9:ef:c4:a4:35:df:ab:d5:f0:ba:a6:b2:bc:dc:b3:
+        43:be:ea:fe:77:61:e5:63:f4:06:32:78:22:ca:d9:73:c2:ca:
+        11:a9:89:ad:ad:ee:e3:c8:37:5c:e8:94:28:09:2d:74:1c:24:
+        48:37:74:64:6a:b2:60:1e:b8:1e:cf:ca:53:b3:f7:1b:b1:5e:
+        36:11:4a:ae:9f:70:e3:f7:d4:2c:61:49:e1:f0:4e:a4:f1:ce:
+        4b:b3:fe:ef:a5:e1:10:6a:ff:42:e4:31:2f:d0:04:19:a7:8d:
+        aa:8f:cb:74:db:13:09:de:af:fc:4c:5b:1c:8b:8b:d0:cf:2c:
+        fa:d7:9c:95:eb:c5:cc:d5:e5:27:14:b7:ed:1c:31:85:83:63:
+        e0:3e:a6:7c:70:77:4b:3f:4f:37:c3:20:28:62:75:24:ca:49:
+        b6:3d:90:f7:1b:c4:25:4e:5b:e3:f3:ea:6b:a8:61:6a:cf:ba:
+        3d:36:ad:90:c8:37:6f:6b:21:00:1e:ef:7b:e1:dc:2f:be:ce:
+        f0:01:e9:27:db:7d:34:cc:8a:3f:7b:2b:ce:9f:73:d4:6c:e9:
+        a9:8a:0b:07:61:29:62:85:89:b2:fa:cf:41:61:c4:0b:e3:a7:
+        1a:37:16:e8:26:e2:af:6c:0c:0c:f1:dc:61:d4:27:5b:f3:ab:
+        76:49:01:b6:35:0a:23:e0:95:46:fd:ac:08:be:72:91:64:ae:
+        74:8f:f6:96:9a:ff:0e:62:62:b4:93:38:17:6e:19:d0:69:f2:
+        47:2b:1d:70:7d:46:e4:8b:9d:d2:fe:27:8d:71:7b:12:01:6f:
+        eb:52:4d:0f:07:f2:9c:e4:89:14:ce:7e:66:28:1a:28:b3:11:
+        11:cc:d4:e5:25:f4:13:d6:ff:6f:94:67:da:38:29:49:7b:b0:
+        f6:a4:9e:23:24:a6:6d:5d:04:a8:6f:5e:3f:6b:70:0f:3e:49:
+        4a:69:45:aa:20:eb:8f:93
 -----BEGIN CERTIFICATE-----
-MIIHWTCCBUGgAwIBAgIDCkGKMA0GCSqGSIb3DQEBCwUAMHkxEDAOBgNVBAoTB1Jv
-b3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ
-Q0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYSc3VwcG9y
-dEBjYWNlcnQub3JnMB4XDTExMDUyMzE3NDgwMloXDTIxMDUyMDE3NDgwMlowVDEU
-MBIGA1UEChMLQ0FjZXJ0IEluYy4xHjAcBgNVBAsTFWh0dHA6Ly93d3cuQ0FjZXJ0
-Lm9yZzEcMBoGA1UEAxMTQ0FjZXJ0IENsYXNzIDMgUm9vdDCCAiIwDQYJKoZIhvcN
-AQEBBQADggIPADCCAgoCggIBAKtJNRFIfNImflOUz0Op3SjXQiqL84d4GVh8D57a
-iX3h++tykA10oZZkq5+gJJlz2uJVdscXe/UErEa4w75/ZI0QbCTzYZzA8pD6Ueb1
-aQFjww9W4kpCz+JEjCUoqMV5CX1GuYrz6fM0KQhF5Byfy5QEHIGoFLOYZcRD7E6C
-jQnRvapbjZLQ7N6QxX8KwuPr5jFaXnQ+lzNZ6MMDPWAzv/fRb0fEze5ig1JuLgia
-pNkVGJGmhZJHsK5I6223IeyFGmhyNav/8BBdwPSUp2rVO5J+TJAFfpPBLIukjmJ0
-FXFuC3ED6q8VOJrU0gVyb4z5K+taciX5OUbjchs+BMNkJyIQKopPWKcDrb60LhPt
-XapI19V91Cp7XPpGBFDkzA5CW4zt2/LP/JaT4NsRNlRiNDiPDGCbO5dWOK3z0luL
-oFvqTpa4fNfVoIZwQNORKbeiPK31jLvPGpKK5DR7wNhsX+kKwsOnIJpa3yxdUly6
-R9Wb7yQocDggL9V/KcCyQQNokszgnMyXS0XvOhAKq3A6mJVwrTWx6oUrpByAITGp
-rmB6gCZIALgBwJNjVSKRPFbnr9s6JfOPMVTqJouBWfmh0VMRxXudA/Z0EeBtsSw/
-LIaRmXGapneLNGDRFLQsrJ2vjBDTn8Rq+G8T/HNZ92ZCdB6K4/jc0m+YnMtHmJVA
-BfvpAgMBAAGjggINMIICCTAdBgNVHQ4EFgQUdahxYEyIE/B42Yl3tW3Fid+8sXow
-gaMGA1UdIwSBmzCBmIAUFrUyG9TH8+DmjvO90rA67rI5GNGhfaR7MHkxEDAOBgNV
-BAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAG
-A1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
-c3VwcG9ydEBjYWNlcnQub3JnggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUH
-AQEEUTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggr
-BgEFBQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBKBgNVHSAEQzBB
-MD8GCCsGAQQBgZBKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9y
-Zy9pbmRleC5waHA/aWQ9MTAwNAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0Fj
-ZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5
-b3VyIG93biBjZXJ0aWZpY2F0ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5D
-QWNlcnQub3JnMA0GCSqGSIb3DQEBCwUAA4ICAQApKIWuRKm5r6R5E/CooyuXYPNc
-7uMvwfbiZqARrjY3OnYVBFPqQvX56sAV2KaC2eRhrnILKVyQQ+hBsuF32wITRHhH
-Va9Y/MyY9kW50SD42CEH/m2qc9SzxgfpCYXMO/K2viwcJdVxjDm1Luq+GIG6sJO4
-D+Pm1yaMMVpyA4RS5qb1MyJFCsgLDYq4Nm+QCaGrvdfVTi5xotSu+qdUK+s1jVq3
-VIgv7nSf7UgWyg1I0JTTrKSi9iTfkuO960NAkW4cGI5WtIIS86mTn9S8nK2cde5a
-lxuV53QtHA+wLJef+6kzOXrnAzqSjiL2jA3k2X4Ndhj3AfnvlpaiVXPAPHG0HRpW
-Q7fDCo1y/OIQCQtBzoyUoPkD/XFzS4pXM+WOdH4VAQDmzEoc53+VGS3FpQyLu7Xt
-hbNc09+4ufLKxw0BFKxwWMWMjTPUnWajGlCVI/xI4AZDEtnNp4Y5LzZyo4AQ5OHz
-0ctbGsDkgJp8E3MGT9ujayQKurMcvEp4u+XjdTilSKeiHq921F73OIZWWonO1sOn
-ebJSoMbxhbQljPI/lrMQ2Y1sVzufb4Y6GIIiNsiwkTjbKqGTqoQ/9SdlrnPVyNXT
-d+pLncdBu8fA46A/5H2kjXPmEkvfoXNzczqA6NXLji/L6hOn1kGLrPo8idck9U60
-4GGSt/M3mMS+lqO3ig==
+MIIHgjCCBWqgAwIBAgICEBswDQYJKoZIhvcNAQELBQAwgYcxCzAJBgNVBAYTAkFV
+MRgwFgYDVQQIEw9OZXcgU291dGggV2FsZXMxGjAYBgNVBAoTEUNBY2VydCBUZXN0
+c2VydmVyMSEwHwYDVQQLExhodHRwOi8vY2FjZXJ0MS5pdC1zbHMuZGUxHzAdBgNV
+BAMTFkNBY2VydCBUZXN0c2VydmVyIFJvb3QwHhcNMTEwNTAxMTgyNTA5WhcNMjEw
+NDI4MTgyNTA5WjBiMRkwFwYDVQQKExBDQWNlcnQgVGVzdHNldmVyMSEwHwYDVQQL
+ExhodHRwOi8vY2FjZXJ0MS5pdC1zbHMuZGUxIjAgBgNVBAMTGUNBY2VydCBUZXN0
+c2VydmVyIENsYXNzIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDI
+576JQukwI58zuNidaS0HUYVCBmy4mpV7VhydDtW07hDu5lYGmbcuBW+SfjPCjMMR
+QVEiNrWv3tLclBKah/ubOmgP1HenQxRfGiJkuPk7dwlM7qqPfRn/H1Pm1w1bj/e1
+yZkeNc0UzMPdRbD9InR3/hwHQ1hfLHKGbbYc6uTb+0UOgGAsMwb/WVb+8mSrgERZ
+9pFhw8uK5+BFgJwSdsTsN68h5ZDL4VIf9Zq8z8jNGcXK0DSoZ0vT0y6EyVdXiXNS
+PF/zAPTbBBQcBGmhKBlcTLwcPHLeHIEfwRGf72wqBYNNrT0J37yTci31x+xC0/iQ
+wjPD4rRhYFxm/UW9sFtEJVtIf9o/oj2Mh2FGRa0DDk0oX+jewZEnTy+MUd0k4LFy
+Md6Ucn4lJsb3uHnjZ8ayz5DEMDQ/3Mzjf6CjhOc4oXm5UXuE2gsZyno93fLtTXAc
+4w0KzMcZ2diAp5Tdpq0w3pMJUAFoehFScBRK7Kb9xuXVPxoSvGCVPNXXUsEioIlf
+T2StKvDVBPBTtWRnE0BLYTJaWQAnWp64QgWiVn+JmdGkIm4sHpB1FweN4msdkgic
+6JAlYJRp71tSjuEnJwVtgqLqpUtLPTpJ64/0lDlazCJ5NaduTpAA+MSqXlHSA/Rb
+Q1VSaKdRadqLYOUoqGFwHdldeyZpAwp0ibM62GmVrQIDAQABo4ICGjCCAhYwHQYD
+VR0OBBYEFISE4B0WSV6xxeXnzy2oVnRL6JKUMIG0BgNVHSMEgawwgamAFIXXBQrW
+j/IELV7ry/32aYsfTgb+oYGNpIGKMIGHMQswCQYDVQQGEwJBVTEYMBYGA1UECBMP
+TmV3IFNvdXRoIFdhbGVzMRowGAYDVQQKExFDQWNlcnQgVGVzdHNlcnZlcjEhMB8G
+A1UECxMYaHR0cDovL2NhY2VydDEuaXQtc2xzLmRlMR8wHQYDVQQDExZDQWNlcnQg
+VGVzdHNlcnZlciBSb290ggEAMA8GA1UdEwEB/wQFMAMBAf8wXQYIKwYBBQUHAQEE
+UTBPMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5DQWNlcnQub3JnLzAoBggrBgEF
+BQcwAoYcaHR0cDovL3d3dy5DQWNlcnQub3JnL2NhLmNydDBGBgNVHSAEPzA9MDsG
+BCsGAQUwMzAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5DQWNlcnQub3JnL2luZGV4
+LnBocD9pZD0xMDA0BglghkgBhvhCAQgEJxYlaHR0cDovL3d3dy5DQWNlcnQub3Jn
+L2luZGV4LnBocD9pZD0xMDBQBglghkgBhvhCAQ0EQxZBVG8gZ2V0IHlvdXIgb3du
+IGNlcnRpZmljYXRlIGZvciBGUkVFLCBnbyB0byBodHRwOi8vd3d3LkNBY2VydC5v
+cmcwDQYJKoZIhvcNAQELBQADggIBAFWedxYAhAD+hiOxIqMoynyAdMaBbmCg7zJc
+Eq6pgbP7cHL+4zzIP4Zc/tPsmbL7il3cILb0+ETwmXRnC6c9E2xWke6jv9qzQ0Aj
+QI7FQdD/0cJgKagMTn+aBgyiGG6U0zTKU7cK3Ae3zSjtdaibEJyQoQlLuEzZzDYO
+LBXJXDEInhrZ+gqWRnWDOJwdr/19alqgF8nvxKQ136vV8Lqmsrzcs0O+6v53YeVj
+9AYyeCLK2XPCyhGpia2t7uPIN1zolCgJLXQcJEg3dGRqsmAeuB7PylOz9xuxXjYR
+Sq6fcOP31CxhSeHwTqTxzkuz/u+l4RBq/0LkMS/QBBmnjaqPy3TbEwner/xMWxyL
+i9DPLPrXnJXrxczV5ScUt+0cMYWDY+A+pnxwd0s/TzfDIChidSTKSbY9kPcbxCVO
+W+Pz6muoYWrPuj02rZDIN29rIQAe73vh3C++zvAB6SfbfTTMij97K86fc9Rs6amK
+CwdhKWKFibL6z0FhxAvjpxo3Fugm4q9sDAzx3GHUJ1vzq3ZJAbY1CiPglUb9rAi+
+cpFkrnSP9paa/w5iYrSTOBduGdBp8kcrHXB9RuSLndL+J41xexIBb+tSTQ8H8pzk
+iRTOfmYoGiizERHM1OUl9BPW/2+UZ9o4KUl7sPakniMkpm1dBKhvXj9rcA8+SUpp
+Raog64+T
 -----END CERTIFICATE-----
index e7dfc82..fa9d766 100644 (file)
@@ -1,41 +1,43 @@
 -----BEGIN CERTIFICATE-----
-MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
-IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
-IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
-Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
-BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
-MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
-ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
-8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
-zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
-fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
-w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
-G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
-epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
-laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
-QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
-fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
-YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
-ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
-gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
-MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
-IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
-dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
-czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
-dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
-aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
-AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
-b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
-ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
-nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
-18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
-gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
-Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
-sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
-SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
-CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
-GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
-zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
-omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
+MIIHpzCCBY+gAwIBAgIBADANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMCQVUx
+GDAWBgNVBAgTD05ldyBTb3V0aCBXYWxlczEaMBgGA1UEChMRQ0FjZXJ0IFRlc3Rz
+ZXJ2ZXIxITAfBgNVBAsTGGh0dHA6Ly9jYWNlcnQxLml0LXNscy5kZTEfMB0GA1UE
+AxMWQ0FjZXJ0IFRlc3RzZXJ2ZXIgUm9vdDAeFw0xMTAzMjkyMDQ1MjBaFw0yMTAz
+MjYyMDQ1MjBaMIGHMQswCQYDVQQGEwJBVTEYMBYGA1UECBMPTmV3IFNvdXRoIFdh
+bGVzMRowGAYDVQQKExFDQWNlcnQgVGVzdHNlcnZlcjEhMB8GA1UECxMYaHR0cDov
+L2NhY2VydDEuaXQtc2xzLmRlMR8wHQYDVQQDExZDQWNlcnQgVGVzdHNlcnZlciBS
+b290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5fvQIrtzGpSbyWam
+2kHfXMCXgRuTHSuQwbvkqdLAqtiI4ZQkF4jTy+7D6LVnDd3kw/hC1EAhcV79WuTn
+PrrpjM1JdliOOOvb5sh9SQrdT4w1IO2JBmHrykcHCcvh7tLcm8iKA3iIIxO76SXZ
+Pd7buDEQQrP8z6AXBgCRIdtS9uA5WxAmmbj2ToL8UaViijB062zVO9euOuMdN5Qk
+pCVOj9tfzotJDHw3sNvP65G/C63ZJ0ysUhohncXe+e6UIPHVS+V54nBENz+4HY/d
+zchFFHhnhuCSyhPfSz975IlnBSgMqhVPEYuFpAkDUSUpc8kXoe+cVVSjPBw0exUJ
+X4OUjEUf3HgdPyaoeeAPbkQ2pd118vMHzTzAX7t/GzVxROkYSzFvuSljI7ivFx9Y
+lPRsMW5L9TRIjxCPBLoqTNKgQQOfZiib+T4PY/ii+qU17lMZK9L9hnAMjW8L2dzx
+Z6/qrhM58vKqt6Rd9bsUt109WWflKY39YenlGaCJU+0qgsUcbl2qHjgbkz8rvJJM
+10BkVROvVvqnPjkSc8ZPD+1Si9pP0pztAl7vXsDM30jtL6Jv/DyTFKUljpb0tqA9
+22SyOxUu0kkKBYXY1HrqL6Ahvjeorv5aDzrUqAYTYB6Z82ykx0bG5FsAK4ShoTv1
+3ir9ejhln4JPGiyQTdMXgRaHX/kCAwEAAaOCAhowggIWMB0GA1UdDgQWBBSF1wUK
+1o/yBC1e68v99mmLH04G/jCBtAYDVR0jBIGsMIGpgBSF1wUK1o/yBC1e68v99mmL
+H04G/qGBjaSBijCBhzELMAkGA1UEBhMCQVUxGDAWBgNVBAgTD05ldyBTb3V0aCBX
+YWxlczEaMBgGA1UEChMRQ0FjZXJ0IFRlc3RzZXJ2ZXIxITAfBgNVBAsTGGh0dHA6
+Ly9jYWNlcnQxLml0LXNscy5kZTEfMB0GA1UEAxMWQ0FjZXJ0IFRlc3RzZXJ2ZXIg
+Um9vdIIBADAPBgNVHRMBAf8EBTADAQH/MF0GCCsGAQUFBwEBBFEwTzAjBggrBgEF
+BQcwAYYXaHR0cDovL29jc3AuQ0FjZXJ0Lm9yZy8wKAYIKwYBBQUHMAKGHGh0dHA6
+Ly93d3cuQ0FjZXJ0Lm9yZy9jYS5jcnQwRgYDVR0gBD8wPTA7BgQrBgEFMDMwMQYI
+KwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAw
+NAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5waHA/
+aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5b3VyIG93biBjZXJ0aWZpY2F0
+ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5DQWNlcnQub3JnMA0GCSqGSIb3
+DQEBBQUAA4ICAQDQjXJDogH/NiU53JEUaw7jEF7qgp8vLjO2AXkwwpdKOWKS6lm9
+BQXiKs6HUdVYwsdST30kSvF1dD9Y9gCgFVyN662Tk2LwaPyKRq9cxlUXwqKEczfE
+4yFPhYXS1giIGL8aSUx0lok6KWRXNgspgBIZ+0tFV+9GLNTP5y+ofU2ME1xw6+zM
+tN/rgN2Xt6oVO24tJlKWVvodIgfq8QPscxZHwFqyHWh8hsL8q4mSDZZ0B7wHy51F
+gliDzcq+WG8tk29WV++7uHRnN2rqJSoGc91IAHN2YmBW/mCeiqPH0Ms1x7Oo1DuZ
+C5pc1GGyxGun252NxRM9jEz7UsWqHRCCyyA6Tyo2E6b3gdiatmohW1JIUTk+WONZ
+41+Htgz+vhGFzTOnAWUQLapPllNeYjs/b1Ub8vpycx2O0FU3ZPtC+41GriPHQ2rJ
+/ToQVI4ZAHUp7O6n4+r7Onhf5qylVeux+Qzy+IV2Db7rj0KXBoHjW3S0hIfIJE0x
+1T5Ldj+YBFvCLvd6RrcNgoS/HaKAV/42AENy1V1eBBP6TJ8kmXWVbyRpzRFgZmmB
+z6jLle2M0/kaPER2s5QFvxu+Y6mwrQ237im9oPHzY4kGv8eeF+AMUOmSC+M5jb3m
++IafDexcFnjchflKWV/RRHSj28kJ3ops1lgpkx4+TJo3M62Udepphw0ItA==
 -----END CERTIFICATE-----
index 719b0ff..9166696 100644 (file)
Binary files a/www/certs/root.der and b/www/certs/root.der differ
index 96bb2cd..26c1593 100644 (file)
@@ -2,139 +2,144 @@ Certificate:
     Data:
         Version: 3 (0x2)
         Serial Number: 0 (0x0)
-        Signature Algorithm: md5WithRSAEncryption
-        Issuer: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=AU, ST=New South Wales, O=CAcert Testserver, OU=http://cacert1.it-sls.de, CN=CAcert Testserver Root
         Validity
-            Not Before: Mar 30 12:29:49 2003 GMT
-            Not After : Mar 29 12:29:49 2033 GMT
-        Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/emailAddress=support@cacert.org
+            Not Before: Mar 29 20:45:20 2011 GMT
+            Not After : Mar 26 20:45:20 2021 GMT
+        Subject: C=AU, ST=New South Wales, O=CAcert Testserver, OU=http://cacert1.it-sls.de, CN=CAcert Testserver Root
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (4096 bit)
                 Modulus (4096 bit):
-                    00:ce:22:c0:e2:46:7d:ec:36:28:07:50:96:f2:a0:
-                    33:40:8c:4b:f1:3b:66:3f:31:e5:6b:02:36:db:d6:
-                    7c:f6:f1:88:8f:4e:77:36:05:41:95:f9:09:f0:12:
-                    cf:46:86:73:60:b7:6e:7e:e8:c0:58:64:ae:cd:b0:
-                    ad:45:17:0c:63:fa:67:0a:e8:d6:d2:bf:3e:e7:98:
-                    c4:f0:4c:fa:e0:03:bb:35:5d:6c:21:de:9e:20:d9:
-                    ba:cd:66:32:37:72:fa:f7:08:f5:c7:cd:58:c9:8e:
-                    e7:0e:5e:ea:3e:fe:1c:a1:14:0a:15:6c:86:84:5b:
-                    64:66:2a:7a:a9:4b:53:79:f5:88:a2:7b:ee:2f:0a:
-                    61:2b:8d:b2:7e:4d:56:a5:13:ec:ea:da:92:9e:ac:
-                    44:41:1e:58:60:65:05:66:f8:c0:44:bd:cb:94:f7:
-                    42:7e:0b:f7:65:68:98:51:05:f0:f3:05:91:04:1d:
-                    1b:17:82:ec:c8:57:bb:c3:6b:7a:88:f1:b0:72:cc:
-                    25:5b:20:91:ec:16:02:12:8f:32:e9:17:18:48:d0:
-                    c7:05:2e:02:30:42:b8:25:9c:05:6b:3f:aa:3a:a7:
-                    eb:53:48:f7:e8:d2:b6:07:98:dc:1b:c6:34:7f:7f:
-                    c9:1c:82:7a:05:58:2b:08:5b:f3:38:a2:ab:17:5d:
-                    66:c9:98:d7:9e:10:8b:a2:d2:dd:74:9a:f7:71:0c:
-                    72:60:df:cd:6f:98:33:9d:96:34:76:3e:24:7a:92:
-                    b0:0e:95:1e:6f:e6:a0:45:38:47:aa:d7:41:ed:4a:
-                    b7:12:f6:d7:1b:83:8a:0f:2e:d8:09:b6:59:d7:aa:
-                    04:ff:d2:93:7d:68:2e:dd:8b:4b:ab:58:ba:2f:8d:
-                    ea:95:a7:a0:c3:54:89:a5:fb:db:8b:51:22:9d:b2:
-                    c3:be:11:be:2c:91:86:8b:96:78:ad:20:d3:8a:2f:
-                    1a:3f:c6:d0:51:65:87:21:b1:19:01:65:7f:45:1c:
-                    87:f5:7c:d0:41:4c:4f:29:98:21:fd:33:1f:75:0c:
-                    04:51:fa:19:77:db:d4:14:1c:ee:81:c3:1d:f5:98:
-                    b7:69:06:91:22:dd:00:50:cc:81:31:ac:12:07:7b:
-                    38:da:68:5b:e6:2b:d4:7e:c9:5f:ad:e8:eb:72:4c:
-                    f3:01:e5:4b:20:bf:9a:a6:57:ca:91:00:01:8b:a1:
-                    75:21:37:b5:63:0d:67:3e:46:4f:70:20:67:ce:c5:
-                    d6:59:db:02:e0:f0:d2:cb:cd:ba:62:b7:90:41:e8:
-                    dd:20:e4:29:bc:64:29:42:c8:22:dc:78:9a:ff:43:
-                    ec:98:1b:09:51:4b:5a:5a:c2:71:f1:c4:cb:73:a9:
-                    e5:a1:0b
+                    00:e5:fb:d0:22:bb:73:1a:94:9b:c9:66:a6:da:41:
+                    df:5c:c0:97:81:1b:93:1d:2b:90:c1:bb:e4:a9:d2:
+                    c0:aa:d8:88:e1:94:24:17:88:d3:cb:ee:c3:e8:b5:
+                    67:0d:dd:e4:c3:f8:42:d4:40:21:71:5e:fd:5a:e4:
+                    e7:3e:ba:e9:8c:cd:49:76:58:8e:38:eb:db:e6:c8:
+                    7d:49:0a:dd:4f:8c:35:20:ed:89:06:61:eb:ca:47:
+                    07:09:cb:e1:ee:d2:dc:9b:c8:8a:03:78:88:23:13:
+                    bb:e9:25:d9:3d:de:db:b8:31:10:42:b3:fc:cf:a0:
+                    17:06:00:91:21:db:52:f6:e0:39:5b:10:26:99:b8:
+                    f6:4e:82:fc:51:a5:62:8a:30:74:eb:6c:d5:3b:d7:
+                    ae:3a:e3:1d:37:94:24:a4:25:4e:8f:db:5f:ce:8b:
+                    49:0c:7c:37:b0:db:cf:eb:91:bf:0b:ad:d9:27:4c:
+                    ac:52:1a:21:9d:c5:de:f9:ee:94:20:f1:d5:4b:e5:
+                    79:e2:70:44:37:3f:b8:1d:8f:dd:cd:c8:45:14:78:
+                    67:86:e0:92:ca:13:df:4b:3f:7b:e4:89:67:05:28:
+                    0c:aa:15:4f:11:8b:85:a4:09:03:51:25:29:73:c9:
+                    17:a1:ef:9c:55:54:a3:3c:1c:34:7b:15:09:5f:83:
+                    94:8c:45:1f:dc:78:1d:3f:26:a8:79:e0:0f:6e:44:
+                    36:a5:dd:75:f2:f3:07:cd:3c:c0:5f:bb:7f:1b:35:
+                    71:44:e9:18:4b:31:6f:b9:29:63:23:b8:af:17:1f:
+                    58:94:f4:6c:31:6e:4b:f5:34:48:8f:10:8f:04:ba:
+                    2a:4c:d2:a0:41:03:9f:66:28:9b:f9:3e:0f:63:f8:
+                    a2:fa:a5:35:ee:53:19:2b:d2:fd:86:70:0c:8d:6f:
+                    0b:d9:dc:f1:67:af:ea:ae:13:39:f2:f2:aa:b7:a4:
+                    5d:f5:bb:14:b7:5d:3d:59:67:e5:29:8d:fd:61:e9:
+                    e5:19:a0:89:53:ed:2a:82:c5:1c:6e:5d:aa:1e:38:
+                    1b:93:3f:2b:bc:92:4c:d7:40:64:55:13:af:56:fa:
+                    a7:3e:39:12:73:c6:4f:0f:ed:52:8b:da:4f:d2:9c:
+                    ed:02:5e:ef:5e:c0:cc:df:48:ed:2f:a2:6f:fc:3c:
+                    93:14:a5:25:8e:96:f4:b6:a0:3d:db:64:b2:3b:15:
+                    2e:d2:49:0a:05:85:d8:d4:7a:ea:2f:a0:21:be:37:
+                    a8:ae:fe:5a:0f:3a:d4:a8:06:13:60:1e:99:f3:6c:
+                    a4:c7:46:c6:e4:5b:00:2b:84:a1:a1:3b:f5:de:2a:
+                    fd:7a:38:65:9f:82:4f:1a:2c:90:4d:d3:17:81:16:
+                    87:5f:f9
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Subject Key Identifier: 
-                16:B5:32:1B:D4:C7:F3:E0:E6:8E:F3:BD:D2:B0:3A:EE:B2:39:18:D1
+                85:D7:05:0A:D6:8F:F2:04:2D:5E:EB:CB:FD:F6:69:8B:1F:4E:06:FE
             X509v3 Authority Key Identifier: 
-                keyid:16:B5:32:1B:D4:C7:F3:E0:E6:8E:F3:BD:D2:B0:3A:EE:B2:39:18:D1
-                DirName:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
+                keyid:85:D7:05:0A:D6:8F:F2:04:2D:5E:EB:CB:FD:F6:69:8B:1F:4E:06:FE
+                DirName:/C=AU/ST=New South Wales/O=CAcert Testserver/OU=http://cacert1.it-sls.de/CN=CAcert Testserver Root
                 serial:00
 
             X509v3 Basic Constraints: critical
                 CA:TRUE
-            X509v3 CRL Distribution Points: 
-                URI:https://www.cacert.org/revoke.crl
+            Authority Information Access: 
+                OCSP - URI:http://ocsp.CAcert.org/
+                CA Issuers - URI:http://www.CAcert.org/ca.crt
+
+            X509v3 Certificate Policies: 
+                Policy: Security
+                  CPS: http://www.CAcert.org/index.php?id=10
 
-            Netscape CA Revocation Url: 
-                https://www.cacert.org/revoke.crl
             Netscape CA Policy Url: 
-                http://www.cacert.org/index.php?id=10
+                http://www.CAcert.org/index.php?id=10
             Netscape Comment: 
-                To get your own certificate for FREE head over to http://www.cacert.org
-    Signature Algorithm: md5WithRSAEncryption
-        28:c7:ee:9c:82:02:ba:5c:80:12:ca:35:0a:1d:81:6f:89:6a:
-        99:cc:f2:68:0f:7f:a7:e1:8d:58:95:3e:bd:f2:06:c3:90:5a:
-        ac:b5:60:f6:99:43:01:a3:88:70:9c:9d:62:9d:a4:87:af:67:
-        58:0d:30:36:3b:e6:ad:48:d3:cb:74:02:86:71:3e:e2:2b:03:
-        68:f1:34:62:40:46:3b:53:ea:28:f4:ac:fb:66:95:53:8a:4d:
-        5d:fd:3b:d9:60:d7:ca:79:69:3b:b1:65:92:a6:c6:81:82:5c:
-        9c:cd:eb:4d:01:8a:a5:df:11:55:aa:15:ca:1f:37:c0:82:98:
-        70:61:db:6a:7c:96:a3:8e:2e:54:3e:4f:21:a9:90:ef:dc:82:
-        bf:dc:e8:45:ad:4d:90:73:08:3c:94:65:b0:04:99:76:7f:e2:
-        bc:c2:6a:15:aa:97:04:37:24:d8:1e:94:4e:6d:0e:51:be:d6:
-        c4:8f:ca:96:6d:f7:43:df:e8:30:65:27:3b:7b:bb:43:43:63:
-        c4:43:f7:b2:ec:68:cc:e1:19:8e:22:fb:98:e1:7b:5a:3e:01:
-        37:3b:8b:08:b0:a2:f3:95:4e:1a:cb:9b:cd:9a:b1:db:b2:70:
-        f0:2d:4a:db:d8:b0:e3:6f:45:48:33:12:ff:fe:3c:32:2a:54:
-        f7:c4:f7:8a:f0:88:23:c2:47:fe:64:7a:71:c0:d1:1e:a6:63:
-        b0:07:7e:a4:2f:d3:01:8f:dc:9f:2b:b6:c6:08:a9:0f:93:48:
-        25:fc:12:fd:9f:42:dc:f3:c4:3e:f6:57:b0:d7:dd:69:d1:06:
-        77:34:0a:4b:d2:ca:a0:ff:1c:c6:8c:c9:16:be:c4:cc:32:37:
-        68:73:5f:08:fb:51:f7:49:53:36:05:0a:95:02:4c:f2:79:1a:
-        10:f6:d8:3a:75:9c:f3:1d:f1:a2:0d:70:67:86:1b:b3:16:f5:
-        2f:e5:a4:eb:79:86:f9:3d:0b:c2:73:0b:a5:99:ac:6f:fc:67:
-        b8:e5:2f:0b:a6:18:24:8d:7b:d1:48:35:29:18:40:ac:93:60:
-        e1:96:86:50:b4:7a:59:d8:8f:21:0b:9f:cf:82:91:c6:3b:bf:
-        6b:dc:07:91:b9:97:56:23:aa:b6:6c:94:c6:48:06:3c:e4:ce:
-        4e:aa:e4:f6:2f:09:dc:53:6f:2e:fc:74:eb:3a:63:99:c2:a6:
-        ac:89:bc:a7:b2:44:a0:0d:8a:10:e3:6c:f2:24:cb:fa:9b:9f:
-        70:47:2e:de:14:8b:d4:b2:20:09:96:a2:64:f1:24:1c:dc:a1:
-        35:9c:15:b2:d4:bc:55:2e:7d:06:f5:9c:0e:55:f4:5a:d6:93:
-        da:76:ad:25:73:4c:c5:43
+                To get your own certificate for FREE, go to http://www.CAcert.org
+    Signature Algorithm: sha1WithRSAEncryption
+        d0:8d:72:43:a2:01:ff:36:25:39:dc:91:14:6b:0e:e3:10:5e:
+        ea:82:9f:2f:2e:33:b6:01:79:30:c2:97:4a:39:62:92:ea:59:
+        bd:05:05:e2:2a:ce:87:51:d5:58:c2:c7:52:4f:7d:24:4a:f1:
+        75:74:3f:58:f6:00:a0:15:5c:8d:eb:ad:93:93:62:f0:68:fc:
+        8a:46:af:5c:c6:55:17:c2:a2:84:73:37:c4:e3:21:4f:85:85:
+        d2:d6:08:88:18:bf:1a:49:4c:74:96:89:3a:29:64:57:36:0b:
+        29:80:12:19:fb:4b:45:57:ef:46:2c:d4:cf:e7:2f:a8:7d:4d:
+        8c:13:5c:70:eb:ec:cc:b4:df:eb:80:dd:97:b7:aa:15:3b:6e:
+        2d:26:52:96:56:fa:1d:22:07:ea:f1:03:ec:73:16:47:c0:5a:
+        b2:1d:68:7c:86:c2:fc:ab:89:92:0d:96:74:07:bc:07:cb:9d:
+        45:82:58:83:cd:ca:be:58:6f:2d:93:6f:56:57:ef:bb:b8:74:
+        67:37:6a:ea:25:2a:06:73:dd:48:00:73:76:62:60:56:fe:60:
+        9e:8a:a3:c7:d0:cb:35:c7:b3:a8:d4:3b:99:0b:9a:5c:d4:61:
+        b2:c4:6b:a7:db:9d:8d:c5:13:3d:8c:4c:fb:52:c5:aa:1d:10:
+        82:cb:20:3a:4f:2a:36:13:a6:f7:81:d8:9a:b6:6a:21:5b:52:
+        48:51:39:3e:58:e3:59:e3:5f:87:b6:0c:fe:be:11:85:cd:33:
+        a7:01:65:10:2d:aa:4f:96:53:5e:62:3b:3f:6f:55:1b:f2:fa:
+        72:73:1d:8e:d0:55:37:64:fb:42:fb:8d:46:ae:23:c7:43:6a:
+        c9:fd:3a:10:54:8e:19:00:75:29:ec:ee:a7:e3:ea:fb:3a:78:
+        5f:e6:ac:a5:55:eb:b1:f9:0c:f2:f8:85:76:0d:be:eb:8f:42:
+        97:06:81:e3:5b:74:b4:84:87:c8:24:4d:31:d5:3e:4b:76:3f:
+        98:04:5b:c2:2e:f7:7a:46:b7:0d:82:84:bf:1d:a2:80:57:fe:
+        36:00:43:72:d5:5d:5e:04:13:fa:4c:9f:24:99:75:95:6f:24:
+        69:cd:11:60:66:69:81:cf:a8:cb:95:ed:8c:d3:f9:1a:3c:44:
+        76:b3:94:05:bf:1b:be:63:a9:b0:ad:0d:b7:ee:29:bd:a0:f1:
+        f3:63:89:06:bf:c7:9e:17:e0:0c:50:e9:92:0b:e3:39:8d:bd:
+        e6:f8:86:9f:0d:ec:5c:16:78:dc:85:f9:4a:59:5f:d1:44:74:
+        a3:db:c9:09:de:8a:6c:d6:58:29:93:1e:3e:4c:9a:37:33:ad:
+        94:75:ea:69:87:0d:08:b4
 -----BEGIN CERTIFICATE-----
-MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
-IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
-IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
-Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
-BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
-MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
-ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
-8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
-zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
-fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
-w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
-G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
-epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
-laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
-QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
-fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
-YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
-ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
-gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
-MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
-IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
-dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
-czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
-dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
-aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
-AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
-b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
-ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
-nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
-18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
-gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
-Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
-sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
-SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
-CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
-GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
-zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
-omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
+MIIHpzCCBY+gAwIBAgIBADANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMCQVUx
+GDAWBgNVBAgTD05ldyBTb3V0aCBXYWxlczEaMBgGA1UEChMRQ0FjZXJ0IFRlc3Rz
+ZXJ2ZXIxITAfBgNVBAsTGGh0dHA6Ly9jYWNlcnQxLml0LXNscy5kZTEfMB0GA1UE
+AxMWQ0FjZXJ0IFRlc3RzZXJ2ZXIgUm9vdDAeFw0xMTAzMjkyMDQ1MjBaFw0yMTAz
+MjYyMDQ1MjBaMIGHMQswCQYDVQQGEwJBVTEYMBYGA1UECBMPTmV3IFNvdXRoIFdh
+bGVzMRowGAYDVQQKExFDQWNlcnQgVGVzdHNlcnZlcjEhMB8GA1UECxMYaHR0cDov
+L2NhY2VydDEuaXQtc2xzLmRlMR8wHQYDVQQDExZDQWNlcnQgVGVzdHNlcnZlciBS
+b290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5fvQIrtzGpSbyWam
+2kHfXMCXgRuTHSuQwbvkqdLAqtiI4ZQkF4jTy+7D6LVnDd3kw/hC1EAhcV79WuTn
+PrrpjM1JdliOOOvb5sh9SQrdT4w1IO2JBmHrykcHCcvh7tLcm8iKA3iIIxO76SXZ
+Pd7buDEQQrP8z6AXBgCRIdtS9uA5WxAmmbj2ToL8UaViijB062zVO9euOuMdN5Qk
+pCVOj9tfzotJDHw3sNvP65G/C63ZJ0ysUhohncXe+e6UIPHVS+V54nBENz+4HY/d
+zchFFHhnhuCSyhPfSz975IlnBSgMqhVPEYuFpAkDUSUpc8kXoe+cVVSjPBw0exUJ
+X4OUjEUf3HgdPyaoeeAPbkQ2pd118vMHzTzAX7t/GzVxROkYSzFvuSljI7ivFx9Y
+lPRsMW5L9TRIjxCPBLoqTNKgQQOfZiib+T4PY/ii+qU17lMZK9L9hnAMjW8L2dzx
+Z6/qrhM58vKqt6Rd9bsUt109WWflKY39YenlGaCJU+0qgsUcbl2qHjgbkz8rvJJM
+10BkVROvVvqnPjkSc8ZPD+1Si9pP0pztAl7vXsDM30jtL6Jv/DyTFKUljpb0tqA9
+22SyOxUu0kkKBYXY1HrqL6Ahvjeorv5aDzrUqAYTYB6Z82ykx0bG5FsAK4ShoTv1
+3ir9ejhln4JPGiyQTdMXgRaHX/kCAwEAAaOCAhowggIWMB0GA1UdDgQWBBSF1wUK
+1o/yBC1e68v99mmLH04G/jCBtAYDVR0jBIGsMIGpgBSF1wUK1o/yBC1e68v99mmL
+H04G/qGBjaSBijCBhzELMAkGA1UEBhMCQVUxGDAWBgNVBAgTD05ldyBTb3V0aCBX
+YWxlczEaMBgGA1UEChMRQ0FjZXJ0IFRlc3RzZXJ2ZXIxITAfBgNVBAsTGGh0dHA6
+Ly9jYWNlcnQxLml0LXNscy5kZTEfMB0GA1UEAxMWQ0FjZXJ0IFRlc3RzZXJ2ZXIg
+Um9vdIIBADAPBgNVHRMBAf8EBTADAQH/MF0GCCsGAQUFBwEBBFEwTzAjBggrBgEF
+BQcwAYYXaHR0cDovL29jc3AuQ0FjZXJ0Lm9yZy8wKAYIKwYBBQUHMAKGHGh0dHA6
+Ly93d3cuQ0FjZXJ0Lm9yZy9jYS5jcnQwRgYDVR0gBD8wPTA7BgQrBgEFMDMwMQYI
+KwYBBQUHAgEWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5waHA/aWQ9MTAw
+NAYJYIZIAYb4QgEIBCcWJWh0dHA6Ly93d3cuQ0FjZXJ0Lm9yZy9pbmRleC5waHA/
+aWQ9MTAwUAYJYIZIAYb4QgENBEMWQVRvIGdldCB5b3VyIG93biBjZXJ0aWZpY2F0
+ZSBmb3IgRlJFRSwgZ28gdG8gaHR0cDovL3d3dy5DQWNlcnQub3JnMA0GCSqGSIb3
+DQEBBQUAA4ICAQDQjXJDogH/NiU53JEUaw7jEF7qgp8vLjO2AXkwwpdKOWKS6lm9
+BQXiKs6HUdVYwsdST30kSvF1dD9Y9gCgFVyN662Tk2LwaPyKRq9cxlUXwqKEczfE
+4yFPhYXS1giIGL8aSUx0lok6KWRXNgspgBIZ+0tFV+9GLNTP5y+ofU2ME1xw6+zM
+tN/rgN2Xt6oVO24tJlKWVvodIgfq8QPscxZHwFqyHWh8hsL8q4mSDZZ0B7wHy51F
+gliDzcq+WG8tk29WV++7uHRnN2rqJSoGc91IAHN2YmBW/mCeiqPH0Ms1x7Oo1DuZ
+C5pc1GGyxGun252NxRM9jEz7UsWqHRCCyyA6Tyo2E6b3gdiatmohW1JIUTk+WONZ
+41+Htgz+vhGFzTOnAWUQLapPllNeYjs/b1Ub8vpycx2O0FU3ZPtC+41GriPHQ2rJ
+/ToQVI4ZAHUp7O6n4+r7Onhf5qylVeux+Qzy+IV2Db7rj0KXBoHjW3S0hIfIJE0x
+1T5Ldj+YBFvCLvd6RrcNgoS/HaKAV/42AENy1V1eBBP6TJ8kmXWVbyRpzRFgZmmB
+z6jLle2M0/kaPER2s5QFvxu+Y6mwrQ237im9oPHzY4kGv8eeF+AMUOmSC+M5jb3m
++IafDexcFnjchflKWV/RRHSj28kJ3ops1lgpkx4+TJo3M62Udepphw0ItA==
 -----END CERTIFICATE-----
index 8c2479c..6291ea2 100644 (file)
@@ -29,7 +29,7 @@
 
 <body>
 
-<style type="text/css"> 
+<style type="text/css">
 table#TAB1 {border-color: rgb(173,197,215); border-top: solid 5px rgb(173,197,215); border-left: solid 5px rgb(173,197,215);}
 table#TAB1 td { border: 0 }
 </style>
@@ -121,7 +121,7 @@ table#TAB1 td { border: 0 }
 <?php
        for ( $i = 0; $i < 2; $i++ ) {
            echo '<tr>', "\n", '    <td>';
-           if ( $i < 1 ) { echo _("Registered Trade Names");} 
+           if ( $i < 1 ) { echo _("Registered Trade Names");}
            echo '</td>', "\n";
            for ( $j = 1; $j <= 3; $j++ ) {
                printf("    <td align=\"%s\"><input size=\"25\" maxlength=\"80\" name=\"dba%d\"></td>\n", $j > 2 ? "right" : ($j > 2 ? "center" : "left") , $i * 3 + $j);
@@ -189,7 +189,7 @@ table#TAB1 td { border: 0 }
 <?php
        echo _("Make sure you have read and agreed with the CAcert Community Agreement");
 ?>
- (<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php">CCA</a>)</i><br></td>
+ (<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.html">CCA</a>)</i><br></td>
 </tr>
 <tr><td colspan=2><p></td></tr>
 <tr>
@@ -210,7 +210,7 @@ table#TAB1 td { border: 0 }
 <?php
        echo ' '. _("I agree to the CAcert Community Agreement.").' (';
 ?>
-<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php">CCA</a>)</dd></td>
+<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.html">CCA</a>)</dd></td>
 </tr>
 <tr>
     <td colspan="2"><input type="checkbox" checked name="checked" value="2">
@@ -281,7 +281,7 @@ table#TAB1 td { border: 0 }
 <tr><td colspan="2"></td><tr>
 </tbody>
 </table>
-<div style="text-align: right;"><small><small><span>&copy; 
+<div style="text-align: right;"><small><small><span>&copy;
 <?php
        echo date('Y').' CAcert Inc., V2, '.date('Y-n-j');
 ?>
@@ -327,7 +327,7 @@ table#TAB1 td { border: 0 }
                'http://svn.cacert.org/CAcert/Policies/OrganisationAssurancePolicy/OrganisationAssuranceSubPolicyEurope.html',
            'Organisation Assurance Subpolicy for the United States' =>
                'http://svn.cacert.org/CAcert/Policies/OrganisationAssurancePolicy/OrganizationAssuranceSubPolicyUnitedStates.html',
-       ); 
+       );
        $cnt = 0;
        while( list($key, $ref) = each($policies) ) {
            $cnt++;
@@ -338,7 +338,7 @@ table#TAB1 td { border: 0 }
         }
        if( $cnt > 0 ) {
            echo "</dd>\n";
-       } 
+       }
        echo "</dl>\n";
        echo _("Submit the form").': <button type="submit" style="background-color: rgb(112, 154, 186); color: white;"> '._("generate PDF file");
        echo "</button>\n";
index 4f69247..5a161b4 100644 (file)
@@ -70,7 +70,7 @@ define('REV', '$Revision: 1.4 $');
 **     On transliteration and abbreviation of a name:
 **        if shoes a std way show accepted conversion as pdf comment
 **     Orientation: on landscape (dflt) print 2-up
-**     PDF URL links are used to web, wiki, and faq for more info search 
+**     PDF URL links are used to web, wiki, and faq for more info search
 **     Only on non-ascii chars in a name the utf8 routines are loaded
 **     PDF reader has wiki info url's and easy email feedback
 **  ENABLED:
@@ -94,7 +94,7 @@ define('REV', '$Revision: 1.4 $');
 **         recode(), recode_string(0 is said to have too many (japanese) defeats
 **         recode_string() is only used on GET[] input (html->utf-8),
 **  UTF-8  use routines from http://www.sourceforge.net/projects/phputf8
-**         which replaces php recode() package. 
+**         which replaces php recode() package.
 **         on many places own utf-8 handling code exists and is loaded (tcpdf problem)
 **  _() translation routine. The returned HTML string is translated to utf-8 string.
 **  the GET() routines expects utf-8 code (see test defs) but might be changed
@@ -221,7 +221,7 @@ define('REV', '$Revision: 1.4 $');
 **     Form Revision string is generated from RCS revision string.
 **     More info on PDF fields:
 **        http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf
-**     
+**
 */
 
 // use next define if you test this code
@@ -281,7 +281,7 @@ if( defined( 'TEST' ) ) {
         // trade office information
         $_GET['identifier'] = "NL-238603-AA02";
         $_GET['tor'] = "Kamer van Koophandel";
-        $_GET['torregion'] = "Amsterdam"; 
+        $_GET['torregion'] = "Amsterdam";
         //$_GET['tordate'] = "2008-04-03";
         // contact name(s)
         $_GET['domain1'] = "oophaga.org, oophaga.nl";
@@ -345,7 +345,7 @@ define('ARBIT', WIKI."/ArbitrationForum");
 // CAcert Community Agreement
 define('CCA', "CAcertCommunityAgreement"); // default policy to print
 define('POLICY','policy/'); // default polciy doc directory
-define('EXT','.php'); // default polciy doc extention, should be html
+define('EXT','.html'); // default polciy doc extention, should be html
 /* finger print CAcert Root Key */ // should obtain this automatically
 define('CLASS1_SHA1','135C EC36 F49C B8E9 3B1A B270 CD80 8846 76CE 8F33');
 define('CLASS3_SHA1','AD7C 3F64 FC44 39FE F4E9 0BE8 F47C 6CFA 8AAD FDCE');
@@ -427,7 +427,7 @@ class COAPPDF extends TCPDF {
        strtok(REV, " ");
         return(strtok(" "));
     }
-    
+
     /*public*/ function myHeader( $msg = NULL, $url = NULL )
     {
        static $my_url = NULL;
@@ -450,7 +450,7 @@ class COAPPDF extends TCPDF {
        $this->setXY($this->lMargin, MARGIN+3);
        $this->y0 = $this->getY();
      }
+
      // undefine default header and footer handling
      // default routines do not handle columns
      function Footer() { }
@@ -458,7 +458,7 @@ class COAPPDF extends TCPDF {
      function Mark( $string = "" ) {
          return array( $string, 1+substr_count($string,'.') );
      }
+
      /*public*/ function myFooter( $msg = NULL, $url = NULL )
      {
        static $my_url = NULL;
@@ -501,7 +501,7 @@ class COAPPDF extends TCPDF {
            $this->StopTransform();
            $this->SetXY($savex,$savey);
         }
+
         if( !empty($font_fam ) )
             $this->SetFont($font_fam,$font_style,$font_size);
         $this->InFooter = false;
@@ -519,16 +519,16 @@ class COAPPDF extends TCPDF {
 
     //number of colums
     /*protected*/ var $ncols=1;
-    
+
     // columns width
     /*protected*/ var $colwidth=0;
 
     // space between columns
     /*protected*/ var $column_space = 0;
-    
+
     //Current column
     /*protected*/ var $col=0;
-    
+
     //Ordinate of column start
     /*protected*/ var $y0;
 
@@ -570,7 +570,7 @@ class COAPPDF extends TCPDF {
         $this->SetDisplayMode(intval($this->scale), 'SinglePage', 'UseOC');
         return( $format );
     }
-        
+
     //Set position at a given column
     /*private*/ function SetCol($col = -1) {
         static $pagecolwidth = 1.0;
@@ -610,7 +610,7 @@ class COAPPDF extends TCPDF {
            $this->myFooter(); // print footer msg if defined
         }
         if( $col >= $this->ncols ) {
-                $this->addPage(); $col = 0; 
+                $this->addPage(); $col = 0;
                 $this->ScaleXY($this->scale,0,0);
                 $this->y0 = 0;  //no header/footer done...
         } elseif ( $col > 0  AND $col < $this->ncols) {
@@ -710,7 +710,7 @@ class COAPPDF extends TCPDF {
             elseif( preg_match('/\./', $nm ) ) {
                 if( $first_name < 0 ) $first_name = $j;
                 if( $first_name >= 0 ) $success = TRUE; // was abbreviated
-                continue; // title 
+                continue; // title
             }
             if( $first_name < 0 ) $first_name = $j;
             if( $married == 0 ) $fam = $j;
@@ -732,7 +732,7 @@ class COAPPDF extends TCPDF {
             elseif( preg_match('/\./', $nm ) ) $name .= $nm;
             elseif( $j < $fam ) { // need to abbreviate
                  // not utf8
-                 // and abbreviate 
+                 // and abbreviate
                 if( $j == $first_name )
                     $abr = "(". $substr( $nm, 1 ) . ")";
                 else $abr = ".";
@@ -746,7 +746,7 @@ class COAPPDF extends TCPDF {
             $nm = $tk[0];
             if( $ext < 0 AND preg_match('/(^[^A-Z]|\.)/', $nm ) ) continue;
             if( $ext < 0 ) $ext = $j+1;
-            if( preg_match('/\./', $nm ) ) {  $success = TRUE; break; } 
+            if( preg_match('/\./', $nm ) ) {  $success = TRUE; break; }
         }
         return( $success? $name : "" ); // and return abbriviated name
     }
@@ -859,7 +859,7 @@ class COAPPDF extends TCPDF {
             $this->StatementOrganisation($organisation);
             $this->StatementAssurer( $assurer, $assurance );
     }
-    
+
     //Add form and/or CCA (on duplex only when more as one page is printed)
     /*public*/ function PrintForm( $organisation = NULL, $registry = NULL, $assurer = NULL, $page = NULL ) {
 
@@ -1045,7 +1045,7 @@ class COAPPDF extends TCPDF {
         $this->Line($this->lMargin,$tSide+$height,$this->lMargin+$this->colwidth,$tSide+$height);
         $this->Line($this->lMargin+$this->colwidth,$tSide-1, $this->lMargin+$this->colwidth, $tSide+$height);
         $this->SetDrawColor(0);
-       $this->SetY($tSide + $height + 1); // set Y ordinate to plus 7 
+       $this->SetY($tSide + $height + 1); // set Y ordinate to plus 7
         $tSide = -1; $title = "";
        return($this->GetY());
     }
@@ -1078,7 +1078,7 @@ class COAPPDF extends TCPDF {
             if ( BW ) {
                 $this->SetFillColor(241);
             } else {
-                //$this->SetFillColor(173,197,215); 
+                //$this->SetFillColor(173,197,215);
                 $this->SetFillColor(234, 241, 246);
             }
             $this->Rect($this->lMargin+37.5,$this->GetY()+0.1,
@@ -1141,7 +1141,7 @@ class COAPPDF extends TCPDF {
         if( $phone ) {
             $TextProps['value'] = $phone ? $phone : $this->unhtmlentities( _('phone nr') ) . "?";
             $TextProps['userName'] = $this->unhtmlentities( _('For organisation administrators and assurer: provide email address and optionally your phone number.') );
-            $this->TextField($field.'Phone', $this->SetFieldXY($this->lMargin+$this->colwidth-25, $savey, 24), 4.5, $TextProps ); 
+            $this->TextField($field.'Phone', $this->SetFieldXY($this->lMargin+$this->colwidth-25, $savey, 24), 4.5, $TextProps );
             $this->SetFieldXY();
         }
         $savey += 3;
@@ -1156,7 +1156,7 @@ class COAPPDF extends TCPDF {
         if( $email ) {
             $TextProps['value'] = $email ? $email : $this->unhtmlentities( _('email') ) . "?";
             $TextProps['userName'] = $this->unhtmlentities( _('For organisation administrators and assurer: provide email address and optionally your phone number.') );
-            $this->TextField($field.'Email', $this->SetFieldXY($this->lMargin+2+$l, $savey, $this->colwidth-$l-28), 4.5, $TextProps); 
+            $this->TextField($field.'Email', $this->SetFieldXY($this->lMargin+2+$l, $savey, $this->colwidth-$l-28), 4.5, $TextProps);
             $this->SetFieldXY(); $savey += 3;
         }
 // phone number
@@ -1166,7 +1166,7 @@ class COAPPDF extends TCPDF {
     }
 
 // All information of Applicant goes in one table
-/*public*/ function InfoOrganisation( $organisation = NULL, $registry = NULL ){ 
+/*public*/ function InfoOrganisation( $organisation = NULL, $registry = NULL ){
         // Applicant Identity information part
         $tSide = $this->PrintTable($this->unhtmlentities( _('Organisation Identity Information') ))+1;
 
@@ -1220,7 +1220,7 @@ class COAPPDF extends TCPDF {
                          $strg,
                          NULL, NULL, true);
         $this->Ln(0.4);
-        $strg = ""; foreach( $organisation['domains'] as $i ) 
+        $strg = ""; foreach( $organisation['domains'] as $i )
             $strg .= ($strg != "" ? ", " : "") . $i;
         $this->PrintName(
                          $this->unhtmlentities( _('The internet domain name(s) the organisation controls and owns. The names will be checked with WHOIS with e.g. the DNS official top domain registrar e.g. the country ccTLD .<country code> registrar.') ),
@@ -1233,7 +1233,7 @@ class COAPPDF extends TCPDF {
        // contact info o-admin address assuree
         $cnt = $organisation['admincnt'];
         $space = $this->getPageHeight()/$this->scale*100.0 -MINH ; // margin
-        for( $i = 0; $i < $cnt; $i++ )  { // names to be printed 
+        for( $i = 0; $i < $cnt; $i++ )  { // names to be printed
             $this->PrintName(
                     $this->unhtmlentities( _('The organisation administrator (CAcert Assurer) contact information. The administrator is appointed by the organisation director to administer the organisation domain certificates, secure the certificates and maintain them.') ),
                     $this->unhtmlentities( _('Organisation Administrator') ),
@@ -1400,7 +1400,7 @@ class COAPPDF extends TCPDF {
 // get $form, $orientation, $assuree, $assurer, $assurance info
 // FONT and BW are set already
 
-// import info 
+// import info
 $utf8 = false;
 function GET( $key = "" ) {
     global $utf8;
@@ -1457,7 +1457,7 @@ $registry = array (
 $organisation = array (
                    'names'      => array( ), // [0] full name, [>0] DBA's
                    'namecnt'    => 0,
-                   'date'       => my_recode(GET('date')) == "now" ? date("Y-m-d") : 
+                   'date'       => my_recode(GET('date')) == "now" ? date("Y-m-d") :
                                    my_recode(GET('date')),
                    'address'    => my_recode(GET('address')),
                    'state'     => my_recode(GET('state')),
@@ -1507,7 +1507,7 @@ for( $i = 0; $i <= 25 AND $j < 2; $i++ ) {
         if( $domains != "" ) $domains .= ",";
         $domains .= strtolower($name);
     } else $j ++;
-} 
+}
 $i = 0;
 if( $domains ) { // csv list to array and trim white spaces
     $domains = strtok($domains,',');
@@ -1547,7 +1547,7 @@ unset( $i ); unset( $j); unset( $utf8 ); // unset($_GET);
        PDF_UNIT /* mm */,
        /* PDF_PAGE_FORMAT */ $page['format'],
        true
-       ); 
+       );
     $pdf->SetFormat( $page['format']  ); // set paper size scaling
 
 // protection is encryption and this will cause 3.5 times performance loss
@@ -1570,10 +1570,10 @@ unset( $i ); unset( $j); unset( $utf8 ); // unset($_GET);
     $pdf->SetAutoPageBreak(TRUE, MARGIN*0.707);
 
 //set image scale factor
-    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
+    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
 
 //set some language-dependent strings
-    $pdf->setLanguageArray($l); 
+    $pdf->setLanguageArray($l);
 
 //initialize document
     $pdf->AliasNbPages();
@@ -1589,6 +1589,6 @@ unset( $i ); unset( $j); unset( $utf8 ); // unset($_GET);
     $pdf->Output("CAcert COAP.pdf", "I");
 
 //============================================================+
-// END OF FILE                                                 
+// END OF FILE
 //============================================================+
 ?>
index 96c7c75..0034b93 100644 (file)
@@ -28,7 +28,7 @@
        if($type == "reallyemail")
        {
                $emailid = intval($_SESSION['_config']['emailid']);
-               $hash = mysql_escape_string(trim($_SESSION['_config']['hash']));
+               $hash = mysql_real_escape_string(trim($_SESSION['_config']['hash']));
 
                $res = mysql_query("select * from `disputeemail` where `id`='$emailid' and `hash`='$hash'");
                if(mysql_num_rows($res) <= 0)
@@ -81,7 +81,7 @@
        if($type == "email")
        {
                $emailid = intval($_REQUEST['emailid']);
-               $hash = trim(mysql_escape_string(stripslashes($_REQUEST['hash'])));
+               $hash = trim(mysql_real_escape_string(stripslashes($_REQUEST['hash'])));
                if($emailid <= 0 || $hash == "")
                {
                        showheader(_("Email Dispute"));
        if($type == "reallydomain")
        {
                $domainid = intval($_SESSION['_config']['domainid']);
-               $hash = mysql_escape_string(trim($_SESSION['_config']['hash']));
+               $hash = mysql_real_escape_string(trim($_SESSION['_config']['hash']));
 
                $res = mysql_query("select * from `disputedomain` where `id`='$domainid' and `hash`='$hash'");
                if(mysql_num_rows($res) <= 0)
        if($type == "domain")
        {
                $domainid = intval($_REQUEST['domainid']);
-               $hash = trim(mysql_escape_string(stripslashes($_REQUEST['hash'])));
+               $hash = trim(mysql_real_escape_string(stripslashes($_REQUEST['hash'])));
                if($domainid <= 0 || $hash == "")
                {
                        showheader(_("Domain Dispute"));
        if($oldid == "1")
        {
                csrf_check('emaildispute');
-               $email = trim(mysql_escape_string(stripslashes($_REQUEST['dispute'])));
+               $email = trim(mysql_real_escape_string(stripslashes($_REQUEST['dispute'])));
                if($email == "")
                {
                        showheader(_("Email Dispute"));
                }
 
                //check if email belongs to locked account
-               $res = mysql_query("select 1 from `email`, `users` where `email`.`email`='$email' and `email`.`memid`=`users`.`id` and (`users`.`assurer_blocked`=1 or `users`.`locked`=1)");
+               $res = mysql_query("select 1 from `email`, `users` where `email`.`email`='$email' and `email`.`memid`=`users`.`id` and (`users`.`assurer_blocked`=1 or `users`.`locked`=1) and `email`.`deleted` = 0");
                if(mysql_num_rows($res) > 0)
                {
                        showheader(_("Email Dispute"));
        if($oldid == "2")
        {
                csrf_check('domaindispute');
-               $domain = trim(mysql_escape_string(stripslashes($_REQUEST['dispute'])));
+               $domain = trim(mysql_real_escape_string(stripslashes($_REQUEST['dispute'])));
                if($domain == "")
                {
                        showheader(_("Domain Dispute"));
                }
 
                //check if domain belongs to locked account
-               $res = mysql_query("select 1 from `domains`, `users` where `domains`.`domain`='$domain' and `domains`.`memid`=`users`.`id` and (`users`.`assurer_blocked`=1 or `users`.`locked`=1)");
+               $res = mysql_query("select 1 from `domains`, `users` where `domains`.`domain`='$domain' and `domains`.`memid`=`users`.`id` and (`users`.`assurer_blocked`=1 or `users`.`locked`=1) and `domains`.`deleted` = 0");
                if(mysql_num_rows($res) > 0)
                {
                        showheader(_("Domain Dispute"));
                                 $bits = explode(":", $line, 2);
                                 $line = trim($bits[1]);
                                 if(!in_array($line, $addy) && $line != "")
-                                        $addy[] = trim(mysql_escape_string(stripslashes($line)));
+                                        $addy[] = trim(mysql_real_escape_string(stripslashes($line)));
                         }
                 } else {
                         if(is_array($adds))
                                                 $line = $bit;
                                 }
                                 if(!in_array($line, $addy) && $line != "")
-                                        $addy[] = trim(mysql_escape_string(stripslashes($line)));
+                                        $addy[] = trim(mysql_real_escape_string(stripslashes($line)));
                         }
                 }
 
 
        if($oldid == "5")
        {
-                $authaddy = trim(mysql_escape_string(stripslashes($_REQUEST['authaddy'])));
+                $authaddy = trim(mysql_real_escape_string(stripslashes($_REQUEST['authaddy'])));
 
                 if(!in_array($authaddy, $_SESSION['_config']['addy']) || $authaddy == "")
                 {
                $domainid = intval($_SESSION['_config']['domainid']);
                $memid = intval($_SESSION['_config']['memid']);
                $oldmemid = intval($_SESSION['_config']['oldmemid']);
-               $domain = mysql_escape_string($_SESSION['_config']['domain']);
+               $domain = mysql_real_escape_string($_SESSION['_config']['domain']);
 
                $hash = make_hash();
                $query = "insert into `disputedomain` set `domain`='$domain',`memid`='".$_SESSION['profile']['id']."',
index e4650a0..9da24c2 100644 (file)
Binary files a/www/images/cacert4.png and b/www/images/cacert4.png differ
index e6fc06a..b1efbfe 100644 (file)
@@ -53,7 +53,7 @@ require_once('../includes/notary.inc.php');
                $oldid = 0;
                if(array_key_exists('Q1',$_REQUEST) && $_REQUEST['Q1'])
                {
-                       $_SESSION['lostpw']['A1'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A1']))));
+                       $_SESSION['lostpw']['A1'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A1']))));
 
                        if(stripslashes(strtolower($_SESSION['lostpw']['A1'])) == strtolower($_SESSION['lostpw']['user']['A1']))
                                $answers++;
@@ -61,7 +61,7 @@ require_once('../includes/notary.inc.php');
                }
                if(array_key_exists('Q2',$_REQUEST) && $_REQUEST['Q2'])
                {
-                       $_SESSION['lostpw']['A2'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A2']))));
+                       $_SESSION['lostpw']['A2'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A2']))));
 
                        if(stripslashes(strtolower($_SESSION['lostpw']['A2'])) == strtolower($_SESSION['lostpw']['user']['A2']))
                                $answers++;
@@ -69,7 +69,7 @@ require_once('../includes/notary.inc.php');
                }
                if(array_key_exists('Q3',$_REQUEST) && $_REQUEST['Q3'])
                {
-                       $_SESSION['lostpw']['A3'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A3']))));
+                       $_SESSION['lostpw']['A3'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A3']))));
 
                        if(stripslashes(strtolower($_SESSION['lostpw']['A3'])) == strtolower($_SESSION['lostpw']['user']['A3']))
                                $answers++;
@@ -77,7 +77,7 @@ require_once('../includes/notary.inc.php');
                }
                if(array_key_exists('Q4',$_REQUEST) && $_REQUEST['Q4'])
                {
-                       $_SESSION['lostpw']['A4'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A4']))));
+                       $_SESSION['lostpw']['A4'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A4']))));
 
                        if(stripslashes(strtolower($_SESSION['lostpw']['A4'])) == strtolower($_SESSION['lostpw']['user']['A4']))
                                $answers++;
@@ -85,15 +85,15 @@ require_once('../includes/notary.inc.php');
                }
                if(array_key_exists('Q5',$_REQUEST) && $_REQUEST['Q5'])
                {
-                       $_SESSION['lostpw']['A5'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A5']))));
+                       $_SESSION['lostpw']['A5'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A5']))));
 
                        if(stripslashes(strtolower($_SESSION['lostpw']['A5'])) == strtolower($_SESSION['lostpw']['user']['A5']))
                                $answers++;
                        $body .= "System: ".$_SESSION['lostpw']['user']['A5']."\nEntered: ".stripslashes(strip_tags($_SESSION['lostpw']['A5']))."\n";
                }
 
-               $_SESSION['lostpw']['pw1'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['newpass1']))));
-               $_SESSION['lostpw']['pw2'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['newpass2']))));
+               $_SESSION['lostpw']['pw1'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['newpass1']))));
+               $_SESSION['lostpw']['pw2'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['newpass2']))));
 
                if($answers < $_SESSION['lostpw']['total'] || $answers < 3)
                {
@@ -130,7 +130,7 @@ require_once('../includes/notary.inc.php');
 
        if($oldid == 5 && $process != "")
        {
-               $email = $_SESSION['lostpw']['email'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['email']))));
+               $email = $_SESSION['lostpw']['email'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['email']))));
                $_SESSION['lostpw']['day'] = intval($_REQUEST['day']);
                $_SESSION['lostpw']['month'] = intval($_REQUEST['month']);
                $_SESSION['lostpw']['year'] = intval($_REQUEST['year']);
@@ -141,10 +141,17 @@ require_once('../includes/notary.inc.php');
                {
                        $id = $oldid;
                        $oldid = 0;
-                       $_SESSION['_config']['errmsg'] = _("Unable to match your details with any user accounts on file");
+                       $_SESSION['_config']['errmsg'] = _('Unable to match your details with any user accounts on file');
                } else {
-                       $id = 6;
                        $_SESSION['lostpw']['user'] = mysql_fetch_assoc($res);
+                       //check wether account is locked or deleted
+                       if ($_SESSION['lostpw']['user']['locked'] == 1 || $_SESSION['lostpw']['user']['deleted'] != 0) {
+                               $id = $oldid;
+                               $oldid = 0;
+                               $_SESSION['_config']['errmsg'] = sprintf(_('The account is not available, please get in contact with support (%s).'),'support@cacert.org');
+                       } else {
+                               $id = 6;
+                       }
                }
        }
 
@@ -186,8 +193,8 @@ require_once('../includes/notary.inc.php');
 
                $_SESSION['_config']['errmsg'] = "";
 
-               $email = mysql_escape_string(stripslashes(strip_tags(trim($_REQUEST['email']))));
-               $pword = mysql_escape_string(stripslashes(trim($_REQUEST['pword'])));
+               $email = mysql_real_escape_string(stripslashes(strip_tags(trim($_REQUEST['email']))));
+               $pword = mysql_real_escape_string(stripslashes(trim($_REQUEST['pword'])));
                $query = "select * from `users` where `email`='$email' and (`password`=old_password('$pword') or `password`=sha1('$pword') or
                                                `password`=password('$pword')) and `verified`=1 and `deleted`=0 and `locked`=0";
                $res = mysql_query($query);
@@ -285,26 +292,26 @@ if ($oldid == 52 )
 
                $_SESSION['_config']['errmsg'] = "";
 
-               $_SESSION['signup']['email'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['email']))));
-               $_SESSION['signup']['fname'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['fname']))));
-               $_SESSION['signup']['mname'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['mname']))));
-               $_SESSION['signup']['lname'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['lname']))));
-               $_SESSION['signup']['suffix'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['suffix']))));
+               $_SESSION['signup']['email'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['email']))));
+               $_SESSION['signup']['fname'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['fname']))));
+               $_SESSION['signup']['mname'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['mname']))));
+               $_SESSION['signup']['lname'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['lname']))));
+               $_SESSION['signup']['suffix'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['suffix']))));
                $_SESSION['signup']['day'] = intval($_REQUEST['day']);
                $_SESSION['signup']['month'] = intval($_REQUEST['month']);
                $_SESSION['signup']['year'] = intval($_REQUEST['year']);
-               $_SESSION['signup']['pword1'] = trim(mysql_escape_string(stripslashes($_REQUEST['pword1'])));
-               $_SESSION['signup']['pword2'] = trim(mysql_escape_string(stripslashes($_REQUEST['pword2'])));
-               $_SESSION['signup']['Q1'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['Q1']))));
-               $_SESSION['signup']['Q2'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['Q2']))));
-               $_SESSION['signup']['Q3'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['Q3']))));
-               $_SESSION['signup']['Q4'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['Q4']))));
-               $_SESSION['signup']['Q5'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['Q5']))));
-               $_SESSION['signup']['A1'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A1']))));
-               $_SESSION['signup']['A2'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A2']))));
-               $_SESSION['signup']['A3'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A3']))));
-               $_SESSION['signup']['A4'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A4']))));
-               $_SESSION['signup']['A5'] = trim(mysql_escape_string(stripslashes(strip_tags($_REQUEST['A5']))));
+               $_SESSION['signup']['pword1'] = trim(mysql_real_escape_string(stripslashes($_REQUEST['pword1'])));
+               $_SESSION['signup']['pword2'] = trim(mysql_real_escape_string(stripslashes($_REQUEST['pword2'])));
+               $_SESSION['signup']['Q1'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['Q1']))));
+               $_SESSION['signup']['Q2'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['Q2']))));
+               $_SESSION['signup']['Q3'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['Q3']))));
+               $_SESSION['signup']['Q4'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['Q4']))));
+               $_SESSION['signup']['Q5'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['Q5']))));
+               $_SESSION['signup']['A1'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A1']))));
+               $_SESSION['signup']['A2'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A2']))));
+               $_SESSION['signup']['A3'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A3']))));
+               $_SESSION['signup']['A4'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A4']))));
+               $_SESSION['signup']['A5'] = trim(mysql_real_escape_string(stripslashes(strip_tags($_REQUEST['A5']))));
                $_SESSION['signup']['general'] = intval(array_key_exists('general',$_REQUEST)?$_REQUEST['general']:0);
                $_SESSION['signup']['country'] = intval(array_key_exists('country',$_REQUEST)?$_REQUEST['country']:0);
                $_SESSION['signup']['regional'] = intval(array_key_exists('regional',$_REQUEST)?$_REQUEST['regional']:0);
@@ -393,7 +400,7 @@ if ($oldid == 52 )
                if($score < 3)
                {
                        $id = 1;
-                       $_SESSION['_config']['errmsg'] = _("The Pass Phrase you submitted failed to contain enough differing characters and/or contained words from your name and/or email address. Only scored $score points out of 6.");
+                       $_SESSION['_config']['errmsg'] = sprintf(_("The Pass Phrase you submitted failed to contain enough differing characters and/or contained words from your name and/or email address. Only scored %s points out of 6."), $score);
                }
 
                if($id == 2)
diff --git a/www/policy/AssurancePolicy.html b/www/policy/AssurancePolicy.html
new file mode 100644 (file)
index 0000000..cfa8400
--- /dev/null
@@ -0,0 +1,750 @@
+<!DOCTYPE html>
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Assurance Policy</title>
+
+<!--meta name="CREATED" content="20080530;0" -->
+<!--meta name="CHANGEDBY" content="Teus Hagen" -->
+<!--meta name="CHANGED" content="20080709;12381800" -->
+<!--meta name="CREATEDBY" content="Ian Grigg" -->
+<!--meta name="CHANGEDBY" content="Teus Hagen" -->
+<!--meta name="CHANGEDBY" content="Robert Cruikshank" -->
+<!--meta name="CHANGEDBY" content="Teus Hagen" -->
+<style type="text/css">
+
+P { color: #000000 }
+TD P { color: #000000 }
+H1 { color: #000000 }
+H2 { color: #000000 }
+DT { color: #000000; font-style: italic; }
+DD { color: #000000 }
+H3 { color: #000000 }
+TH P { color: #000000 }
+.r{ text-align: right; }
+.l{ text-align: left; }
+.c{ text-align : center; }
+.vTop{ vertical-align: top; }
+.size075{font-size: .75em;}
+.size1{font-size: 1.1em;}
+.size2{font-size: 1.5em;}
+.size3{font-size: 2em;}
+.parentC {margin-left:auto; margin-right:auto;}
+.padding5 td{padding: 5px;}
+.padding2 td{padding: 2px;}
+.margin0 {margin: 0px;}
+
+</style></head>
+<body style="direction: ltr; color: rgb(0, 0, 0);" lang="en-GB">
+
+<div class="comment">
+<table style="width: 100%;">
+
+<tr>
+<td>
+  Name: AP <a style="color: steelblue" href="https://svn.cacert.org/CAcert/Policies/ControlledDocumentList.html">COD13</a><br>
+  Status: POLICY <a style="color: steelblue" href="https://wiki.cacert.org/PolicyDecisions#p20090105.2">p20090105.2</a><br>
+Editor: <a style="color: steelblue" href="https://wiki.cacert.org/TeusHagen">Teus Hagen</a><br>
+Creation date: 2008-05-30<br>
+Last change by: Iang<br>
+Last change date: 2009-01-08<br>
+  Licence: <a style="color: steelblue" href="https://wiki.cacert.org/Policy#Licence" title="this document is Copyright &copy; CAcert Inc., licensed openly under CC-by-sa with all disputes resolved under DRP.  More at wiki.cacert.org/Policy" > CC-by-sa+DRP </a><br>
+
+</td>
+<td class="r vTop">
+  <a href="https://www.cacert.org/policy/PolicyOnPolicy.html"><img src="images/cacert-policy.png" alt="AP Status - POLICY" height="31" width="88" style="border-style: none;"></a>
+
+</td>
+</tr>
+</table>
+</div>
+
+
+<h1>Assurance Policy for CAcert Community Members</h1>
+
+<h2 id="s0">0. Preamble</h2>
+<h3 id="s0.1">0.1. Definition of Terms</h3>
+<dl>
+<dt>Member</dt>
+<dd> A Member is an individual who has agreed to the CAcert
+Community Agreement
+(<a href="https://www.cacert.org/policy/CAcertCommunityAgreement.html" target="_blank">CCA</a>)
+and has created successfully
+a CAcert login account on the CAcert web site. </dd>
+<dt>Assurance</dt>
+<dd> Assurance is the process by which a Member of CAcert
+Community (Assurer) identifies an individual (<span lang="en-US">Assuree</span>).
+</dd>
+<dt>Prospective Member</dt>
+<dd> An individual who participates in the process of Assurance,
+but has not yet created a CAcert login account. </dd>
+<dt>Name</dt>
+<dd> A Name is the full name of an individual.
+</dd>
+<dt>Secondary Distinguishing Feature</dt>
+<dd> An additional personal data item of the Member
+that assists discrimination from Members with similar full names.
+(Currently this is the Date of Birth (DoB).)
+</dd>
+</dl>
+
+<h3 id="s0.2">0.2. The CAcert Web of Trust</h3>
+<p>
+In face-to-face meetings,
+an Assurer allocates a number of Assurance Points
+to the Member being Assured.
+CAcert combines the Assurance Points
+into a global <i>Web-of-Trust</i> (or "WoT").
+</p>
+<p>
+CAcert explicitly chooses to meet its various goals by
+construction of a Web-of-Trust of all Members.
+</p>
+
+<h3 id="s0.3">0.3. Related Documentation</h3>
+<p>
+Documentation on Assurance is split between this
+Assurance Policy (AP) and the
+<a href="https://wiki.cacert.org/AssuranceHandbook2" target="_blank">Assurance
+Handbook</a>. The policy is controlled by Configuration Control
+Specification
+(<a href="https://svn.cacert.org/CAcert/Policies/ConfigurationControlSpecification.html" target="_blank">CCS</a>)
+under Policy on Policy
+(<a href="https://www.cacert.org/policy/PolicyOnPolicy.html" target="_blank">PoP</a>)
+policy document regime.  Because Assurance is an active area, much
+of the practice is handed over to the Assurance Handbook, which is
+not a controlled policy document, and can more easily respond to
+experience and circumstances. It is also more readable.
+</p>
+<p>
+See also Organisation Assurance Policy (<a href="https://www.cacert.org/policy/OrganisationAssurancePolicy.html" target="_blank">OAP</a>)
+and CAcert Policy Statement (<a href="https://www.cacert.org/policy/CertificationPracticeStatement.html" target="_blank">CPS</a>).
+</p>
+
+<h2 id="s1">1. Assurance Purpose</h2>
+<p>The purpose of Assurance is to add confidence
+in the Assurance Statement made by the CAcert Community of a Member. </p>
+<p>With sufficient assurances, a Member may: (a) issue certificates
+with their assured Name included, (b) participate in assuring others,
+and (c) other related activities. The strength of these activities is
+based on the strength of the assurance. </p>
+
+<h3 id="s1.1">1.1. The Assurance Statement</h3>
+<p>
+The Assurance Statement makes the following claims
+about a person:
+</p>
+<ol>
+<li>
+<p>The person is a bona fide Member. In other words, the
+person is a member of the CAcert Community as defined by the CAcert
+Community Agreement (<a href="https://www.cacert.org/policy/CAcertCommunityAgreement.html" target="_blank">CCA</a>); </p>
+</li>
+<li>
+<p>The Member has a (login) account with CAcert's on-line
+registration and service system; </p>
+</li>
+<li>
+<p>The Member can be determined from any CAcert certificate
+issued by the Account; </p>
+</li>
+<li>
+<p>The Member is bound into CAcert's Arbitration as defined
+by the CAcert Community Agreement; </p>
+</li>
+<li>
+<p>Some personal details of the Member are known to CAcert:
+the individual Name(s), primary and other listed individual email
+address(es), secondary distinguishing feature (e.g. DoB). </p>
+</li>
+</ol>
+<p>The confidence level of the Assurance Statement is expressed by
+the Assurance Points. </p>
+<h3 id="s1.2">1.2. Relying Party Statement</h3>
+<p>The primary goal of the Assurance Statement is for the express
+purpose of certificates to meet the needs of the <em>Relying Party
+Statement</em>, which latter is found in the Certification Practice
+Statement (<a href="https://www.cacert.org/policy/CertificationPracticeStatement.html" target="_blank">CPS</a>).
+</p>
+<p>When a certificate is issued, some of the Assurance Statement may
+be incorporated, e.g. Name. Other parts may be implied, e.g.
+Membership, exact account and status. They all are part of the
+<em>Relying Party Statement</em>. In short, this means that other
+Members of the Community may rely on the information verified by
+Assurance and found in the certificate.</p>
+<p>In particular, certificates are sometimes considered to provide
+reliable indications of e.g. the Member's Name and email address. The
+nature of Assurance, the number of Assurance Points, and other
+policies and processes should be understood as limitations on any
+reliance. </p>
+<h2 id="s2">2. The Member</h2>
+<h3 id="s2.1">2.1. The Member's Name </h3>
+<p>
+At least one individual Name is recorded in the Member's
+CAcert login account.  The general standard of a Name is:
+</p>
+<ul>
+<li>
+<p>
+The Name should be recorded as written in a
+government-issued photo identity document (ID).
+</p>
+</li>
+<li>
+<p>
+The Name should be recorded as completely as possible.
+That is, including all middle names, any titles and extensions,
+without abbreviations, and without transliteration of characters.
+</p>
+</li>
+<li>
+<p>The Name is recorded as a string of characters,
+encoded in unicode
+transformation format.</p>
+</li>
+</ul>
+<h3 id="s2.2">2.2. Multiple Names and variations</h3>
+<p>
+In order to handle the contradictions in the above general standard,
+a Member may record multiple Names or multiple variations of a Name
+in her CAcert online Account.
+Examples of variations include married names,
+variations of initials of first or middle names,
+abbreviations of a first name,
+different language or country variations,
+and transliterations of characters in a name.
+</p>
+
+<h3 id="s2.3">2.3. Status and Capabilities</h3>
+<p>
+A Name which has reached
+the level of 50 Assurance Points is defined as an Assured
+Name. An Assured Name can be used in a certificate issued by CAcert.
+A Member with at least one Assured Name has reached the Assured
+Member status.
+Additional capabilities are described in Table 1.
+</p>
+
+<blockquote>
+<p class="l size075"><em>Table 1:
+Assurance Capability</em></p>
+<table class="padding5 margin0" border="1">
+<tbody>
+<tr>
+<td style="width: 10%;">
+<p class="l"><em>Minimum Assurance Points</em></p>
+</td>
+<td style="width: 15%;">
+<p class="l"><em>Capability</em></p>
+</td>
+<td style="width: 15%;">
+<p class="l"><em>Status</em></p>
+</td>
+<td style="width: 60%;">
+<p class="l"><em>Comment</em></p>
+</td>
+</tr>
+<tr class="vTop">
+<td>
+<p class="c">0</p>
+</td>
+<td>
+<p class="l">Request Assurance</p>
+</td>
+<td>
+<p class="l">Prospective Member</p>
+</td>
+<td>
+<p class="l">Individual taking part of an
+Assurance, who does not have created a CAcert login account (yet). The
+allocation of Assurance Points is awaiting login account creation.</p>
+</td>
+</tr>
+<tr class="vTop">
+<td>
+<p class="c">0</p>
+</td>
+<td>
+<p class="l">Request unnamed certificates</p>
+</td>
+<td>
+<p class="l">Member</p>
+</td>
+<td>
+<p class="l">Although the Member's details are
+recorded in the account, they are not highly assured.</p>
+</td>
+</tr>
+<tr class="vTop">
+<td>
+<p class="c">50</p>
+</td>
+<td>
+<p class="l">Request named certificates</p>
+</td>
+<td>
+<p class="l">Assured Member</p>
+</td>
+<td>
+<p class="l">Statements of Assurance: the Name is
+assured to 50 Assurance Points or more</p>
+</td>
+</tr>
+<tr class="vTop">
+<td>
+<p class="c">100</p>
+</td>
+<td>
+<p class="l">Become an Assurer</p>
+</td>
+<td>
+<p class="l">Prospective Assurer</p>
+</td>
+<td>
+<p class="l">Assured to 100 Assurance Points (or
+more) on at least one Name, and passing the Assurer Challenge.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+
+
+<p>
+A Member may check the status of another Member, especially
+for an assurance process.
+Status may be implied from information in a certificate.
+The number of Assurance Points for each Member is not published.
+</p>
+
+<p>
+The CAcert Policy Statement
+(<a href="https://www.cacert.org/policy/CertificationPracticeStatement.html" target="_blank">CPS</a>)
+and other policies may list other capabilities that rely on Assurance
+Points.
+</p>
+
+<h2 id="s3">3. The Assurer</h2>
+<p>An Assurer is a Member with the following: </p>
+<ul>
+<li>
+<p>Is assured to a minimum of 100 Assurance Points; </p>
+</li>
+<li>
+<p>Has passed the CAcert Assurer Challenge. </p>
+</li>
+</ul>
+<p>The Assurer Challenge is administered by the Education Team on
+behalf of the Assurance Officer. </p>
+<h3 id="s3.1">3.1. The Obligations of the Assurer</h3>
+<p>The Assurer is obliged to: </p>
+<ul>
+<li>
+<p>Follow this Assurance Policy; </p>
+</li>
+<li>
+<p>Follow any additional rules of detail laid out by the
+CAcert Assurance Officer; </p>
+</li>
+<li>
+<p>Be guided by the CAcert <a href="https://wiki.cacert.org/AssuranceHandbook2" target="_blank">Assurance Handbook</a> in their
+judgement; </p>
+</li>
+<li>
+<p>Make a good faith effort at identifying and verifying
+Members; </p>
+</li>
+<li>
+<p>Maintain the documentation on each Assurance; </p>
+</li>
+<li>
+<p>Deliver documentation to Arbitration, or as otherwise
+directed by the Arbitrator; </p>
+</li>
+<li>
+<p>Keep up-to-date with developments within the CAcert
+Community. </p>
+</li>
+</ul>
+<h2 id="s4">4. The Assurance</h2>
+<h3 id="s4.1">4.1. The Assurance Process</h3>
+<p>The Assurer conducts the process of Assurance with each
+Member. </p>
+<p>The process consists of: </p>
+<ol>
+<li>
+<p>Voluntary agreement by both Assurer and Member or
+Prospective Member to conduct the Assurance; </p>
+</li>
+<li>
+<p>Personal meeting of Assurer and Member or Prospective
+Member; </p>
+</li>
+<li>
+<p>Recording of essential details on CAcert Assurance
+Programme form; </p>
+</li>
+<li>
+<p>Examination of Identity documents by Assurer and
+verification of recorded details (the Name(s) and Secondary
+Distinguishing Feature, e.g., DoB); </p>
+</li>
+<li>
+<p>Allocation of Assurance Points by Assurer; </p>
+</li>
+<li>
+<p>Optional: supervision of reciprocal Assurance made by
+Assuree (Mutual Assurance); </p>
+</li>
+<li>
+<p>Safekeeping of the CAcert Assurance Programme (<a href="https://www.cacert.org/cap.php" target="_blank">CAP</a>)
+forms by Assurer. </p>
+</li>
+</ol>
+<h3 id="s4.2">4.2. Mutual Assurance</h3>
+<p>Mutual Assurance follows the principle of reciprocity. This
+means
+that the Assurance may be two-way, and that each member participating
+in the Assurance procedure should be able to show evidence of their
+identity to the other. </p>
+<p>In the event that an Assurer is assured by a Member who is not
+certified as an Assurer, the Assurer supervises the Assurance
+procedure and process, and is responsible for the results. </p>
+<p>Reciprocity maintains a balance between the (new) member and
+the
+Assurer, and reduces any sense of power. It is also an important aid
+to the assurance training for future Assurers. </p>
+
+<h3 id="s4.3">4.3. Assurance Points</h3>
+<p>The Assurance applies Assurance Points to each Member which
+measure the increase of confidence in the Statement (above).
+Assurance Points should not be interpreted for any other purpose.
+Note that, even though they are sometimes referred to as <em>Web-of-Trust</em>
+(Assurance) Points, or <em>Trust</em> Points, the meaning
+of the word
+'Trust' is not well defined. </p>
+<p><em>Assurance Points Allocation</em><br>
+An Assurer can allocate a
+number of Assurance Points to the Member according to the Assurer's
+experience (Experience Point system, see below). The allocation of
+the maximum means that the Assurer is 100% confident in the
+information presented: </p>
+<ul>
+<li>
+<p>Detail on form, system, documents, person in accordance; </p>
+</li>
+<li>
+<p>Sufficient quality identity documents have been checked; </p>
+</li>
+<li>
+<p>Assurer's familiarity with identity documents; </p>
+</li>
+<li>
+<p>The Assurance Statement is confirmed. </p>
+</li>
+</ul>
+<p>
+Any lesser confidence should result in less Assurance Points for a
+Name. If the Assurer has no confidence in the information presented,
+then <em>zero</em> Assurance Points may be allocated by the Assurer.
+For example, this may happen if the identity documents are totally
+unfamiliar to the Assurer. The number of Assurance Points from <em>zero</em>
+to <em>maximum</em> is guided by the Assurance Handbook
+and the judgement of the Assurer.
+If there is negative confidence the Assurer should consider
+filing a dispute.
+</p>
+<p>Multiple Names should be allocated Assurance Points
+independently within a single Assurance. </p>
+<p>
+A Member who is not an Assurer may award an Assurer in a
+reciprocal process a maximum of 2 Assurance Points, according to
+her judgement. The Assurer should strive to have the Member allocate
+according to the Member's judgement, and stay on the cautious side;
+the Member new to the assurance process
+should allocate <em>zero</em> Assurance Points
+until she gains some confidence in what is happening.
+</p>
+<p>
+In general, for a Member to reach 50 Assurance Points, the Member must
+have participated in at least two assurances, and
+at least one Name will have been assured to that level.
+</p>
+<p>
+To reach 100 Assurance
+Points, at least one Name of the Assured Member must have been
+assured at least three times.
+</p>
+<p>
+The maximum number of Assurance
+Points which can be allocated for an Assurance under this policy
+and under any act under any
+Subsidiary Policy (below) is 50 Assurance Points.
+</p>
+
+<h3 id="s4.4">4.4. Experience Points</h3>
+<p>The maximum number of Assurance Points that may be awarded by
+an
+Assurer is determined by the Experience Points of the Assurer. </p>
+<blockquote>
+<p class="l size075" ><em>Table 2:
+Maximum of Assurance Points </em>
+</p>
+<table class="padding margin0" border="1" style="width: 15%;">
+<tbody>
+<tr>
+<td>
+<p><em>Assurer's Experience Points</em></p>
+</td>
+<td>
+<p><em>Allocatable Assurance Points</em></p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">0</p>
+</td>
+<td>
+<p class="c">10</p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">10</p>
+</td>
+<td>
+<p class="c">15</p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">20</p>
+</td>
+<td>
+<p class="c">20</p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">30</p>
+</td>
+<td>
+<p class="c">25</p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">40</p>
+</td>
+<td>
+<p class="c">30</p>
+</td>
+</tr>
+<tr>
+<td>
+<p class="c">&gt;=50</p>
+</td>
+<td>
+<p class="c">35</p>
+</td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+<p>An Assurer is given a maximum of 2 Experience Points for every
+completed Assurance. On reaching Assurer status, the Experience
+Points start at 0 (zero). </p>
+<p>Less Experience Points (1) may be given for mass Assurance
+events,
+where each Assurance is quicker. </p>
+<p>Additional Experience Points may be granted temporarily or
+permanently to an Assurer by CAcert Inc.'s Committee (board), on
+recommendation from the Assurance Officer. </p>
+<p>Experience Points are not to be confused with Assurance
+Points. </p>
+<h3 id="s4.5">4.5. CAcert Assurance Programme (CAP) form</h3>
+<p>The CAcert Assurance Programme (<a href="https://www.cacert.org/cap.php" target="_blank">CAP</a>)
+form requests the following details of each Member or Prospective
+Member: </p>
+<ul>
+<li>
+<p>Name(s), as recorded in the on-line account; </p>
+</li>
+<li>
+<p>Primary email address, as recorded in the on-line account;
+</p>
+</li>
+<li>
+<p>Secondary Distinguishing Feature, as recorded in the
+on-line account (normally, date of birth); </p>
+</li>
+<li>
+<p>Statement of agreement with the CAcert Community
+Agreement; </p>
+</li>
+<li>
+<p>Permission to the Assurer to conduct the Assurance
+(required for privacy reasons); </p>
+</li>
+<li>
+<p>Date and signature of the Assuree. </p>
+</li>
+</ul>
+<p>The CAP form requests the following details of the Assurer: </p>
+<ul>
+<li>
+<p>At least one Name as recorded in the on-line account of
+the Assurer; </p>
+</li>
+<li>
+<p>Assurance Points for each Name in the identity
+document(s); </p>
+</li>
+<li>
+<p>Statement of Assurance; </p>
+</li>
+<li>
+<p>Optional: If the Assurance is reciprocal, then the
+Assurer's email address and Secondary Distinguishing Feature are
+required as well; </p>
+</li>
+<li>
+<p>Date, location of Assurance and signature of Assurer. </p>
+</li>
+</ul>
+<p>The CAP forms are to be kept at least for 7 years by the
+Assurer. </p>
+<h2 id="s5">5. The Assurance Officer</h2>
+<p>The Committee (board) of CAcert Inc. appoints an Assurance
+Officer
+with the following responsibilities: </p>
+<ul>
+<li>
+<p>Reporting to the Committee and advising on all matters to
+do with Assurance; </p>
+</li>
+<li>
+<p>Training and testing of Assurers, in association with the
+Education Team; </p>
+</li>
+<li>
+<p>Updating this Assurance Policy, under the process
+established by Policy on Policy (<a href="https://www.cacert.org/policy/PolicyOnPolicy.html" target="_blank">PoP</a>); </p>
+</li>
+<li>
+<p>Management of all Subsidiary Policies (see below) for
+Assurances, under Policy on Policy; </p>
+</li>
+<li>
+<p>Managing and creating rules of detail or procedure where
+inappropriate for policies; </p>
+</li>
+<li>
+<p>Incorporating rulings from Arbitration into policies,
+procedures or guidelines; </p>
+</li>
+<li>
+<p>Assisting the Arbitrator in any requests; </p>
+</li>
+<li>
+<p>Managing the Assurer Handbook; </p>
+</li>
+<li>
+<p>Maintaining a sufficient strength in the Assurance process
+(web-of-trust) to meet the agreed needs of the Community. </p>
+</li>
+</ul>
+<h2 id="s6">6. Subsidiary Policies</h2>
+<p>The Assurance Officer manages various exceptions and additional
+processes. Each must be covered by an approved Subsidiary Policy
+(refer to <a href="https://www.cacert.org/policy/PolicyOnPolicy.html" target="_blank">Policy on Policy</a> =&gt; CAcert Official Document COD1).
+Subsidiary Policies specify any additional tests of knowledge
+required and variations to process and documentation, within the
+general standard stated here. </p>
+<h3 id="s6.1">6.1. Standard</h3>
+<p>Each Subsidiary Policy must augment and improve the general
+standards in this Assurance Policy. It is the responsibility of each
+Subsidiary Policy to describe how it maintains and improves the
+specific and overall goals. It must describe exceptions and potential
+areas of risk. </p>
+
+<h3 id="s6.2">6.2. High Risk Applications</h3>
+<p>In addition to the Assurance or Experience Points ratings set
+here and in other subsidiary policies, the Assurance Officer or policies can
+designate certain applications as high risk. If so, additional
+measures may be added to the Assurance process that specifically
+address the risks.</p>
+<p>Additional measures may include:
+</p>
+<ul>
+<li>
+<p>Additional information can be required in process of assurance: </p>
+<ul>
+<li>unique numbers of identity documents,</li>
+<li>photocopy of identity documents,</li>
+<li>photo of User,</li>
+<li>address of User.</li>
+</ul>
+<p>Additional Information is to be kept by Assurer, attached to
+CAcert Assurance Programme (<a href="https://www.cacert.org/cap.php" target="_blank">CAP</a>)
+form. Assurance Points allocation by this assurance is unchanged.
+User's CAcert login account should be annotated to record type of
+additional information;</p>
+</li>
+<li>
+<p>Arbitration: </p>
+<ul>
+<li> Member to participate in Arbitration. This confirms
+their acceptance of the forum as well as trains in the process and
+import,
+</li>
+<li> Member to file Arbitration to present case. This
+allows Arbitrator as final authority;
+</li>
+</ul>
+</li>
+<li>
+<p>Additional training; </p>
+</li>
+<li>
+<p>Member to be Assurer (at least 100 Assurance Points and
+passed Assurer Challenge); </p>
+</li>
+<li>
+<p>Member agrees to additional specific agreement(s); </p>
+</li>
+<li>
+<p>Additional checking/auditing of systems data by CAcert
+support administrators. </p>
+</li>
+</ul>
+<p>Applications that might attract additional measures include
+code-signing certificates and administration roles. </p>
+<h2 id="s7">7. Privacy</h2>
+<p>CAcert is a "privacy" organisation, and takes the
+privacy of its Members seriously. The process maintains the security
+and privacy of both parties. </p>
+<p>Information is collected primarily to make claims within the
+certificates requested by users and to contact the Members. It is
+used secondarily for training, testing, administration and other
+internal purposes. </p>
+<p>The Member's information can be accessed under these
+circumstances: </p>
+<ul>
+<li>
+<p>Under Arbitrator ruling, in a duly filed dispute (<a href="https://www.cacert.org/policy/DisputeResolutionPolicy.html" target="_blank">Dispute Resolution Policy</a>
+=&gt; COD7); </p>
+</li>
+<li>
+<p>An Assurer in the process of an Assurance, as permitted on
+the CAcert Assurance Programme (<a href="https://www.cacert.org/cap.php" target="_blank">CAP</a>)
+form; </p>
+</li>
+<li>
+<p>CAcert support administration and CAcert systems
+administration when operating under the authority of Arbitrator or
+under CAcert policy. </p>
+</li>
+</ul>
+<p><a href="http://validator.w3.org/check?uri=referer"><img src="images/valid-html50-blue.png" alt="Valid HTML 5" height="31" width="88"></a></p>
+</body></html>
+
index 4998de5..025d37b 100644 (file)
@@ -1,723 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head>
-<title>Assurance Policy</title>
-
-<meta name="CREATED" content="20080530;0">
-<meta name="CHANGEDBY" content="Teus Hagen">
-<meta name="CHANGED" content="20080709;12381800">
-<meta name="CREATEDBY" content="Ian Grigg">
-<meta name="CHANGEDBY" content="Teus Hagen">
-<meta name="CHANGEDBY" content="Robert Cruikshank">
-<meta name="CHANGEDBY" content="Teus Hagen">
-<style type="text/css">
-<!--
-P { color: #000000 }
-TD P { color: #000000 }
-H1 { color: #000000 }
-H2 { color: #000000 }
-DT { color: #000000 }
-DD { color: #000000 }
-H3 { color: #000000 }
-TH P { color: #000000 }
--->
-</style></head>
-<body style="direction: ltr; color: rgb(0, 0, 0);" lang="en-GB">
-<h1>Assurance Policy for CAcert Community Members</h1>
-<p><a href="PolicyOnPolicy.php"><img src="/images/cacert-policy.png" id="graphics1" alt="CAcert Policy Status == POLICY" align="bottom" border="0" height="33" width="90"></a>
-<br>
-Editor: Teus Hagen<br>
-Creation date: 2008-05-30<br>
-Last change by: Iang<br>
-Last change date: 2009-01-08<br>
-Status: POLICY p20090105.2
-</p>
-
-<h2><a name="0">0.</a> Preamble</h2>
-<h3><a name="0.1">0.1.</a> Definition of Terms</h3>
-<dl>
-<dt><i>Member</i> </dt>
-<dd> A Member is an individual who has agreed to the CAcert
-Community Agreement
-(<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php" target="_blank">CCA</a>)
-and has created successfully
-a CAcert login account on the CAcert web site. </dd>
-<dt> <i>Assurance</i> </dt>
-<dd> Assurance is the process by which a Member of CAcert
-Community (Assurer) identifies an individual (<span lang="en-US">Assuree</span>).
-</dd>
-<dt> <i>Prospective Member</i> </dt>
-<dd> An individual who participates in the process of Assurance,
-but has not yet created a CAcert login account. </dd>
-<dt> <i>Name</i> </dt>
-<dd> A Name is the full name of an individual.
-</dd>
-<dt> <i>Secondary Distinguishing Feature</i>
-</dt>
-<dd> An additional personal data item of the Member
-that assists discrimination from Members with similar full names.
-(Currently this is the Date of Birth (DoB).)
-</dd>
-</dl>
-
-<h3><a name="0.2">0.2.</a> The CAcert Web of Trust</h3>
-<p>
-In face-to-face meetings,
-an Assurer allocates a number of Assurance Points
-to the Member being Assured.
-CAcert combines the Assurance Points
-into a global <i>Web-of-Trust</i> (or "WoT").
-</p>
-<p>
-CAcert explicitly chooses to meet its various goals by
-construction of a Web-of-Trust of all Members.
-</p>
-
-<h3><a name="0.3">0.3.</a> Related Documentation</h3>
-<p>
-Documentation on Assurance is split between this
-Assurance Policy (AP) and the
-<a href="http://wiki.cacert.org/wiki/AssuranceHandbook2" target="_blank">Assurance
-Handbook</a>. The policy is controlled by Configuration Control
-Specification
-(<a href="http://wiki.cacert.org/wiki/PolicyDrafts/ConfigurationControlSpecification" target="_blank">CCS</a>)
-under Policy on Policy
-(<a href="http://www.cacert.org/policy/PolicyOnPolicy.php" target="_blank">PoP</a>)
-policy document regime.  Because Assurance is an active area, much
-of the practice is handed over to the Assurance Handbook, which is
-not a controlled policy document, and can more easily respond to
-experience and circumstances. It is also more readable.
-</p>
-<p>
-See also Organisation Assurance Policy (<a href="http://www.cacert.org/policy/OrganisationAssurancePolicy.php" target="_blank">OAP</a>)
-and CAcert Policy Statement (<a href="http://www.cacert.org/policy/CertificationPracticeStatement.php" target="_blank">CPS</a>).
-</p>
-
-<h2><a name="1">1.</a> Assurance Purpose</h2>
-<p>The purpose of Assurance is to add confidence
-in the Assurance Statement made by the CAcert Community of a Member. </p>
-<p>With sufficient assurances, a Member may: (a) issue certificates
-with their assured Name included, (b) participate in assuring others,
-and (c) other related activities. The strength of these activities is
-based on the strength of the assurance. </p>
-
-<h3><a name="1.1">1.1.</a>The Assurance Statement</h3>
-<p>
-The Assurance Statement makes the following claims
-about a person:
-</p>
-<ol>
-<li>
-<p>The person is a bona fide Member. In other words, the
-person is a member of the CAcert Community as defined by the CAcert
-Community Agreement (<a href="http://www.cacert.org/policy/CAcertCommunityAgreement.php" target="_blank">CCA</a>); </p>
-</li>
-<li>
-<p>The Member has a (login) account with CAcert's on-line
-registration and service system; </p>
-</li>
-<li>
-<p>The Member can be determined from any CAcert certificate
-issued by the Account; </p>
-</li>
-<li>
-<p>The Member is bound into CAcert's Arbitration as defined
-by the CAcert Community Agreement; </p>
-</li>
-<li>
-<p>Some personal details of the Member are known to CAcert:
-the individual Name(s), primary and other listed individual email
-address(es), secondary distinguishing feature (e.g. DoB). </p>
-</li>
-</ol>
-<p>The confidence level of the Assurance Statement is expressed by
-the Assurance Points. </p>
-<h3><a name="1.2">1.2.</a>Relying Party Statement</h3>
-<p>The primary goal of the Assurance Statement is for the express
-purpose of certificates to meet the needs of the <i>Relying Party
-Statement</i>, which latter is found in the Certification Practice
-Statement (<a href="http://www.cacert.org/policy/CertificationPracticeStatement.php" target="_blank">CPS</a>).
-</p>
-<p>When a certificate is issued, some of the Assurance Statement may
-be incorporated, e.g. Name. Other parts may be implied, e.g.
-Membership, exact account and status. They all are part of the
-<i>Relying Party Statement</i>. In short, this means that other
-Members of the Community may rely on the information verified by
-Assurance and found in the certificate.</p>
-<p>In particular, certificates are sometimes considered to provide
-reliable indications of e.g. the Member's Name and email address. The
-nature of Assurance, the number of Assurance Points, and other
-policies and processes should be understood as limitations on any
-reliance. </p>
-<h2><a name="2">2.</a> The Member</h2>
-<h3><a name="2.1">2.1.</a> The Member's Name </h3>
-<p>
-At least one individual Name is recorded in the Member's
-CAcert login account.  The general standard of a Name is:
-</p>
-<ul>
-<li>
-<p>
-The Name should be recorded as written in a
-government-issued photo identity document (ID).
-</p>
-</li>
-<li>
-<p>
-The Name should be recorded as completely as possible.
-That is, including all middle names, any titles and extensions,
-without abbreviations, and without transliteration of characters.
-</p>
-</li>
-<li>
-<p>The Name is recorded as a string of characters,
-encoded in <span lang="en-US">unicode</span>
-transformation format.</p>
-</li>
-</ul>
-<h3><a name="2.2">2.2.</a> Multiple Names and variations</h3>
-<p>
-In order to handle the contradictions in the above general standard,
-a Member may record multiple Names or multiple variations of a Name
-in her CAcert online Account.
-Examples of variations include married names,
-variations of initials of first or middle names,
-abbreviations of a first name,
-different language or country variations,
-and transliterations of characters in a name.
-</p>
-
-<h3><a name="2.3">2.3.</a> Status and Capabilities</h3>
-<p>
-A Name which has reached
-the level of 50 Assurance Points is defined as an Assured
-Name. An Assured Name can be used in a certificate issued by CAcert.
-A Member with at least one Assured Name has reached the Assured
-Member status.
-Additional capabilities are described in Table 1.
-</p>
-
-<blockquote>
-<p align="left"><font size="2"><i>Table 1:
-Assurance Capability</i></font></p>
-<table border="1" cellpadding="5" cellspacing="0">
-<tbody>
-<tr>
-<td width="10%">
-<p align="left"><i>Minimum Assurance Points</i></p>
-</td>
-<td width="15%">
-<p align="left"><i>Capability</i></p>
-</td>
-<td width="15%">
-<p align="left"><i>Status</i></p>
-</td>
-<td width="60%">
-<p align="left"><i>Comment</i></p>
-</td>
-</tr>
-<tr valign="top">
-<td>
-<p align="center">0</p>
-</td>
-<td>
-<p align="left">Request Assurance</p>
-</td>
-<td>
-<p align="left">Prospective Member</p>
-</td>
-<td>
-<p align="left">Individual taking part of an
-Assurance, who does not have created a CAcert login account (yet). The
-allocation of Assurance Points is awaiting login account creation.</p>
-</td>
-</tr>
-<tr valign="top">
-<td>
-<p align="center">0</p>
-</td>
-<td>
-<p align="left">Request unnamed certificates</p>
-</td>
-<td>
-<p align="left">Member</p>
-</td>
-<td>
-<p align="left">Although the Member's details are
-recorded in the account, they are not highly assured.</p>
-</td>
-</tr>
-<tr valign="top">
-<td>
-<p align="center">50</p>
-</td>
-<td>
-<p align="left">Request named certificates</p>
-</td>
-<td>
-<p align="left">Assured Member</p>
-</td>
-<td>
-<p align="left">Statements of Assurance: the Name is
-assured to 50 Assurance Points or more</p>
-</td>
-</tr>
-<tr valign="top">
-<td>
-<p align="center">100</p>
-</td>
-<td>
-<p align="left">Become an Assurer</p>
-</td>
-<td>
-<p align="left">Prospective Assurer</p>
-</td>
-<td>
-<p align="left">Assured to 100 Assurance Points (or
-more) on at least one Name, and passing the Assurer Challenge.</p>
-</td>
-</tr>
-</tbody>
-</table>
-</blockquote>
-
-
-<p>
-A Member may check the status of another Member, especially
-for an assurance process.
-Status may be implied from information in a certificate.
-The number of Assurance Points for each Member is not published.
-</p>
-
-<p>
-The CAcert Policy Statement
-(<a href="http://www.cacert.org/policy/CertificationPracticeStatement.php" target="_blank">CPS</a>)
-and other policies may list other capabilities that rely on Assurance
-Points.
-</p>
-
-<h2><a name="3">3.</a> The Assurer</h2>
-<p>An Assurer is a Member with the following: </p>
-<ul>
-<li>
-<p>Is assured to a minimum of 100 Assurance Points; </p>
-</li>
-<li>
-<p>Has passed the CAcert Assurer Challenge. </p>
-</li>
-</ul>
-<p>The Assurer Challenge is administered by the Education Team on
-behalf of the Assurance Officer. </p>
-<h3><a name="3.1">3.1.</a> The Obligations of the Assurer</h3>
-<p>The Assurer is obliged to: </p>
-<ul>
-<li>
-<p>Follow this Assurance Policy; </p>
-</li>
-<li>
-<p>Follow any additional rules of detail laid out by the
-CAcert Assurance Officer; </p>
-</li>
-<li>
-<p>Be guided by the CAcert <a href="http://wiki.cacert.org/wiki/AssuranceHandbook2" target="_blank">Assurance Handbook</a> in their
-judgement; </p>
-</li>
-<li>
-<p>Make a good faith effort at identifying and verifying
-Members; </p>
-</li>
-<li>
-<p>Maintain the documentation on each Assurance; </p>
-</li>
-<li>
-<p>Deliver documentation to Arbitration, or as otherwise
-directed by the Arbitrator; </p>
-</li>
-<li>
-<p>Keep up-to-date with developments within the CAcert
-Community. </p>
-</li>
-</ul>
-<h2><a name="4">4.</a> The Assurance</h2>
-<h3><a name="4.1">4.1.</a> The Assurance Process</h3>
-<p>The Assurer conducts the process of Assurance with each
-Member. </p>
-<p>The process consists of: </p>
-<ol>
-<li>
-<p>Voluntary agreement by both Assurer and Member or
-Prospective Member to conduct the Assurance; </p>
-</li>
-<li>
-<p>Personal meeting of Assurer and Member or Prospective
-Member; </p>
-</li>
-<li>
-<p>Recording of essential details on CAcert Assurance
-Programme form; </p>
-</li>
-<li>
-<p>Examination of Identity documents by Assurer and
-verification of recorded details (the Name(s) and Secondary
-Distinguishing Feature, e.g., DoB); </p>
-</li>
-<li>
-<p>Allocation of Assurance Points by Assurer; </p>
-</li>
-<li>
-<p>Optional: supervision of reciprocal Assurance made by
-Assuree (Mutual Assurance); </p>
-</li>
-<li>
-<p>Safekeeping of the CAcert Assurance Programme (<a href="http://www.cacert.org/cap.php" target="_blank">CAP</a>)
-forms by Assurer. </p>
-</li>
-</ol>
-<h3><a name="4.2">4.2.</a> Mutual Assurance</h3>
-<p>Mutual Assurance follows the principle of reciprocity. This
-means
-that the Assurance may be two-way, and that each member participating
-in the Assurance procedure should be able to show evidence of their
-identity to the other. </p>
-<p>In the event that an Assurer is assured by a Member who is not
-certified as an Assurer, the Assurer supervises the Assurance
-procedure and process, and is responsible for the results. </p>
-<p>Reciprocity maintains a balance between the (new) member and
-the
-Assurer, and reduces any sense of power. It is also an important aid
-to the assurance training for future Assurers. </p>
-
-<h3><a name="4.3">4.3.</a> Assurance Points</h3>
-<p>The Assurance applies Assurance Points to each Member which
-measure the increase of confidence in the Statement (above).
-Assurance Points should not be interpreted for any other purpose.
-Note that, even though they are sometimes referred to as <i>Web-of-Trust</i>
-(Assurance) Points, or <i>Trust</i> Points, the meaning
-of the word
-'Trust' is not well defined. </p>
-<p><i>Assurance Points Allocation</i><br>
-An Assurer can allocate a
-number of Assurance Points to the Member according to the Assurer's
-experience (Experience Point system, see below). The allocation of
-the maximum means that the Assurer is 100% confident in the
-information presented: </p>
-<ul>
-<li>
-<p>Detail on form, system, documents, person in accordance; </p>
-</li>
-<li>
-<p>Sufficient quality identity documents have been checked; </p>
-</li>
-<li>
-<p>Assurer's familiarity with identity documents; </p>
-</li>
-<li>
-<p>The Assurance Statement is confirmed. </p>
-</li>
-</ul>
-<p>
-Any lesser confidence should result in less Assurance Points for a
-Name. If the Assurer has no confidence in the information presented,
-then <i>zero</i> Assurance Points may be allocated by the Assurer.
-For example, this may happen if the identity documents are totally
-unfamiliar to the Assurer. The number of Assurance Points from <i>zero</i>
-to <i>maximum</i> is guided by the Assurance Handbook
-and the judgement of the Assurer.
-If there is negative confidence the Assurer should consider
-filing a dispute.
-</p>
-<p>Multiple Names should be allocated Assurance Points
-independently within a single Assurance. </p>
-<p>
-A Member who is not an Assurer may award an Assurer in a
-reciprocal process a maximum of 2 Assurance Points, according to
-her judgement. The Assurer should strive to have the Member allocate
-according to the Member's judgement, and stay on the cautious side;
-the Member new to the assurance process
-should allocate <i>zero</i> Assurance Points
-until she gains some confidence in what is happening.
-</p>
-<p>
-In general, for a Member to reach 50 Assurance Points, the Member must
-have participated in at least two assurances, and
-at least one Name will have been assured to that level.
-</p>
-<p>
-To reach 100 Assurance
-Points, at least one Name of the Assured Member must have been
-assured at least three times.
-</p>
-<p>
-The maximum number of Assurance
-Points which can be allocated for an Assurance under this policy
-and under any act under any
-Subsidiary Policy (below) is 50 Assurance Points.
-</p>
-
-<h3><a name="4.4">4.4.</a> Experience Points</h3>
-<p>The maximum number of Assurance Points that may be awarded by
-an
-Assurer is determined by the Experience Points of the Assurer. </p>
-<blockquote>
-<p align="left"><font size="2"><i>Table 2:
-Maximum of Assurance Points </i></font>
-</p>
-<table border="1" cellpadding="2" cellspacing="0" width="15%">
-<tbody>
-<tr>
-<td>
-<p><i>Assurer's Experience Points</i></p>
-</td>
-<td>
-<p><i>Allocatable Assurance Points</i></p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">0</p>
-</td>
-<td>
-<p align="center">10</p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">10</p>
-</td>
-<td>
-<p align="center">15</p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">20</p>
-</td>
-<td>
-<p align="center">20</p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">30</p>
-</td>
-<td>
-<p align="center">25</p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">40</p>
-</td>
-<td>
-<p align="center">30</p>
-</td>
-</tr>
-<tr>
-<td>
-<p align="center">&gt;=50</p>
-</td>
-<td>
-<p align="center">35</p>
-</td>
-</tr>
-</tbody>
-</table>
-</blockquote>
-<p>An Assurer is given a maximum of 2 Experience Points for every
-completed Assurance. On reaching Assurer status, the Experience
-Points start at 0 (zero). </p>
-<p>Less Experience Points (1) may be given for mass Assurance
-events,
-where each Assurance is quicker. </p>
-<p>Additional Experience Points may be granted temporarily or
-permanently to an Assurer by CAcert Inc.'s Committee (board), on
-recommendation from the Assurance Officer. </p>
-<p>Experience Points are not to be confused with Assurance
-Points. </p>
-<h3><a name="4.5">4.5.</a> CAcert Assurance Programme (CAP) form</h3>
-<p>The CAcert Assurance Programme (<a href="http://www.cacert.org/cap.php" target="_blank">CAP</a>)
-form requests the following details of each Member or Prospective
-Member: </p>
-<ul>
-<li>
-<p>Name(s), as recorded in the on-line account; </p>
-</li>
-<li>
-<p>Primary email address, as recorded in the on-line account;
-</p>
-</li>
-<li>
-<p>Secondary Distinguishing Feature, as recorded in the
-on-line account (normally, date of birth); </p>
-</li>
-<li>
-<p>Statement of agreement with the CAcert Community
-Agreement; </p>
-</li>
-<li>
-<p>Permission to the Assurer to conduct the Assurance
-(required for privacy reasons); </p>
-</li>
-<li>
-<p>Date and signature of the Assuree. </p>
-</li>
-</ul>
-<p>The CAP form requests the following details of the Assurer: </p>
-<ul>
-<li>
-<p>At least one Name as recorded in the on-line account of
-the Assurer; </p>
-</li>
-<li>
-<p>Assurance Points for each Name in the identity
-document(s); </p>
-</li>
-<li>
-<p>Statement of Assurance; </p>
-</li>
-<li>
-<p>Optional: If the Assurance is reciprocal, then the
-Assurer's email address and Secondary Distinguishing Feature are
-required as well; </p>
-</li>
-<li>
-<p>Date, location of Assurance and signature of Assurer. </p>
-</li>
-</ul>
-<p>The CAP forms are to be kept at least for 7 years by the
-Assurer. </p>
-<h2><a name="5">5.</a> The Assurance Officer</h2>
-<p>The Committee (board) of CAcert Inc. appoints an Assurance
-Officer
-with the following responsibilities: </p>
-<ul>
-<li>
-<p>Reporting to the Committee and advising on all matters to
-do with Assurance; </p>
-</li>
-<li>
-<p>Training and testing of Assurers, in association with the
-Education Team; </p>
-</li>
-<li>
-<p>Updating this Assurance Policy, under the process
-established by Policy on Policy (<a href="https://www.cacert.org/policy/PolicyOnPolicy.php" target="_blank">PoP</a>); </p>
-</li>
-<li>
-<p>Management of all Subsidiary Policies (see below) for
-Assurances, under Policy on Policy; </p>
-</li>
-<li>
-<p>Managing and creating rules of detail or procedure where
-inappropriate for policies; </p>
-</li>
-<li>
-<p>Incorporating rulings from Arbitration into policies,
-procedures or guidelines; </p>
-</li>
-<li>
-<p>Assisting the Arbitrator in any requests; </p>
-</li>
-<li>
-<p>Managing the Assurer Handbook; </p>
-</li>
-<li>
-<p>Maintaining a sufficient strength in the Assurance process
-(web-of-trust) to meet the agreed needs of the Community. </p>
-</li>
-</ul>
-<h2><a name="6">6.</a> Subsidiary Policies</h2>
-<p>The Assurance Officer manages various exceptions and additional
-processes. Each must be covered by an approved Subsidiary Policy
-(refer to Policy on Policy =&gt; CAcert Official Document COD1).
-Subsidiary Policies specify any additional tests of knowledge
-required and variations to process and documentation, within the
-general standard stated here. </p>
-<h3><a name="6.1">6.1.</a> Standard</h3>
-<p>Each Subsidiary Policy must augment and improve the general
-standards in this Assurance Policy. It is the responsibility of each
-Subsidiary Policy to describe how it maintains and improves the
-specific and overall goals. It must describe exceptions and potential
-areas of risk. </p>
-
-<h3><a name="6.2">6.2.</a> High Risk Applications</h3>
-<p>In addition to the Assurance or Experience Points ratings set
-here and in other subsidiary policies, the Assurance Officer or policies can
-designate certain applications as high risk. If so, additional
-measures may be added to the Assurance process that specifically
-address the risks.</p>
-<p>Additional measures may include:
-</p>
-<ul>
-<li>
-<p>Additional information can be required in process of assurance: </p>
-<ul>
-<li>unique numbers of identity documents,</li>
-<li>photocopy of identity documents,</li>
-<li>photo of User,</li>
-<li>address of User.</li>
-</ul>
-<p>Additional Information is to be kept by Assurer, attached to
-CAcert Assurance Programme (<a href="http://www.cacert.org/cap.php" target="_blank">CAP</a>)
-form. Assurance Points allocation by this assurance is unchanged.
-User's CAcert login account should be annotated to record type of
-additional information;</p>
-</li>
-<li>
-<p>Arbitration: </p>
-<ul>
-<li> Member to participate in Arbitration. This confirms
-their acceptance of the forum as well as trains in the process and
-import,
-</li>
-<li> Member to file Arbitration to present case. This
-allows Arbitrator as final authority;
-</li>
-</ul>
-</li>
-<li>
-<p>Additional training; </p>
-</li>
-<li>
-<p>Member to be Assurer (at least 100 Assurance Points and
-passed Assurer Challenge); </p>
-</li>
-<li>
-<p>Member agrees to additional specific agreement(s); </p>
-</li>
-<li>
-<p>Additional checking/auditing of systems data by CAcert
-support administrators. </p>
-</li>
-</ul>
-<p>Applications that might attract additional measures include
-code-signing certificates and administration roles. </p>
-<h2><a name="7">7.</a> Privacy</h2>
-<p>CAcert is a "privacy" organisation, and takes the
-privacy of its Members seriously. The process maintains the security
-and privacy of both parties. </p>
-<p>Information is collected primarily to make claims within the
-certificates requested by users and to contact the Members. It is
-used secondarily for training, testing, administration and other
-internal purposes. </p>
-<p>The Member's information can be accessed under these
-circumstances: </p>
-<ul>
-<li>
-<p>Under Arbitrator ruling, in a duly filed dispute (<a href="http://www.cacert.org/policy/DisputeResolutionPolicy.php" target="_blank">Dispute Resolution Policy</a>
-=&gt; COD7); </p>
-</li>
-<li>
-<p>An Assurer in the process of an Assurance, as permitted on
-the CAcert Assurance Programme (<a href="http://www.cacert.org/cap.php" target="_blank">CAP</a>)
-form; </p>
-</li>
-<li>
-<p>CAcert support administration and CAcert systems
-administration when operating under the authority of Arbitrator or
-under CAcert policy. </p>
-</li>
-</ul>
-<p><a href="http://validator.w3.org/check?uri=referer"><img src="/images/valid-xhtml11-blue" id="graphics2" alt="Valid XHTML 1.1" align="bottom" border="0" height="33" width="90"></a>
-</p>
-</body></html>
-
+<?php
+header('HTTP/1.0 301 Moved Permanently');
+header('Location: AssurancePolicy.html');
+exit();
\ No newline at end of file
diff --git a/www/policy/CAcertCommunityAgreement.html b/www/policy/CAcertCommunityAgreement.html
new file mode 100644 (file)
index 0000000..5a5dcce
--- /dev/null
@@ -0,0 +1,593 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
+ <title> CAcert Community Agreement </title>
+<style type="text/css">
+<!--
+.comment {
+        color : steelblue;
+}
+.first-does-not-work {
+        color : red;
+}
+.q {
+        color : green;
+        font-weight: bold;
+        text-align: center;
+        font-style:italic;
+}
+.change {
+        color : blue;
+        font-weight: bold;
+}
+.change2 {
+        color : blue;
+               font-weight: bold;
+}
+.change3 {
+        color : blue;
+               font-weight: bold;
+}
+.change4 {
+        color : blue;
+       font-weight: bold;
+}
+.change5 {
+        color : blue;
+       font-weight: bold;
+}
+.change6 {
+        color : blue;
+       font-weight: bold;
+}
+.change7 {
+        color : blue ;
+       font-weight: bold;
+}
+.change8 {
+        color : blue;
+       font-weight: bold;
+}
+.change9 {
+        color : blue;
+       font-weight: bold;
+}
+.change10 {
+        color : blue;
+       font-weight: bold;
+}
+.change11 {
+        color : blue;
+       font-weight: bold;
+}
+.change12 {
+        color : blue;
+       font-weight: bold;
+}
+.change13 {
+        color : blue;
+       font-weight: bold;
+}
+.strike {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike2 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike4 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike5 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike6 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike7 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike8 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike9 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike10 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike11 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike12 {
+        color : blue;
+        text-decoration:line-through;
+}
+.strike13 {
+        color : blue;
+        text-decoration:line-through;
+}
+-->
+</style>
+
+</head>
+<body>
+
+       <div class="comment">
+       <table width="100%">
+       
+       <tr>
+       <td rowspan="2">
+         Name: CCA <a style="color: steelblue" href="https://svn.cacert.org/CAcert/Policies/ControlledDocumentList.html">COD9</a><br />
+         Status: POLICY <a style="color: steelblue" href="https://wiki.cacert.org/PolicyDecisions#p20080109.1_CCA_to_POLICY_status">p20080109.1</a><br />
+         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="draftadd">DRAFT  <a style="color: steelblue" href="https://wiki.cacert.org/PolicyDecisions#p20140709_CCA_update_to_DRAFT">p20140709</a></span> <br />
+         Editor: <a style="color: steelblue" href="https://wiki.cacert.org/Community/HomePagesMembers/BenediktHeintel">Benedikt</a><br />
+         Licence: <a style="color: steelblue" href="https://wiki.cacert.org/Policy#Licence" title="this document is Copyright &copy; CAcert Inc., licensed openly under CC-by-sa with all disputes resolved under DRP.  More at wiki.cacert.org/Policy">CC-by-sa+DRP</a><br />
+       
+       </td>
+       <td valign="top" align="right">
+         <a href="https://www.cacert.org/policy/PolicyOnPolicy.php"><img src="images/cacert-policy.png" alt="CCA Status - POLICY" height="31" width="88" style="border-style: none;" /></a>
+       
+       <!-- XXXXXXXXXXXXXX delete this going to POLICY -->
+       <br />
+       <a href="https://www.cacert.org/policy/PolicyOnPolicy.php"><img src="images/cacert-draft.png" alt="CCA Status - DRAFT" height="31" width="88" style="border-style: none;" /></a>
+       
+       </td>
+       </tr>
+       </table>
+       </div>
+
+  <h2>CAcert Community Agreement</h2>
+
+  <h3><a name="0">0.</a> Introduction</h3>
+
+  <p>This agreement is between you, being a registered member ("Member") within
+  CAcert's community at large ("Community") and CAcert Incorporated ("CAcert"),
+  being an operator of services to the Community.</p>
+
+  <h4><a name="0.1">0.1</a> Terms</h4>
+
+  <ol>
+    <li>"CAcert" means CAcert Inc., a non-profit Association of Members
+    incorporated in New South Wales, Australia. Note that Association Members
+    are distinct from the Members defined here.</li>
+
+    <li>"Member" means you, a registered participant within CAcert's Community,
+    with an account on the website and the facility to request certificates.
+    Members may be individuals ("natural persons") or organisations ("legal
+    persons").</li>
+
+    <li>"Organisation" is defined under the Organisation Assurance programme,
+    and generally includes corporations and other entities that become Members
+    and become Assured.</li>
+
+    <li>"Community" means all of the Members that are registered by this
+    agreement and other parties by other agreements, all being under CAcert's
+    Arbitration.</li>
+
+    <li>"Non-Related Person" ("NRP"), being someone who is not a Member, is not
+    part of the Community, and has not registered their agreement. <span class=
+    "strike7">Such people are offered the NRP-DaL another agreement allowing
+    the USE of certificates.</span></li>
+
+    <li><span class="strike7">"Non-Related Persons - Disclaimer and Licence"
+    ("NRP-DaL"), another agreement that is offered to persons outside the
+    Community.</span><span class="change7">(withdrawn)</span></li>
+
+    <li>"Arbitration" is the Community's forum for resolving disputes, or
+    jurisdiction.</li>
+
+    <li>"Dispute Resolution Policy" ("DRP" =&gt; COD7) is the policy and rules
+    for resolving disputes.</li>
+
+    <li>"USE" means the act by your software to conduct its tasks,
+    incorporating the certificates according to software procedures.</li>
+
+    <li>"RELY" means your human act in taking on a risk and liability on the
+    basis of the claim(s) bound within a certificate.</li>
+
+    <li>"OFFER" means the your act of making available your certificate to
+    another person. Generally, you install and configure your software to act
+    as your agent and facilite this and other tasks. OFFER does not imply
+    suggestion of reliance.</li>
+
+    <li>"Issue" means creation of a certificate by CAcert. To create a
+    certificate, CAcert affixes a digital signature from the root onto a public
+    key and other information. This act would generally bind a statement or
+    claim, such as your name, to your key.</li>
+
+    <li>"Root" means CAcert's top level key, used for signing certificates for
+    Members. In this document, the term includes any subroots.</li>
+
+    <li>"CAcert Official Document" ("COD" <span class="strike4">=&gt;
+    COD3</span>) <span class="strike4">in a standard format for describing the
+    details of operation and governance essential to a certificate authority.
+    Changes are managed and controlled. CODs define more technical terms. See
+    4.2 for listing of relevant CODs.</span> <span class="change4">is an
+    official managed and controlled document (e. g. a Policy) of
+    CAcert.</span></li>
+
+    <li>"Certification Practice Statement" ("CPS" =&gt; COD6) is the document
+    that controls details about operational matters within CAcert.</li>
+  </ol>
+
+  <h3><a name="1">1.</a> Agreement and Licence</h3>
+
+  <h4><a name="1.1">1.1</a> Agreement</h4>
+
+  <p>You <span class="strike">and CAcert both</span> agree to the terms and
+  conditions in this agreement. Your agreement is given by <span class=
+  "change2">but not limited to</span> <span class="strike2">any of</span></p>
+
+  <ul>
+    <li>your signature on a form to request assurance of identity ("CAP"
+    form),</li>
+
+    <li>your request on the website to join the Community and create an
+    account,</li>
+
+    <li>your request for Organisation Assurance,</li>
+
+    <li>your request for issuing of certificates, or</li>
+
+    <li>if you USE, RELY, or OFFER any certificate issued to you.</li>
+  </ul>
+
+  <p>Your agreement is effective from the date of the first event above that
+  makes this agreement known to you. This Agreement replaces and <span class=
+  "strike2">supercedes prior agreements, including the NRP-DaL.</span>
+  <span class="change2">supersedes any prior agreements.</span></p>
+
+  <h4><a name="1.2">1.2</a> Licence</h4>
+
+  <p>As part of the Community, CAcert offers you these rights:</p>
+
+  <ol>
+    <li>You may USE any certificates issued by CAcert.</li>
+
+    <li>You may RELY on any certificate issued by CAcert, as explained and
+    limited by CPS (COD6).</li>
+
+    <li>You may OFFER certificates issued to you by CAcert to Members for their
+    RELIANCE.</li>
+
+    <li>You may OFFER certificates issued to you by CAcert to NRPs for their
+    USE, within the general principles of the Community.</li>
+
+    <li>This Licence is free of cost, non-exclusive, and
+    non-transferrable.</li>
+  </ol>
+
+  <h4><a name="1.3">1.3</a> Your Contributions</h4>
+
+  <p>You agree to a non-exclusive non-restrictive non-revokable transfer of
+  Licence to CAcert for your contributions. That is, if you post an idea or
+  comment on a CAcert forum, or email it to other Members, your work can be
+  used freely by the Community for CAcert purposes, including placing under
+  CAcert's licences for wider publication.</p>
+
+  <p>You retain authorship rights, and the rights to also transfer
+  non-exclusive rights to other parties. That is, you can still use your ideas
+  and contributions outside the Community.</p>
+
+  <p>Note that the following exceptions override this clause:</p>
+
+  <ol>
+    <li>Contributions to controlled documents are subject to Policy on Policy
+    ("PoP" =&gt; COD1)</li>
+
+    <li>Source code is subject to an open source licence regime.</li>
+
+    <li><span class="change">Personal data</span></li>
+
+    <li><span class="change">Postings under competing licenses if clearly
+    stated when posted</span></li>
+  </ol>
+
+  <h4><a name="1.4">1.4</a> Privacy</h4>
+
+  <p>You give rights to CAcert to store, verify and
+  process and publish your data in accordance with policies in force. These
+  rights include shipping the data to foreign countries for system
+  administration, support and processing purposes. Such shipping will only be
+  done among CAcert Community administrators and Assurers.</p>
+
+  <p>Privacy is further covered in the Privacy Policy ("PP" =&gt; COD5).</p>
+
+  <h3><a name="2">2.</a> Your Risks, Liabilities and Obligations</h3>
+
+  <p>As a Member, you have risks, liabilities and obligations within this agreement.</p>
+
+  <h4><a name="2.1">2.1</a> Risks</h4>
+
+  <ol>
+    <li>A certificate may prove unreliable.</li>
+
+    <li>Your account, keys or other security tools may be
+    lost or otherwise compromised.</li>
+
+    <li>You may find yourself subject to Arbitration (DRP
+    =&gt; COD7).</li>
+  </ol>
+
+  <h4><a name="2.2">2.2</a> Liabilities</h4>
+
+  <ol>
+    <li>You are liable for any penalties as awarded
+    against you by the Arbitrator.</li>
+
+    <li>Remedies are as defined in the DRP (COD7). An
+    Arbitrator's ruling may include monetary amounts, awarded against
+    you.</li>
+
+    <li>Your liability is limited to a total maximum of
+    <b>1000 Euros</b>.</li>
+
+    <li>"Foreign Courts" may assert jurisdiction. These
+    include your local courts, and are outside our Arbitration. Foreign Courts
+    will generally refer to the Arbitration Act of their country, which will
+    generally refer civil cases to Arbitration. The Arbitration Act will not
+    apply to criminal cases.</li>
+  </ol>
+
+  <h4><a name="2.3">2.3</a> Obligations</h4>
+
+  <p>You are obliged</p>
+
+  <ol>
+    <li>to provide accurate information as part of
+    Assurance. You give permission for verification of the information using
+    CAcert-approved methods.</li>
+
+    <li>to make no false representations.</li>
+
+    <li>to submit all your disputes to Arbitration (DRP
+    =&gt; COD7).</li>
+
+    <li><span class="change">to assist the Arbitrator by truthfully providing
+    information, or with any other reasonable request.</span></li>
+
+    <li><span class="change7">to not share your CAcert account.</span></li>
+  </ol>
+
+  <h4><a name="2.4">2.4</a> Principles</h4>
+
+  <p>As a Member of CAcert, you are a member of the Community. You are further
+  obliged to work within the spirit of the Principles of the Community. These
+  are described in <a href=
+  "http://svn.cacert.org/CAcert/principles.html">Principles of the
+  Community</a>.</p>
+
+  <h4><a name="2.5">2.5</a> Security</h4>
+
+  <p>CAcert exists to help you to secure yourself. You are primarily
+  responsible for your own security. Your security obligations include</p>
+
+  <ol>
+    <li>to secure yourself and your computing platform (e. g. PC),</li>
+
+    <li>to keep your email account in good working order,</li>
+
+    <li>to secure your CAcert account (e. g., credentials such as username,
+    password),</li>
+
+    <li>to secure your private keys, <span class="change8">ensuring that they
+    are only used as indicated by the certificate, or by wider agreement with
+    others,</span></li>
+
+    <li>to review certificates for accuracy, and</li>
+
+    <li>when in doubt, notify CAcert,</li>
+
+    <li>when in doubt, take other reasonable actions, such as revoking
+    certificates, changing account credentials, and/or generating new
+    keys.</li>
+  </ol>
+
+  <p>Where, above, 'secure' means to protect to a reasonable degree, in
+  proportion with your risks and the risks of others.</p>
+
+  <h3><a name="3">3.</a> Law and Jurisdiction</h3>
+
+  <h4><a name="3.1">3.1</a> Governing Law</h4>
+
+  <p>This agreement is governed under the law of New South Wales, Australia,
+  being the home of the CAcert Inc. Association.</p>
+
+  <h4><a name="3.2">3.2</a> Arbitration as Forum of Dispute Resolution</h4>
+
+  <p>You agree, with CAcert and all of the Community, that all disputes arising
+  out of or in connection to our use of CAcert services shall be referred to
+  and finally resolved by Arbitration under the rules within the Dispute
+  Resolution Policy of CAcert (DRP =&gt; COD7). The rules select a single
+  Arbitrator chosen by CAcert from among senior Members in the Community. The
+  ruling of the Arbitrator is binding and final on Members and CAcert
+  alike.</p>
+
+  <p>In general, the jurisdiction for resolution of disputes is within CAcert's
+  own forum of Arbitration, as defined and controlled by its own rules (DRP
+  =&gt; COD7).</p>
+
+  <p>We use Arbitration for many purposes beyond the strict nature of disputes,
+  such as governance and oversight. A systems administrator may need
+  authorisation to conduct a non-routine action, and Arbitration may provide
+  that authorisation. Thus, you may find yourself party to Arbitration that is
+  simply support actions, and you may file disputes in order to initiate
+  support actions.</p>
+
+  <h4><a name="3.3">3.3</a> Termination</h4>
+
+  <p><span class="strike12">You may terminate this agreement by resigning from
+  CAcert. You may do this at any time by writing to CAcert's online support
+  forum and filing dispute to resign. All services will be terminated, and your
+  certificates will be revoked. However, some information will continue to be
+  held for certificate processing purposes.</span></p>
+
+  <p><span class="strike12">The provisions on Arbitration survive any
+  termination by you by leaving CAcert. That is, even if you resign from
+  CAcert, you are still bound by the DRP (COD7), and the Arbitrator may
+  reinstate any provision of this agreement or bind you to a ruling.</span></p>
+
+  <p><span class="strike12">Only the Arbitrator may terminate this agreement
+  with you.</span></p>
+
+  <p><span class="change12">The CAcert Community Agreement is
+  terminated</span></p>
+
+  <ol>
+    <li><span class="change12">based on a Policy Group decision following (PoP
+    =&gt; COD1). This terminates the Agreement with every member.</span></li>
+
+    <li><span class="change12">with a ruling of the Arbitrator or the
+    completion of a termination process defined by an Arbitrator ruling (DRP
+    =&gt; COD7).</span></li>
+
+    <li><span class="change12">by the end of existence of a member (i.e. death
+    in the case of individuals).</span></li>
+  </ol>
+
+  <p><span class="change12">A member may declare the wish to resign from CAcert
+  at any time by writing to <em>support AT cacert.org</em>. This triggers a
+  process for termination of this agreement with the member.</span></p>
+
+  <h4><span class="change12"><a name="3.3">3.3a</a> Consequences of
+  Termination</span></h4>
+
+  <p><span class="change12">The termination discontinues the right to USE,
+  OFFER and CREATE personal certificates in any account of the former member.
+  Those certificates will be revoked and all services to the former member will
+  be terminated as soon as possible. However, some information will continue to
+  be held for certificate processing purposes.</span></p>
+
+  <p><span class="change12">The provisions on Arbitration for the time of
+  membership survive any termination. Former members are still bound by the DRP
+  (COD7), and the Arbitrator may reinstate any provision of this agreement or
+  bind them to a ruling.</span></p>
+
+  <p><span class="change12">As far as Organisations are concerned details are
+  also defined in the Organisation Assurance Policy (OAP =&gt;
+  COD11).</span></p>
+
+  <p><span class="change12">Every member learning about the death of a member
+  or termination of existence of a member should notify <em>support AT
+  cacert.org</em>.</span></p>
+
+  <h4><a name="3.4">3.4</a> Changes of Agreement</h4>
+
+  <p>CAcert may from time to time vary the terms of this Agreement. Changes
+  will be done according to the documented CAcert policy for changing policies,
+  and is subject to scrutiny and feedback by the Community. Changes will be
+  notified to you by email to your primary address.</p>
+
+  <p>If you do not agree to the changes, you may terminate as above. Continued
+  use of the service shall be deemed to be agreement by you.</p>
+
+  <h4><a name="3.5">3.5</a> Communication</h4>
+
+  <p><span class="change6">You are responsible for keeping your primary email
+  account in good working order and able to receive emails from
+  CAcert.</span></p>
+
+  <p>Notifications to CAcert are to be sent by email to the address <em>support
+  AT cacert.org</em>. You should attach a digital signature<span class=
+  "strike6">, but need not do so in the event of security or similar
+  urgency</span>.</p>
+
+  <p><span class="strike6">Notifications to you are sent by CAcert to the
+  primary email address registered with your account. You are responsible for
+  keeping your email account in good working order and able to receive emails
+  from CAcert.</span></p>
+
+  <p><span class="strike6">Arbitration is generally conducted by
+  email.</span></p>
+
+  <h3><a name="4">4.</a> Miscellaneous</h3>
+
+  <h4><a name="4.1">4.1</a> <span class="strike10">Other Parties Within the
+  Community</span> <span class="change10">(withdrawn)</span></h4>
+
+  <p class="strike10">As well as you and other Members in the Community, CAcert
+  forms agreements with third party vendors and others. Thus, such parties will
+  also be in the Community. Such agreements are also controlled by the same
+  policy process as this agreement, and they should mirror and reinforce these
+  terms.</p>
+
+  <h4><a name="4.2">4.2</a> References and Other Binding Documents</h4>
+
+  <p class="strike11">This agreement is CAcert Official Document 9 (COD9) and
+  is a controlled document.</p>
+
+  <p>You are also bound by <span class="change11">the Policies of the Community
+  under the control of Policy on Policy ("PoP" =&gt; COD1) and listed in
+  <a href=
+  "https://svn.cacert.org/CAcert/Policies/ControlledDocumentList.html">Controlled
+  Document List</a>.</span></p>
+
+  <ol>
+    <li><span class="strike11"><a href=
+    "http://www.cacert.org/policy/CertificationPracticeStatement.php">Certification
+    Practice Statement</a> (CPS =&gt; COD6).</span></li>
+
+    <li><span class="strike11"><a href=
+    "http://www.cacert.org/policy/DisputeResolutionPolicy.php">Dispute
+    Resolution Policy</a> (DRP =&gt; COD7).</span></li>
+
+    <li><span class="strike11"><a href="PrivacyPolicy.html">Privacy Policy</a>
+    (PP =&gt; COD5).</span></li>
+
+    <li><span class="strike11"><a href=
+    "http://svn.cacert.org/CAcert/principles.html">Principles of the
+    Community</a>.</span></li>
+  </ol>
+
+  <p class="strike11">Where documents are referred to as <i>=&gt; COD x</i>,
+  they are controlled documents under the control of Policy on Policies
+  (COD1).</p>
+
+  <p class="strike11">This agreement and controlled documents above are
+  primary, and may not be replaced or waived except by formal policy channels
+  and by Arbitration.</p>
+
+  <p class="change11">Controlled documents are primary, and may not be replaced
+  or waived except by formal policy channels and Arbitration.</p>
+
+  <p class="change11">This agreement is controlled document COD9.</p>
+
+  <h4><a name="4.3">4.3</a> Informative References</h4>
+
+  <p>The governing documents are in English. Documents may be translated for
+  convenience. Because we cannot control the legal effect of translations, the
+  English documents are the ruling ones.</p>
+
+  <p class="strike9">You are encouraged to be familiar with the Assurer
+  Handbook, which provides a more readable introduction for much of the
+  information needed. The Handbook is not however an agreement, and is
+  overruled by this agreement and others listed above.</p>
+
+  <p class="change9">Beside this Agreement and the Policies, there are other
+  documents, i. e. Policy Guides, Manuals and Handbooks, supporting and
+  explaining this Agreement and the Policies. These documents are not binding
+  and in doubt this Agreement and the Policies are valid.</p>
+
+  <h4><a name="4.4">4.4</a> <span class="strike9">Not Covered in this
+  Agreement</span> <span class="change9">(withdrawn)</span></h4>
+
+  <p class="strike9"><b>Intellectual Property.</b> This Licence does not
+  transfer any intellectual property rights ("IPR") to you. CAcert asserts and
+  maintains its IPR over its roots, issued certificates, brands, logos and
+  other assets. Note that the certificates issued to you are CAcert's
+  intellectual property and you do not have rights other than those stated.</p>
+</body>
+</html>
index 17065f1..e730593 100644 (file)
@@ -1,593 +1,4 @@
-<?='<?xml version="1.0" encoding="utf-8"?>'?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
- <title> CAcert Community Agreement </title>
-<style type="text/css">
-<!--
-.comment {
-        color : steelblue;
-}
-.first-does-not-work {
-        color : red;
-}
-.q {
-        color : green;
-        font-weight: bold;
-        text-align: center;
-        font-style:italic;
-}
-.change {
-        color : blue;
-        font-weight: bold;
-}
-.change2 {
-        color : blue;
-               font-weight: bold;
-}
-.change3 {
-        color : blue;
-               font-weight: bold;
-}
-.change4 {
-        color : blue;
-       font-weight: bold;
-}
-.change5 {
-        color : blue;
-       font-weight: bold;
-}
-.change6 {
-        color : blue;
-       font-weight: bold;
-}
-.change7 {
-        color : blue ;
-       font-weight: bold;
-}
-.change8 {
-        color : blue;
-       font-weight: bold;
-}
-.change9 {
-        color :