//This file is part of DeforaOS Web DaPortal // //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 3 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, see . require_once('./tests.php'); //pki function _pki(Engine $engine, Module $module) { global $config; if($config->set('module::pki', 'root', getcwd().'/../tests/pki') === FALSE) return 2; //authenticate (as administrator) $user = new User($engine, 1, 'admin'); if(($res = $user->authenticate($engine, 'password')) === FALSE || $engine->setCredentials($res) === FALSE) return 3; //create a CA $args = array('title' => 'Test CA', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'ca@localhost', 'days' => 3650, 'keysize' => 1024); $request = new Request('pki', 'submit', FALSE, FALSE, $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 4; //XXX guessing the content ID if(($ca = CAPKIContent::load($engine, $module, 4, 'Test CA')) === FALSE) return 5; //create a child CA $args = array('title' => 'Test child CA', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'childca@localhost', 'days' => 365, 'keysize' => 512, 'sign' => TRUE); $request = $ca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 6; //XXX guessing the content ID if(($childca = CAPKIContent::load($engine, $module, 5, 'Test child CA')) === FALSE) return 7; //create a server (self-signed CA) $args = array('title' => 'server.ca', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'server@localhost', 'days' => 365, 'keysize' => 512, 'type' => 'caserver'); $request = $ca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 8; //XXX guessing the content ID if(($server = CAServerPKIContent::load($engine, $module, 6, 'server.ca')) === FALSE) return 9; //create a server (child CA) $args = array('title' => 'server.child.ca', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'server@localhost', 'days' => 365, 'keysize' => 512, 'type' => 'caserver'); $request = $childca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 10; //create a signed server (self-signed CA) $args = array('title' => 'server2.ca', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'server2@localhost', 'days' => 365, 'keysize' => 512, 'type' => 'caserver', 'sign' => TRUE); $request = $ca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 11; //create a signed server (child CA) $args = array('title' => 'server2.child.ca', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'server2@localhost', 'days' => 365, 'keysize' => 512, 'type' => 'caserver', 'sign' => TRUE); $request = $childca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 12; //create a client (self-signed CA) $args = array('title' => 'client', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'client@server.ca', 'days' => 365, 'keysize' => 512, 'type' => 'caclient'); $request = $ca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 13; //create a client (child CA) $args = array('title' => 'client', 'country' => 'CO', 'state' => 'State', 'locality' => '', 'organization' => '', 'section' => '', 'email' => 'client@server.child.ca', 'days' => 365, 'keysize' => 512, 'type' => 'caclient'); $request = $childca->getRequest('submit', $args); $request->setIdempotent(FALSE); $response = $engine->process($request); $engine->render($response); if($response->getCode() != 0) return 14; //renew a server (child CA) if($server->renew($engine) === FALSE) return 15; return 0; } function pki_cleanup() { $files = array('cacert.csr', 'cacert.pem', 'index.txt', 'index.txt.attr', 'index.txt.attr.old', 'index.txt.old', 'certs/server.ca.pem', 'certs/server2.ca.pem', 'certs/server2.child.ca.pem', 'newcerts/01.pem', 'newcerts/02.pem', 'newcerts/03.pem', 'newcerts/client.pem', 'newcerts/server.ca.pem', 'newcerts/server.child.ca.pem', 'newcerts/server2.ca.pem', 'newcerts/server2.child.ca.pem', 'newreqs/client.csr', 'newreqs/server.ca.csr', 'newreqs/server.child.ca.csr', 'newreqs/server2.ca.csr', 'newreqs/server2.child.ca.csr', 'openssl.cnf', 'private/cakey.pem', 'private/client.key', 'private/server.ca.key', 'private/server.child.ca.key', 'private/server2.ca.key', 'private/server2.child.ca.key', 'serial', 'serial.old'); $directories = array('certs', 'crl', 'newcerts', 'newreqs', 'private'); foreach($files as $f) { _cleanupUnlink(getcwd().'/../tests/pki/Test child CA/'.$f); _cleanupUnlink(getcwd().'/../tests/pki/Test CA/'.$f); } foreach($directories as $d) { _cleanupRmdir(getcwd().'/../tests/pki/Test child CA/'.$d); _cleanupRmdir(getcwd().'/../tests/pki/Test CA/'.$d); } _cleanupRmdir(getcwd().'/../tests/pki/Test child CA'); _cleanupRmdir(getcwd().'/../tests/pki/Test CA'); _cleanupRmdir(getcwd().'/../tests/pki'); } function _cleanupRmdir($directory) { if(!file_exists($directory)) return TRUE; return rmdir($directory); } function _cleanupUnlink($file) { if(!file_exists($file)) return TRUE; return unlink($file); } pki_cleanup(); if(($module = Module::load($engine, 'pki')) === FALSE) exit(2); $ret = _pki($engine, $module); exit($ret); ?>