/** * Create signed certificate. * * @param Crypto $crypto Crypto engine * @param SignatureAlgorithmIdentifier $algo Algorithm used for signing * @param PrivateKeyInfo $privkey_info Private key used for signing * @return Certificate */ public function sign(Crypto $crypto, SignatureAlgorithmIdentifier $algo, PrivateKeyInfo $privkey_info) { $tbsCert = clone $this; if (!isset($tbsCert->_version)) { $tbsCert->_version = $tbsCert->_determineVersion(); } if (!isset($tbsCert->_serialNumber)) { $tbsCert->_serialNumber = 0; } $tbsCert->_signature = $algo; $data = $tbsCert->toASN1()->toDER(); $signature = $crypto->sign($data, $privkey_info, $algo); return new Certificate($tbsCert, $algo, $signature); }
/** * Create signed attribute certificate. * * @param Crypto $crypto * @param SignatureAlgorithmIdentifier $algo Signature algorithm * @param PrivateKeyInfo $privkey_info Private key * @return AttributeCertificate */ public function sign(Crypto $crypto, SignatureAlgorithmIdentifier $algo, PrivateKeyInfo $privkey_info) { $aci = clone $this; if (!isset($aci->_serialNumber)) { $aci->_serialNumber = 0; } $aci->_signature = $algo; $data = $aci->toASN1()->toDER(); $signature = $crypto->sign($data, $privkey_info, $algo); return new AttributeCertificate($aci, $algo, $signature); }
/** * Create signed CertificationRequest. * * @param Crypto $crypto Crypto engine * @param SignatureAlgorithmIdentifier $algo Algorithm used for signing * @param PrivateKeyInfo $privkey_info Private key used for signing * @return CertificationRequest */ public function sign(Crypto $crypto, SignatureAlgorithmIdentifier $algo, PrivateKeyInfo $privkey_info) { $data = $this->toASN1()->toDER(); $signature = $crypto->sign($data, $privkey_info, $algo); return new CertificationRequest($this, $algo, $signature); }