| # | |
| # This file is part of pyasn1-modules software. | |
| # | |
| # Created by Russ Housley with assistance from asn1ate v.0.6.0. | |
| # | |
| # Copyright (c) 2019, Vigil Security, LLC | |
| # License: http://snmplabs.com/pyasn1/license.html | |
| # | |
| # Time-Stamp Protocol (TSP) | |
| # | |
| # ASN.1 source from: | |
| # https://www.rfc-editor.org/rfc/rfc3161.txt | |
| # | |
| from pyasn1.type import constraint | |
| from pyasn1.type import namedtype | |
| from pyasn1.type import namedval | |
| from pyasn1.type import tag | |
| from pyasn1.type import univ | |
| from pyasn1.type import useful | |
| from pyasn1_modules import rfc4210 | |
| from pyasn1_modules import rfc5280 | |
| from pyasn1_modules import rfc5652 | |
| Extensions = rfc5280.Extensions | |
| AlgorithmIdentifier = rfc5280.AlgorithmIdentifier | |
| GeneralName = rfc5280.GeneralName | |
| ContentInfo = rfc5652.ContentInfo | |
| PKIFreeText = rfc4210.PKIFreeText | |
| id_ct_TSTInfo = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.4') | |
| class Accuracy(univ.Sequence): | |
| pass | |
| Accuracy.componentType = namedtype.NamedTypes( | |
| namedtype.OptionalNamedType('seconds', univ.Integer()), | |
| namedtype.OptionalNamedType('millis', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 999)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), | |
| namedtype.OptionalNamedType('micros', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 999)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) | |
| ) | |
| class MessageImprint(univ.Sequence): | |
| pass | |
| MessageImprint.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('hashAlgorithm', AlgorithmIdentifier()), | |
| namedtype.NamedType('hashedMessage', univ.OctetString()) | |
| ) | |
| class PKIFailureInfo(univ.BitString): | |
| pass | |
| PKIFailureInfo.namedValues = namedval.NamedValues( | |
| ('badAlg', 0), | |
| ('badRequest', 2), | |
| ('badDataFormat', 5), | |
| ('timeNotAvailable', 14), | |
| ('unacceptedPolicy', 15), | |
| ('unacceptedExtension', 16), | |
| ('addInfoNotAvailable', 17), | |
| ('systemFailure', 25) | |
| ) | |
| class PKIStatus(univ.Integer): | |
| pass | |
| PKIStatus.namedValues = namedval.NamedValues( | |
| ('granted', 0), | |
| ('grantedWithMods', 1), | |
| ('rejection', 2), | |
| ('waiting', 3), | |
| ('revocationWarning', 4), | |
| ('revocationNotification', 5) | |
| ) | |
| class PKIStatusInfo(univ.Sequence): | |
| pass | |
| PKIStatusInfo.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('status', PKIStatus()), | |
| namedtype.OptionalNamedType('statusString', PKIFreeText()), | |
| namedtype.OptionalNamedType('failInfo', PKIFailureInfo()) | |
| ) | |
| class TSAPolicyId(univ.ObjectIdentifier): | |
| pass | |
| class TSTInfo(univ.Sequence): | |
| pass | |
| TSTInfo.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('version', univ.Integer(namedValues=namedval.NamedValues(('v1', 1)))), | |
| namedtype.NamedType('policy', TSAPolicyId()), | |
| namedtype.NamedType('messageImprint', MessageImprint()), | |
| namedtype.NamedType('serialNumber', univ.Integer()), | |
| namedtype.NamedType('genTime', useful.GeneralizedTime()), | |
| namedtype.OptionalNamedType('accuracy', Accuracy()), | |
| namedtype.DefaultedNamedType('ordering', univ.Boolean().subtype(value=0)), | |
| namedtype.OptionalNamedType('nonce', univ.Integer()), | |
| namedtype.OptionalNamedType('tsa', GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), | |
| namedtype.OptionalNamedType('extensions', Extensions().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) | |
| ) | |
| class TimeStampReq(univ.Sequence): | |
| pass | |
| TimeStampReq.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('version', univ.Integer(namedValues=namedval.NamedValues(('v1', 1)))), | |
| namedtype.NamedType('messageImprint', MessageImprint()), | |
| namedtype.OptionalNamedType('reqPolicy', TSAPolicyId()), | |
| namedtype.OptionalNamedType('nonce', univ.Integer()), | |
| namedtype.DefaultedNamedType('certReq', univ.Boolean().subtype(value=0)), | |
| namedtype.OptionalNamedType('extensions', Extensions().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))) | |
| ) | |
| class TimeStampToken(ContentInfo): | |
| pass | |
| class TimeStampResp(univ.Sequence): | |
| pass | |
| TimeStampResp.componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('status', PKIStatusInfo()), | |
| namedtype.OptionalNamedType('timeStampToken', TimeStampToken()) | |
| ) |