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 ¶
- Variables
- func CheckURL(raw string) error
- func Host(raw string) string
- func NeedRoots(roots *x509.CertPool) error
- func NewRequest(digest []byte) (der []byte, nonce *big.Int, err error)
- func ParseResponse(der []byte) (status int, token []byte, err error)
- func SetGOOS(s string) (restore func())
- type Info
Constants ¶
This section is empty.
Variables ¶
var ErrToken = errors.New("invalid timestamp token")
ErrToken est l'erreur racine : toute erreur de ParseToken ou Verify l'enveloppe.
Functions ¶
func CheckURL ¶
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 NeedRoots ¶
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 ¶
NewRequest encode une TimeStampReq (version 1, SHA-256, nonce aléatoire de 64 bits, certReq true) pour un condensat de 32 octets.
func ParseResponse ¶
ParseResponse décode une TimeStampResp : le PKIStatus et, s'il est présent, le jeton (ContentInfo DER, non vérifié).
Types ¶
type Info ¶
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 ¶
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 ¶
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. |