<?php
// Enable error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Include the certificate library
require_once 'includes/certificate_lib.php';
// Create a certificate generator
$generator = new CertificateGenerator();
// Test certificate generation
echo "Testing certificate generation...\n";
echo "=============================\n\n";
// Generate verification code
$verificationCode = $generator->generateVerificationCode();
echo "Verification code: " . $verificationCode . "\n\n";
// Sample certificate data
$certificateData = [
'student_name' => 'Test Student',
'student_email' => '[email protected]',
'course_title' => 'Test Course',
'certificate_number' => 'CERT-' . date('Ymd') . '-0001',
'verification_code' => $verificationCode,
'issue_date' => date('Y-m-d H:i:s'),
'institute_name' => 'Popular Computer Institute',
'director_name' => 'Institute Director'
];
// Generate secure certificate
$signedData = $generator->generateSecureCertificate($certificateData);
echo "Certificate generated successfully:\n";
echo "- Certificate Number: " . $signedData['data']['certificate_number'] . "\n";
echo "- Verification Code: " . $signedData['data']['verification_code'] . "\n";
echo "- Issued At: " . $signedData['issued_at'] . "\n";
echo "- Hash: " . $signedData['hash'] . "\n\n";
// Test verification
echo "Testing certificate verification...\n";
echo "==============================\n\n";
// Create a verifier
$verifier = new CertificateVerifier();
// Verify by verification code
$isValidByCode = $verifier->verifyByCode($verificationCode, $signedData);
echo "Verification by code: " . ($isValidByCode ? "VALID" : "INVALID") . "\n";
// Verify by certificate number
$isValidByNumber = $verifier->verifyByCertificateNumber($certificateData['certificate_number'], $signedData);
echo "Verification by certificate number: " . ($isValidByNumber ? "VALID" : "INVALID") . "\n";
// Test invalid verification
echo "\nTesting invalid verification...\n";
// Tamper with the verification code
$tamperedData = $signedData;
$tamperedData['data']['verification_code'] = 'TAMPERED';
$isValidTampered = $verifier->verifyByCode($verificationCode, $tamperedData);
echo "Verification of tampered data: " . ($isValidTampered ? "VALID (BAD!)" : "INVALID (GOOD!)") . "\n";
echo "\nTest completed!\n";
?>