| 
<?phpnamespace ParagonIE\Certainty\Tests;
 
 use ParagonIE\ConstantTime\Hex;
 use ParagonIE\Certainty\Fetch;
 use ParagonIE\Certainty\LocalCACertBuilder;
 use PHPUnit\Framework\TestCase;
 
 
 /**
 * Class CustomCASupportTest
 * @package ParagonIE\Certainty\Tests
 */
 class CustomCASupportTest extends TestCase
 {
 public function tearDown()
 {
 \unlink(__DIR__ . '/static/combined.pem');
 \unlink(__DIR__ . '/static/ca-certs.json');
 }
 
 /**
 * @covers CustomValidator
 */
 public function testCustom()
 {
 $keypair = \ParagonIE_Sodium_Compat::crypto_sign_keypair();
 $secretKey = \ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
 $publicKey = \ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
 
 $validator = new CustomValidator();
 $validator::setPublicKey(Hex::encode($publicKey));
 
 $latest = (new Fetch())->getLatestBundle();
 LocalCACertBuilder::fromBundle($latest)
 ->setCustomValidator(CustomValidator::class)
 ->setOutputPemFile(__DIR__ . '/static/combined.pem')
 ->setOutputJsonFile(__DIR__ . '/static/ca-certs.json')
 ->setSigningKey($secretKey)
 ->appendCACertFile(__DIR__ . '/static/repeat-globalsign.pem')
 ->save();
 
 $customLatest = (new Fetch(__DIR__ . '/static'))->getLatestBundle();
 $this->assertSame(
 \hash_file('sha256', __DIR__ . '/static/combined.pem'),
 $customLatest->getSha256Sum()
 );
 
 $this->assertTrue($validator::checkEd25519Signature($customLatest));
 }
 
 }
 |