public MonitorEventResponse(RfcLdapMessage message) : base(message) { sbyte[] returnedValue = Value; if (null == returnedValue) { throw new LdapException(LdapException.resultCodeToString(ResultCode), ResultCode, null); } LBERDecoder decoder = new LBERDecoder(); Asn1Sequence sequence = (Asn1Sequence)decoder.decode(returnedValue); int length = ((Asn1Integer)sequence.get_Renamed(0)).intValue(); Asn1Set sequenceSet = (Asn1Set)sequence.get_Renamed(1); specifier_list = new EdirEventSpecifier[length]; for (int i = 0; i < length; i++) { Asn1Sequence eventspecifiersequence = (Asn1Sequence)sequenceSet.get_Renamed(i); int classfication = ((Asn1Integer)eventspecifiersequence.get_Renamed(0)).intValue(); int enumtype = ((Asn1Enumerated)eventspecifiersequence.get_Renamed(1)).intValue(); specifier_list[i] = new EdirEventSpecifier((EdirEventType)classfication, (EdirEventResultType)enumtype); } }
public SecurityEquivalenceEventData(EdirEventDataType eventDataType, Asn1Object message) : base(eventDataType, message) { int[] length = new int[1]; strEntryDN = ((Asn1OctetString)decoder.decode(decodedData, length)).stringValue(); retry_count = ((Asn1Integer)decoder.decode(decodedData, length)).intValue(); strValueDN = ((Asn1OctetString)decoder.decode(decodedData, length)).stringValue(); Asn1Sequence referalseq = ((Asn1Sequence)decoder.decode(decodedData, length)); referral_count = ((Asn1Integer)referalseq.get_Renamed(0)).intValue(); referral_list = new ArrayList(); if (referral_count > 0) { Asn1Sequence referalseqof = ((Asn1Sequence)referalseq.get_Renamed(1)); for (int i = 0; i < referral_count; i++) { referral_list.Add(new ReferralAddress((Asn1Sequence)referalseqof.get_Renamed(i))); } } DataInitDone(); }
public GetEffectivePrivilegesListResponse(RfcLdapMessage rfcMessage) : base(rfcMessage) { /// <summary> Constructs an object from the responseValue which contains the effective /// privileges. /// /// The constructor parses the responseValue which has the following /// format: /// responseValue ::=<br> /// <p>SEQUENCE numberofresponses ::= INTEGER <br> /// SET of [<br> /// SEQUENCES of {privileges INTEGER}]<br> /// /// </summary> /// <exception> IOException The responseValue could not be decoded. /// </exception> if (ResultCode == LdapException.SUCCESS) { // parse the contents of the reply sbyte[] returnedValue = this.Value; if (returnedValue == null) { throw new IOException("No returned value"); } //Create a decoder object LBERDecoder decoder = new LBERDecoder(); if (decoder == null) { throw new IOException("Decoding error"); } Asn1Sequence asn1_seq1 = (Asn1Sequence)decoder.decode(returnedValue); if (asn1_seq1 == null) { throw new IOException("Decoding error"); } Asn1Sequence asn1_seq2 = (Asn1Sequence)asn1_seq1.get_Renamed(0); no_privileges = ((Asn1Integer)asn1_seq2.get_Renamed(0)).intValue(); Asn1Set set_privileg_response = null; set_privileg_response = (Asn1Set)asn1_seq1.get_Renamed(1); Asn1Sequence seq2 = null; privileges = new int[no_privileges]; for (int index = 0; index < no_privileges; index++) { seq2 = (Asn1Sequence)set_privileg_response.get_Renamed(index); privileges[index] = ((Asn1Integer)seq2.get_Renamed(0)).intValue(); } } }
public DebugParameter(Asn1Tagged dseObject) { switch ((DebugParameterType)(dseObject.getIdentifier().Tag)) { case DebugParameterType.ENTRYID: case DebugParameterType.INTEGER: objData = getTaggedIntValue(dseObject); break; case DebugParameterType.BINARY: objData = ((Asn1OctetString)dseObject.taggedValue()).byteValue(); break; case DebugParameterType.STRING: objData = ((Asn1OctetString)dseObject.taggedValue()).stringValue(); break; case DebugParameterType.TIMESTAMP: objData = new DSETimeStamp(getTaggedSequence(dseObject)); break; case DebugParameterType.TIMEVECTOR: ArrayList timeVector = new ArrayList(); Asn1Sequence seq = getTaggedSequence(dseObject); int count = ((Asn1Integer)seq.get_Renamed(0)).intValue(); if (count > 0) { Asn1Sequence timeSeq = (Asn1Sequence)seq.get_Renamed(1); for (int i = 0; i < count; i++) { timeVector.Add(new DSETimeStamp((Asn1Sequence)timeSeq.get_Renamed(i))); } } objData = timeVector; break; case DebugParameterType.ADDRESS: objData = new ReferralAddress(getTaggedSequence(dseObject)); break; default: throw new IOException("Unknown Tag in DebugParameter.."); } debug_type = (DebugParameterType)(dseObject.getIdentifier().Tag); }
public DebugEventData(EdirEventDataType eventDataType, Asn1Object message) : base(eventDataType, message) { int[] length = new int[1]; ds_time = ((Asn1Integer)decoder.decode(decodedData, length)).intValue(); milli_seconds = ((Asn1Integer)decoder.decode(decodedData, length)).intValue(); strPerpetratorDN = ((Asn1OctetString)decoder.decode(decodedData, length)).stringValue(); strFormatString = ((Asn1OctetString)decoder.decode(decodedData, length)).stringValue(); nVerb = ((Asn1Integer)decoder.decode(decodedData, length)).intValue(); parameter_count = ((Asn1Integer)decoder.decode(decodedData, length)).intValue(); parameter_collection = new ArrayList(); if (parameter_count > 0) { Asn1Sequence seq = (Asn1Sequence)decoder.decode(decodedData, length); for (int i = 0; i < parameter_count; i++) { parameter_collection.Add( new DebugParameter((Asn1Tagged)seq.get_Renamed(i)) ); } } DataInitDone(); }
/// <summary> Constructs a Control object by decoding from an Asn1Sequence</summary> public RfcControl(Asn1Sequence seqObj) : base(3) { int len = seqObj.size(); for (int i = 0; i < len; i++) { add(seqObj.get_Renamed(i)); } }
/// <summary> Constructs a Control object by decoding from an Asn1Sequence.</summary> public RfcControl(Asn1Sequence seqObj) : base(3) { var len = seqObj.Size(); for (var i = 0; i < len; i++) { Add(seqObj.get_Renamed(i)); } }
/// <summary> Constructs an object from the responseValue which contains the list /// of replicas. /// /// The constructor parses the responseValue which has the following /// format: /// responseValue ::= /// replicaList /// SEQUENCE OF OCTET STRINGS /// /// </summary> /// <exception> IOException The responseValue could not be decoded. /// </exception> public ListReplicasResponse(RfcLdapMessage rfcMessage) : base(rfcMessage) { if (ResultCode != LdapException.SUCCESS) { replicaList = new string[0]; } else { // parse the contents of the reply sbyte[] returnedValue = this.Value; if (returnedValue == null) { throw new IOException("No returned value"); } // Create a decoder object LBERDecoder decoder = new LBERDecoder(); if (decoder == null) { throw new IOException("Decoding error"); } // We should get back a sequence Asn1Sequence returnedSequence = (Asn1Sequence)decoder.decode(returnedValue); if (returnedSequence == null) { throw new IOException("Decoding error"); } // How many replicas were returned int len = returnedSequence.size(); replicaList = new string[len]; // Copy each one into our String array for (int i = 0; i < len; i++) { // Get the next Asn1Octet String in the sequence Asn1OctetString asn1_nextReplica = (Asn1OctetString)returnedSequence.get_Renamed(i); if (asn1_nextReplica == null) { throw new IOException("Decoding error"); } // Convert to a string replicaList[i] = asn1_nextReplica.stringValue(); if (replicaList[i] == null) { throw new IOException("Decoding error"); } } } }
public LdapEntryChangeControl(String oid, bool critical, sbyte[] value_Renamed) : base(oid, critical, value_Renamed) { // Create a decoder objet LBERDecoder decoder = new LBERDecoder(); if (decoder == null) { throw new System.IO.IOException("Decoding error."); } // We should get a sequence initially Asn1Object asnObj = decoder.decode(value_Renamed); if ((asnObj == null) || (!(asnObj is Asn1Sequence))) { throw new System.IO.IOException("Decoding error."); } Asn1Sequence sequence = (Asn1Sequence)asnObj; // The first element in the sequence should be an enumerated type Asn1Object asn1Obj = sequence.get_Renamed(0); if ((asn1Obj == null) || (!(asn1Obj is Asn1Enumerated))) { throw new System.IO.IOException("Decoding error."); } m_changeType = ((Asn1Enumerated)asn1Obj).intValue(); //check for optional elements if ((sequence.size() > 1) && (m_changeType == 8)) //8 means modifyDN { // get the previous DN - it is encoded as an octet string asn1Obj = sequence.get_Renamed(1); if ((asn1Obj == null) || (!(asn1Obj is Asn1OctetString))) { throw new System.IO.IOException("Decoding error get previous DN"); } m_previousDN = ((Asn1OctetString)asn1Obj).stringValue(); } else { m_previousDN = ""; } //check for change number if (sequence.size() == 3) { asn1Obj = sequence.get_Renamed(2); if ((asn1Obj == null) || (!(asn1Obj is Asn1Integer))) { throw new System.IO.IOException("Decoding error getting change number"); } m_changeNumber = ((Asn1Integer)asn1Obj).intValue(); m_hasChangeNumber = true; } else { m_hasChangeNumber = false; } return; }
/** * Constructs an object from the responseValue which contains the backup data. * <p>The constructor parses the responseValue which has the following * format:<br> * responseValue ::=<br> * <p>databufferLength ::= INTEGER <br> * mts(modification time stamp) ::= INTEGER<br> * revision ::= INTEGER<br> * returnedBuffer ::= OCTET STRING<br> * dataChunkSizes ::= <br> * SEQUENCE{<br> * noOfChunks INTEGER<br> * SET of [<br> * SEQUENCE of {eachChunksize INTEGER}]<br> * }</p> * * @exception IOException The responseValue could not be decoded. */ public LdapBackupResponse(RfcLdapMessage rfcMessage) : base(rfcMessage) { int modificationTime = 0; // Modifaction timestamp of the Object int revision = 0; // Revision number of the Object int chunksSize = 0; int[] chunks = null; //Holds size of each chunks returned from server //Verify if returned ID is not proper if (ID == null || !(ID.Equals(BackupRestoreConstants.NLDAP_LDAP_BACKUP_RESPONSE))) { throw new IOException("LDAP Extended Operation not supported"); } if (ResultCode == LdapException.SUCCESS) { // Get the contents of the reply byte[] returnedValue = SupportClass.ToByteArray(Value); if (returnedValue == null) { throw new Exception("LDAP Operations error. No returned value."); } // Create a decoder object LBERDecoder decoder = new LBERDecoder(); if (decoder == null) { throw new Exception("Decoding error"); } // Parse the parameters in the order MemoryStream currentPtr = new MemoryStream(returnedValue); // Parse bufferLength Asn1Integer asn1_bufferLength = (Asn1Integer)decoder .decode(currentPtr); if (asn1_bufferLength == null) { throw new IOException("Decoding error"); } bufferLength = asn1_bufferLength.intValue(); // Parse modificationTime Asn1Integer asn1_modificationTime = (Asn1Integer)decoder .decode(currentPtr); if (asn1_modificationTime == null) { throw new IOException("Decoding error"); } modificationTime = asn1_modificationTime.intValue(); // Parse revision Asn1Integer asn1_revision = (Asn1Integer)decoder .decode(currentPtr); if (asn1_revision == null) { throw new IOException("Decoding error"); } revision = asn1_revision.intValue(); //Format stateInfo to contain both modificationTime and revision stateInfo = modificationTime + "+" + revision; // Parse returnedBuffer Asn1OctetString asn1_returnedBuffer = (Asn1OctetString)decoder.decode(currentPtr); if (asn1_returnedBuffer == null) { throw new IOException("Decoding error"); } returnedBuffer = SupportClass.ToByteArray(asn1_returnedBuffer.byteValue()); /* * Parse chunks array * Chunks returned from server is encoded as shown below:: * SEQUENCE{ * chunksSize INTEGER * SET of [ * SEQUENCE of {eacChunksize INTEGER}] * } */ Asn1Sequence asn1_chunksSeq = (Asn1Sequence)decoder .decode(currentPtr); if (asn1_chunksSeq == null) { throw new IOException("Decoding error"); } //Get number of chunks returned from server chunksSize = ((Asn1Integer)asn1_chunksSeq.get_Renamed(0)).intValue(); //Construct chunks array chunks = new int[chunksSize]; Asn1Set asn1_chunksSet = (Asn1Set)asn1_chunksSeq.get_Renamed(1); //Iterate through asn1_chunksSet and put each size into chunks array for (int index = 0; index < chunksSize; index++) { Asn1Sequence asn1_eachSeq = (Asn1Sequence)asn1_chunksSet.get_Renamed(index); chunks[index] = ((Asn1Integer)asn1_eachSeq.get_Renamed(0)).intValue(); } //Construct a temporary StringBuffer and append chunksSize, each size //element in chunks array and actual data of eDirectoty Object System.Text.StringBuilder tempBuffer = new System.Text.StringBuilder(); tempBuffer.Append(chunksSize); tempBuffer.Append(";"); int i = 0; for (; i < (chunksSize - 1); i++) { tempBuffer.Append(chunks[i]); tempBuffer.Append(";"); } tempBuffer.Append(chunks[i]); //Assign tempBuffer to parsedString to be returned to Application chunkSizesString = tempBuffer.ToString(); } else { //Intialize all these if getResultCode() != LdapException.SUCCESS bufferLength = 0; stateInfo = null; chunkSizesString = null; returnedBuffer = null; } }
protected void ProcessMessage(sbyte[] returnedValue) { LBERDecoder decoder = new LBERDecoder(); Asn1Sequence sequence = (Asn1Sequence)decoder.decode(returnedValue); event_type = (EdirEventType)(((Asn1Integer)sequence.get_Renamed(0)).intValue()); event_result_type = (EdirEventResultType)(((Asn1Integer)sequence.get_Renamed(1)).intValue()); if (sequence.size() > 2) { Asn1Tagged objTagged = (Asn1Tagged)sequence.get_Renamed(2); switch ((EdirEventDataType)(objTagged.getIdentifier().Tag)) { case EdirEventDataType.EDIR_TAG_ENTRY_EVENT_DATA: event_response_data = new EntryEventData(EdirEventDataType.EDIR_TAG_ENTRY_EVENT_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_VALUE_EVENT_DATA: event_response_data = new ValueEventData(EdirEventDataType.EDIR_TAG_VALUE_EVENT_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_DEBUG_EVENT_DATA: event_response_data = new DebugEventData(EdirEventDataType.EDIR_TAG_DEBUG_EVENT_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_GENERAL_EVENT_DATA: event_response_data = new GeneralDSEventData(EdirEventDataType.EDIR_TAG_GENERAL_EVENT_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_SKULK_DATA: event_response_data = null; break; case EdirEventDataType.EDIR_TAG_BINDERY_EVENT_DATA: event_response_data = new BinderyObjectEventData(EdirEventDataType.EDIR_TAG_BINDERY_EVENT_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_DSESEV_INFO: event_response_data = new SecurityEquivalenceEventData(EdirEventDataType.EDIR_TAG_DSESEV_INFO, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_MODULE_STATE_DATA: event_response_data = new ModuleStateEventData(EdirEventDataType.EDIR_TAG_MODULE_STATE_DATA, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_NETWORK_ADDRESS: event_response_data = new NetworkAddressEventData(EdirEventDataType.EDIR_TAG_NETWORK_ADDRESS, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_CONNECTION_STATE: event_response_data = new ConnectionStateEventData(EdirEventDataType.EDIR_TAG_CONNECTION_STATE, objTagged.taggedValue()); break; case EdirEventDataType.EDIR_TAG_CHANGE_SERVER_ADDRESS: event_response_data = new ChangeAddressEventData(EdirEventDataType.EDIR_TAG_CHANGE_SERVER_ADDRESS, objTagged.taggedValue()); break; /* * case EdirEventDataType.EDIR_TAG_CHANGE_CONFIG_PARAM : * responsedata = * new ChangeConfigEventData( * taggedobject.taggedValue()); * * break; * * case EdirEventDataType.EDIR_TAG_STATUS_LOG : * responsedata = * new StatusLogEventData(taggedobject.taggedValue()); * * break; */ case EdirEventDataType.EDIR_TAG_NO_DATA: event_response_data = null; break; default: //unhandled data. throw new IOException(); } } else { //NO DATA event_response_data = null; } }
/// <summary> /// Returns a string representation of the object. /// </summary> public ReferralAddress(Asn1Sequence dseObject) { address_type = ((Asn1Integer)dseObject.get_Renamed(0)).intValue(); strAddress = ((Asn1OctetString)dseObject.get_Renamed(1)).stringValue(); }
/// <summary> Constructs an object from the responseValue which contains the replication /// filter. /// /// The constructor parses the responseValue which has the following /// format: /// responseValue ::= /// SEQUENCE of SEQUENCE { /// classname OCTET STRING /// SEQUENCE of ATTRIBUTES /// } /// where /// ATTRIBUTES:: OCTET STRING /// /// </summary> /// <exception> IOException The responseValue could not be decoded. /// </exception> public GetReplicationFilterResponse(RfcLdapMessage rfcMessage) : base(rfcMessage) { if (ResultCode != LdapException.SUCCESS) { returnedFilter = new System.String[0][]; for (int i = 0; i < 0; i++) { returnedFilter[i] = new System.String[0]; } } else { // parse the contents of the reply sbyte[] returnedValue = this.Value; if (returnedValue == null) { throw new System.IO.IOException("No returned value"); } // Create a decoder object LBERDecoder decoder = new LBERDecoder(); if (decoder == null) { throw new System.IO.IOException("Decoding error"); } // We should get back a sequence Asn1Sequence returnedSequence = (Asn1Sequence)decoder.decode(returnedValue); if (returnedSequence == null) { throw new System.IO.IOException("Decoding error"); } // How many sequences in this list int numberOfSequences = returnedSequence.size(); returnedFilter = new System.String[numberOfSequences][]; // Parse each returned sequence object for (int classNumber = 0; classNumber < numberOfSequences; classNumber++) { // Get the next Asn1Sequence Asn1Sequence asn1_innerSequence = (Asn1Sequence)returnedSequence.get_Renamed(classNumber); if (asn1_innerSequence == null) { throw new System.IO.IOException("Decoding error"); } // Get the asn1 encoded classname Asn1OctetString asn1_className = (Asn1OctetString)asn1_innerSequence.get_Renamed(0); if (asn1_className == null) { return; } // Get the attribute List Asn1Sequence asn1_attributeList = (Asn1Sequence)asn1_innerSequence.get_Renamed(1); if (asn1_attributeList == null) { throw new System.IO.IOException("Decoding error"); } int numberOfAttributes = asn1_attributeList.size(); returnedFilter[classNumber] = new System.String[numberOfAttributes + 1]; // Get the classname returnedFilter[classNumber][0] = asn1_className.stringValue(); if ((System.Object)returnedFilter[classNumber][0] == null) { throw new System.IO.IOException("Decoding error"); } for (int attributeNumber = 0; attributeNumber < numberOfAttributes; attributeNumber++) { // Get the asn1 encoded attribute name Asn1OctetString asn1_attributeName = (Asn1OctetString)asn1_attributeList.get_Renamed(attributeNumber); if (asn1_attributeName == null) { throw new System.IO.IOException("Decoding error"); } // Get attributename string returnedFilter[classNumber][attributeNumber + 1] = asn1_attributeName.stringValue(); if ((System.Object)returnedFilter[classNumber][attributeNumber + 1] == null) { throw new System.IO.IOException("Decoding error"); } } } } }
public DSETimeStamp(Asn1Sequence dseObject) { nSeconds = ((Asn1Integer)dseObject.get_Renamed(0)).intValue(); replica_number = ((Asn1Integer)dseObject.get_Renamed(1)).intValue(); nEvent = ((Asn1Integer)dseObject.get_Renamed(2)).intValue(); }