cert); $model->crt_parse = collect(openssl_x509_parse($model->cert)); if ($model->csr) { $model->public_key = collect(openssl_pkey_get_details(openssl_csr_get_public_key($model->csr))); } }); } public function getValidToAttribute() { return $this->cert ? Carbon::createFromTimestamp($this->crt_parse->get('validTo_time_t')) : NULL; } public function getServiceDescriptionAttribute(): string { if ($this->cert) return Arr::get($this->crt_parse,'name'); else { $dn = ''; $dna = openssl_csr_get_subject($this->csr); foreach ($dna as $k=>$v) { if ($dn) $dn .= ','; $dn .= sprintf('%s=%s',$k,$v); } return $dn; } } public function getServiceNameAttribute(): string { return $this->cert ? Arr::get($this->crt_parse,'subject.CN') : Arr::get(openssl_csr_get_subject($this->csr),'CN'); } public function inContract(): bool { // N/A return FALSE; } }