Пример #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()))