| # |
| # This file is part of pyasn1-modules software. |
| # |
| # Created by Russ Housley. |
| # |
| # Copyright (c) 2019, Vigil Security, LLC |
| # License: http://snmplabs.com/pyasn1/license.html |
| # |
| # Alternative Challenge Password Attributes for EST |
| # |
| # ASN.1 source from: |
| # https://www.rfc-editor.org/rfc/rfc7894.txt |
| # |
| |
| from pyasn1.type import char |
| from pyasn1.type import constraint |
| from pyasn1.type import namedtype |
| from pyasn1.type import univ |
| |
| from pyasn1_modules import rfc5652 |
| from pyasn1_modules import rfc6402 |
| from pyasn1_modules import rfc7191 |
| |
| |
| # SingleAttribute is the same as Attribute in RFC 5652, except that the |
| # attrValues SET must have one and only one member |
| |
| Attribute = rfc7191.SingleAttribute |
| |
| |
| # DirectoryString is the same as RFC 5280, except the length is limited to 255 |
| |
| class DirectoryString(univ.Choice): |
| pass |
| |
| DirectoryString.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('teletexString', char.TeletexString().subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, 255))), |
| namedtype.NamedType('printableString', char.PrintableString().subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, 255))), |
| namedtype.NamedType('universalString', char.UniversalString().subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, 255))), |
| namedtype.NamedType('utf8String', char.UTF8String().subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, 255))), |
| namedtype.NamedType('bmpString', char.BMPString().subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, 255))) |
| ) |
| |
| |
| # OTP Challenge Attribute |
| |
| id_aa_otpChallenge = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.56') |
| |
| ub_aa_otpChallenge = univ.Integer(255) |
| |
| otpChallenge = Attribute() |
| otpChallenge['attrType'] = id_aa_otpChallenge |
| otpChallenge['attrValues'][0] = DirectoryString() |
| |
| |
| # Revocation Challenge Attribute |
| |
| id_aa_revocationChallenge = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.57') |
| |
| ub_aa_revocationChallenge = univ.Integer(255) |
| |
| revocationChallenge = Attribute() |
| revocationChallenge['attrType'] = id_aa_revocationChallenge |
| revocationChallenge['attrValues'][0] = DirectoryString() |
| |
| |
| # EST Identity Linking Attribute |
| |
| id_aa_estIdentityLinking = univ.ObjectIdentifier('1.2.840.113549.1.9.16.2.58') |
| |
| ub_aa_est_identity_linking = univ.Integer(255) |
| |
| estIdentityLinking = Attribute() |
| estIdentityLinking['attrType'] = id_aa_estIdentityLinking |
| estIdentityLinking['attrValues'][0] = DirectoryString() |
| |
| |
| # Map of Attribute Type OIDs to Attributes added to the |
| # ones that are in rfc6402.py |
| |
| _cmcControlAttributesMapUpdate = { |
| id_aa_otpChallenge: DirectoryString(), |
| id_aa_revocationChallenge: DirectoryString(), |
| id_aa_estIdentityLinking: DirectoryString(), |
| } |
| |
| rfc6402.cmcControlAttributesMap.update(_cmcControlAttributesMapUpdate) |