signature

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Dec 24, 2025 License: MIT Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultSignatureWidth    = 200
	DefaultSignatureHeight   = 80
	SignatureRenderScale     = 4.0
	SignatureFontSizeDefault = 12
	SignatureMaxIterations   = 20
	SignatureFontDPI         = 72
	SignatureLineSpacing     = 1.2
	LocationCacheTTL         = 1 * time.Hour
	LocationAPITimeout       = 2 * time.Second
	LocationAPIEndpoint      = "https://ipinfo.io/json"
)

Variables

This section is empty.

Functions

func CreateSignatureAppearance

func CreateSignatureAppearance(profile *SignatureProfile, cert *types.Certificate, signingTime time.Time) *sign.Appearance

CreateSignatureAppearance builds a sign.Appearance from profile settings for PDF signing.

func LoadNSSCertificates

func LoadNSSCertificates() ([]types.Certificate, error)

LoadNSSCertificates retrieves certificates with private keys from the user's NSS database.

Types

type CertificateFilter

type CertificateFilter struct {
	Source           string // Filter by source (system, user, pkcs11)
	Search           string // Search in name, subject, issuer
	ValidOnly        bool   // Only return valid (non-expired) certificates
	RequiredKeyUsage string // Require specific key usage (e.g., "digitalSignature")
}

CertificateFilter defines criteria for filtering certificates

type CertificateSigner

type CertificateSigner interface {
	crypto.Signer
	Certificate() *x509.Certificate
}

CertificateSigner combines crypto.Signer with access to the signing certificate.

type ProfileManager

type ProfileManager struct {
	// contains filtered or unexported fields
}

ProfileManager handles storage and retrieval of signature profiles.

func NewProfileManager

func NewProfileManager() *ProfileManager

NewProfileManager creates a new profile manager

func NewProfileManagerWithDir

func NewProfileManagerWithDir(configDir string) *ProfileManager

NewProfileManagerWithDir creates a new profile manager with a custom directory

func (*ProfileManager) DeleteProfile

func (pm *ProfileManager) DeleteProfile(id uuid.UUID) error

DeleteProfile removes a profile from disk.

func (*ProfileManager) GetDefaultProfile

func (pm *ProfileManager) GetDefaultProfile() (*SignatureProfile, error)

GetDefaultProfile returns the profile marked as default.

func (*ProfileManager) GetProfile

func (pm *ProfileManager) GetProfile(id uuid.UUID) (*SignatureProfile, error)

GetProfile retrieves a profile by UUID.

func (*ProfileManager) ListProfiles

func (pm *ProfileManager) ListProfiles() ([]*SignatureProfile, error)

ListProfiles returns all saved profiles, creating defaults if none exist.

func (*ProfileManager) SaveProfile

func (pm *ProfileManager) SaveProfile(profile *SignatureProfile) error

SaveProfile validates and persists a profile to disk.

func (*ProfileManager) ValidateProfile

func (pm *ProfileManager) ValidateProfile(profile *SignatureProfile) error

ValidateProfile checks that a profile has valid ID, name, and dimensions.

type SignatureAppearance

type SignatureAppearance struct {
	ShowSignerName  bool   `json:"showSignerName"`            // Show the certificate name/DN
	ShowSigningTime bool   `json:"showSigningTime"`           // Show timestamp
	ShowLocation    bool   `json:"showLocation"`              // Show location
	LogoPath        string `json:"logoPath,omitempty"`        // Base64 data URL of logo image
	LogoPosition    string `json:"logoPosition,omitempty"`    // Position of logo: "left" or "top"
	CustomText      string `json:"customText,omitempty"`      // Additional custom text
	FontSize        int    `json:"fontSize"`                  // Font size for text
	BackgroundColor string `json:"backgroundColor,omitempty"` // Hex color (future)
	TextColor       string `json:"textColor,omitempty"`       // Hex color (future)
}

SignatureAppearance defines the visual content of a visible signature

type SignatureImageGenerator

type SignatureImageGenerator struct {
	// contains filtered or unexported fields
}

SignatureImageGenerator handles the creation of the signature image

func NewSignatureImageGenerator

func NewSignatureImageGenerator(profile *SignatureProfile, textLines []string) *SignatureImageGenerator

NewSignatureImageGenerator creates a new generator instance

func (*SignatureImageGenerator) Generate

func (g *SignatureImageGenerator) Generate() []byte

Generate creates the final signature image

type SignaturePosition

type SignaturePosition struct {
	Page   int     `json:"page"`   // Page number (1-indexed, 0 = last page, -1 = first page)
	X      float64 `json:"x"`      // X coordinate (in points, from left)
	Y      float64 `json:"y"`      // Y coordinate (in points, from bottom)
	Width  float64 `json:"width"`  // Width of signature box
	Height float64 `json:"height"` // Height of signature box
}

SignaturePosition defines where a visible signature appears on the page

type SignatureProfile

type SignatureProfile struct {
	ID          uuid.UUID           `json:"id"`          // Unique identifier
	Name        string              `json:"name"`        // User-friendly name
	Description string              `json:"description"` // Optional description
	Visibility  SignatureVisibility `json:"visibility"`  // Invisible or visible
	Position    SignaturePosition   `json:"position"`    // Where to place signature (if visible)
	Appearance  SignatureAppearance `json:"appearance"`  // What to show (if visible)
	IsDefault   bool                `json:"isDefault"`   // Whether this is the default profile
}

SignatureProfile represents a reusable signing configuration In the future, users can create, save, and manage multiple profiles

func DefaultInvisibleProfile

func DefaultInvisibleProfile() *SignatureProfile

DefaultInvisibleProfile returns the built-in invisible signature profile.

func DefaultVisibleProfile

func DefaultVisibleProfile() *SignatureProfile

DefaultVisibleProfile returns the built-in visible signature profile.

type SignatureService

type SignatureService struct {
	// contains filtered or unexported fields
}

SignatureService handles PDF signing, signature verification, and certificate management.

func NewSignatureService

func NewSignatureService(cfgService *config.Service) *SignatureService

NewSignatureService creates a new signature service instance with the given configuration service.

func (*SignatureService) AddCertificateStore

func (s *SignatureService) AddCertificateStore(path string) error

AddCertificateStore adds a directory path to scan for PKCS#12 certificates.

func (*SignatureService) AddTokenLibrary

func (s *SignatureService) AddTokenLibrary(path string) error

AddTokenLibrary adds a PKCS#11 shared library path for hardware token access.

func (*SignatureService) DeleteSignatureProfile

func (s *SignatureService) DeleteSignatureProfile(profileIDStr string) error

DeleteSignatureProfile removes a signature profile by its UUID string.

func (*SignatureService) GetDefaultCertificateSources

func (s *SignatureService) GetDefaultCertificateSources() map[string][]string

GetDefaultCertificateSources returns system and user certificate directory paths.

func (*SignatureService) GetDefaultSignatureProfile

func (s *SignatureService) GetDefaultSignatureProfile() (*SignatureProfile, error)

GetDefaultSignatureProfile returns the profile marked as default.

func (*SignatureService) GetDefaultTokenLibraries

func (s *SignatureService) GetDefaultTokenLibraries() []string

GetDefaultTokenLibraries returns common PKCS#11 module paths for the platform.

func (*SignatureService) GetSignatureProfile

func (s *SignatureService) GetSignatureProfile(profileIDStr string) (*SignatureProfile, error)

GetSignatureProfile retrieves a signature profile by its UUID string.

func (*SignatureService) ListCertificates

func (s *SignatureService) ListCertificates() ([]types.Certificate, error)

ListCertificates returns all available certificates from all configured sources.

func (*SignatureService) ListCertificatesFiltered

func (s *SignatureService) ListCertificatesFiltered(filter CertificateFilter) ([]types.Certificate, error)

ListCertificatesFiltered returns certificates matching the given filter criteria.

func (*SignatureService) ListSignatureProfiles

func (s *SignatureService) ListSignatureProfiles() ([]*SignatureProfile, error)

ListSignatureProfiles returns all saved signature profiles.

func (*SignatureService) RemoveCertificateStore

func (s *SignatureService) RemoveCertificateStore(path string) error

RemoveCertificateStore removes a certificate store path from the config.

func (*SignatureService) RemoveTokenLibrary

func (s *SignatureService) RemoveTokenLibrary(path string) error

RemoveTokenLibrary removes a PKCS#11 library path from the config.

func (*SignatureService) SaveSignatureProfile

func (s *SignatureService) SaveSignatureProfile(profile *SignatureProfile) error

SaveSignatureProfile persists a signature profile to disk.

func (*SignatureService) SearchCertificates

func (s *SignatureService) SearchCertificates(query string) ([]types.Certificate, error)

SearchCertificates finds certificates matching the query in name, subject, or issuer.

func (*SignatureService) SignPDF

func (s *SignatureService) SignPDF(pdfPath string, certFingerprint string, pin string) (string, error)

SignPDF signs a PDF with the specified certificate using the default profile.

func (*SignatureService) SignPDFWithProfile

func (s *SignatureService) SignPDFWithProfile(pdfPath string, certFingerprint string, pin string, profileIDStr string) (string, error)

SignPDFWithProfile signs a PDF using the specified certificate and signature profile.

func (*SignatureService) SignPDFWithProfileAndPosition

func (s *SignatureService) SignPDFWithProfileAndPosition(pdfPath string, certFingerprint string, pin string, profileIDStr string, positionOverride *SignaturePosition) (string, error)

SignPDFWithProfileAndPosition signs a PDF with optional custom position for visible signatures.

func (*SignatureService) Startup

func (s *SignatureService) Startup(ctx context.Context)

Startup stores the app context. Called by Wails on app start.

func (*SignatureService) VerifySignatures

func (s *SignatureService) VerifySignatures(pdfPath string) ([]types.SignatureInfo, error)

VerifySignatures validates all digital signatures in a PDF and returns their status.

type SignatureVisibility

type SignatureVisibility string

SignatureVisibility defines whether a signature is visible or invisible

const (
	VisibilityInvisible SignatureVisibility = "invisible"
	VisibilityVisible   SignatureVisibility = "visible"
	MaxProfileFiles                         = 50
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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