示例#1
0
 class GeneralName(Choice):
     # pylint: disable=C0111,R0903
     componentType = NamedTypes(
         NamedType(
             'otherName',
             OtherName().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 0))),
         NamedType(
             'rfc822Name',
             IA5String().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 1))),
         NamedType(
             'dNSName',
             IA5String().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 2))),
         NamedType(
             'x400Address',
             OctetString().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 3))),
         NamedType(
             'directoryName',
             Name().subtype(implicitTag=tag.Tag(tag.tagClassContext,
                                                tag.tagFormatSimple, 4))),
         NamedType(
             'ediPartyName',
             OctetString().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 5))),
         NamedType(
             'uniformResourceIdentifier',
             IA5String().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 6))),
         NamedType(
             'iPAddress',
             OctetString().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 7))),
         NamedType(
             'registeredID',
             ObjectIdentifier().subtype(implicitTag=tag.Tag(
                 tag.tagClassContext, tag.tagFormatSimple, 8))),
     )
class Filter(Choice):
    # Filter ::= CHOICE {
    #     and             [0] SET SIZE (1..MAX) OF filter Filter,
    #     or              [1] SET SIZE (1..MAX) OF filter Filter,
    #     not             [2] Filter,
    #     equalityMatch   [3] AttributeValueAssertion,
    #     substrings      [4] SubstringFilter,
    #     greaterOrEqual  [5] AttributeValueAssertion,
    #     lessOrEqual     [6] AttributeValueAssertion,
    #     present         [7] AttributeDescription,
    #     approxMatch     [8] AttributeValueAssertion,
    #     extensibleMatch [9] MatchingRuleAssertion,
    #          ...  }
    componentType = NamedTypes(NamedType('and', And()), NamedType('or', Or()),
                               NamedType('notFilter', Not()),
                               NamedType('equalityMatch', EqualityMatch()),
                               NamedType('substringFilter', SubstringFilter()),
                               NamedType('greaterOrEqual', GreaterOrEqual()),
                               NamedType('lessOrEqual', LessOrEqual()),
                               NamedType('present', Present()),
                               NamedType('approxMatch', ApproxMatch()),
                               NamedType('extensibleMatch', ExtensibleMatch()))
示例#3
0
class Condition(Choice):
    componentType = NamedTypes(
        NamedType(
            'preimageSha256',
            SimpleSha256Condition().subtype(
                implicitTag=Tag(tagClassContext, tagFormatConstructed, 0))),
        NamedType(
            'prefixSha256',
            CompoundSha256Condition().subtype(
                implicitTag=Tag(tagClassContext, tagFormatConstructed, 1))),
        NamedType(
            'thresholdSha256',
            CompoundSha256Condition().subtype(
                implicitTag=Tag(tagClassContext, tagFormatConstructed, 2))),
        NamedType(
            'rsaSha256',
            SimpleSha256Condition().subtype(
                implicitTag=Tag(tagClassContext, tagFormatConstructed, 3))),
        NamedType(
            'ed25519Sha256',
            SimpleSha256Condition().subtype(
                implicitTag=Tag(tagClassContext, tagFormatConstructed, 4))),
    )
示例#4
0
class NegTokenResp(Sequence):
    """
    [RFC-4178]

    4.2.2 negTokenResp
    The response message for NegTokenInit.

    NegTokenResp ::= SEQUENCE {
        negStat [0] NegState OPTIONAL,
        supportedMech [1] MechType OPTIONAL,
        responseToken [2] OCTET STRING OPTIONAL,
        mechListMIC {3] OCTET STRING OPTIONAL,
        ...
    }
    """
    componentType = NamedTypes(
        OptionalNamedType(
            'negStat', NegStat().subtype(
                explicitTag=Tag(tagClassContext, tagFormatConstructed, 0)
            )
        ),
        OptionalNamedType(
            'supportedMech', ObjectIdentifier().subtype(
                explicitTag=Tag(tagClassContext, tagFormatSimple, 1)
            )
        ),
        OptionalNamedType(
            'responseToken', OctetString().subtype(
                explicitTag=Tag(tagClassContext, tagFormatSimple, 2)
            )
        ),
        OptionalNamedType(
            'mechListMIC', OctetString().subtype(
                explicitTag=Tag(tagClassContext, tagFormatSimple, 3)
            )
        )
    )
示例#5
0
class LDAPMessage(Sequence):
    """
        LDAPMessage ::= SEQUENCE {
             messageID       MessageID,
             protocolOp      CHOICE {
                  bindRequest           BindRequest,
                  bindResponse          BindResponse,
                  unbindRequest         UnbindRequest,
                  searchRequest         SearchRequest,
                  searchResEntry        SearchResultEntry,
                  searchResDone         SearchResultDone,
                  searchResRef          SearchResultReference,
                  modifyRequest         ModifyRequest,
                  modifyResponse        ModifyResponse,
                  addRequest            AddRequest,
                  addResponse           AddResponse,
                  delRequest            DelRequest,
                  delResponse           DelResponse,
                  modDNRequest          ModifyDNRequest,
                  modDNResponse         ModifyDNResponse,
                  compareRequest        CompareRequest,
                  compareResponse       CompareResponse,
                  abandonRequest        AbandonRequest,
                  extendedReq           ExtendedRequest,
                  extendedResp          ExtendedResponse,
                  ...,
                  intermediateResponse  IntermediateResponse },
             controls       [0] Controls OPTIONAL }

        MessageID ::= INTEGER (0 ..  maxInt)

        maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
    """
    componentType = NamedTypes(NamedType('messageID', MessageID()),
                               NamedType('protocolOp', ProtocolOp()),
                               OptionalNamedType('controls', Controls()))
class TSCredentials(Sequence):
    """
    [MS-CSSP] 2.2.1.2 TSCredentials
    https://msdn.microsoft.com/en-us/library/cc226782.aspx

    Contains the user's credentials and their type to send to the server.

    TSCredentials ::= SEQUENCE {
        credType    [0] INTEGER,
        credentials [1] OCTET STRING
    }
    """
    componentType = NamedTypes(
        NamedType(
            'credType', Integer().subtype(
                explicitTag=Tag(tagClassContext, tagFormatConstructed, 0)
            )
        ),
        NamedType(
            'credentials', OctetString().subtype(
                explicitTag=Tag(tagClassContext, tagFormatConstructed, 1)
            )
        )
    )
示例#7
0
class NegHints(Sequence):
    """
    [MS-SPNG] v14.0 2017-09-15

    2.2.1 NegTokenInit2
    NegHints is an extension of NegTokenInit.

    NegHints ::= SEQUENCE {
        hintName[0] GeneralString OPTIONAL,
        hintAddress[1] OCTET STRING OPTIONAL
    }
    """
    componentType = NamedTypes(
        OptionalNamedType(
            'hintName', GeneralString().subtype(
                explicitTag=Tag(tagClassContext, tagFormatSimple, 0)
            )
        ),
        OptionalNamedType(
            'hintAddress', OctetString().subtype(
                explicitTag=Tag(tagClassContext, tagFormatSimple, 1)
            )
        )
    )
示例#8
0
class SicilyBindResponse(Sequence):
    # SicilyBindResponse ::= [APPLICATION 1] SEQUENCE {
    #
    #     resultCode   ENUMERATED {
    #                      success                     (0),
    #                      protocolError               (2),
    #                      adminLimitExceeded          (11),
    #                      inappropriateAuthentication (48),
    #                      invalidCredentials          (49),
    #                      busy                        (51),
    #                      unavailable                 (52),
    #                      unwillingToPerform          (53),
    #                      other                       (80) },
    #
    #     serverCreds  OCTET STRING,
    #     errorMessage LDAPString }
    # BindResponse ::= [APPLICATION 1] SEQUENCE {
    #     COMPONENTS OF LDAPResult,
    #     serverSaslCreds    [7] OCTET STRING OPTIONAL }
    tagSet = Sequence.tagSet.tagImplicitly(
        Tag(tagClassApplication, tagFormatConstructed, 1))
    componentType = NamedTypes(NamedType('resultCode', ResultCode()),
                               NamedType('serverCreds', OctetString()),
                               NamedType('errorMessage', LDAPString()))
示例#9
0
class Cypher(Sequence):
   componentType = NamedTypes(NamedType('oid',ObjectIdentifier()), NamedType('iv',OctetString()))
class NmasSetUniversalPasswordResponseValue(Sequence):
    componentType = NamedTypes(NamedType('nmasver', NmasVer()),
                               NamedType('err', Error()))
class ReplicaInfoRequestValue(Sequence):
    tagSet = TagSet()
    componentType = NamedTypes(NamedType('server_dn', LDAPDN()),
                               NamedType('partition_dn', LDAPDN()))
class NmasGetUniversalPasswordResponseValue(Sequence):
    componentType = NamedTypes(NamedType('nmasver', NmasVer()),
                               NamedType('err', Error()),
                               OptionalNamedType('passwd', Password()))
class NmasSetUniversalPasswordRequestValue(Sequence):
    componentType = NamedTypes(NamedType('nmasver', NmasVer()),
                               NamedType('reqdn', Identity()),
                               NamedType('new_passwd', Password()))
示例#14
0
class EncryptedData(Sequence):
    componentType = NamedTypes(
        NamedType('etype', _c(0, Integer())),
        OptionalNamedType('kvno', _c(1, Integer())),
        NamedType('cipher', _c(2, OctetString())))
class GroupingControlValue(Sequence):
    componentType = NamedTypes(NamedType('groupingCookie', GroupCookie()),
                               OptionalNamedType('groupValue', OctetString()))
class PartialAttribute(Sequence):
    # PartialAttribute ::= SEQUENCE {
    #     type       AttributeDescription,
    #     vals       SET OF value AttributeValue }
    componentType = NamedTypes(NamedType('type', AttributeDescription()),
                               NamedType('vals', Vals()))
示例#17
0
class ExtendedDN(Sequence):
    # A flag value 0 specifies that the GUID and SID values be returned in hexadecimal string
    # A flag value of 1 will return the GUID and SID values in standard string format
    componentType = NamedTypes(NamedType('option', Integer()))
示例#18
0
class EncryptedPrivateKeyInfo(Sequence):
    componentType = NamedTypes(
        NamedType("encryptionAlgorithm", AlgorithmIdentifier()),
        NamedType("encryptedData", OctetString()))
class CreateGroupTypeRequestValue(Sequence):
    componentType = NamedTypes(
        NamedType('createGroupType', LDAPOID()),
        OptionalNamedType('createGroupValue', OctetString()))
示例#20
0
class Attribute(Sequence):
    componentType = NamedTypes(NamedType("type", ObjectIdentifier()),
                               NamedType("vals", SetOf(componentType=Any())))
示例#21
0
class AttributeTypeAndValue(Sequence):
    componentType = NamedTypes(NamedType("type", ObjectIdentifier()),
                               NamedType("value", Any()))
示例#22
0
class AlgorithmIdentifier(Sequence):
    componentType = NamedTypes(NamedType("algorithm", ObjectIdentifier()),
                               OptionalNamedType("parameters", Any()))
示例#23
0
class LoginData(Sequence):
   componentType = NamedTypes(NamedType('key_id', OctetString()),NamedType('cypher', Cypher()),NamedType('cypherText', OctetString()))
示例#24
0
class HostAddress(Sequence):
    componentType = NamedTypes(
        NamedType('addr-type', _c(0, Integer())),
        NamedType('address', _c(1, OctetString())))
class EndGroupTypeResponseValue(Sequence):
    componentType = NamedTypes(
        OptionalNamedType('endGroupValue', OctetString()))
示例#26
0
class PAData(Sequence):
    componentType = NamedTypes(
        NamedType('padata-type', _c(1, Integer())),
        NamedType('padata-value', _c(2, OctetString())))
    #     extensibleMatch [9] MatchingRuleAssertion,
    #          ...  }
    componentType = NamedTypes(NamedType('and', And()), NamedType('or', Or()),
                               NamedType('notFilter', Not()),
                               NamedType('equalityMatch', EqualityMatch()),
                               NamedType('substringFilter', SubstringFilter()),
                               NamedType('greaterOrEqual', GreaterOrEqual()),
                               NamedType('lessOrEqual', LessOrEqual()),
                               NamedType('present', Present()),
                               NamedType('approxMatch', ApproxMatch()),
                               NamedType('extensibleMatch', ExtensibleMatch()))


And.componentType = Filter()
Or.componentType = Filter()
Not.componentType = NamedTypes(NamedType('innerNotFilter', Filter()))
Not.tagSet = Filter.tagSet.tagExplicitly(
    Tag(tagClassContext, tagFormatConstructed, 2))  # as per RFC4511 page 23


class PartialAttributeList(SequenceOf):
    # PartialAttributeList ::= SEQUENCE OF
    #     partialAttribute PartialAttribute
    componentType = PartialAttribute()


class Operation(Enumerated):
    # operation       ENUMERATED {
    #     add     (0),
    #     delete  (1),
    #     replace (2),
示例#28
0
class PrincipalName(Sequence):
    componentType = NamedTypes(
        NamedType('name-type', _c(0, Integer())),
        NamedType('name-string', _c(1, SequenceOf(componentType=KerberosString()))))
class CreateGroupTypeResponseValue(Sequence):
    componentType = NamedTypes(
        NamedType('createGroupCookie', GroupCookie()),
        OptionalNamedType('createGroupValue', OctetString()))
class EndGroupTypeRequestValue(Sequence):
    componentType = NamedTypes(
        NamedType('endGroupCookie', GroupCookie()),
        OptionalNamedType('endGroupValue', OctetString()))