Help us shape the future of Go! Take the 2026 Go Developer Survey

tsp

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2026 License: EUPL-1.2 Imports: 20 Imported by: 0

Documentation

Overview

Package tsp décode et vérifie les jetons d'horodatage RFC 3161 (TSA), avec la seule bibliothèque standard. Ce fichier décrit les structures ASN.1 (CMS SignedData, TSTInfo, ESSCertID) et les OID utilisés.

Index

Constants

This section is empty.

Variables

View Source
var ErrToken = errors.New("invalid timestamp token")

ErrToken est l'erreur racine : toute erreur de ParseToken ou Verify l'enveloppe.

Functions

func CheckURL

func CheckURL(raw string) error

CheckURL accepte https pour tout hôte et http pour les seuls hôtes locaux ; le message d'erreur est celui de la configuration.

func Host

func Host(raw string) string

Host renvoie le nom d'hôte de raw en minuscules ("" si illisible).

func NeedRoots

func NeedRoots(roots *x509.CertPool) error

NeedRoots refuse des racines nil sur les plateformes dont les racines système ne permettent pas de vérifier les certificats de TSA (darwin, ios, windows) ; nil ailleurs ou si roots est fourni.

func NewRequest

func NewRequest(digest []byte) (der []byte, nonce *big.Int, err error)

NewRequest encode une TimeStampReq (version 1, SHA-256, nonce aléatoire de 64 bits, certReq true) pour un condensat de 32 octets.

func ParseResponse

func ParseResponse(der []byte) (status int, token []byte, err error)

ParseResponse décode une TimeStampResp : le PKIStatus et, s'il est présent, le jeton (ContentInfo DER, non vérifié).

func SetGOOS

func SetGOOS(s string) (restore func())

SetGOOS remplace la plateforme vue par NeedRoots et renvoie la fonction qui la restaure. Réservé aux tests d'autres paquets.

Types

type Info

type Info struct {
	GenTime time.Time
	Digest  []byte
	Serial  *big.Int
	Nonce   *big.Int
	TSA     string
}

Info résume un jeton d'horodatage. TSA est le CN du certificat signataire (le Subject complet si le CN est vide) ; Nonce vaut nil s'il est absent.

func ParseToken

func ParseToken(der []byte) (Info, error)

ParseToken décode un jeton (ContentInfo DER) sans vérifier ni signature ni chaîne de certification. Le certificat du signataire doit figurer dans le jeton (demande faite avec certReq=true), sinon erreur.

func Request

func Request(ctx context.Context, c *http.Client, url string, digest []byte, roots *x509.CertPool) (token []byte, info Info, err error)

Request demande à la TSA de url un jeton sur digest et le vérifie contre roots. Le délai est celui de ctx. Une réponse acceptée a le statut 0 ou 1, le nonce et le condensat demandés et un jeton valide.

func Verify

func Verify(der []byte, roots *x509.CertPool) (Info, error)

Verify décode le jeton et applique tous les contrôles bloquants : TSTInfo (version 1, empreinte SHA-256 de 32 octets), attributs signés (contentType, messageDigest, ESSCertID ou ESSCertIDv2), signature, EKU timeStamping seule et critique, chaîne vers roots à la date genTime. roots == nil : racines du système, sauf sous darwin, ios et windows où Go délègue au vérificateur de l'OS, qui applique une politique TLS et refuse un certificat limité à timeStamping : Verify renvoie alors une erreur "no trust roots" (il faut fournir une CA explicite). La révocation n'est pas contrôlée.

Directories

Path Synopsis
Package tsptest fournit une fausse TSA RFC 3161 pour les tests : une CA et des signataires générés au test, de vrais jetons signés (ECDSA P-256 ou RSA 2048), des altérations ciblées et un serveur httptest.
Package tsptest fournit une fausse TSA RFC 3161 pour les tests : une CA et des signataires générés au test, de vrais jetons signés (ECDSA P-256 ou RSA 2048), des altérations ciblées et un serveur httptest.

Jump to

Keyboard shortcuts

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