github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/nifcloud/sslcertificate/server_certificate.go (about)

     1  package sslcertificate
     2  
     3  import (
     4  	"crypto/x509"
     5  	"encoding/pem"
     6  
     7  	"github.com/khulnasoft-lab/defsec/pkg/providers/nifcloud/sslcertificate"
     8  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     9  	defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types"
    10  )
    11  
    12  func adaptServerCertificates(modules terraform.Modules) []sslcertificate.ServerCertificate {
    13  	var serverCertificates []sslcertificate.ServerCertificate
    14  
    15  	for _, resource := range modules.GetResourcesByType("nifcloud_ssl_certificate") {
    16  		serverCertificates = append(serverCertificates, adaptServerCertificate(resource))
    17  	}
    18  	return serverCertificates
    19  }
    20  
    21  func adaptServerCertificate(resource *terraform.Block) sslcertificate.ServerCertificate {
    22  	certificateAttr := resource.GetAttribute("certificate")
    23  	expiryDateVal := defsecTypes.TimeUnresolvable(resource.GetMetadata())
    24  
    25  	if certificateAttr.IsNotNil() {
    26  		expiryDateVal = defsecTypes.TimeUnresolvable(certificateAttr.GetMetadata())
    27  		if certificateAttr.IsString() {
    28  			certificateString := certificateAttr.Value().AsString()
    29  			if block, _ := pem.Decode([]byte(certificateString)); block != nil {
    30  				if cert, err := x509.ParseCertificate(block.Bytes); err == nil {
    31  					expiryDateVal = defsecTypes.Time(cert.NotAfter, certificateAttr.GetMetadata())
    32  				}
    33  			}
    34  		}
    35  	}
    36  
    37  	return sslcertificate.ServerCertificate{
    38  		Metadata:   resource.GetMetadata(),
    39  		Expiration: expiryDateVal,
    40  	}
    41  }