Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Side by Side Diff: tools/telemetry/third_party/gsutilz/third_party/pyasn1-modules/pyasn1_modules/rfc4210.py

Issue 1493973002: Remove telemetry/third_party/gsutilz (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gsutil_changes
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #
2 # Certificate Management Protocol structures as per RFC4210
3 #
4 # Based on Alex Railean's work
5 #
6 from pyasn1.type import tag,namedtype,namedval,univ,constraint,char,useful
7 from pyasn1_modules import rfc2459, rfc2511, rfc2314
8
9 MAX = 64
10
11 class KeyIdentifier(univ.OctetString): pass
12
13 class CMPCertificate(rfc2459.Certificate): pass
14
15 class OOBCert(CMPCertificate): pass
16
17 class CertAnnContent(CMPCertificate): pass
18
19 class PKIFreeText(univ.SequenceOf):
20 """
21 PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
22 """
23 componentType = char.UTF8String()
24 subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1 , MAX)
25
26 class PollRepContent(univ.SequenceOf):
27 """
28 PollRepContent ::= SEQUENCE OF SEQUENCE {
29 certReqId INTEGER,
30 checkAfter INTEGER, -- time in seconds
31 reason PKIFreeText OPTIONAL
32 }
33 """
34 class CertReq(univ.Sequence):
35 componentType = namedtype.NamedTypes(
36 namedtype.NamedType('certReqId', univ.Integer()),
37 namedtype.NamedType('checkAfter', univ.Integer()),
38 namedtype.OptionalNamedType('reason', PKIFreeText())
39 )
40 componentType = CertReq()
41
42 class PollReqContent(univ.SequenceOf):
43 """
44 PollReqContent ::= SEQUENCE OF SEQUENCE {
45 certReqId INTEGER
46 }
47
48 """
49 class CertReq(univ.Sequence):
50 componentType = namedtype.NamedTypes(
51 namedtype.NamedType('certReqId', univ.Integer())
52 )
53 componentType = CertReq()
54
55 class InfoTypeAndValue(univ.Sequence):
56 """
57 InfoTypeAndValue ::= SEQUENCE {
58 infoType OBJECT IDENTIFIER,
59 infoValue ANY DEFINED BY infoType OPTIONAL
60 }"""
61 componentType = namedtype.NamedTypes(
62 namedtype.NamedType('infoType', univ.ObjectIdentifier()),
63 namedtype.OptionalNamedType('infoValue', univ.Any())
64 )
65
66 class GenRepContent(univ.SequenceOf):
67 componentType = InfoTypeAndValue()
68
69 class GenMsgContent(univ.SequenceOf):
70 componentType = InfoTypeAndValue()
71
72 class PKIConfirmContent(univ.Null): pass
73
74 class CRLAnnContent(univ.SequenceOf):
75 componentType = rfc2459.CertificateList()
76
77 class CAKeyUpdAnnContent(univ.Sequence):
78 """
79 CAKeyUpdAnnContent ::= SEQUENCE {
80 oldWithNew CMPCertificate,
81 newWithOld CMPCertificate,
82 newWithNew CMPCertificate
83 }
84 """
85 componentType = namedtype.NamedTypes(
86 namedtype.NamedType('oldWithNew', CMPCertificate()),
87 namedtype.NamedType('newWithOld', CMPCertificate()),
88 namedtype.NamedType('newWithNew', CMPCertificate())
89 )
90
91 class RevDetails(univ.Sequence):
92 """
93 RevDetails ::= SEQUENCE {
94 certDetails CertTemplate,
95 crlEntryDetails Extensions OPTIONAL
96 }
97 """
98 componentType = namedtype.NamedTypes(
99 namedtype.NamedType('certDetails', rfc2511.CertTemplate()),
100 namedtype.OptionalNamedType('crlEntryDetails', rfc2459.Extensions())
101 )
102
103 class RevReqContent(univ.SequenceOf):
104 componentType = RevDetails()
105
106 class CertOrEncCert(univ.Choice):
107 """
108 CertOrEncCert ::= CHOICE {
109 certificate [0] CMPCertificate,
110 encryptedCert [1] EncryptedValue
111 }
112 """
113 componentType = namedtype.NamedTypes(
114 namedtype.NamedType('certificate', CMPCertificate().subtype(
115 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0 )
116 )
117 ),
118 namedtype.NamedType('encryptedCert', rfc2511.EncryptedValue().subtype(
119 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1 )
120 )
121 )
122 )
123
124 class CertifiedKeyPair(univ.Sequence):
125 """
126 CertifiedKeyPair ::= SEQUENCE {
127 certOrEncCert CertOrEncCert,
128 privateKey [0] EncryptedValue OPTIONAL,
129 publicationInfo [1] PKIPublicationInfo OPTIONAL
130 }
131 """
132 componentType = namedtype.NamedTypes(
133 namedtype.NamedType('certOrEncCert', CertOrEncCert()),
134 namedtype.OptionalNamedType('privateKey', rfc2511.EncryptedValue().subty pe(
135 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 0)
136 )
137 ),
138 namedtype.OptionalNamedType('publicationInfo', rfc2511.PKIPublicationInf o().subtype(
139 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 1)
140 )
141 )
142 )
143
144
145 class POPODecKeyRespContent(univ.SequenceOf):
146 componentType = univ.Integer()
147
148 class Challenge(univ.Sequence):
149 """
150 Challenge ::= SEQUENCE {
151 owf AlgorithmIdentifier OPTIONAL,
152 witness OCTET STRING,
153 challenge OCTET STRING
154 }
155 """
156 componentType = namedtype.NamedTypes(
157 namedtype.OptionalNamedType('owf', rfc2459.AlgorithmIdentifier()),
158 namedtype.NamedType('witness', univ.OctetString()),
159 namedtype.NamedType('challenge', univ.OctetString())
160 )
161
162 class PKIStatus(univ.Integer):
163 """
164 PKIStatus ::= INTEGER {
165 accepted (0),
166 grantedWithMods (1),
167 rejection (2),
168 waiting (3),
169 revocationWarning (4),
170 revocationNotification (5),
171 keyUpdateWarning (6)
172 }
173 """
174 namedValues = namedval.NamedValues(
175 ('accepted', 0),
176 ('grantedWithMods', 1),
177 ('rejection', 2),
178 ('waiting', 3),
179 ('revocationWarning', 4),
180 ('revocationNotification', 5),
181 ('keyUpdateWarning', 6)
182 )
183
184 class PKIFailureInfo(univ.BitString):
185 """
186 PKIFailureInfo ::= BIT STRING {
187 badAlg (0),
188 badMessageCheck (1),
189 badRequest (2),
190 badTime (3),
191 badCertId (4),
192 badDataFormat (5),
193 wrongAuthority (6),
194 incorrectData (7),
195 missingTimeStamp (8),
196 badPOP (9),
197 certRevoked (10),
198 certConfirmed (11),
199 wrongIntegrity (12),
200 badRecipientNonce (13),
201 timeNotAvailable (14),
202 unacceptedPolicy (15),
203 unacceptedExtension (16),
204 addInfoNotAvailable (17),
205 badSenderNonce (18),
206 badCertTemplate (19),
207 signerNotTrusted (20),
208 transactionIdInUse (21),
209 unsupportedVersion (22),
210 notAuthorized (23),
211 systemUnavail (24),
212 systemFailure (25),
213 duplicateCertReq (26)
214 """
215 namedValues = namedval.NamedValues(
216 ('badAlg', 0),
217 ('badMessageCheck', 1),
218 ('badRequest', 2),
219 ('badTime', 3),
220 ('badCertId', 4),
221 ('badDataFormat', 5),
222 ('wrongAuthority', 6),
223 ('incorrectData', 7),
224 ('missingTimeStamp', 8),
225 ('badPOP', 9),
226 ('certRevoked', 10),
227 ('certConfirmed', 11),
228 ('wrongIntegrity', 12),
229 ('badRecipientNonce', 13),
230 ('timeNotAvailable', 14),
231 ('unacceptedPolicy', 15),
232 ('unacceptedExtension', 16),
233 ('addInfoNotAvailable', 17),
234 ('badSenderNonce', 18),
235 ('badCertTemplate', 19),
236 ('signerNotTrusted', 20),
237 ('transactionIdInUse', 21),
238 ('unsupportedVersion', 22),
239 ('notAuthorized', 23),
240 ('systemUnavail', 24),
241 ('systemFailure', 25),
242 ('duplicateCertReq', 26)
243 )
244
245 class PKIStatusInfo(univ.Sequence):
246 """
247 PKIStatusInfo ::= SEQUENCE {
248 status PKIStatus,
249 statusString PKIFreeText OPTIONAL,
250 failInfo PKIFailureInfo OPTIONAL
251 }
252 """
253 componentType = namedtype.NamedTypes(
254 namedtype.NamedType('status', PKIStatus()),
255 namedtype.OptionalNamedType('statusString', PKIFreeText()),
256 namedtype.OptionalNamedType('failInfo', PKIFailureInfo())
257 )
258
259 class ErrorMsgContent(univ.Sequence):
260 """
261 ErrorMsgContent ::= SEQUENCE {
262 pKIStatusInfo PKIStatusInfo,
263 errorCode INTEGER OPTIONAL,
264 -- implementation-specific error codes
265 errorDetails PKIFreeText OPTIONAL
266 -- implementation-specific error details
267 }
268 """
269 componentType = namedtype.NamedTypes(
270 namedtype.NamedType('pKIStatusInfo', PKIStatusInfo()),
271 namedtype.OptionalNamedType('errorCode', univ.Integer()),
272 namedtype.OptionalNamedType('errorDetails', PKIFreeText())
273 )
274
275 class CertStatus(univ.Sequence):
276 """
277 CertStatus ::= SEQUENCE {
278 certHash OCTET STRING,
279 certReqId INTEGER,
280 statusInfo PKIStatusInfo OPTIONAL
281 }
282 """
283 componentType = namedtype.NamedTypes(
284 namedtype.NamedType('certHash', univ.OctetString()),
285 namedtype.NamedType('certReqId', univ.Integer()),
286 namedtype.OptionalNamedType('statusInfo', PKIStatusInfo())
287 )
288
289 class CertConfirmContent(univ.SequenceOf):
290 componentType = CertStatus()
291
292 class RevAnnContent(univ.Sequence):
293 """
294 RevAnnContent ::= SEQUENCE {
295 status PKIStatus,
296 certId CertId,
297 willBeRevokedAt GeneralizedTime,
298 badSinceDate GeneralizedTime,
299 crlDetails Extensions OPTIONAL
300 }
301 """
302 componentType = namedtype.NamedTypes(
303 namedtype.NamedType('status', PKIStatus()),
304 namedtype.NamedType('certId', rfc2511.CertId()),
305 namedtype.NamedType('willBeRevokedAt', useful.GeneralizedTime()),
306 namedtype.NamedType('badSinceDate', useful.GeneralizedTime()),
307 namedtype.OptionalNamedType('crlDetails', rfc2459.Extensions())
308 )
309
310 class RevRepContent(univ.Sequence):
311 """
312 RevRepContent ::= SEQUENCE {
313 status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
314 revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId
315 OPTIONAL,
316 crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList
317 OPTIONAL
318 """
319 componentType = namedtype.NamedTypes(
320 namedtype.NamedType('status', PKIStatusInfo()),
321 namedtype.OptionalNamedType('revCerts', univ.SequenceOf(
322 componentType=rfc2511.CertId()
323 ).subtype(
324 subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
325 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 0)
326 )
327 ),
328 namedtype.OptionalNamedType('crls', univ.SequenceOf(
329 componentType=rfc2459.CertificateList()
330 ).subtype(
331 subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
332 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 1)
333 )
334 )
335 )
336
337 class KeyRecRepContent(univ.Sequence):
338 """
339 KeyRecRepContent ::= SEQUENCE {
340 status PKIStatusInfo,
341 newSigCert [0] CMPCertificate OPTIONAL,
342 caCerts [1] SEQUENCE SIZE (1..MAX) OF
343 CMPCertificate OPTIONAL,
344 keyPairHist [2] SEQUENCE SIZE (1..MAX) OF
345 CertifiedKeyPair OPTIONAL
346 }
347 """
348 componentType = namedtype.NamedTypes(
349 namedtype.NamedType('status', PKIStatusInfo()),
350 namedtype.OptionalNamedType('newSigCert', CMPCertificate().subtype(
351 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0 )
352 )
353 ),
354 namedtype.OptionalNamedType('caCerts', univ.SequenceOf(
355 componentType=CMPCertificate()
356 ).subtype(
357 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 1),
358 subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
359 )
360 ),
361 namedtype.OptionalNamedType('keyPairHist', univ.SequenceOf(
362 componentType=CertifiedKeyPair()
363 ).subtype(
364 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 2),
365 subtypeSpec=constraint.ValueSizeConstraint(1, MAX)
366 )
367 )
368 )
369
370 class CertResponse(univ.Sequence):
371 """
372 CertResponse ::= SEQUENCE {
373 certReqId INTEGER,
374 status PKIStatusInfo,
375 certifiedKeyPair CertifiedKeyPair OPTIONAL,
376 rspInfo OCTET STRING OPTIONAL
377 }
378 """
379 componentType = namedtype.NamedTypes(
380 namedtype.NamedType('certReqId', univ.Integer()),
381 namedtype.NamedType('status', PKIStatusInfo()),
382 namedtype.OptionalNamedType('certifiedKeyPair', CertifiedKeyPair()),
383 namedtype.OptionalNamedType('rspInfo', univ.OctetString())
384 )
385
386 class CertRepMessage(univ.Sequence):
387 """
388 CertRepMessage ::= SEQUENCE {
389 caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
390 OPTIONAL,
391 response SEQUENCE OF CertResponse
392 }
393 """
394 componentType = namedtype.NamedTypes(
395 namedtype.OptionalNamedType('caPubs', univ.SequenceOf(
396 componentType=CMPCertificate()
397 ).subtype(
398 subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
399 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed ,1)
400 )
401 ),
402 namedtype.NamedType('response', univ.SequenceOf(
403 componentType=CertResponse())
404 )
405 )
406
407 class POPODecKeyChallContent(univ.SequenceOf):
408 componentType = Challenge()
409
410 class OOBCertHash(univ.Sequence):
411 """
412 OOBCertHash ::= SEQUENCE {
413 hashAlg [0] AlgorithmIdentifier OPTIONAL,
414 certId [1] CertId OPTIONAL,
415 hashVal BIT STRING
416 }
417 """
418 componentType = namedtype.NamedTypes(
419 namedtype.OptionalNamedType('hashAlg',
420 rfc2459.AlgorithmIdentifier().subtype(
421 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0)
422 )
423 ),
424 namedtype.OptionalNamedType('certId', rfc2511.CertId().subtype(
425 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1)
426 )
427 ),
428 namedtype.NamedType('hashVal', univ.BitString())
429 )
430
431 # pyasn1 does not naturally handle recursive definitions, thus this hack:
432 # NestedMessageContent ::= PKIMessages
433 class NestedMessageContent(univ.SequenceOf):
434 """
435 NestedMessageContent ::= PKIMessages
436 """
437 componentType = univ.Any()
438
439 class DHBMParameter(univ.Sequence):
440 """
441 DHBMParameter ::= SEQUENCE {
442 owf AlgorithmIdentifier,
443 -- AlgId for a One-Way Function (SHA-1 recommended)
444 mac AlgorithmIdentifier
445 -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
446 } -- or HMAC [RFC2104, RFC2202])
447 """
448 componentType = namedtype.NamedTypes(
449 namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()),
450 namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())
451 )
452
453 id_DHBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.30')
454
455 class PBMParameter(univ.Sequence):
456 """
457 PBMParameter ::= SEQUENCE {
458 salt OCTET STRING,
459 owf AlgorithmIdentifier,
460 iterationCount INTEGER,
461 mac AlgorithmIdentifier
462 }
463 """
464 componentType = namedtype.NamedTypes(
465 namedtype.NamedType('salt', univ.OctetString().subtype(
466 subtypeSpec=constraint.ValueSizeConstraint(0, 128)
467 )
468 ),
469 namedtype.NamedType('owf', rfc2459.AlgorithmIdentifier()),
470 namedtype.NamedType('iterationCount', univ.Integer()),
471 namedtype.NamedType('mac', rfc2459.AlgorithmIdentifier())
472 )
473
474 id_PasswordBasedMac = univ.ObjectIdentifier('1.2.840.113533.7.66.13')
475
476 class PKIProtection(univ.BitString): pass
477
478 # pyasn1 does not naturally handle recursive definitions, thus this hack:
479 # NestedMessageContent ::= PKIMessages
480 nestedMessageContent = NestedMessageContent().subtype(explicitTag=tag.Tag(tag.ta gClassContext,tag.tagFormatConstructed,20))
481
482 class PKIBody(univ.Choice):
483 """
484 PKIBody ::= CHOICE { -- message-specific body elements
485 ir [0] CertReqMessages, --Initialization Request
486 ip [1] CertRepMessage, --Initialization Response
487 cr [2] CertReqMessages, --Certification Request
488 cp [3] CertRepMessage, --Certification Response
489 p10cr [4] CertificationRequest, --imported from [PKCS10]
490 popdecc [5] POPODecKeyChallContent, --pop Challenge
491 popdecr [6] POPODecKeyRespContent, --pop Response
492 kur [7] CertReqMessages, --Key Update Request
493 kup [8] CertRepMessage, --Key Update Response
494 krr [9] CertReqMessages, --Key Recovery Request
495 krp [10] KeyRecRepContent, --Key Recovery Response
496 rr [11] RevReqContent, --Revocation Request
497 rp [12] RevRepContent, --Revocation Response
498 ccr [13] CertReqMessages, --Cross-Cert. Request
499 ccp [14] CertRepMessage, --Cross-Cert. Response
500 ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.
501 cann [16] CertAnnContent, --Certificate Ann.
502 rann [17] RevAnnContent, --Revocation Ann.
503 crlann [18] CRLAnnContent, --CRL Announcement
504 pkiconf [19] PKIConfirmContent, --Confirmation
505 nested [20] NestedMessageContent, --Nested Message
506 genm [21] GenMsgContent, --General Message
507
508 """
509 componentType = namedtype.NamedTypes(
510 namedtype.NamedType('ir', rfc2511.CertReqMessages().subtype(
511 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,0)
512 )
513 ),
514 namedtype.NamedType('ip', CertRepMessage().subtype(
515 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,1)
516 )
517 ),
518 namedtype.NamedType('cr', rfc2511.CertReqMessages().subtype(
519 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,2)
520 )
521 ),
522 namedtype.NamedType('cp', CertRepMessage().subtype(
523 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,3)
524 )
525 ),
526 namedtype.NamedType('p10cr', rfc2314.CertificationRequest().subtype(
527 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,4)
528 )
529 ),
530 namedtype.NamedType('popdecc', POPODecKeyChallContent().subtype(
531 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,5)
532 )
533 ),
534 namedtype.NamedType('popdecr', POPODecKeyRespContent().subtype(
535 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,6)
536 )
537 ),
538 namedtype.NamedType('kur', rfc2511.CertReqMessages().subtype(
539 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,7)
540 )
541 ),
542 namedtype.NamedType('kup', CertRepMessage().subtype(
543 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,8)
544 )
545 ),
546 namedtype.NamedType('krr', rfc2511.CertReqMessages().subtype(
547 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,9)
548 )
549 ),
550 namedtype.NamedType('krp', KeyRecRepContent().subtype(
551 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,10)
552 )
553 ),
554 namedtype.NamedType('rr', RevReqContent().subtype(
555 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,11)
556 )
557 ),
558 namedtype.NamedType('rp', RevRepContent().subtype(
559 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,12)
560 )
561 ),
562 namedtype.NamedType('ccr', rfc2511.CertReqMessages().subtype(
563 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,13)
564 )
565 ),
566 namedtype.NamedType('ccp', CertRepMessage().subtype(
567 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,14)
568 )
569 ),
570 namedtype.NamedType('ckuann', CAKeyUpdAnnContent().subtype(
571 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,15)
572 )
573 ),
574 namedtype.NamedType('cann', CertAnnContent().subtype(
575 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,16)
576 )
577 ),
578 namedtype.NamedType('rann', RevAnnContent().subtype(
579 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,17)
580 )
581 ),
582 namedtype.NamedType('crlann', CRLAnnContent().subtype(
583 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,18)
584 )
585 ),
586 namedtype.NamedType('pkiconf', PKIConfirmContent().subtype(
587 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,19)
588 )
589 ),
590 namedtype.NamedType('nested', nestedMessageContent),
591 # namedtype.NamedType('nested', NestedMessageContent().subtype(
592 # explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,20 )
593 # )
594 # ),
595 namedtype.NamedType('genm', GenMsgContent().subtype(
596 explicitTag=tag.Tag(tag.tagClassContext,tag.tagFormatConstructed,21)
597 )
598 )
599 )
600
601
602 class PKIHeader(univ.Sequence):
603 """
604 PKIHeader ::= SEQUENCE {
605 pvno INTEGER { cmp1999(1), cmp2000(2) },
606 sender GeneralName,
607 recipient GeneralName,
608 messageTime [0] GeneralizedTime OPTIONAL,
609 protectionAlg [1] AlgorithmIdentifier OPTIONAL,
610 senderKID [2] KeyIdentifier OPTIONAL,
611 recipKID [3] KeyIdentifier OPTIONAL,
612 transactionID [4] OCTET STRING OPTIONAL,
613 senderNonce [5] OCTET STRING OPTIONAL,
614 recipNonce [6] OCTET STRING OPTIONAL,
615 freeText [7] PKIFreeText OPTIONAL,
616 generalInfo [8] SEQUENCE SIZE (1..MAX) OF
617 InfoTypeAndValue OPTIONAL
618 }
619
620 """
621 componentType = namedtype.NamedTypes(
622 namedtype.NamedType('pvno', univ.Integer(
623 namedValues=namedval.NamedValues(
624 ('cmp1999', 1),
625 ('cmp2000', 2)
626 )
627 )
628 ),
629 namedtype.NamedType('sender', rfc2459.GeneralName()),
630 namedtype.NamedType('recipient', rfc2459.GeneralName()),
631 namedtype.OptionalNamedType('messageTime', useful.GeneralizedTime().subt ype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
632 namedtype.OptionalNamedType('protectionAlg', rfc2459.AlgorithmIdentifier ().subtype(
633 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1 ))),
634 namedtype.OptionalNamedType('senderKID', rfc2459.KeyIdentifier().subtype (explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),
635 namedtype.OptionalNamedType('recipKID', rfc2459.KeyIdentifier().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
636 namedtype.OptionalNamedType('transactionID', univ.OctetString().subtype( explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),
637 namedtype.OptionalNamedType('senderNonce', univ.OctetString().subtype(ex plicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))),
638 namedtype.OptionalNamedType('recipNonce', univ.OctetString().subtype(exp licitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 6))),
639 namedtype.OptionalNamedType('freeText', PKIFreeText().subtype(explicitTa g=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 7))),
640 namedtype.OptionalNamedType('generalInfo',
641 univ.SequenceOf(
642 componentType=InfoTypeAndValue().subtype(
643 subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
644 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple , 8)
645 )
646 )
647 )
648 )
649
650 class ProtectedPart(univ.Sequence):
651 """
652 ProtectedPart ::= SEQUENCE {
653 header PKIHeader,
654 body PKIBody
655 }
656 """
657 componentType = namedtype.NamedTypes(
658 namedtype.NamedType('header', PKIHeader()),
659 namedtype.NamedType('infoValue', PKIBody())
660 )
661
662 class PKIMessage(univ.Sequence):
663 """
664 PKIMessage ::= SEQUENCE {
665 header PKIHeader,
666 body PKIBody,
667 protection [0] PKIProtection OPTIONAL,
668 extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
669 OPTIONAL
670 }"""
671 componentType = namedtype.NamedTypes(
672 namedtype.NamedType('header', PKIHeader()),
673 namedtype.NamedType('body', PKIBody()),
674 namedtype.OptionalNamedType('protection', PKIProtection().subtype(explic itTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
675 namedtype.OptionalNamedType( 'extraCerts',
676 univ.SequenceOf(
677 componentType=CMPCertificate()
678 ).subtype(
679 subtypeSpec=constraint.ValueSizeConstraint(1, MAX),
680 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructe d, 1)
681 )
682 )
683 )
684
685 class PKIMessages(univ.SequenceOf):
686 """
687 PKIMessages ::= SEQUENCE SIZE (1..MAX) OF PKIMessage
688 """
689 componentType = PKIMessage()
690 subtypeSpec = univ.SequenceOf.subtypeSpec + constraint.ValueSizeConstraint(1 , MAX)
691
692 # pyasn1 does not naturally handle recursive definitions, thus this hack:
693 # NestedMessageContent ::= PKIMessages
694 NestedMessageContent.componentType = PKIMessages()
695 nestedMessageContent.componentType = PKIMessages()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698