/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.harmony.jndi.provider.ldap.asn1;
import org.apache.harmony.security.asn1.ASN1Boolean;
import org.apache.harmony.security.asn1.ASN1Constants;
import org.apache.harmony.security.asn1.ASN1Enumerated;
import org.apache.harmony.security.asn1.ASN1Implicit;
import org.apache.harmony.security.asn1.ASN1Integer;
import org.apache.harmony.security.asn1.ASN1OctetString;
import org.apache.harmony.security.asn1.ASN1Sequence;
import org.apache.harmony.security.asn1.ASN1SequenceOf;
import org.apache.harmony.security.asn1.ASN1SetOf;
import org.apache.harmony.security.asn1.ASN1Type;
/**
* This class contains all ASN.1 type defined in RFC 2251.
*/
public class LdapASN1Constant {
public static final int OP_BIND_REQUEST = 0;
public static final int OP_BIND_RESPONSE = 1;
public static final int OP_UNBIND_REQUEST = 2;
public static final int OP_SEARCH_REQUEST = 3;
public static final int OP_SEARCH_RESULT_ENTRY = 4;
public static final int OP_SEARCH_RESULT_DONE = 5;
public static final int OP_SEARCH_RESULT_REF = 6;
public static final int OP_MODIFY_REQUEST = 7;
public static final int OP_MODIFY_RESPONSE = 8;
public static final int OP_ADD_REQUEST = 9;
public static final int OP_ADD_RESPONSE = 10;
public static final int OP_DEL_REQUEST = 11;
public static final int OP_DEL_RESPONSE = 12;
public static final int OP_MODIFY_DN_REQUEST = 13;
public static final int OP_MODIFY_DN_RESPONSE = 14;
public static final int OP_COMPARE_REQUEST = 15;
public static final int OP_COMPARE_RESPONSE = 16;
public static final int OP_ABANDON_REQUEST = 17;
public static final int OP_EXTENDED_REQUEST = 18;
public static final int OP_EXTENDED_RESPONSE = 19;
public static final ASN1Type Attribute = new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // type
new ASN1SetOf(ASN1OctetString.getInstance()) }); // vals
public static final ASN1Type AttributeList = new ASN1SequenceOf(
new ASN1SequenceWrap(new ASN1Type[] {
ASN1OctetString.getInstance(), // type
new ASN1SetOf(ASN1OctetString.getInstance()) })); // values
public static final ASN1Type AddRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 8, new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // entry
AttributeList })); // attributes
public static final ASN1Type SaslCredentials = new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // mechanism
ASN1OctetString.getInstance() }) { // credentials
{
setOptional(1); // credentials is optional
}
};
public static final ASN1Type AuthenticationChoice = new ASN1ChoiceWrap(
new ASN1Type[] {
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 0, // simple
ASN1OctetString.getInstance()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 3, // sasl
SaslCredentials) });
public static final ASN1Type LDAPResult = new ASN1SequenceWrap(
new ASN1Type[] { ASN1Enumerated.getInstance(), // resultCode
ASN1OctetString.getInstance(), // matchedDN
ASN1OctetString.getInstance(), // errorMessage
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 3, // referral
new ASN1SequenceOf(ASN1OctetString.getInstance())) }) {
{
setOptional(3); // referral is optional
}
};
public static final ASN1Type AddResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 9, LDAPResult);
public static final ASN1Type Control = new ASN1SequenceWrap(new ASN1Type[] {
ASN1OctetString.getInstance(), // controlType
ASN1Boolean.getInstance(), // criticality
ASN1OctetString.getInstance() }) { // controlValue
{
setDefault(Boolean.FALSE, 1); // criticality default false
setOptional(2); // controlValue is optional
}
};
public static final ASN1Type BindRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 0, new ASN1SequenceWrap(
new ASN1Type[] { ASN1Integer.getInstance(), // version
ASN1OctetString.getInstance(), // name
AuthenticationChoice })); // authentication
public static final ASN1Type BindResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 1, Utils.conjoinSequence(
(ASN1Sequence) LDAPResult, // result
new ASN1SequenceWrap(new ASN1Type[] { new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 7, // serverSaslCreds
ASN1OctetString.getInstance()) }) {
{
setOptional(0); // serverSaslCreds is optional
}
}));
public static final ASN1Type UnbindRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 2, ASN1Null.getInstance());
public static final ASN1Type AttributeValueAssertion = new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // attributeDesc
ASN1OctetString.getInstance() }); // assertionValue
public static final ASN1Type AbandonRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 16, ASN1Integer.getInstance());
public static final ASN1Type CompareRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 14, new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // entry
AttributeValueAssertion })); // ava
public static final ASN1Type CompareResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 15, LDAPResult);
public static final ASN1Type DelRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 10, ASN1OctetString.getInstance());
public static final ASN1Type DelResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 11, LDAPResult);
public static final ASN1Type ExtendedRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 23, new ASN1SequenceWrap(
new ASN1Type[] {
new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 0, // requestName
ASN1OctetString.getInstance()),
new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 1, // requestValue
ASN1OctetString.getInstance()) }) {
{
setOptional(1); // requestValue is optional
}
});
public static final ASN1Type ExtendedResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 24, Utils.conjoinSequence(
(ASN1Sequence) LDAPResult, // LDAPResult
new ASN1SequenceWrap(new ASN1Type[] {
new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 10, // responseName
ASN1OctetString.getInstance()),
new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 11, // response
ASN1OctetString.getInstance()) }) {
{
setOptional(0);
setOptional(1);
}
}));
public static final ASN1Type ModifyDNRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 12, new ASN1SequenceWrap(
new ASN1Type[] {
ASN1OctetString.getInstance(), // entry
ASN1OctetString.getInstance(), // newrdn
ASN1Boolean.getInstance(), // deleteoldrdn
new ASN1Implicit(
ASN1Constants.CLASS_CONTEXTSPECIFIC, 0,
ASN1OctetString.getInstance()) }) { // newSuperior
{
setOptional(3);
}
});
public static final ASN1Type ModifyDNResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 13, LDAPResult);
public static final ASN1Type AttributeTypeAndValues = new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // type
new ASN1SetOf(ASN1OctetString.getInstance()) }); // vals
public static final ASN1Type ModifyRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 6, new ASN1SequenceWrap(
new ASN1Type[] {
ASN1OctetString.getInstance(), // object
new ASN1SequenceOf(new ASN1SequenceWrap( // modification
new ASN1Type[] {
ASN1Enumerated.getInstance(), // operation
AttributeTypeAndValues })) })); // modification
public static final ASN1Type ModifyResponse = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 7, LDAPResult);
public static final ASN1Type SubstringFilter = new ASN1SequenceWrap(
new ASN1Type[] {
ASN1OctetString.getInstance(), // type
new ASN1SequenceOf(
new ASN1ChoiceWrap(new ASN1Type[] { // substrings
new ASN1Implicit(
// initial
ASN1Constants.CLASS_CONTEXTSPECIFIC,
0, ASN1OctetString
.getInstance()),
new ASN1Implicit(
// any
ASN1Constants.CLASS_CONTEXTSPECIFIC,
1, ASN1OctetString
.getInstance()),
new ASN1Implicit(
// final
ASN1Constants.CLASS_CONTEXTSPECIFIC,
2, ASN1OctetString
.getInstance()) })) });
public static final ASN1Type MatchingRuleAssertion = new ASN1SequenceWrap(
new ASN1Type[] {
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 1, // matchingRule
ASN1OctetString.getInstance()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 2, // type
ASN1OctetString.getInstance()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 3, // matchValue
ASN1OctetString.getInstance()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 4, // dnAttributes
ASN1Boolean.getInstance()) }) {
{
setOptional(0);
setOptional(1);
setDefault(Boolean.FALSE, 3);
}
};
public static final ASN1Type Filter = new ASN1ChoiceWrap(new ASN1Type[] {
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 0,
new ASN1SetOf(new ASN1LdapFilter())),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 1,
new ASN1SetOf(new ASN1LdapFilter())),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 2,
new ASN1LdapFilter()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 3,
AttributeValueAssertion),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 4,
SubstringFilter),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 5,
AttributeValueAssertion),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 6,
AttributeValueAssertion),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 7,
ASN1OctetString.getInstance()),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 8,
AttributeValueAssertion),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 9,
MatchingRuleAssertion) });
public static final ASN1Type SearchRequest = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 3,
new ASN1SequenceWrap(new ASN1Type[] {
ASN1OctetString.getInstance(), // baseObject
ASN1Enumerated.getInstance(), // scope
ASN1Enumerated.getInstance(), // derefAliases
ASN1Integer.getInstance(), // sizeLimit
ASN1Integer.getInstance(), // timeLimit
ASN1Boolean.getInstance(), // typesonly
Filter, // Filter
new ASN1SequenceOf(ASN1OctetString.getInstance()) })); // attributes
public static final ASN1Type PartialAttributeList = new ASN1SequenceOf(
new ASN1SequenceWrap(new ASN1Type[] {
ASN1OctetString.getInstance(), // type
new ASN1SetOf(ASN1OctetString.getInstance()) })); // vals
public static final ASN1Type SearchResultEntry = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 4, new ASN1SequenceWrap(
new ASN1Type[] { ASN1OctetString.getInstance(), // objectName
PartialAttributeList })); // attributes
public static final ASN1Type SearchResultReference = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 19, new ASN1SequenceOf(
ASN1OctetString.getInstance()));
public static final ASN1Type SearchResultDone = new ASN1Implicit(
ASN1Constants.CLASS_APPLICATION, 5, LDAPResult);
public static final ASN1Type LDAPMessage = new ASN1SequenceWrap(
new ASN1Type[] {
ASN1Integer.getInstance(),
new ASN1ChoiceWrap(new ASN1Type[] {
BindRequest,
BindResponse,
UnbindRequest,
SearchRequest,
SearchResultEntry,
SearchResultDone,
SearchResultReference,
ModifyRequest,
ModifyResponse,
AddRequest,
AddResponse,
DelRequest,
DelResponse,
ModifyDNRequest,
ModifyDNResponse,
CompareRequest,
CompareResponse,
AbandonRequest,
ExtendedRequest,
ExtendedResponse
}),
new ASN1Implicit(ASN1Constants.CLASS_CONTEXTSPECIFIC, 0,
new ASN1SequenceOf(Control)) }) {
{
setOptional(2);
}
};
public static final ASN1Type PersistentSearchControl = new ASN1SequenceWrap(
new ASN1Type[] { new ASN1Integer(), // changeTypes
new ASN1Boolean(), // changesOnly
new ASN1Boolean() }); // returnECs
public static final ASN1Type EntryChangeNotificationControl = new ASN1SequenceWrap(
new ASN1Type[] { new ASN1Enumerated(), // changeType
new ASN1OctetString(), // previousDN
new ASN1Integer() }) { // changeNumber
{
setOptional(1);
setOptional(2);
}
};
}