CertificateInfoDto.java

package io.mersel.dss.signer.api.dtos;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import java.util.Date;

/**
 * Keystore içerisindeki sertifika bilgilerini taşıyan DTO.
 */
@Schema(description = "Keystore içerisindeki sertifika detay bilgileri")
public class CertificateInfoDto {

    @Schema(description = "Sertifika alias'ı (keystore içindeki benzersiz adı)", example = "signing-cert-2024")
    private String alias;

    @Schema(description = "Sertifika seri numarası (hexadecimal)", example = "1A2B3C4D5E6F7890")
    private String serialNumberHex;

    @Schema(description = "Sertifika seri numarası (decimal)", example = "1886477714079739024")
    private String serialNumberDec;

    @Schema(description = "Sertifika subject (kime verildiği)", 
            example = "SERIALNUMBER=12345678901,C=TR,CN=JOHN DOE")
    private String subject;

    @Schema(description = "Sertifika issuer (kim tarafından verildiği)",
            example = "C=TR,O=Example CA,CN=Example E-Signature Certificate Authority")
    private String issuer;

    @Schema(description = "Geçerlilik başlangıç tarihi")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
    private Date validFrom;

    @Schema(description = "Geçerlilik bitiş tarihi")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
    private Date validTo;

    @Schema(description = "Private key mevcut mu?", example = "true")
    private boolean hasPrivateKey;

    @Schema(description = "Sertifika tipi", example = "X.509")
    private String type;

    @Schema(description = "İmza algoritması", example = "SHA512withECDSA")
    private String signatureAlgorithm;

    @Schema(description = "Sertifika kullanım alanları (Key Usage)", 
            example = "Digital Signature, Non Repudiation")
    private String keyUsage;

    @Schema(description = "Genişletilmiş kullanım alanları (Extended Key Usage)", 
            example = "Code Signing, Email Protection")
    private String extendedKeyUsage;

    @Schema(description = "Sertifika politikaları (Certificate Policies OIDs)", 
            example = "2.16.792.3.0.4.1.1.4")
    private String certificatePolicies;

    public CertificateInfoDto() {
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }

    public String getSerialNumberHex() {
        return serialNumberHex;
    }

    public void setSerialNumberHex(String serialNumberHex) {
        this.serialNumberHex = serialNumberHex;
    }

    public String getSerialNumberDec() {
        return serialNumberDec;
    }

    public void setSerialNumberDec(String serialNumberDec) {
        this.serialNumberDec = serialNumberDec;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getIssuer() {
        return issuer;
    }

    public void setIssuer(String issuer) {
        this.issuer = issuer;
    }

    public Date getValidFrom() {
        return validFrom;
    }

    public void setValidFrom(Date validFrom) {
        this.validFrom = validFrom;
    }

    public Date getValidTo() {
        return validTo;
    }

    public void setValidTo(Date validTo) {
        this.validTo = validTo;
    }

    public boolean isHasPrivateKey() {
        return hasPrivateKey;
    }

    public void setHasPrivateKey(boolean hasPrivateKey) {
        this.hasPrivateKey = hasPrivateKey;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getSignatureAlgorithm() {
        return signatureAlgorithm;
    }

    public void setSignatureAlgorithm(String signatureAlgorithm) {
        this.signatureAlgorithm = signatureAlgorithm;
    }

    public String getKeyUsage() {
        return keyUsage;
    }

    public void setKeyUsage(String keyUsage) {
        this.keyUsage = keyUsage;
    }

    public String getExtendedKeyUsage() {
        return extendedKeyUsage;
    }

    public void setExtendedKeyUsage(String extendedKeyUsage) {
        this.extendedKeyUsage = extendedKeyUsage;
    }

    public String getCertificatePolicies() {
        return certificatePolicies;
    }

    public void setCertificatePolicies(String certificatePolicies) {
        this.certificatePolicies = certificatePolicies;
    }

    @Override
    public String toString() {
        return "CertificateInfoDto{" +
                "alias='" + alias + '\'' +
                ", serialNumberHex='" + serialNumberHex + '\'' +
                ", subject='" + subject + '\'' +
                ", validFrom=" + validFrom +
                ", validTo=" + validTo +
                ", hasPrivateKey=" + hasPrivateKey +
                ", keyUsage='" + keyUsage + '\'' +
                ", extendedKeyUsage='" + extendedKeyUsage + '\'' +
                '}';
    }
}