1# 2# This file is part of pyasn1-modules software. 3# 4# Created by Russ Housley with assistance from asn1ate v.0.6.0. 5# 6# Copyright (c) 2019, Vigil Security, LLC 7# License: http://snmplabs.com/pyasn1/license.html 8# 9# Time-Stamp Protocol (TSP) 10# 11# ASN.1 source from: 12# https://www.rfc-editor.org/rfc/rfc3161.txt 13# 14 15from pyasn1.type import constraint 16from pyasn1.type import namedtype 17from pyasn1.type import namedval 18from pyasn1.type import tag 19from pyasn1.type import univ 20from pyasn1.type import useful 21 22from pyasn1_modules import rfc4210 23from pyasn1_modules import rfc5280 24from pyasn1_modules import rfc5652 25 26 27Extensions = rfc5280.Extensions 28 29AlgorithmIdentifier = rfc5280.AlgorithmIdentifier 30 31GeneralName = rfc5280.GeneralName 32 33ContentInfo = rfc5652.ContentInfo 34 35PKIFreeText = rfc4210.PKIFreeText 36 37 38id_ct_TSTInfo = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.4') 39 40 41class Accuracy(univ.Sequence): 42 pass 43 44Accuracy.componentType = namedtype.NamedTypes( 45 namedtype.OptionalNamedType('seconds', univ.Integer()), 46 namedtype.OptionalNamedType('millis', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 999)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), 47 namedtype.OptionalNamedType('micros', univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 999)).subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) 48) 49 50 51class MessageImprint(univ.Sequence): 52 pass 53 54MessageImprint.componentType = namedtype.NamedTypes( 55 namedtype.NamedType('hashAlgorithm', AlgorithmIdentifier()), 56 namedtype.NamedType('hashedMessage', univ.OctetString()) 57) 58 59 60class PKIFailureInfo(univ.BitString): 61 pass 62 63PKIFailureInfo.namedValues = namedval.NamedValues( 64 ('badAlg', 0), 65 ('badRequest', 2), 66 ('badDataFormat', 5), 67 ('timeNotAvailable', 14), 68 ('unacceptedPolicy', 15), 69 ('unacceptedExtension', 16), 70 ('addInfoNotAvailable', 17), 71 ('systemFailure', 25) 72) 73 74 75class PKIStatus(univ.Integer): 76 pass 77 78PKIStatus.namedValues = namedval.NamedValues( 79 ('granted', 0), 80 ('grantedWithMods', 1), 81 ('rejection', 2), 82 ('waiting', 3), 83 ('revocationWarning', 4), 84 ('revocationNotification', 5) 85) 86 87 88class PKIStatusInfo(univ.Sequence): 89 pass 90 91PKIStatusInfo.componentType = namedtype.NamedTypes( 92 namedtype.NamedType('status', PKIStatus()), 93 namedtype.OptionalNamedType('statusString', PKIFreeText()), 94 namedtype.OptionalNamedType('failInfo', PKIFailureInfo()) 95) 96 97 98class TSAPolicyId(univ.ObjectIdentifier): 99 pass 100 101 102class TSTInfo(univ.Sequence): 103 pass 104 105TSTInfo.componentType = namedtype.NamedTypes( 106 namedtype.NamedType('version', univ.Integer(namedValues=namedval.NamedValues(('v1', 1)))), 107 namedtype.NamedType('policy', TSAPolicyId()), 108 namedtype.NamedType('messageImprint', MessageImprint()), 109 namedtype.NamedType('serialNumber', univ.Integer()), 110 namedtype.NamedType('genTime', useful.GeneralizedTime()), 111 namedtype.OptionalNamedType('accuracy', Accuracy()), 112 namedtype.DefaultedNamedType('ordering', univ.Boolean().subtype(value=0)), 113 namedtype.OptionalNamedType('nonce', univ.Integer()), 114 namedtype.OptionalNamedType('tsa', GeneralName().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), 115 namedtype.OptionalNamedType('extensions', Extensions().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) 116) 117 118 119class TimeStampReq(univ.Sequence): 120 pass 121 122TimeStampReq.componentType = namedtype.NamedTypes( 123 namedtype.NamedType('version', univ.Integer(namedValues=namedval.NamedValues(('v1', 1)))), 124 namedtype.NamedType('messageImprint', MessageImprint()), 125 namedtype.OptionalNamedType('reqPolicy', TSAPolicyId()), 126 namedtype.OptionalNamedType('nonce', univ.Integer()), 127 namedtype.DefaultedNamedType('certReq', univ.Boolean().subtype(value=0)), 128 namedtype.OptionalNamedType('extensions', Extensions().subtype(implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))) 129) 130 131 132class TimeStampToken(ContentInfo): 133 pass 134 135 136class TimeStampResp(univ.Sequence): 137 pass 138 139TimeStampResp.componentType = namedtype.NamedTypes( 140 namedtype.NamedType('status', PKIStatusInfo()), 141 namedtype.OptionalNamedType('timeStampToken', TimeStampToken()) 142) 143