analyze

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package analyze provides security analysis for PIDL protocols.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AnalysisOptions

type AnalysisOptions struct {
	// MinSeverity filters risks below this severity level.
	MinSeverity RiskSeverity

	// Categories filters to only these categories (empty = all).
	Categories []RiskCategory

	// EnabledRules specifies which rules to run (empty = all).
	EnabledRules []string

	// DisabledRules specifies which rules to skip.
	DisabledRules []string
}

AnalysisOptions controls analysis behavior.

func DefaultAnalysisOptions

func DefaultAnalysisOptions() AnalysisOptions

DefaultAnalysisOptions returns default analysis options.

type RiskCategory

type RiskCategory string

RiskCategory represents the category of a security risk.

const (
	CategoryTrustBoundary   RiskCategory = "trust_boundary"
	CategoryAuthentication  RiskCategory = "authentication"
	CategoryDataProtection  RiskCategory = "data_protection"
	CategoryTokenSecurity   RiskCategory = "token_security"
	CategoryCommunication   RiskCategory = "communication"
	CategoryConfiguration   RiskCategory = "configuration"
	CategoryProcessSecurity RiskCategory = "process_security"
)

func ParseCategory

func ParseCategory(s string) (RiskCategory, error)

ParseCategory parses a category string.

type RiskSeverity

type RiskSeverity string

RiskSeverity represents the severity level of a security risk.

const (
	// SeverityCritical represents critical security risks.
	SeverityCritical RiskSeverity = "critical"
	// SeverityHigh represents high security risks.
	SeverityHigh RiskSeverity = "high"
	// SeverityMedium represents medium security risks.
	SeverityMedium RiskSeverity = "medium"
	// SeverityLow represents low security risks.
	SeverityLow RiskSeverity = "low"
	// SeverityInfo represents informational findings.
	SeverityInfo RiskSeverity = "info"
)

func ParseSeverity

func ParseSeverity(s string) (RiskSeverity, error)

ParseSeverity parses a severity string.

func (RiskSeverity) Weight

func (s RiskSeverity) Weight() int

severityWeight returns the numeric weight of a severity level.

type SecurityAnalysis

type SecurityAnalysis struct {
	// ProtocolID identifies the analyzed protocol.
	ProtocolID string `json:"protocol_id"`

	// ProtocolName is the human-readable name.
	ProtocolName string `json:"protocol_name"`

	// AnalyzedAt is when the analysis was performed.
	AnalyzedAt time.Time `json:"analyzed_at"`

	// Risks contains all identified security risks.
	Risks []SecurityRisk `json:"risks"`

	// Summary provides aggregate statistics.
	Summary SecuritySummary `json:"summary"`
}

SecurityAnalysis contains the complete analysis result.

func Analyze

func Analyze(p *pidl.Protocol, opts AnalysisOptions) *SecurityAnalysis

Analyze performs security analysis on a protocol.

func (*SecurityAnalysis) HasRisks

func (a *SecurityAnalysis) HasRisks() bool

HasRisks returns true if any risks were found.

func (*SecurityAnalysis) HasRisksAtOrAbove

func (a *SecurityAnalysis) HasRisksAtOrAbove(severity RiskSeverity) bool

HasRisksAtOrAbove returns true if any risks at or above the given severity exist.

func (*SecurityAnalysis) RisksByCategory

func (a *SecurityAnalysis) RisksByCategory(category RiskCategory) []SecurityRisk

RisksByCategory returns risks filtered by category.

func (*SecurityAnalysis) RisksBySeverity

func (a *SecurityAnalysis) RisksBySeverity(severity RiskSeverity) []SecurityRisk

RisksBySeverity returns risks filtered by severity.

func (*SecurityAnalysis) String

func (a *SecurityAnalysis) String() string

String returns a human-readable text representation.

func (*SecurityAnalysis) ToJSON

func (a *SecurityAnalysis) ToJSON() ([]byte, error)

ToJSON returns the analysis as JSON bytes.

func (*SecurityAnalysis) ToMarkdown

func (a *SecurityAnalysis) ToMarkdown() string

ToMarkdown returns a markdown representation.

type SecurityRisk

type SecurityRisk struct {
	// ID is a unique identifier for this risk type.
	ID string `json:"id"`

	// Severity indicates how serious the risk is.
	Severity RiskSeverity `json:"severity"`

	// Category classifies the type of risk.
	Category RiskCategory `json:"category"`

	// Title is a brief description of the risk.
	Title string `json:"title"`

	// Description provides detailed information about the risk.
	Description string `json:"description"`

	// Location identifies where in the protocol the risk was found.
	Location string `json:"location"`

	// Remediation provides guidance on how to address the risk.
	Remediation string `json:"remediation"`
}

SecurityRisk represents a security risk identified in the protocol.

type SecurityRule

type SecurityRule struct {
	// ID is a unique identifier for the rule.
	ID string

	// Name is a human-readable name.
	Name string

	// Description explains what the rule checks.
	Description string

	// Check runs the rule against a protocol and returns any risks found.
	Check func(p *pidl.Protocol) []SecurityRisk
}

SecurityRule defines a security check.

func DefaultRules

func DefaultRules() []SecurityRule

DefaultRules returns all built-in security rules.

type SecuritySummary

type SecuritySummary struct {
	// TotalRisks is the total number of risks found.
	TotalRisks int `json:"total_risks"`

	// BySeverity breaks down risks by severity level.
	BySeverity map[RiskSeverity]int `json:"by_severity"`

	// ByCategory breaks down risks by category.
	ByCategory map[RiskCategory]int `json:"by_category"`

	// Score is a numeric security score (0-100, higher is better).
	Score int `json:"score"`
}

SecuritySummary provides aggregate statistics for the analysis.

Jump to

Keyboard shortcuts

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