| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | 
							- <?php
 
- /*
 
-  * This file is part of the PHPASN1 library.
 
-  *
 
-  * Copyright © Friedrich Große <friedrich.grosse@gmail.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace FG\X509\CSR;
 
- use FG\ASN1\OID;
 
- use FG\ASN1\Universal\Integer;
 
- use FG\ASN1\Universal\BitString;
 
- use FG\ASN1\Universal\Sequence;
 
- use FG\X509\CertificateSubject;
 
- use FG\X509\AlgorithmIdentifier;
 
- use FG\X509\PublicKey;
 
- class CSR extends Sequence
 
- {
 
-     const CSR_VERSION_NR = 0;
 
-     protected $subject;
 
-     protected $publicKey;
 
-     protected $signature;
 
-     protected $signatureAlgorithm;
 
-     protected $startSequence;
 
-     /**
 
-      * @param string $commonName
 
-      * @param string $email
 
-      * @param string $organization
 
-      * @param string $locality
 
-      * @param string $state
 
-      * @param string $country
 
-      * @param string $organizationalUnit
 
-      * @param string $publicKey
 
-      * @param string $signature
 
-      * @param string $signatureAlgorithm
 
-      */
 
-     public function __construct($commonName, $email, $organization, $locality, $state, $country, $organizationalUnit, $publicKey, $signature = null, $signatureAlgorithm = OID::SHA1_WITH_RSA_SIGNATURE)
 
-     {
 
-         $this->subject = new CertificateSubject(
 
-             $commonName,
 
-             $email,
 
-             $organization,
 
-             $locality,
 
-             $state,
 
-             $country,
 
-             $organizationalUnit
 
-         );
 
-         $this->publicKey = $publicKey;
 
-         $this->signature = $signature;
 
-         $this->signatureAlgorithm = $signatureAlgorithm;
 
-         if (isset($signature)) {
 
-             $this->createCSRSequence();
 
-         }
 
-     }
 
-     protected function createCSRSequence()
 
-     {
 
-         $versionNr            = new Integer(self::CSR_VERSION_NR);
 
-         $publicKey            = new PublicKey($this->publicKey);
 
-         $signature            = new BitString($this->signature);
 
-         $signatureAlgorithm    = new AlgorithmIdentifier($this->signatureAlgorithm);
 
-         $certRequestInfo  = new Sequence($versionNr, $this->subject, $publicKey);
 
-         // Clear the underlying Construct
 
-         $this->rewind();
 
-         $this->children = [];
 
-         $this->addChild($certRequestInfo);
 
-         $this->addChild($signatureAlgorithm);
 
-         $this->addChild($signature);
 
-     }
 
-     public function getSignatureSubject()
 
-     {
 
-         $versionNr            = new Integer(self::CSR_VERSION_NR);
 
-         $publicKey            = new PublicKey($this->publicKey);
 
-         $certRequestInfo  = new Sequence($versionNr, $this->subject, $publicKey);
 
-         return $certRequestInfo->getBinary();
 
-     }
 
-     public function setSignature($signature, $signatureAlgorithm = OID::SHA1_WITH_RSA_SIGNATURE)
 
-     {
 
-         $this->signature = $signature;
 
-         $this->signatureAlgorithm = $signatureAlgorithm;
 
-         $this->createCSRSequence();
 
-     }
 
-     public function __toString()
 
-     {
 
-         $tmp = base64_encode($this->getBinary());
 
-         for ($i = 0; $i < strlen($tmp); $i++) {
 
-             if (($i + 2) % 65 == 0) {
 
-                 $tmp = substr($tmp, 0, $i + 1)."\n".substr($tmp, $i + 1);
 
-             }
 
-         }
 
-         $result = '-----BEGIN CERTIFICATE REQUEST-----'.PHP_EOL;
 
-         $result .= $tmp.PHP_EOL;
 
-         $result .= '-----END CERTIFICATE REQUEST-----';
 
-         return $result;
 
-     }
 
-     public function getVersion()
 
-     {
 
-         return self::CSR_VERSION_NR;
 
-     }
 
-     public function getOrganizationName()
 
-     {
 
-         return $this->subject->getOrganization();
 
-     }
 
-     public function getLocalName()
 
-     {
 
-         return $this->subject->getLocality();
 
-     }
 
-     public function getState()
 
-     {
 
-         return $this->subject->getState();
 
-     }
 
-     public function getCountry()
 
-     {
 
-         return $this->subject->getCountry();
 
-     }
 
-     public function getOrganizationalUnit()
 
-     {
 
-         return $this->subject->getOrganizationalUnit();
 
-     }
 
-     public function getPublicKey()
 
-     {
 
-         return $this->publicKey;
 
-     }
 
-     public function getSignature()
 
-     {
 
-         return $this->signature;
 
-     }
 
-     public function getSignatureAlgorithm()
 
-     {
 
-         return $this->signatureAlgorithm;
 
-     }
 
- }
 
 
  |