Documentation
¶
Index ¶
- Constants
- func CreateSignatureAppearance(profile *SignatureProfile, cert *types.Certificate, signingTime time.Time) *sign.Appearance
- func LoadNSSCertificates() ([]types.Certificate, error)
- type CertificateFilter
- type CertificateSigner
- type ProfileManager
- func (pm *ProfileManager) DeleteProfile(id uuid.UUID) error
- func (pm *ProfileManager) GetDefaultProfile() (*SignatureProfile, error)
- func (pm *ProfileManager) GetProfile(id uuid.UUID) (*SignatureProfile, error)
- func (pm *ProfileManager) ListProfiles() ([]*SignatureProfile, error)
- func (pm *ProfileManager) SaveProfile(profile *SignatureProfile) error
- func (pm *ProfileManager) ValidateProfile(profile *SignatureProfile) error
- type SignatureAppearance
- type SignatureImageGenerator
- type SignaturePosition
- type SignatureProfile
- type SignatureService
- func (s *SignatureService) AddCertificateStore(path string) error
- func (s *SignatureService) AddTokenLibrary(path string) error
- func (s *SignatureService) DeleteSignatureProfile(profileIDStr string) error
- func (s *SignatureService) GetDefaultCertificateSources() map[string][]string
- func (s *SignatureService) GetDefaultSignatureProfile() (*SignatureProfile, error)
- func (s *SignatureService) GetDefaultTokenLibraries() []string
- func (s *SignatureService) GetSignatureProfile(profileIDStr string) (*SignatureProfile, error)
- func (s *SignatureService) ListCertificates() ([]types.Certificate, error)
- func (s *SignatureService) ListCertificatesFiltered(filter CertificateFilter) ([]types.Certificate, error)
- func (s *SignatureService) ListSignatureProfiles() ([]*SignatureProfile, error)
- func (s *SignatureService) RemoveCertificateStore(path string) error
- func (s *SignatureService) RemoveTokenLibrary(path string) error
- func (s *SignatureService) SaveSignatureProfile(profile *SignatureProfile) error
- func (s *SignatureService) SearchCertificates(query string) ([]types.Certificate, error)
- func (s *SignatureService) SignPDF(pdfPath string, certFingerprint string, pin string) (string, error)
- func (s *SignatureService) SignPDFWithProfile(pdfPath string, certFingerprint string, pin string, profileIDStr string) (string, error)
- func (s *SignatureService) SignPDFWithProfileAndPosition(pdfPath string, certFingerprint string, pin string, profileIDStr string, ...) (string, error)
- func (s *SignatureService) Startup(ctx context.Context)
- func (s *SignatureService) VerifySignatures(pdfPath string) ([]types.SignatureInfo, error)
- type SignatureVisibility
Constants ¶
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
ShowLogo bool `json:"showLogo"` // Show custom logo
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 )