# This file is being contributed to pyasn1-modules software. # # Created by Russ Housley. # # Copyright (c) 2019, Vigil Security, LLC # License: http://snmplabs.com/pyasn1/license.html # # Traceable Anonymous Certificate # # ASN.1 source from: # https://www.rfc-editor.org/rfc/rfc5480.txt from pyasn1.type import namedtype from pyasn1.type import univ from pyasn1.type import useful from pyasn1_modules import rfc5652 # Imports from RFC 5652 ContentInfo = rfc5652.ContentInfo EncapsulatedContentInfo = rfc5652.EncapsulatedContentInfo id_data = rfc5652.id_data # Object Identifiers id_KISA = univ.ObjectIdentifier((1, 2, 410, 200004,)) id_npki = id_KISA + (10,) id_attribute = id_npki + (1,) id_kisa_tac = id_attribute + (1,) id_kisa_tac_token = id_kisa_tac + (1,) id_kisa_tac_tokenandblindbash = id_kisa_tac + (2,) id_kisa_tac_tokenandpartially = id_kisa_tac + (3,) # Structures for Traceable Anonymous Certificate (TAC) class UserKey(univ.OctetString): pass class Timeout(useful.GeneralizedTime): pass class BlinedCertificateHash(univ.OctetString): pass class PartiallySignedCertificateHash(univ.OctetString): pass class Token(ContentInfo): pass class TokenandBlindHash(ContentInfo): pass class TokenandPartiallySignedCertificateHash(ContentInfo): pass # Added to the module in RFC 5636 for the CMS Content Type Map class TACToken(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('userKey', UserKey()), namedtype.NamedType('timeout', Timeout()) ) class TACTokenandBlindHash(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('token', Token()), namedtype.NamedType('blinded', BlinedCertificateHash()) ) class TACTokenandPartiallySignedCertificateHash(univ.Sequence): componentType = namedtype.NamedTypes( namedtype.NamedType('token', Token()), namedtype.NamedType('partially', PartiallySignedCertificateHash()) ) # Add to the CMS Content Type Map in rfc5752.py _cmsContentTypesMapUpdate = { id_kisa_tac_token: TACToken(), id_kisa_tac_tokenandblindbash: TACTokenandBlindHash(), id_kisa_tac_tokenandpartially: TACTokenandPartiallySignedCertificateHash(), } rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate)