<?php require "../vendor/autoload.php"; use Mdanter\Ecc\Serializer\PublicKey\DerPublicKeySerializer; use Mdanter\X509\Serializer\Certificates\CertificateSubjectSerializer; use Mdanter\X509\Serializer\Signature\DerSignatureSerializer; $curveName = 'secp256k1'; $hasherName = 'sha512'; $serialNo = 0; $math = \Mdanter\Ecc\EccFactory::getAdapter(); $f = new \Mdanter\X509\Factory(); $domain = $f->getDomain($math, $curveName, $hasherName); $G = $domain->getGenerator(); $randomInt = \Mdanter\Ecc\Random\RandomGeneratorFactory::getUrandomGenerator()->generate($G->getOrder()); $k = $G->getPrivateKeyFrom($randomInt); $issuerDetails = ['commonName' => 'test CA']; $issuerSubject = new \Mdanter\X509\Certificates\CertificateSubject($issuerDetails); $ca = $f->getCA($math, $domain, $issuerSubject); $serializer = new \Mdanter\X509\Serializer\Certificates\CertificateSerializer(new CertificateSubjectSerializer(), new DerPublicKeySerializer(), new DerSignatureSerializer()); $validityStart = new DateTime('now'); $validityEnd = new DateTime('now'); $validityEnd->modify("+1 year"); $info = new \Mdanter\X509\Certificates\CertificateInfo(0, $domain->getSigAlgorithm(), $issuerSubject, $issuerSubject, $k->getPublicKey(), $validityStart, $validityEnd); $usage = new \Mdanter\X509\Extensions\Extension\KeyUsage(null); $usage->addKeyUsage(0); $usage->addKeyUsage(1); $usage->addKeyUsage(5); var_dump($usage->getBitString()); $certificate = $ca->createCertificate($serializer, $info, $k); echo $serializer->serialize($certificate);
<?php require "../vendor/autoload.php"; $curveName = 'nist-p521'; $hashAlgo = 'sha256'; $factory = new Mdanter\X509\Factory(); $adapter = \Mdanter\Ecc\EccFactory::getAdapter(); $domain = $factory->getDomain($adapter, $curveName, $hashAlgo); $rbg = \Mdanter\Ecc\Random\RandomGeneratorFactory::getUrandomGenerator(); $G = \Mdanter\Ecc\Curves\CurveFactory::getGeneratorByName($curveName); $randomInt = $rbg->generate($G->getOrder()); $k = $G->getPrivateKeyFrom($randomInt); $Q = $k->getPublicKey(); $subjectDetails = ['commonName' => '127.0.0.1']; $subject = new Mdanter\X509\Certificates\CertificateSubject($subjectDetails); $csr = $factory->getCsr($domain, $subject, $k); $csrSerializer = new \Mdanter\X509\Serializer\Certificates\CsrSerializer(new \Mdanter\X509\Serializer\Certificates\CertificateSubjectSerializer(), new \Mdanter\Ecc\Serializer\PublicKey\DerPublicKeySerializer($adapter), new \Mdanter\X509\Serializer\Signature\DerSignatureSerializer()); $serialized = $csrSerializer->serialize($csr); echo $serialized;