linter

package
v0.0.0-...-65cdad1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2025 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PKIMETAL_NAME         = "pkimetal"
	PKIMETAL_ENDOFRESULTS = "[EndOfResults]"
	NOT_INSTALLED         = "not installed"
)
View Source
const (
	SEVERITYSTRING_META    = "meta"
	SEVERITYSTRING_DEBUG   = "debug"
	SEVERITYSTRING_INFO    = "info"
	SEVERITYSTRING_NOTICE  = "notice"
	SEVERITYSTRING_WARNING = "warning"
	SEVERITYSTRING_ERROR   = "error"
	SEVERITYSTRING_BUG     = "bug"
	SEVERITYSTRING_FATAL   = "fatal"
)

Variables

View Source
var (
	AllProfiles = map[ProfileId]Profile{
		AUTODETECT: {Name: "autodetect", Description: "AUTO-DETECT"},

		RFC5280_ROOT:                 {Name: "rfc5280_root", Source: "RFC5280", Description: "Root CA Certificate"},
		RFC5280_SUBORDINATE:          {Name: "rfc5280_subordinate", Source: "RFC5280", Description: "Subordinate CA Certificate"},
		RFC5280_LEAF:                 {Name: "rfc5280_leaf", Source: "RFC5280", Description: "Leaf Certificate"},
		RFC5280_LEAF_TLSCLIENT:       {Name: "rfc5280_leaf_tlsclient", Source: "RFC5280", Description: "TLS Client Certificate"},
		RFC5280_LEAF_TLSSERVER:       {Name: "rfc5280_leaf_tlsserver", Source: "RFC5280", Description: "TLS Server Certificate"},
		RFC5280_LEAF_SMIME:           {Name: "rfc5280_leaf_smime", Source: "RFC5280", Description: "S/MIME Certificate"},
		RFC5280_LEAF_CODESIGNING:     {Name: "rfc5280_leaf_codesigning", Source: "RFC5280", Description: "Code Signing Certificate"},
		RFC5280_LEAF_TIMESTAMPING:    {Name: "rfc5280_leaf_timestamping", Source: "RFC5280", Description: "Time Stamping Certificate"},
		RFC5280_LEAF_DOCUMENTSIGNING: {Name: "rfc5280_leaf_documentsigning", Source: "RFC5280", Description: "Document Signing Certificate"},
		RFC5280_LEAF_OCSPSIGNING:     {Name: "rfc5280_leaf_ocspsigning", Source: "RFC5280", Description: "OCSP Signing Certificate"},
		RFC5280_CRL:                  {Name: "rfc5280_crl", Source: "RFC5280", Description: "Certificate Revocation List"},
		RFC5280_ARL:                  {Name: "rfc5280_arl", Source: "RFC5280", Description: "Authority Revocation List"},

		RFC6960_OCSPRESPONSE: {Name: "rfc6960_ocspresponse", Source: "RFC6960", Description: "OCSP Response"},

		TBR_ROOT_TLSSERVER:                               {Name: "tbr_root_tlsserver", Source: "TLS BRs", Description: "TLS Server Root CA Certificate"},
		TBR_CROSS_INTERNAL:                               {Name: "tbr_cross_internal", Source: "TLS BRs", Description: "Internal TLS Server Cross-Certified Root CA Certificate"},
		TBR_CROSS_INTERNAL_SUBSCRIBERISSUING:             {Name: "tbr_cross_internal_subscriberissuing", Source: "TLS BRs", Description: "Internal TLS Server Cross-Certified Subordinate CA Certificate"},
		TBR_CROSS_EXTERNAL:                               {Name: "tbr_cross_external", Source: "TLS BRs", Description: "External TLS Server Cross-Certified Root CA Certificate"},
		TBR_CROSS_EXTERNAL_SUBSCRIBERISSUING:             {Name: "tbr_cross_external_subscriberissuing", Source: "TLS BRs", Description: "External TLS Server Cross-Certified Subordinate CA Certificate"},
		TBR_SUBORDINATE_TLSSERVER:                        {Name: "tbr_subordinate_tlsserver", Source: "TLS BRs", Description: "TLS Server Subordinate CA Certificate"},
		TBR_SUBORDINATE_TLSSERVER_INTERNAL_UNCONSTRAINED: {Name: "tbr_subordinate_tlsserver_internal_unconstrained", Source: "TLS BRs", Description: "Unconstrained Internal TLS Server Subordinate CA Certificate"},
		TBR_SUBORDINATE_TLSSERVER_INTERNAL_CONSTRAINED:   {Name: "tbr_subordinate_tlsserver_internal_constrained", Source: "TLS BRs", Description: "Constrained Internal TLS Server Subordinate CA Certificate"},
		TBR_SUBORDINATE_TLSSERVER_EXTERNAL_UNCONSTRAINED: {Name: "tbr_subordinate_tlsserver_external_unconstrained", Source: "TLS BRs", Description: "Unconstrained External TLS Server Subordinate CA Certificate"},
		TBR_SUBORDINATE_TLSSERVER_EXTERNAL_CONSTRAINED:   {Name: "tbr_subordinate_tlsserver_external_constrained", Source: "TLS BRs", Description: "Constrained External TLS Server Subordinate CA Certificate"},
		TBR_SUBORDINATE_PRECERTSIGNING:                   {Name: "tbr_subordinate_precertsigning", Source: "TLS BRs", Description: "Precertificate Signing Subordinate CA Certificate"},
		TBR_LEAF_TLSSERVER_DV:                            {Name: "tbr_leaf_tlsserver_dv", Source: "TLS BRs", Description: "TLS Server Certificate: Domain Validated"},
		TBR_LEAF_TLSSERVER_DV_PRECERTIFICATE:             {Name: "tbr_leaf_tlsserver_dv_precertificate", Source: "TLS BRs", Description: "TLS Server Precertificate: Domain Validated"},
		TBR_LEAF_TLSSERVER_OV:                            {Name: "tbr_leaf_tlsserver_ov", Source: "TLS BRs", Description: "TLS Server Certificate: Organization Validated"},
		TBR_LEAF_TLSSERVER_OV_PRECERTIFICATE:             {Name: "tbr_leaf_tlsserver_ov_precertificate", Source: "TLS BRs", Description: "TLS Server Precertificate: Organization Validated"},
		TBR_LEAF_TLSSERVER_IV:                            {Name: "tbr_leaf_tlsserver_iv", Source: "TLS BRs", Description: "TLS Server Certificate: Individual Validated"},
		TBR_LEAF_TLSSERVER_IV_PRECERTIFICATE:             {Name: "tbr_leaf_tlsserver_iv_precertificate", Source: "TLS BRs", Description: "TLS Server Precertificate: Individual Validated"},
		TBR_LEAF_OCSPSIGNING:                             {Name: "tbr_leaf_ocspsigning", Source: "TLS BRs", Description: "OCSP Signing Certificate"},
		TBR_CRL:                                          {Name: "tbr_crl", Source: "TLS BRs", Description: "Certificate Revocation List"},
		TBR_ARL:                                          {Name: "tbr_arl", Source: "TLS BRs", Description: "Authority Revocation List"},

		TEVG_ROOT_TLSSERVER:                               {Name: "tevg_root_tlsserver", Source: "TLS EVGs", Description: "EV TLS Server Root CA Certificate"},
		TEVG_SUBORDINATE_TLSSERVER:                        {Name: "tevg_subordinate_tlsserver", Source: "TLS EVGs", Description: "EV TLS Subordinate CA Certificate"},
		TEVG_SUBORDINATE_TLSSERVER_EXTERNAL_UNCONSTRAINED: {Name: "tevg_subordinate_tlsserver_external_unconstrained", Source: "TLS EVGs", Description: "Unconstrained External EV TLS Server Subordinate CA Certificate"},
		TEVG_SUBORDINATE_TLSSERVER_EXTERNAL_CONSTRAINED:   {Name: "tevg_subordinate_tlsserver_external_constrained", Source: "TLS EVGs", Description: "Constrained External EV TLS Server Subordinate CA Certificate"},
		TEVG_LEAF_TLSSERVER_EV:                            {Name: "tevg_leaf_tlsserver_ev", Source: "TLS EVGs", Description: "TLS Server Certificate: Extended Validation"},
		TEVG_LEAF_TLSSERVER_EV_PRECERTIFICATE:             {Name: "tevg_leaf_tlsserver_ev_precertificate", Source: "TLS EVGs", Description: "TLS Server Precertificate: Extended Validation"},

		SBR_ROOT_SMIME:                 {Name: "sbr_root_smime", Source: "S/MIME BRs", Description: "S/MIME Root CA Certificate"},
		SBR_SUBORDINATE_SMIME:          {Name: "sbr_subordinate_smime", Source: "S/MIME BRs", Description: "S/MIME Subordinate CA Certificate"},
		SBR_LEAF_SMIME_MV_LEGACY:       {Name: "sbr_leaf_smime_mv_legacy", Source: "S/MIME BRs", Description: "S/MIME Certificate: Mailbox Validated, Legacy"},
		SBR_LEAF_SMIME_MV_MULTIPURPOSE: {Name: "sbr_leaf_smime_mv_multipurpose", Source: "S/MIME BRs", Description: "S/MIME Certificate: Mailbox Validated, Multipurpose"},
		SBR_LEAF_SMIME_MV_STRICT:       {Name: "sbr_leaf_smime_mv_strict", Source: "S/MIME BRs", Description: "S/MIME Certificate: Mailbox Validated, Strict"},
		SBR_LEAF_SMIME_OV_LEGACY:       {Name: "sbr_leaf_smime_ov_legacy", Source: "S/MIME BRs", Description: "S/MIME Certificate: Organization Validated, Legacy"},
		SBR_LEAF_SMIME_OV_MULTIPURPOSE: {Name: "sbr_leaf_smime_ov_multipurpose", Source: "S/MIME BRs", Description: "S/MIME Certificate: Organization Validated, Multipurpose"},
		SBR_LEAF_SMIME_OV_STRICT:       {Name: "sbr_leaf_smime_ov_strict", Source: "S/MIME BRs", Description: "S/MIME Certificate: Organization Validated, Strict"},
		SBR_LEAF_SMIME_SV_LEGACY:       {Name: "sbr_leaf_smime_sv_legacy", Source: "S/MIME BRs", Description: "S/MIME Certificate: Sponsor Validated, Legacy"},
		SBR_LEAF_SMIME_SV_MULTIPURPOSE: {Name: "sbr_leaf_smime_sv_multipurpose", Source: "S/MIME BRs", Description: "S/MIME Certificate: Sponsor Validated, Multipurpose"},
		SBR_LEAF_SMIME_SV_STRICT:       {Name: "sbr_leaf_smime_sv_strict", Source: "S/MIME BRs", Description: "S/MIME Certificate: Sponsor Validated, Strict"},
		SBR_LEAF_SMIME_IV_LEGACY:       {Name: "sbr_leaf_smime_iv_legacy", Source: "S/MIME BRs", Description: "S/MIME Certificate: Individual Validated, Legacy"},
		SBR_LEAF_SMIME_IV_MULTIPURPOSE: {Name: "sbr_leaf_smime_iv_multipurpose", Source: "S/MIME BRs", Description: "S/MIME Certificate: Individual Validated, Multipurpose"},
		SBR_LEAF_SMIME_IV_STRICT:       {Name: "sbr_leaf_smime_iv_strict", Source: "S/MIME BRs", Description: "S/MIME Certificate: Individual Validated, Strict"},

		CSBR_ROOT_CODESIGNING:         {Name: "csbr_root_codesigning", Source: "Code Signing BRs", Description: "Code Signing Root CA Certificate"},
		CSBR_ROOT_TIMESTAMPING:        {Name: "csbr_root_timestamping", Source: "Code Signing BRs", Description: "Time Stamping Root CA Certificate"},
		CSBR_SUBORDINATE_CODESIGNING:  {Name: "csbr_subordinate_codesigning", Source: "Code Signing BRs", Description: "Code Signing Subordinate CA Certificate"},
		CSBR_SUBORDINATE_TIMESTAMPING: {Name: "csbr_subordinate_timestamping", Source: "Code Signing BRs", Description: "Time Stamping Subordinate CA Certificate"},
		CSBR_LEAF_CODESIGNING_OV:      {Name: "csbr_leaf_codesigning_ov", Source: "Code Signing BRs", Description: "Code Signing Certificate: Organization Validated"},
		CSBR_LEAF_CODESIGNING_EV:      {Name: "csbr_leaf_codesigning_ev", Source: "Code Signing BRs", Description: "Code Signing Certificate: Extended Validation"},
		CSBR_LEAF_TIMESTAMPING:        {Name: "csbr_leaf_timestamping", Source: "Code Signing BRs", Description: "Time Stamping Certificate"},

		ETSI_LEAF_TLSSERVER_NCPWNATURALPERSON:                            {Name: "etsi_leaf_tlsserver_ncpwnaturalperson", Source: "EN 319 412", Description: "ETSI Website Authentication Certificate: Natural Person"},
		ETSI_LEAF_TLSSERVER_NCPWNATURALPERSON_PRECERTIFICATE:             {Name: "etsi_leaf_tlsserver_ncpwnaturalperson_precertificate", Source: "EN 319 412", Description: "ETSI Website Authentication Precertificate: Natural Person"},
		ETSI_LEAF_TLSSERVER_NCPWLEGALPERSON:                              {Name: "etsi_leaf_tlsserver_ncpwlegalperson", Source: "EN 319 412", Description: "ETSI Website Authentication Certificate: Legal Person"},
		ETSI_LEAF_TLSSERVER_NCPWLEGALPERSON_PRECERTIFICATE:               {Name: "etsi_leaf_tlsserver_ncpwlegalperson_precertificate", Source: "EN 319 412", Description: "ETSI Website Authentication Precertificate: Legal Person"},
		ETSI_LEAF_TLSSERVER_DVCP:                                         {Name: "etsi_leaf_tlsserver_dvcp", Source: "EN 319 412", Description: "ETSI Server Certificate: Domain Validated"},
		ETSI_LEAF_TLSSERVER_DVCP_PRECERTIFICATE:                          {Name: "etsi_leaf_tlsserver_dvcp_precertificate", Source: "EN 319 412", Description: "ETSI Server Precertificate: Domain Validated"},
		ETSI_LEAF_TLSSERVER_IVCP:                                         {Name: "etsi_leaf_tlsserver_ivcp", Source: "EN 319 412", Description: "ETSI Server Certificate: Individual Validated"},
		ETSI_LEAF_TLSSERVER_IVCP_PRECERTIFICATE:                          {Name: "etsi_leaf_tlsserver_ivcp_precertificate", Source: "EN 319 412", Description: "ETSI Server Precertificate: Individual Validated"},
		ETSI_LEAF_TLSSERVER_OVCP:                                         {Name: "etsi_leaf_tlsserver_ovcp", Source: "EN 319 412", Description: "ETSI Server Certificate: Organization Validated"},
		ETSI_LEAF_TLSSERVER_OVCP_PRECERTIFICATE:                          {Name: "etsi_leaf_tlsserver_ovcp_precertificate", Source: "EN 319 412", Description: "ETSI Server Precertificate: Organization Validated"},
		ETSI_LEAF_TLSSERVER_EVCP:                                         {Name: "etsi_leaf_tlsserver_evcp", Source: "EN 319 412", Description: "ETSI Server Certificate: Extended Validation"},
		ETSI_LEAF_TLSSERVER_EVCP_PRECERTIFICATE:                          {Name: "etsi_leaf_tlsserver_evcp_precertificate", Source: "EN 319 412", Description: "ETSI Server Precertificate: Extended Validation"},
		ETSI_LEAF_TLSSERVER_QEVCPWEIDAS:                                  {Name: "etsi_leaf_tlsserver_qevcpweidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: EV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWEIDAS_PRECERTIFICATE:                   {Name: "etsi_leaf_tlsserver_qevcpweidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: EV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWIVEIDAS:                                 {Name: "etsi_leaf_tlsserver_qncpwiveidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: IV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWIVEIDAS_PRECERTIFICATE:                  {Name: "etsi_leaf_tlsserver_qncpwiveidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: IV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWOVEIDAS:                                 {Name: "etsi_leaf_tlsserver_qncpwoveidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: OV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWOVEIDAS_PRECERTIFICATE:                  {Name: "etsi_leaf_tlsserver_qncpwoveidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: OV (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONEIDAS:                   {Name: "etsi_leaf_tlsserver_qncpwgennaturalpersoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: Natural Person (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONEIDAS_PRECERTIFICATE:    {Name: "etsi_leaf_tlsserver_qncpwgennaturalpersoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: Natural Person (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONEIDAS:                     {Name: "etsi_leaf_tlsserver_qncpwgenlegalpersoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: Legal Person (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONEIDAS_PRECERTIFICATE:      {Name: "etsi_leaf_tlsserver_qncpwgenlegalpersoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: Legal Person (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWNONEIDAS:                               {Name: "etsi_leaf_tlsserver_qevcpwnoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: EV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWNONEIDAS_PRECERTIFICATE:                {Name: "etsi_leaf_tlsserver_qevcpwnoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: EV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWIVNONEIDAS:                              {Name: "etsi_leaf_tlsserver_qncpwivnoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: IV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWIVNONEIDAS_PRECERTIFICATE:               {Name: "etsi_leaf_tlsserver_qncpwivnoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: IV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWOVNONEIDAS:                              {Name: "etsi_leaf_tlsserver_qncpwovnoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: OV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWOVNONEIDAS_PRECERTIFICATE:               {Name: "etsi_leaf_tlsserver_qncpwovnoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: OV (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONNONEIDAS:                {Name: "etsi_leaf_tlsserver_qncpwgennaturalpersonnoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: Natural Person (Qualified, non-EIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONNONEIDAS_PRECERTIFICATE: {Name: "etsi_leaf_tlsserver_qncpwgennaturalpersonnoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: Natural Person (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONNONEIDAS:                  {Name: "etsi_leaf_tlsserver_qncpwgenlegalpersonnoneidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: Legal Person (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONNONEIDAS_PRECERTIFICATE:   {Name: "etsi_leaf_tlsserver_qncpwgenlegalpersonnoneidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Cert: Legal Person (Qualified, non-eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDAS:                              {Name: "etsi_leaf_tlsserver_qevcpwpsd2eidas", Source: "EN 319 412", Description: "ETSI Web Auth Cert: EV, PSD2 (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDAS_PRECERTIFICATE:               {Name: "etsi_leaf_tlsserver_qevcpwpsd2eidas_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: EV, PSD2 (Qualified, eIDAS)"},
		ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDASNONBROWSER:                    {Name: "etsi_leaf_tlsserver_qevcpwpsd2eidasnonbrowser", Source: "EN 319 412", Description: "ETSI Web Auth Cert: EV, PSD2 (Qualified, eIDAS, non-Browser)"},
		ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDASNONBROWSER_PRECERTIFICATE:     {Name: "etsi_leaf_tlsserver_qevcpwpsd2eidasnonbrowser_precertificate", Source: "EN 319 412", Description: "ETSI Web Auth Precert: EV, PSD2 (Qualified, eIDAS, non-Browser)"},
		ETSI_LEAF_NCPNATURALPERSON:                                       {Name: "etsi_leaf_ncpnaturalperson", Source: "EN 319 412", Description: "ETSI Electronic Seal Certificate: Natural Person"},
		ETSI_LEAF_NCPLEGALPERSON:                                         {Name: "etsi_leaf_ncplegalperson", Source: "EN 319 412", Description: "ETSI Electronic Seal Certificate: Legal Person "},
	}

	AllProfilesOrdered                                                               []Profile
	CrlProfileIDs, OcspProfileIDs, RootProfileIDs, SubordinateProfileIDs             []ProfileId
	SbrLeafProfileIDs, TbrTevgLeafProfileIDs, TbrTevgCertificateProfileIDs           []ProfileId
	NonTbrTevgCertificateProfileIDs, NonCabforumProfileIDs, NonCertificateProfileIDs []ProfileId
	EtsiCertificateProfileIDs, EtsiNonBrowserCertificateProfileIDs                   []ProfileId
)

Functions

func GetPackageDetailsFromPipx

func GetPackageDetailsFromPipx(packageName, directory string) (string, string)

func GetPackagePath

func GetPackagePath() string

func GetPackageVersion

func GetPackageVersion(packageNamePrefix string) string

func ProfileIDList

func ProfileIDList(list []ProfileId) string

func StartLinters

func StartLinters(ctx context.Context)

func StopLinters

func StopLinters(ctx context.Context)

func VersionString

func VersionString(version string) string

Types

type Linter

type Linter struct {
	Name         string
	Version      string
	Url          string
	Unsupported  []ProfileId
	NumInstances int
	ReqChannel   chan LintingRequest

	Interface func() LinterInterface
	// contains filtered or unexported fields
}

func (*Linter) Register

func (l *Linter) Register()

type LinterInstance

type LinterInstance struct {
	*Linter

	Mutex  *sync.Mutex
	Stdin  io.WriteCloser
	Stdout *bufio.Scanner
	// contains filtered or unexported fields
}

type LinterInterface

type LinterInterface interface {
	StartInstance() (useHandleRequest bool, directory, cmd string, args []string)
	StopInstance(lin *LinterInstance)
	HandleRequest(ctx context.Context, lin *LinterInstance, lreq *LintingRequest) []LintingResult
	ProcessResult(lresult LintingResult) LintingResult
}

type LinterSlice

type LinterSlice []*Linter
var (
	Linters LinterSlice

	ShutdownWG sync.WaitGroup
)

func (LinterSlice) Len

func (slice LinterSlice) Len() int

func (LinterSlice) Less

func (slice LinterSlice) Less(i, j int) bool

func (LinterSlice) Swap

func (slice LinterSlice) Swap(i, j int)

type LintingRequest

type LintingRequest struct {
	B64Input       string
	DecodedInput   []byte
	Cert           *x509.Certificate
	ProfileId      ProfileId
	QueuedAt       time.Time
	ChecksAdded    []string
	ChecksDisabled []string
	RespChannel    chan LintingResult
}

type LintingResult

type LintingResult struct {
	LinterName string
	Finding    string
	Field      string
	Code       string
	Severity   SeverityLevel
}

type Profile

type Profile struct {
	Name        string
	Source      string
	Description string
	Linters     []*string
}

type ProfileId

type ProfileId int
const (
	AUTODETECT ProfileId = iota
	// RFC5280.
	RFC5280_ROOT
	RFC5280_SUBORDINATE
	RFC5280_LEAF
	RFC5280_LEAF_TLSCLIENT
	RFC5280_LEAF_TLSSERVER
	RFC5280_LEAF_SMIME
	RFC5280_LEAF_CODESIGNING
	RFC5280_LEAF_TIMESTAMPING
	RFC5280_LEAF_DOCUMENTSIGNING
	RFC5280_LEAF_OCSPSIGNING
	RFC5280_CRL
	RFC5280_ARL
	// RFC6960.
	RFC6960_OCSPRESPONSE
	// CABForum TLS Baseline Requirements.
	TBR_ROOT_TLSSERVER
	TBR_CROSS_INTERNAL
	TBR_CROSS_INTERNAL_SUBSCRIBERISSUING
	TBR_CROSS_EXTERNAL
	TBR_CROSS_EXTERNAL_SUBSCRIBERISSUING
	TBR_SUBORDINATE_TLSSERVER
	TBR_SUBORDINATE_TLSSERVER_INTERNAL_UNCONSTRAINED
	TBR_SUBORDINATE_TLSSERVER_INTERNAL_CONSTRAINED
	TBR_SUBORDINATE_TLSSERVER_EXTERNAL_UNCONSTRAINED
	TBR_SUBORDINATE_TLSSERVER_EXTERNAL_CONSTRAINED
	TBR_SUBORDINATE_PRECERTSIGNING
	TBR_LEAF_TLSSERVER_DV
	TBR_LEAF_TLSSERVER_DV_PRECERTIFICATE
	TBR_LEAF_TLSSERVER_OV
	TBR_LEAF_TLSSERVER_OV_PRECERTIFICATE
	TBR_LEAF_TLSSERVER_IV
	TBR_LEAF_TLSSERVER_IV_PRECERTIFICATE
	TBR_LEAF_OCSPSIGNING
	TBR_CRL
	TBR_ARL
	// CABForum TLS Extended Validation Guidelines.
	TEVG_ROOT_TLSSERVER
	TEVG_SUBORDINATE_TLSSERVER
	TEVG_SUBORDINATE_TLSSERVER_EXTERNAL_UNCONSTRAINED
	TEVG_SUBORDINATE_TLSSERVER_EXTERNAL_CONSTRAINED
	TEVG_LEAF_TLSSERVER_EV
	TEVG_LEAF_TLSSERVER_EV_PRECERTIFICATE
	// CABForum S/MIME Baseline Requirements.
	SBR_ROOT_SMIME
	SBR_SUBORDINATE_SMIME
	SBR_LEAF_SMIME_MV_LEGACY
	SBR_LEAF_SMIME_MV_MULTIPURPOSE
	SBR_LEAF_SMIME_MV_STRICT
	SBR_LEAF_SMIME_OV_LEGACY
	SBR_LEAF_SMIME_OV_MULTIPURPOSE
	SBR_LEAF_SMIME_OV_STRICT
	SBR_LEAF_SMIME_SV_LEGACY
	SBR_LEAF_SMIME_SV_MULTIPURPOSE
	SBR_LEAF_SMIME_SV_STRICT
	SBR_LEAF_SMIME_IV_LEGACY
	SBR_LEAF_SMIME_IV_MULTIPURPOSE
	SBR_LEAF_SMIME_IV_STRICT
	// CABForum Code Signing Baseline Requirements.
	CSBR_ROOT_CODESIGNING
	CSBR_ROOT_TIMESTAMPING
	CSBR_SUBORDINATE_CODESIGNING
	CSBR_SUBORDINATE_TIMESTAMPING
	CSBR_LEAF_CODESIGNING_OV
	CSBR_LEAF_CODESIGNING_EV
	CSBR_LEAF_TIMESTAMPING
	// ETSI.
	ETSI_LEAF_TLSSERVER_NCPWNATURALPERSON
	ETSI_LEAF_TLSSERVER_NCPWNATURALPERSON_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_NCPWLEGALPERSON
	ETSI_LEAF_TLSSERVER_NCPWLEGALPERSON_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_DVCP
	ETSI_LEAF_TLSSERVER_DVCP_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_IVCP
	ETSI_LEAF_TLSSERVER_IVCP_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_OVCP
	ETSI_LEAF_TLSSERVER_OVCP_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_EVCP
	ETSI_LEAF_TLSSERVER_EVCP_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QEVCPWEIDAS
	ETSI_LEAF_TLSSERVER_QEVCPWEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWIVEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWIVEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWOVEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWOVEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QEVCPWNONEIDAS
	ETSI_LEAF_TLSSERVER_QEVCPWNONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWIVNONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWIVNONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWOVNONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWOVNONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONNONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWGENNATURALPERSONNONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONNONEIDAS
	ETSI_LEAF_TLSSERVER_QNCPWGENLEGALPERSONNONEIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDAS
	ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDAS_PRECERTIFICATE
	ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDASNONBROWSER
	ETSI_LEAF_TLSSERVER_QEVCPWPSD2EIDASNONBROWSER_PRECERTIFICATE
	ETSI_LEAF_NCPNATURALPERSON
	ETSI_LEAF_NCPLEGALPERSON
)

type SeverityLevel

type SeverityLevel int
const (
	SEVERITY_META SeverityLevel = iota
	SEVERITY_DEBUG
	SEVERITY_INFO
	SEVERITY_NOTICE
	SEVERITY_WARNING
	SEVERITY_ERROR
	SEVERITY_BUG
	SEVERITY_FATAL
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL