网上导入ldif文件的方式都是基于命令,或者相应工具如LDAP Browser \Editor v2.8.2。

但用java去实现这样的功能好像网上很少,于是我参照相应的开源代码并整理了一下,亲自测试通过,若有疑问欢迎留言!!!

将ldap.jar导入到项目中

LDIFReader.java

package com.cn.ccc.ggg.ldap.core.common;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPControl;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPLocalException;
import com.novell.ldap.LDAPMessage;
import com.novell.ldap.LDAPModification;
import com.novell.ldap.LDAPSearchResult;
import com.novell.ldap.LDAPAddRequest;
import com.novell.ldap.LDAPDeleteRequest;
import com.novell.ldap.LDAPModifyDNRequest;
import com.novell.ldap.LDAPModifyRequest;
import com.novell.ldap.util.Base64;
import com.novell.ldap.util.LDAPReader;/*** 处理inputStream对象以读取LDIF文件的类** <p>该calss从LDIF文件读取LDAP条目和LDAP请求</p>** <p>构造函数使用默认大小值8,192来创建 缓冲字符输入流并假定大小很大足以容纳下一个字段的dn字段和第一行当前正在阅读的LDIF文件中的第一条记录</p>** <p>构造函数使用'1'作为默认的LDIF文件版本</p>*/
public class LDIFReader implements LDAPReader {private boolean            requestFile=true;          // request file=trueprivate String             version;                   // LDIF file versionprivate int                reqType;                   // int rep. of nameprivate int                lNumber;                   // line numberprivate int                dnlNumber;                  // dn line numberprivate int                fNumber = 0;               // number of fieldsprivate byte[]             bytes= new byte[0];        // for any byte valueprivate boolean            control = false;            // is control fieldprivate String             entryDN;                   // entry dnprivate String[]           modInfo;                   // for moddnprivate ArrayList          rFields = new ArrayList(); // record fieldsprivate ArrayList          cList = new ArrayList();   // control listprivate BufferedReader     bufReader;private LDAPControl[]      controls = null;           // req controlsprivate LDAPEntry          currentEntry = null;private LDAPModification[] mods;private LDAPMessage        currentRequest = null;/*** 通过初始化LDIF_VERSION,isRequest构造LDIFReader对象,* InputStreamReader和BufferedReader** @param in The InputStream object to be processed by LDIFReader*/public LDIFReader( InputStream in )throws IOException, LDAPLocalException{this( in, 1, 8192 );return;}/*** 通过初始化LDIF_VERSION,isRequest构造LDIFReader对象,* InputStreamReader和BufferedReader** @param in The   Inputstream object to be processed by LDIFReader* @param version  The version currently used in the LDIF file*/public LDIFReader( InputStream in, int version )throws IOException, LDAPLocalException{this( in, version, 8192 );return;}/*** 通过初始化LDIF_VERSION,isRequest构造LDIFReader对象,* InputStreamReader和BufferedReader** @param in The   Inputstream object to be processed by LDIFReader* @param version  The version currently used in the LDIF file* @param bufSize  The size used to create a buffering character-input*                 stream. The defaule value is 8,192.*/public LDIFReader(InputStream in, int version, int bufSize)throws IOException, LDAPLocalException{super();String line = null;if ( version != 1 ) {  // check LDIF file versionthrow new RuntimeException("com.novell.ldap.ldif_dsml.LDIFReader:"+ "found: " + version + ", Should be: 1");}setVersion( version );InputStreamReader isr = new InputStreamReader(in, "US-ASCII");bufReader = new BufferedReader(isr);//为了确定它是否是LDIF内容文件或LDIF更改//文件,dn字段的第一行和旁边的有意义的行// dn字段被读入内存。//在版本行之前跳过前面的空行和注释行/* while( (line = bufReader.readLine())!= null &&(line.length() == 0 || line.startsWith("#")) ) {this.lNumber++;}//已经到达文件的末尾if ( line == null ) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader:"+ " The file contains no LDIF info",LDAPException.LOCAL_ERROR);}//需要增加行号this.lNumber++; //    1//第一个有效行(版本行)。 检查版本行if (line.startsWith("version:")) {this.version = line.substring("version:".length()).trim();if ( !this.version.equals( "1") ) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader: "+ "version: found '" + version + "' (on line "+ this.lNumber + " of the file), should be '1'",LDAPException.LOCAL_ERROR);}}else { // 第一行有效行不是版本行throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader:"+ " Version line must be the first meaningful line(on line " +this.lNumber + " of the file)",LDAPException.LOCAL_ERROR);}*///    跳过版本行和之间的空行和注释行//    LDIF的第一个记录中的dn字段的第一行//    文件,读取第一条记录的dn字段的第一行do {//标记第一个dn行,所以我们以后可以回到这里
            bufReader.mark( bufSize );line=bufReader.readLine();if ( line == null) {  // end of filethrow new LDAPLocalException( "com.novell.ldap.ldif_dsml."+ "LDIFReader: the LDIF file only contains version line.",LDAPException.LOCAL_ERROR);}this.lNumber++;} while((line.length()== 0) || line.startsWith("#"));//稍后会检查dn字段; 现在忽略了其余的一行// dn字段,并在dn字段后面读取有效行while ( (line = bufReader.readLine()) != null ) {// ! a part of dn field       ! a comment lineif ( !line.startsWith(" ") && !line.startsWith("#") ) {//到第一个记录的结尾if ( line.length() == 0 ) {//空行 这个记录只有dn字段throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: the first record only has dn field(line "+ this.lNumber + " of the file)",LDAPException.LOCAL_ERROR);}//刚刚读取的行应该是开头的行//'control', 'changetype', 属性名break;}}if ( line == null) { // end of filethrow new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: the first record only has dn field(line "+ this.lNumber + " of the file)",LDAPException.LOCAL_ERROR);}if(line.startsWith("changetype")||line.startsWith("control")){setRequest(true);  // LDIF使用LDAP操作请求更改文件
        }else {setRequest(false); // 带有LDAP条目的LDIF内容文件
        }setRequest(true);//返回到LDIF文件的第一个记录的开头//稍后读取可以从第一条记录开始
        bufReader.reset();//
        this.lNumber--;return;}/*** 获取与输入流相关联的LDIF数据的版本** @return the version number*/public String getVersion(){return version;}/*** 获取与输入流相关联的LDIF数据的版本** @param value the version number*/private void setVersion(int value){version = String.valueOf(value);return;}/*** 如果请求数据与输入流相关联,则返回true,* 或如果内容数据为false。** @return true if input stream contains request data.*/public boolean isRequest(){return requestFile;}/*** 设置正在读取的文件的请求类型,如果请求数据为true* 或如果内容数据为false。** @param type sets the type of file to content or request data.*/private void setRequest( boolean type){requestFile = type;return;}/*** 从LDIF请求(更改)文件或内容文件读取LDAP请求。.** @return LDAPMessage specified by the record*/public LDAPMessage readMessage()throws IOException, LDAPException{readRecordFields();           // 读取记录字段if ( this.rFields == null ) { // 文件结尾return null;}toRecordProperties();         // 设置记录属性if (!isRequest()) {return new LDAPSearchResult(currentEntry, null);}switch( this.reqType ) {case LDAPMessage.SEARCH_RESPONSE :this.currentRequest = new LDAPAddRequest(currentEntry, controls);break;case LDAPMessage.ADD_REQUEST :this.currentRequest = new LDAPAddRequest(currentEntry, controls);break;case LDAPMessage.DEL_REQUEST :this.currentRequest = new LDAPDeleteRequest(this.entryDN, controls);break;case LDAPMessage.MODIFY_RDN_REQUEST :boolean  delOldRdn;if ( Integer.parseInt(this.modInfo[1]) == 1 ) {delOldRdn = true;} else {delOldRdn = false;}if((modInfo[2].length())==0 ) {this.currentRequest = new LDAPModifyDNRequest( this.entryDN,this.modInfo[0], null, delOldRdn, controls);} else {this.currentRequest = new LDAPModifyDNRequest(this.entryDN,this.modInfo[0], modInfo[2], delOldRdn, controls);}break;case LDAPMessage.MODIFY_REQUEST :this.currentRequest =new LDAPModifyRequest(this.entryDN, mods, controls);break;default:}return this.currentRequest;}/*** 读取当前记录中的所有行,将记录行转换为* 记录字段,并修剪记录字段中的多余空格。*/private void  readRecordFields()throws IOException, LDAPException{String line;StringBuffer bLine = new StringBuffer(80);// clean rFieldsthis.rFields.clear();//跳过空和注释行并读取第一个dn//行记录while( (line = bufReader.readLine())!= null &&(line.length() == 0 || line.startsWith("#")) ) {this.lNumber++;}this.lNumber++;this.dnlNumber = this.lNumber;if (line == null) { // 文件结尾this.rFields = null;}else {//检查dn行是否以'dn:'开头if (!line.startsWith("dn:")) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml." +"LDIFReacer: Any record should start with 'dn:'(on line "+ this.lNumber + " of the file).",LDAPException.LOCAL_ERROR);}//保存第一个dn行
            bLine.append(line);//读取除注释行之外的记录的其他行。//读取停止在用于分隔的空行//当前记录与下一个while ((line = bufReader.readLine())!=null && line.length()!=0 ) {if ( !line.startsWith("#") ) {       //跳过注释行if ( line.startsWith(" ") ) {    //续行?// trim off leading ' ' and append it to previous linebLine.append(line.substring(1, line.length()));}else { // 新的一行// handle pewvious fieldbLine = trimField(bLine);    // trime上一个字段if(!this.control) {          // 如果不是,保存它this.rFields.add(bLine); // 一个控制字段
                        }//处理新行bLine = new StringBuffer(80);// create a new bufferbLine.append(line);          // to hold new line
                    }}this.lNumber++;}//修剪并保存最后一个字段bLine = trimField(bLine);this.rFields.add(bLine);this.lNumber++;                      // 增加行号this.fNumber = this.rFields.size();  // 获取字段数
        }return;}/*** 设置记录属性。* <p>对于LDIF内容记录,创建由此记录指定的LDAPEntry</p>** <p>对于LDIF更改记录,根据请求类型,将创建LDAPEntry,modInfo或LDAPModifiction数组以及与请求相关联的控件</p>*/private void toRecordProperties()throws IOException, LDAPException{int index;String req;// set entry DNStringBuffer dnField = (StringBuffer)this.rFields.get(0);if (dnField.charAt(3) != ':') {// commom string valuethis.entryDN = dnField.substring( 3, dnField.length());}else {// base64 encodedthis.bytes = Base64.decode(dnField, 4, dnField.length());try {this.entryDN = new String(this.bytes, "UTF-8");} catch( UnsupportedEncodingException ue) {throw new RuntimeException("UTF-8 String encoding not supported by JVM");}}if ( !isRequest() ) {  // 是一个内容LDIF文件
            toLDAPEntry();} else {  // 是一个更改LDIF文件index = 10; // length of 'changetype'// ctField - changetype fieldStringBuffer ctField = (StringBuffer)this.rFields.get(1);this.reqType = LDAPMessage.ADD_REQUEST;toLDAPEntry();/*if(!ctField.substring(0, index).equalsIgnoreCase("changetype")) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+"LDIFReader: malformed changetype field in record starting"+ " on line " + this.dnlNumber + " of the file).",LDAPException.LOCAL_ERROR);}// 获取类型: 'add', 'delete','moddn', 'modrdn', or 'modify'req = ctField.substring(index+1);// 设置请求类型if ( req.equalsIgnoreCase("add") ) {this.reqType = LDAPMessage.ADD_REQUEST;toLDAPEntry();}else if ( req.equalsIgnoreCase("delete") ) {this.reqType = LDAPMessage.DEL_REQUEST;}else if ( req.equalsIgnoreCase("modrdn") ) {this.reqType = LDAPMessage.MODIFY_RDN_REQUEST;toModInfo();}else if ( req.equalsIgnoreCase("moddn") ) {this.reqType = LDAPMessage.MODIFY_RDN_REQUEST;toModInfo();}else if ( req.equalsIgnoreCase("modify") ) {this.reqType = LDAPMessage.MODIFY_REQUEST;toLDAPModifications();}else {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: unsupported request type '" + req+ "' specified in changetype filed of the record starting "+ "on line " + this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}*/if (this.cList.size() > 0) {this.controls = new LDAPControl[this.cList.size()];}}return;}/*** 处理LDIF记录字段以生成LDAPEntry。*/private void toLDAPEntry()throws LDAPLocalException{int i, index, fieldIndex;String attrName = null;StringBuffer currentField;LDAPAttributeSet attrSet = new LDAPAttributeSet();if ( !isRequest() ) { // 跳过 dn 字段fieldIndex = 0;}else { // 跳过dn,control和changetype字段fieldIndex = 1;}for (i=fieldIndex; i<this.fNumber; i++) {currentField = (StringBuffer)this.rFields.get(i);// ':' 分离属性名称和属性值index = IndexOf(currentField, ':');if (index == -1) { // ':' not foundthrow new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: missing ':' after attribute name in record "+ "starting on line " + this.dnlNumber +" of the file.",LDAPException.LOCAL_ERROR);}// 获取属性名称attrName = currentField.substring(0,index);// 如果属性名称不存在,则添加 if ( attrSet.getAttribute(attrName) == null ) {// add it to attrSet with no valueattrSet.add(new LDAPAttribute(attrName));}if(currentField.length() > index+1){// 将属性值添加到属性中if (currentField.charAt(index+1)==':') {// base64编码的属性值attrSet.getAttribute(attrName).addBase64Value(currentField. substring(index+2));} else if (currentField.charAt(index+1)=='<'){// 文件URL属性值attrSet.getAttribute(attrName).addBase64Value(currentField. substring(index+2));} else {// 字符串值String vals=currentField.substring(index+1).trim();attrSet.getAttribute(attrName).addValue(vals);
//                  attrSet.getAttribute(attrName).addValue(currentField.
//                                                           substring(index+1));
                }} else if(currentField.length() == index+1){String vals=new String("");attrSet.getAttribute(attrName).addValue(vals);}}// 构造currentEntrythis.currentEntry = new LDAPEntry(this.entryDN, attrSet);return;}/*** 构建包含moddn信息的String数组对象。*/private void toModInfo() throws LDAPLocalException {int index = 6;      // length of "newrdn"int fieldIndex = 2; // reference newrdn fieldthis.modInfo = new String[3];StringBuffer currentField = (StringBuffer)this.rFields.get(fieldIndex);if( ! currentField.substring(0, index+1).equalsIgnoreCase("newrdn:")) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader:"+ " malformed newrdn field in record starting on line "+ this.dnlNumber + " of the file.", LDAPException.LOCAL_ERROR);}// get newrdnif ( currentField.charAt(index+1) != ':') {// common string valuethis.modInfo[0] = currentField.substring(index+1);}else {// decode newrdnthis.bytes = Base64.decode( currentField, index+2,currentField.length());try {this.modInfo[0] = new String(this.bytes, "UTF-8");} catch( UnsupportedEncodingException ue) {throw new RuntimeException("UTF-8 String encoding not supported by JVM");}}fieldIndex++;   // reference deleteOleRDN fieldindex = 13;     // length of "deleteoldrdn"currentField = (StringBuffer)this.rFields.get(fieldIndex);if( ! currentField.substring(0, index).equalsIgnoreCase("deleteoldrdn:") ) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader:"+ " malformed deleteoldrdn field in record starting on line "+ this.dnlNumber + " of the file.", LDAPException.LOCAL_ERROR);}char c = currentField.charAt(index);if (c == '1') {this.modInfo[1] = new String("1");}else if (c == '0'){this.modInfo[1] = new String("0");}else {throw new LDAPLocalException("com.novell.ldap.ldif_dsml.LDIFReader:"+ " value for deleteoldrdn field should '0' or '1', found '" + c+ "' in the record starting on line " + this.dnlNumber+ " of the file.", LDAPException.LOCAL_ERROR);}fieldIndex++;   // reference newsuperior fieldif (fieldIndex == this.fNumber) { // no newsuperior spefifiedthis.modInfo[2] = new String("");}else { // there is a newsuperiorcurrentField = (StringBuffer)this.rFields.get(fieldIndex);index = 12;   // length of "newsuperior:"if( ! currentField.substring(0, index).equalsIgnoreCase("newsuperior:")) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: malformed newsuperior field in the record "+ "starting on line " + this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}if ( currentField.charAt(index) != ':') {// commom string valuethis.modInfo[2] = currentField.substring(index);}else {// base64 encoded valuethis.bytes = Base64.decode( currentField, index+1,currentField.length());this.modInfo[2] = new String(this.bytes);;}}return;}/*** 基于LDIF修改记录的内容构建LDAPModification数组。*/private void toLDAPModifications()throws LDAPLocalException{int        i, index;int        fieldIndex = 2;    // 跳过 dn, control, and changetype 字段
        String     attrName, opName;LDAPAttribute attr = null;ArrayList modList = new ArrayList();if (!(this.rFields.get(this.fNumber-1)).toString().equalsIgnoreCase("-") ) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: modify record not ends with '-' in the record"+ " starting on line " + this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}// 填充LDAPModification数组对象for (i=fieldIndex; i<this.fNumber; i++) {// 找到":"分开mod操作和attr名称index = IndexOf((StringBuffer)this.rFields.get(i), ':');if (index == -1) { // ':' not foundthrow new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: malformed opName:attrName field in the record"+ " starting on line " + this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}StringBuffer nextField = (StringBuffer)this.rFields.get(i);opName= nextField.substring(0, index);attrName= nextField.substring(index+1);i++; // 指向attrName:attrValue字段nextField = (StringBuffer)this.rFields.get(i);// 构建每个LDAPModification对象并将其添加到modListif (nextField.charAt(0)!='-') {// 至少有一个 属性名称:属性值 字段for ( ; nextField.charAt(0)!='-';i++, nextField = (StringBuffer)this.rFields.get(i)) {// 下标分离属性名称和属性值if ((index=IndexOf(nextField, ':')) == -1) {throw new LDAPLocalException("com.novell.ldap."+ "ldif_dsml.LDIFReader : no ':' found in attrName:"+ "attrValue field in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}else {// 比较opName:attrName和 attrName:attrValue字段String aName = nextField.substring(0, index);if (!aName.equalsIgnoreCase(attrName)) {throw new LDAPLocalException("com.novell.ldap."+ "ldif_dsml.LDIFReader : found attribute name '"+ aName + "', should be '" + attrName+ "' in attrName:attrValue field in the record "+ "starting on line " + this.dnlNumber+ " of the file.", LDAPException.LOCAL_ERROR);}// create attr and add value to itattr = new LDAPAttribute(attrName);if (nextField.charAt(index+1)==':') {// base64 encoded attribute valueattr.addBase64Value(nextField.substring(index+2));}else if (nextField.charAt(index+1)=='<'){// file URL attribute valueattr.addBase64Value(nextField.substring(index+2));}else {// string valueattr.addValue(nextField.substring(index+1));}if ( opName.equalsIgnoreCase("add") ) {modList.add( new LDAPModification(LDAPModification.ADD, attr));}else if ( opName.equalsIgnoreCase("delete") ) {modList.add( new LDAPModification(LDAPModification.DELETE, attr));}else if ( opName.equalsIgnoreCase("replace") ) {modList.add( new LDAPModification(LDAPModification.REPLACE, attr));}else {throw new LDAPLocalException("com.novell.ldap."+ "ldif_dsml.LDIFReader : Not supported modify "+ " request (" + opName + ") specified in "+ "record starting on line " + this.dnlNumber+ " of the file.", LDAPException.LOCAL_ERROR);}}}} else {// there is no attribute value specified; this could be// true for 'delete' and 'replace' modify operationattr = new LDAPAttribute(attrName);if ( opName.equalsIgnoreCase("delete") ) {modList.add( new LDAPModification(LDAPModification.DELETE, attr));}else if ( opName.equalsIgnoreCase("replace") ) {modList.add( new LDAPModification(LDAPModification.REPLACE, attr));}else {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: For '" + opName + "', no value "+ "specified for atribute '" + attrName+ "' in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}}}this.mods = new LDAPModification[modList.size()];this.mods = (LDAPModification[])modList.toArray(this.mods);return;}/*** 返回指定字符首次出现的StringBuffer对象内的索引。** @param bl  The StringBuffer object* @param ch   The character to look for in the StringBuffer object** @return The index of the first occurence of the character in the* StringBuffer object, or -1 if the character does not occur.*/private int IndexOf(StringBuffer bl, int ch){if (bl != null ) {for (int i=0;i<bl.length(); i++) {if(bl.charAt(i) == ch) {return i;}}}return -1;}/*** <tt>去空字段<tt> 修剪一个字段中的多余空格。*/private StringBuffer trimField( StringBuffer line)throws LDAPLocalException{int c, lastChar = 0, charIndex = 0;char t;char[] newChars;boolean isEncoded=false, isURL=false, criticality = false;String oid = null;if ((line == null)||((c=IndexOf(line,':'))==-1)) {// not all fields contain ':'return line;}// elminate any trailing spaceslastChar = line.length() - 1;while( line.charAt(lastChar) == ' ') {lastChar--;}// create newCharsnewChars = new char[lastChar+1];if( (c > 6) && (line.substring(0,c).equals("control"))) {// this is a control fieldthis.control = true;c++;            // skip past ':'// eliminate any spaces after ':'while( (c <= lastChar) && (line.charAt(c) == ' ')) {c++;}}else {// not a control field. it's 'dn',//'changetype', or 'attrName' fieldthis.control = false;// copy field name and ':', eg. 'dn:', 'changetype:', or 'attrName:'line.getChars(0, c+1, newChars, 0);// skip over copied charscharIndex += c + 1;// c points to char right after first ':'c++;}if(!this.control) {// // not a control field. check if '::' or ':<'if( c <= lastChar) {t = line.charAt(c);if( t == ':') {newChars[charIndex++] = ':'; // save the ':' toc++;                         // point to value
                }else if( t == '<') {newChars[charIndex++] = '<'; // save the '<' toc++;                         // point to value
                }}// for case like attr: <value>boolean nonfile=false;String fredir= line.substring(c);            if(fredir.length()>0 && fredir.charAt(0) != '<'){String cstr=fredir.trim();if(cstr.length()>0 && cstr.charAt(0) == '<'){nonfile=true;}}// eliminate any space(s) after ':' or '<'while( (c <= lastChar) && (line.charAt(c) == ' ')) {c++;}// for case like attr: <value>            if(nonfile==true){c--;}if( c <= lastChar) {  // thers is a value specified// copy field valueline.getChars(c, lastChar+1, newChars, charIndex);charIndex += lastChar - c + 1;// create a new StringBuffer object with capacity of lastCharStringBuffer newBuf = new StringBuffer(lastChar);// copy the filed represented by newCharsnewBuf.append( newChars, 0, charIndex);// return the trimed fieldreturn newBuf;}else if ( line.length() == c){StringBuffer newBuf= new StringBuffer();line.getChars(c, lastChar+1, newChars, charIndex);charIndex += lastChar - c + 1;newBuf.append( newChars, 0, charIndex);    return newBuf;}else {  // there is no value specifiedthrow new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: a field contains no value after ':'. the "+ "field is in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}}else {  // a control field// process values for control. a control field may looks like//    1. control: 1.2.3.4 true: control value//    2. control: 1.2.3.4: control value//    3. control: 1.2.3.4// extra spaces are possible between oid, criticality, and value.// oid is a must, while criticalitty and value can be absent.// get control oidint b = c;while(c <= lastChar) {// an oid consists of dots and digitst = line.charAt(c);if( (t == '.') || (Character.isDigit(t))) {c++;continue;}break;}if( b == c) {  // control with no oidthrow new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: Control with no oid in the record "+ "starting on line " + this.dnlNumber+ " of the file.", LDAPException.LOCAL_ERROR);}else {  // control has iod, get local copy of oidchar[] chars = new char[c-b];line.getChars(b, c, chars, 0);oid = new String(chars);}if ( c > lastChar) {// control only has an oid. create LDAPControl object// with oid, 'false' and empty byte arrayLDAPControl ctrl = new LDAPControl(oid, false, new byte[0]);// add it to cListthis.cList.add(ctrl);return null;  // return value has no use
            }// get control criticalityt = line.charAt(c);if( t == ' ') {// see a space, skip over any spaceswhile( (c <= lastChar) && (line.charAt(c) == ' ')) {c++;}}// what we see now? 'true', 'false', or ':' ?if(((c + 3) <= lastChar)&&(line.substring(c,c+4).equals("true"))) {// found 'true'c += 4;criticality = true;}else if(((c+4)<=lastChar)&&(line.substring(c,c+5).equals("false"))){// found 'false'c += 5;criticality = false;}if (c > lastChar) {  // to the end of the control field// create LDAPControl object with oid,// criticality, and empty byte arrayLDAPControl ctrl=new LDAPControl(oid, criticality, new byte[0]);// add it to cListthis.cList.add(ctrl);return null;}if ((t=line.charAt(c)) != ':') {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: Unexcepted char '" + t + "'. Expecting "+ "to see ':' in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}// get control valuec++;  // go to enst char after ':'if (c > lastChar) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: No control value after ':' "+ "in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}// positioned at the first char right after ':'// check if '::' or ':<'t = line.charAt(c);if( t == ':') {isEncoded = true;            // indicate encoded valuec++;                         // point to valueif (c > lastChar) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: No control value after '::' "+ "in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}}else if( t == '<') {isURL = true;                // indicate file URL valuec++;                         // point to valueif (c > lastChar) {throw new LDAPLocalException("com.novell.ldap.ldif_dsml."+ "LDIFReader: No control value after ':<' "+ "in the record starting on line "+ this.dnlNumber + " of the file.",LDAPException.LOCAL_ERROR);}}// eliminate any space(s) after ':', '::' or ':<'while((c <= lastChar) && (line.charAt(c) == ' ')) {c++;}if(c <= lastChar) {  // thers is a value spec specifiedchar[] chars = new char[lastChar+1-c];line.getChars(c, lastChar+1, chars, 0);if (isEncoded) {this.bytes = Base64.decode(chars);}else if (isURL) {// if isURL, what to do?this.bytes = (new String(chars)).getBytes();}else {this.bytes = (new String(chars)).getBytes();}}// create LDAPControl objectLDAPControl ctrl = new LDAPControl(oid, criticality, this.bytes);// add it to cListthis.cList.add(ctrl);}return null;}
}

LdifImport.java 完整代码

package com.cn.ccc.ggg.ldap.core.common;import java.util.Enumeration;import java.util.Iterator;import javax.naming.directory.DirContext;import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.directory.server.protocol.shared.store.LdifFileLoader;import com.novell.ldap.LDAPAddRequest;
import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPDeleteRequest;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPMessage;
import com.novell.ldap.LDAPMessageQueue;
import com.novell.ldap.LDAPModifyDNRequest;
import com.novell.ldap.LDAPModifyRequest;
import com.novell.ldap.LDAPResponse;
import com.novell.ldap.LDAPSearchResult;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
public class LdifImport {protected final Log logger = LogFactory.getLog(getClass());/*** @param args* @date 2017‎年‎10‎月‎12‎日17:33:03*/public boolean importLdif(String [] args){if (args.length != 4) {usage();return false;}int  version = 1;int ldapPort = LDAPConnection.DEFAULT_PORT;int ldapVersion  = LDAPConnection.LDAP_V3;String fileName = args[0];String ldapHost = args[1];String loginDN  = args[2];String password = args[3];LDIFReader reader = null;LDAPEntry entry;LDAPMessage msg, retMsg;LdifImport readerTest = new LdifImport();LDAPConnection lc = new LDAPConnection();File file = new File(fileName);  if(!file.exists()){  logger.error("要读取的文件不存在");  return false;}  try {FileInputStream fis = new FileInputStream(new File(fileName));reader = new LDIFReader(fis, version);} catch (Exception e) {logger.error("读取 " + fileName +"文件失败");return false;}try {// 连接LDAP服务
            lc.connect( ldapHost, ldapPort );// 绑定LDAP服务lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") );if (!reader.isRequest()) {System.out.println("\nLDIF content file\n");while ( (msg = reader.readMessage()) != null) {entry = ((LDAPSearchResult)msg).getEntry();System.out.println("\nEntry DN:" + entry.getDN());readerTest.showAttributes(entry);}}else {System.out.println("\nLDIF change file\n");while ( (msg = reader.readMessage()) != null) {if (msg instanceof LDAPAddRequest) {System.out.println("Adding entry...");}else if (msg instanceof LDAPDeleteRequest) {System.out.println("Deleting entry...");}else if (msg instanceof LDAPModifyDNRequest) {System.out.println("Modifying entry's RDN...");}else if (msg instanceof LDAPModifyRequest) {System.out.println("Modifying entry's attribute(s)...");}LDAPMessageQueue queue = lc.sendRequest(msg, null, null);if ((retMsg = queue.getResponse()) != null) {LDAPResponse response = (LDAPResponse)retMsg;int status = response.getResultCode();// the return code is LDAP successif ( status == LDAPException.SUCCESS ) {System.out.println("Directory information has been"+ " modified.");}// the reutrn code is referral exceptionelse if ( status == LDAPException.REFERRAL ) {String urls[]=((LDAPResponse)retMsg).getReferrals();System.out.println("Referrals:");for ( int i = 0; i < urls.length; i++ )System.out.println("    " + urls[i]);}// general errorelse {System.out.println( response.getErrorMessage());}}System.out.println();}}} catch( UnsupportedEncodingException e ) {logger.error( "错误信息为:UnsupportedEncodingException");} catch ( IOException ioe ) {logger.error("错误信息为:IOException");} catch ( LDAPException le ) {logger.error("错误信息为:LDAPException"+le.getMessage());}return false;}public  void usage() {logger.error("用法:   <文件名称>     <IP> <登录名> <密码>");logger.error("例如: demo.ldif  192.168.0.254 \"cn=Manager,c=中华人民共和国\" 123456" );}public void showAttributes(LDAPEntry entry) {String value;LDAPAttributeSet as = null;LDAPAttribute[]  attrs = null;LDAPAttribute attr = null;Iterator allAttrs;Enumeration allAttrValues;as = entry.getAttributeSet();allAttrs = as.iterator();System.out.println("    Attributes:");while(allAttrs.hasNext()) {attr = (LDAPAttribute)allAttrs.next();System.out.println("        " + attr.getName());allAttrValues = attr.getStringValues();if( allAttrValues != null) {while(allAttrValues.hasMoreElements()) {value = (String) allAttrValues.nextElement();System.out.println("            " + value);}}}}public static void main(String[] args) {LdifImport ldifImport = new LdifImport();String[] arg = {"C:/Users/Administrator/Desktop/Ldif Datacenter/dq.ldif","192.168.0.254","cn=Manager,c=cn","123456"};//测试导入ldif文件
        ldifImport.importLdif(arg);}
}

dq.ldif文件内容为:

dn:: bz3mtbfljZfnnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: organization
o:: 5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6Fdn:: b3U955S15a2Q5pS/5Yqh5Yqe5YWs5a6kLG895rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FLCBjPWNu
ou:: 55S15a2Q5pS/5Yqh5Yqe5YWs5a6k
objectClass: organizationalUnitdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf57uT54K56K6k6K+B57O757ufLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptnotAfter: 20200614115959DE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgdgxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTESMBAGA1UECAwJ5rW35Y2X55yBMScwJQYDVQQKDB7mtbfljZfnnIHkurrmsJHmlL/lupzlip7lhazljoUxHjAcBgNVBAsMFeeUteWtkOaUv+WKoeWKnuWFrOWupDE2MDQGA1UEAwwt55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf57uT54K56K6k6K+B57O757ufMSEwHwYJKoZIhvcNAQkBDBJsaXhpb25nQGJndC5obi5nb3YwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARuWaJE4jO7gBZypBzQUYBjqtqGn/JGG7om2H8T7uz9SZcaIfL+h5Lu75pyN5Yqh57O757uf6Lqr5Lu96K6k6K+B57O757ufMSIwIAYJKoZIhvcNAQkBDBNsaXV4aW9uZ0BiZ3QuaG4uZ292MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEU5G7LIzuFQ+8oEws7Nrd8ArCwdNxPbGoiAxjgiE6J8L8+6Y5NyCxbxQQcHKnWmkqtT8QEm6HRpHyOFTh4O+fWIWuQNWuHeDhuLX9t4fkbqX9cB61RMIOkuSYdyNM1c9aow8wDTALBgNVHQ8EBAMCA/gwCwYJKoEcgUUBh2gLA2EANefwg7k63w7RlirMG5TPq2hs5yG2hJ1k4r0v2P/59BpPUwzIEUAxsp8HtSNus/qY4q5jrR0ZvhrNdwFN8pEZyfrW+hPOQ2rnznceid3upUoxOWlyJQx++iTGuJiwKccm
objectClass: wstCertificateUser
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf57uT54K56K6k6K+B57O757ufdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ6K6/6Zeu5o6n5Yi2572R5YWzMSxvdT3nlLXlrZDmlL/liqHlip7lhazlrqQsbz3mtbfljZfnnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
EncryptCertificate;binary:: MIICrjCCAjqgAwIBAgIDAO/3MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgdAxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTESMBAGA1UECAwJ5rW35Y2X55yBMRIwEAYDVQQHDAnmtbflj6PluIIxJzAlBgNVBAoMHua1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhTEeMBwGA1UECwwV55S15a2Q5pS/5Yqh5Yqe5YWs5a6kMT0wOwYDVQQDDDTnnIHmlL/lupzkv6Hku7vmnI3liqHns7vnu5/otYTmupDorr/pl67mjqfliLbnvZHlhbMxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEJdbjSFVH/qJ7mn9OvRfFJcv5meB13NOZft5ckZzLEFdzCc8ABw8V1v0x+l6tRGrsbhEvlwWDZqLg8G/O8Vs4TKqbNceWb3JjY6xBMeUbx2BDDKMuN3r43/YbscmFJvXLow8wDTALBgNVHQ8EBAMCA/gwCwYJKoEcgUUBh2gLA2EAbdWEWguIXMhU1bIiJpPttbL7fjCDIsa32Pu8eKKsEnICQHwowrVkjzq1r/3ml5KTK+3ggglwFMNveMrTGByG9VrjiQ1ot+5mrespR2FLADGdVdKxJ3clmeq27g7pgSRj
EncryptnotAfter: 20200614115959
objectClass: wstCertificateUser
EncryptserialNumber: EFF7
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ6K6/6Zeu5o6n5Yi2572R5YWzMQ==dn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ6K6/6Zeu5o6n5Yi2572R5YWzMixvdT3nlLXlrZDmlL/liqHlip7lhazlrqQsbz3mtbfljZfnnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
EncryptCertificate;binary:: MIICrjCCAjqgAwIBAgIDAO/4MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgdAxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTESMBAGA1UECAwJ5rW35Y2X55yBMRIwEAYDVQQHDAnmtbflj6PluIIxJzAlBgNVBAoMHua1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhTEeMBwGA1UECwwV55S15a2Q5pS/5Yqh5Yqe5YWs5a6kMT0wOwYDVQQDDDTnnIHmlL/lupzkv6Hku7vmnI3liqHns7vnu5/otYTmupDorr/pl67mjqfliLbnvZHlhbMyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEFDAcXvDayxxmC8Z1zxeKulVd+jLgw+Ai1UQ2ykHBX8K+qTYQehzIRQiMrfx7BN0MnhtWS3A3x7MGmYcV1f9KAfwabk99eLGMhVPqaMpvvDs8r7PIohZGD6fy4YTz/YXqow8wDTALBgNVHQ8EBAMCA/gwCwYJKoEcgUUBh2gLA2EAqGtm6vCYADU+sGn73vvAKt53vPRkQvrummU01afdawwJMBR+GQmNdkuMo+cYI2Jl+5z3K2wgcfKoFzBsxR7+ldFAlfw4vxHRFOwHzgxo6TvkiL6kSHi6WGN0kFuvJ2rS
EncryptnotAfter: 20200614115959
objectClass: wstCertificateUser
EncryptserialNumber: EFF8
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ6K6/6Zeu5o6n5Yi2572R5YWzMg==dn:: b3U95bqU5oCl5YqeLG895rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FLCBjPWNu
ou:: 5bqU5oCl5Yqe
objectClass: organizationalUnitdn:: Y249546L5oyv5a6HLG91PeW6lOaApeWKnixvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICcTCCAf2gAwIBAgIDAO/5MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnlupTmgKXlip4xEjAQBgNVBAMMCeeOi+aMr+WuhzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAScYxXBQbH0z1lJp7SF2oeAlQKidASCBgPbazQlm7uX5eDvOpzTcx6pW0na611Ifp6jHVCANE/YP6ljZcyOaVcHxlkqBNlpXysK/kYGJoEcXeJlAoykt55wnb6WT6NM5kqjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQDbnnzwyc+YygA4sYPI4ruXyzi1GL7ArhCxcLGJlCzZB4qOk1tl4MeI2hkDa7HWohVFseGZM6eDawnlhoYgziCXWO3umwIlQWk/IaikJsiEx+cPqRd6YfrR0VKQGELocU0=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPAKMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnlupTmgKXlip4xEjAQBgNVBAMMCeeOi+aMr+WuhzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAR79CLIZHbBRuvwO8gjSnFwkfRzMg3E21uALi39anq1cyrSF9N7o42uEODEjKbGzQSZ6gfKfjAssBT38FOV3k8RJtUUtP0crfaGhIvrE6k87AxyX78cRa2KQOc2DCOQDtKjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQBVfwdkcKS4J86ntBmCbU2SGGvSFwtrIENOvtHaDdQxGW/vNN7LXd5yqyG+O7NUlPGsOvrMOYnXIDwkzkRulssMhmtTEC1D8bIQHOv+vZGhZxcNQxtS059fgW8JvjwHbJI=
objectClass: wstCertificateUser
serialNumber: F00A
EncryptserialNumber: EFF9
cn:: 546L5oyv5a6Hdn:: b3U956eY5Lmm5aSELG895rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FLCBjPWNu
changetype:add
ou:: 56eY5Lmm5aSE
objectClass: organizationalUnitdn:: Y2495q+b5pet5ZCbLG91PeenmOS5puWkhCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICcTCCAf2gAwIBAgIDAO/6MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnp5jkuablpIQxEjAQBgNVBAMMCeavm+aXreWQmzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNDB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAARGHqzYbixoBc2j5YlZ4kli2AcOrclQeOibMlkV0KUZQumacnp8NHDY6LGkmauR8Ux7g7nfskn/PyF1NImXq/4AtkFFN9i+xtgc/rLC+APiVlFP+6+PfCgtF/dxboIxfrGjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQC2Xmq72mcTduYImECzlxHvKfmibBKuC/UQgcSffId5egTUwerP07aPUnhY1WPtH0ZaZaIZaNJYiSg/Nde4G47KcbIhNYGlLy51lrvqGcv3y2Wkq6DJCgJzAxBFAWjyE8A=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPAGMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnp5jkuablpIQxEjAQBgNVBAMMCeavm+aXreWQmzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNDB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQupbkVlEm0gDMONZwm2TEmjW2yTIGt4E29fIcdCeibIRERKuzdK74ooP/Y9DiyB36GZn99fXQx2edQE1QwTy8k+kpvTxhju5owkeLTgr5AxgSRATmZHeQzqpoNZaFXIW6jDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQCFgDwc/BUo37U3FW2s/kOmzozCcYyoAazxJlALmwRY+UhgzcBEawASSlCwTonWFpkWO2eTTtUhWPM56n/WXNS0b4wyTA7xGnYyCJHNlLoUzKgjHGTortRlfFu4uXdV7TQ=
objectClass: wstCertificateUser
serialNumber: F006
EncryptserialNumber: EFFA
cn:: 5q+b5pet5ZCbdn:: Y2495YiY6Imz5pilLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICfTCCAgmgAwIBAgIDAO/7MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCeWImOiJs+aYpTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAATV4f5bcNKedbU8foAgfiPbCTSY2keftHKgSoISfWUgt+nIth5onA//lbasZYpqkB7LVBCYRvB6aSWp2Evq7KBV+S8+0Le+QEty6kCkG
 kRZtQfGZipQnWOXSR0RsIohPvujDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQCXJmMnm/l4RjcFG8kEc2dxHsYgRJKz5Gc7Wxq8ebzwQGdiMgNShAKufMCWmgEksBExvGpM6rGrqPtH9JMMU1BgS0/GwAW7SAGQQyKLUQ1q9TzgvFMprNZR3zejQB1287Y=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICfTCCAgmgAwIBAgIDAPAEMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCeWImOiJs+aYpTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASooCVyDiFZbP0mcfqWl0iMZuF3k4TqTkOjxhjFvmVQ5C6tHER8gk/VTH5K4gio41Xc21vrWG3ZpuAptInDol4l6gax4YpQHVmRiJzwAk9cGXZcS2cengJgY8pMPwNs6eejDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQD33R1htZsQq9A1lruxb6AlSmPiZGTmVc2ahAgCODqQk8tdLtWszLdXulB0DTFPeDMIxo7l6jzwlEm5WvunvIR7tmJq7XRGbPfMrhYOEJVsdffhMbHZn61aF0vqdWp6rGY=
objectClass: wstCertificateUser
serialNumber: F004
EncryptserialNumber: EFFB
cn:: 5YiY6Imz5pildn:: b3U9552j5p+l5a6kLG895rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FLCBjPWNu
changetype:add
ou:: 552j5p+l5a6k
objectClass: organizationalUnitdn:: Y2495byg5LuB57+ULG91Peedo+afpeWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICcTCCAf2gAwIBAgIDAO/8MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnnaPmn6XlrqQxEjAQBgNVBAMMCeW8oOS7gee/lDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMDB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAR7D5EkIgvppfnj1yB6xh/8aji9qo9OKPz8WYeGiUBeFBe+6FHbLYw3s91+dF+yVglPplaxQ+lBIo15lBRgZom7WgqPIngPrOu1plqIAzi7jqW/PJ52IlXUQaEQiw32CfCjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQCNXYLkG/Oqd0Jj49HxdXM3Z1ERmJenTrVnHfzlA0pZCV/EOscfIJXyqhkCTKpveQJGCg9ruVLZnbSq+vvHKoExETYilZrXbhz9d04ludMSny2s/qpnULLdGDmYRx7HaTU=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPAPMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnnaPmn6XlrqQxEjAQBgNVBAMMCeW8oOS7gee/lDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMDB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASzeF0+mnputFpfuXEpUV8aMGd35FIWuYlJNAXRsEVTg3Fv38nvrFlz75rkvpfxxLTLRbL1BAmUlW5vWvKIl0QBft7kwKCjpEM/lvXx/fPwOvEb8Bcgwi/t/d8HrI5rBxGjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQBnJP0+gFGtZAQoMo9aEsnWBtrho3Ul8YYLy6G0wFCvtKv6UVIgslrVRjXGI1PsEQ8l0pY0xKj+QFd/S2wkvfr3Z5iYX3bZ2yf5DH4+bL4N+lro1+8prXm1VamwWWkgsOI=
objectClass: wstCertificateUser
serialNumber: F00F
EncryptserialNumber: EFFC
cn:: 5byg5LuB57+Udn:: Y2496ams5rW35LicLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICfTCCAgmgAwIBAgIDAO/9MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCemprOa1t+S4nDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAREQEWC8lO5LVxQi3rojEpCVgp1IF3IWrU37oQVZcjReBg2KQMtIi/ZIUzzKCVNNztQ5V5bqnQ9VcnhU3iiTUeNRRMr0tSEvcL0OBRmJT5hqD9YHVx7+2NmQ6vEf7FX66yjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQC+Vb7M6Wlp4R2ueehitZUsWjhK5F7oiopV5SmiIDUofR1vMfsr/5qzVMXYV9+g349ndh77mM5sj2IjfkEmzuP9g+Q9zCvsH6T+zKoh74eRqbh7wIfIu8QyJloiddB/t/8=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICfTCCAgmgAwIBAgIDAPAMMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCemprOa1t+S4nDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQm66YsAYr2PS3BYGvb5AuLXdMeoP33BET9UME9pYdKYvLHK1EKdtnEGT3V0B/NLhTtoqZjmYELh82rMM081DU/tPOLbvN8PJzQ7vMC8KCQj+xXHd7rCAAlGFr9In+BsHCjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQB6vLVLTGRS9P/dtDnnxDSV9pfWCPVOYRIoQH3XPBezQ+Q56RIdjhCuHOF+dem5/kyAH6UpHZmzw4+9qp9lwr/VrnF3bFYN9NXHb6yPBH2YtS8fH+cmjZda6RBENdEzSLQ=
objectClass: wstCertificateUser
serialNumber: F00C
EncryptserialNumber: EFFD
cn:: 6ams5rW35Licdn:: Y2495L+e5am3LG91PeenmOS5puWkhCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICbjCCAfqgAwIBAgIDAO/+MAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgYwxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnp5jkuablpIQxDzANBgNVBAMMBuS/nuWptzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwOTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAARXOVTTUAN/QFsjNaXxCg84+vYMcIlWD+Y1f97BJk7NB2QGW7OGmS62Dxdn/9mEUJ5iAq8HepSKry4H1vgzeav0mCOlZE/d4mu2+I3VQ6nqC5CZtoXSBcF+9o1TpRbgKX6jDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQDEr8d8RcgdWfENywURju23XUEbdTrDMkOylNCTZExhGlwEFuoVBBAKn1bT0SqUWFOZg8uvoUofntW5HCIKl96JPbnKjOiqsOZdJnNbZVk3A1jxHZEd9Vk07nELKWGaF0w=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICbjCCAfqgAwIBAgIDAPAIMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgYwxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnp5jkuablpIQxDzANBgNVBAMMBuS/nuWptzEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwOTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAR7gb4bsSR3HSwoLLMP+ee6pjWp9w6xdOtjtvZxBg0O+kGlP0vuGiCCjWAEHxshsCgBCD07BkhJEvsUhOiP+UH7d9Y+cDDYDocb5DomdRoIcKDB2cirZhbXtYIa2XGH4LKjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQCMeAl6+zGFXFlan2KROaY/RLVEjXHAH8mt1hZDWlsSniX0DuLlemv6WxCX9LIAJjeb8siu4kz9u8CkkbPv8d37O+UgegpdYEc0xXTztPZebl5YaqKRnCAhKtQEGmhlE5g=
objectClass: wstCertificateUser
serialNumber: F008
EncryptserialNumber: EFFE
cn:: 5L+e5am3dn:: Y2495byg5oGS54aZLG91PeW6lOaApeWKnixvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICcTCCAf2gAwIBAgIDAO//MAsGCSqBHIFFAYdoCzCBpDE2M
 DQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnlupTmgKXlip4xEjAQBgNVBAMMCeW8oOaBkueGmTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASk0YZd+hozUD67UfqGdyDp2ypbquGCgqPkCnkCa8Lpv+qWRIYRyRfLLAubw2iBFDEtaOKX37haCIicMDH+cJwNgWU0x8xri5vMHveSJHSlwVFsCAjiYxpIg7dt58xHtySjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQCEjzbTkWR6vZUjfe732XGyEyDfnjBpejsx8kHn/kgqnwAguCxxEPiNROByOEzTeC0OL6Jw9fhPDDj/ubw6z68agRVogjToeQepRCNIyfS61l4LMcJLZUBuP2WgaJgHt7E=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPALMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnlupTmgKXlip4xEjAQBgNVBAMMCeW8oOaBkueGmTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQsI+c/is/BdtC9qylJc6TnroZWhwV/FYmYHCj29UoSbSrJKErgaMojLEjReERjax7kq+b3OYTQwbB0QDxfFkTgHH6qRvb743UUiO3jlBqBfigcZT10oyyORs0UzEL70AmjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQB9JRENKJVVtXknenoFtA8TTq2hBU9nKEc1TcBqMzFlv92tilGbCfr8vO5wO8fIcFExvidZORJFqjrZebBGQZHRlsEBMBzKpj3pp8gI/uUQBEJ2c1LJuGMotAKHX7ecbz4=
objectClass: wstCertificateUser
serialNumber: F00B
EncryptserialNumber: EFFF
cn:: 5byg5oGS54aZdn:: b3U95paw6Ze75L+h5oGv5aSELG895rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FLCBjPWNu
ou:: 5paw6Ze75L+h5oGv5aSE
objectClass: organizationalUnitdn:: Y2496YKT56eL6IuxLG91PeaWsOmXu+S/oeaBr+WkhCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICdzCCAgOgAwIBAgIDAPAAMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZUxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRgwFgYDVQQLDA/mlrDpl7vkv6Hmga/lpIQxEjAQBgNVBAMMCemCk+eni+iLsTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASJ3RcGfo8cVUDTfawSKXngNpSoJH36bVjDbEU+QvW4L4pp3SQr+IKXOlGvR1R8IMXhhl3Kidbijkk4xphBGHJlgWVrCB2YsyrKFYTCjjcRXlzspHM3kqtDpg0Ce2OSwfSjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQC94CmAJ301xBDQwObclFDJ4dQI3oVxxSNrB7DtI7s2ElthNDEV1MAekOilrcEgbamawm4H2cVw3eKk+q+6kolKoo3KhqVcFtF1uD8nUanvvfO8wrBhwgzQEy3bBQsfKKg=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICdzCCAgOgAwIBAgIDAPAOMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZUxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRgwFgYDVQQLDA/mlrDpl7vkv6Hmga/lpIQxEjAQBgNVBAMMCemCk+eni+iLsTEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwMTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAT/c/uLk1Qk7AqTCNmpl3mbR6bZG/f73gq6oZLUrize0LClvwNBvEQ8fQNiqklwfZ5noXpG6p4a3vdYb/pNVtMqS+p2rWhaU/4hTHBpMurv9ha0zMPs7oftu2T3sawXtH2jDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQBVTFutTDZ6cPeKjXAsz7DNQKJgv3trvAHLnHHag9mVG+HG9ypIniuMqGRqkk0jKPDjpa62fWUfFKI09zkvYAsP2Oq4G4ScOiOQrKr0w4YT4Dw7EFtHh53Y21B0/3CDbHM=
objectClass: wstCertificateUser
serialNumber: F00E
EncryptserialNumber: F000
cn:: 6YKT56eL6Iuxdn:: Y2495byg5YWI5piMLG91PeaWsOmXu+S/oeaBr+WkhCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICdzCCAgOgAwIBAgIDAPABMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZUxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRgwFgYDVQQLDA/mlrDpl7vkv6Hmga/lpIQxEjAQBgNVBAMMCeW8oOWFiOaYjDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQsUEpbw4WCp1Z/MZEwmXBEpnKHBFoMxR10pg75oJ/bcUdLcf0j0RcZBKRFQZdBkmyfv1Py6xqB+uPmVXD1dkcEQ418wzazWm02fPVQupQtu013fmdOqlm569X8fdKA2yCjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQBJF1dtYTBtQfTOspjSjj/pGt5do/rI/I9YU88XuFpr5NazWXmfHsLLAE3hqANY4xeQNfrwrPRNDD7rJCRq0ewBI5a/EQZEpGhR54dTf8q2h1Rm5ymIG5pSQIgtexzCIu4=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICdzCCAgOgAwIBAgIDAPANMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZUxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRgwFgYDVQQLDA/mlrDpl7vkv6Hmga/lpIQxEjAQBgNVBAMMCeW8oOWFiOaYjDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASE54Ac3/GQ5SDO1ZaGyZ+7iADWWm28knQDytjM0gSkb3URScaRxUpp952SmYbdEKjnYoLx8Mq0dyPoRDa+m9CWy9Ppn8KPpiTU4vxy0VnyXSDt4pmPmAG02ppMeDo9KlmjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQAX3XlXjdXZFgpxkQQEDopiYfECJv5PDVL9ILF5+wljcahb9ES/I1ubKqv2SW9qLiUqeurpCzhw2Icon2Ah8FcAYSCDhCQ//Gmc/MjRrBT8rvXPYGdLb5zWRMTRccrV/fU=
objectClass: wstCertificateUser
serialNumber: F00D
EncryptserialNumber: F001
cn:: 5byg5YWI5piMdn:: Y2495LqO6LSk5oiQLG91Peedo+afpeWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPACMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnnaPmn6XlrqQxEjAQBgNVBAMMCeS6jui0pOaIkDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAT2LsSPTVOm4bWarrKFyBQDF8jKzP9hc1atfiKgcy0JLQ8eDhNIkN7MFZV2Qq1D0B5nuYQ4bCCdO0vgGeGhzThi24Z5iMU6G3SixZInNFsno71iRBUCkufZbtQLM+QU0SGjDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQB6qkE3SC65UnG7KbmQ8Dtt4njk4gTyp9PY6UfFg4pGb1uLFffMKS5jHz9DvKgk+yRBTef4UjP0qRA3hZIReXBhPRCBhbLh2zEnV3Uctz9ZtVy/xxppF24MNirjPBXQnHs=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICcTCCAf2gAwIBAgIDAPAHMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgY8xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMRIwEAYDVQQLDAnnnaPmn6XlrqQxEjAQBgNVBAMMCeS6jui0pOaIkDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwNjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQ72jqVYk22FoVWoX/Pk7Zg7bgdnvGzA+kyBK0dGtrxSZ1YOnlyP75IoIJxqOerXy9KwgZRWtkDuBcS2I62rTU2c//7D2Zfwj1kEcDRwXy0SGMUCK6bZIigRFUU
 DY4WHeijDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQBHNA3CCF1cpw98PGdJZJEwzxlL/LZpKYFqXHjKyXCm0meKVQLc3DHk26QGrMI0YOYnxBQppeYmHjU5upQQb2FZdxz/bEj0PRWJmiJHEBue5hV+m6LuI7eZ++6KC33Fu8w=
objectClass: wstCertificateUser
serialNumber: F007
EncryptserialNumber: F002
cn:: 5LqO6LSk5oiQdn:: Y2496YOR5Zu95piOLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICfTCCAgmgAwIBAgIDAPADMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCemDkeWbveaYjjEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwODB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAS3Eg3r2xyMskJap1A2kYJcfnKUPTwZOhKaX5hDga6OwxG7nsPsMqKJxHXLlTKde/mRb7IOt8KaaNHI3nfyuyUxqunOAKCKxxTlvkKgWXVOJDLVZOIpg2qyQMMiGq8OkDejDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQBKZbbUI1SFUpGaYB335UT4hyHL6nJmjDl5NAeaQwQLEBRAfNZBTIseySF3Kuiff5nCYYkWjEFVCTZA9g4qyIyH1tGXzsPs0a++hfRBHXFzVXxArfOXWq9NZZ0/8CjupPA=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICfTCCAgmgAwIBAgIDAPAQMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZsxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxEjAQBgNVBAMMCemDkeWbveaYjjEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAwODB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASJZ8VG7wTFTcp3iN/giqpAafmzoagTsvWHilseMZaQrticqx1YfojFvmFxOftOHB+6hJrpOWT1Fa8aj8x5niFkuK0o3/R7STu0y9hzoAWdRVx5TQOjWJQUt++31Ks64VSjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQAPGxgxepGgzKy0hYlLNa9H83czGFrd3XQ7JvgYubIRPSyO9XY1AwQmPfeZnNzQgTQ8kqEXRbzl/GPqa4nJWMY8MU621vL5dE+U/ummILC6NIFOZWSL0EopaG7d2fasKLw=
objectClass: wstCertificateUser
serialNumber: F010
EncryptserialNumber: F003
cn:: 6YOR5Zu95piOdn:: Y2495YiY6ZuELG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
notAfter: 20200614115959
EncryptCertificate;binary:: MIICejCCAgagAwIBAgIDAPAFMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZgxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxDzANBgNVBAMMBuWImOmbhDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASZpPPLO/EbPfMGhY34+6yVVNZwaq0gzz+gNL6wwj58Swb5avhrQVNOJ199OO5NGu1ESShc/N0QKan/3lM7jJOr1QuA9JlrbPkwUUs/Pk+2edMnd254IYkJkUiUXVN0O66jDzANMAsGA1UdDwQEAwIDODALBgkqgRyBRQGHaAsDYQCryhp3sqTBZ8kbXsUrtJilrqs5w5jQFcuZDjke802Q9LldGF9TA+fF1/v8A+SKmNFVdKI9HeO6i4qzRx7JQAE5M6qVnmcOkr3ujnCiOshPhKdiWo/lNovDZVZME+BFbg4=
EncryptnotAfter: 20200614115959
userCertificate;binary:: MIICejCCAgagAwIBAgIDAPAJMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNDE2MDAwMFoXDTIwMDYxNDE1NTk1OVowgZgxHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxDzANBgNVBAMMBuWImOmbhDEcMBoGCgmSJomT8ixkAQEMDDIyMTIxMDAxMDAxMjB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAATWQJCy2ENxXaqv9OpsoyV2IfpRm6EVTQ9iyqfsMTkHBjPC8NQmlOgYU1mudci1wXahVQOKC65fIaAqbwzZPu+5Q9EzazkkCRejsMbVkafp/L2DvvByoQfLlpTZPXnH5oCjDzANMAsGA1UdDwQEAwIGwDALBgkqgRyBRQGHaAsDYQCXOsoFPbGqf2sRGEEh1FySgTUBbwnr2E+T0d1atTqInX/puRTfuuF+SGdSHzoqzKCFcjfoZRXE1IdmUcpKYLHWZnT3xw6W7yZKePWg8RME0itmvAVC3jaNWYZEqbf0Aao=
objectClass: wstCertificateUser
serialNumber: F009
EncryptserialNumber: F005
cn:: 5YiY6ZuEdn:: Y2495rW35Y2X55yB5Lq65rCR5pS/5bqcLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICfzCCAgugAwIBAgIDAPARMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowgZ0xHjAcBgNVBAMMFea1t+WNl+ecgeS6uuawkeaUv+W6nDEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MRIwEAYDVQQIDAnmtbfljZfnnIExJzAlBgNVBAoMHua1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhTEeMBwGA1UECwwV55S15a2Q5pS/5Yqh5Yqe5YWs5a6kMHowFAYHKoZIzj0CAQYJKoEcgUUBh2gIA2IABDjDxa3JeTB+4Q846SKfQEj7vFMBYXOi6gOyaOdPtXuDWjzPt714OukAeUceWp4fSBxmVGHMVFRj36hdcetkrZFdtKZktY7tm4yVuJOGiScjMq8wb0E1y2L5QbKHtj7OnqMPMA0wCwYDVR0PBAQDAgM4MAsGCSqBHIFFAYdoCwNhALEihLJkSVjCu6suTDg3z7m7tAZAUcuphZbtQhz1WBUBrOTWvvofjEdZQJ2C64KzoqXC8Ikx6FlVjStsn28ZnLIGo2zvh3ZGJujkKtOaI/pYIryloazRb39Dk/uDcorjAg==
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F011
cn:: 5rW35Y2X55yB5Lq65rCR5pS/5bqcdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5Y+R5biD6aqM6K+B57O757ufLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICjzCCAhugAwIBAgIDAPASMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowga0xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxQjBABgNVBAMMOeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+eUteWtkOWNsOeroOWPkeW4g+mqjOivgeezu+e7nzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASxldgx1eB/bGYJMJxcf/fFSfklt1DoLePXB5SNL9iCDkXyOwBfNuZQ/+MJKYm20MZVRtCfLm15FXSaEcubJgxxr9abn0a0mS2lqnKMPPMeIVmRItVB9ebnyS5M7By07l2jDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQCD+93k9XNMsNkzNLl3xgyVtlSmWtdPUclYWiGbPkT7J8V4pi5lMPDzVC2q6mzAMpJAjwgqlmaND0LnOM1alhDpF4kJr8u2AwpXz5bK7Q2obichggbS6tKwErwGJIXq2jE=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F012
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5Y+R5biD6aqM6K+B57O757ufdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5Zyo57q/5pyN5Yqh57O757ufLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICjzCCAhugAwIBAgIDAPATMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowga0xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxQjBABgNVBAMMOeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+eUteWtkOWNsOeroOWcqOe6v+acjeWKoeezu+e7nzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAT3Y3r7euWmkFJeo6UxvcwWXokankXJhPdwOQAJo0G01Ms8/ku57iF/1v9qnaGUpW1VmxB9M60Hrt6fq+5Xq9fP79aXN0K1ffsm0GurgajT/uTmvODYfDutYaULTiR5bQijDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQBL+Ifd3r8RUPOti/A3+lv2RGhSsn41XzWlsxzYo4JdPfO982MhNjlVQvuBwWt7nqE6uISJ/aMacuD8W+QPS6ZQM93uDwddh3oGsRJRsM6H3hO2rivgz0I83MtdqMrx2YQ=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F013
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5Zyo57q/5pyN5Yqh57O757ufdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug562+5Y+R566h55CG6K6+5aSHLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICjzCCAhugAwIBAgIDAPAUMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowga0xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxQjBABgNVBAMMOeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+eUteWtkOWNsOeroOetvuWPkeeuoeeQhuiuvuWkhzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAASGtEDJAiKCQkDeLCCf5ERgSGXrp0HB60pzyvH0aT1E5JuiVYYpBpypHGRPdgOPAv2t7MSZZCktTCuUUGRK0XWwOZtFObMDIJTTFq6y/KOkrYJHvtgocUJYyNmv/HaBftWjDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQDeOAclwZoG9ulDpmi0gZaq8bnExzWbkcFo01+eoseqrCyyk0QUu/V3nJbaPo/1RqkR5dMAZJneCxFZSYNfmGFljS/u1t/C6ECcBW1IFaO7V+MuD55E6CKJQzLXlEQnmdE=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F014
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug562+5Y+R566h55CG6K6+5aSHdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5rOo5YaM566h55CG6K6+5aSHLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICjzCCAhugAwIBAgIDAPAVMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowga0xHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxQjBABgNVBAMMOeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+eUteWtkOWNsOeroOazqOWGjOeuoeeQhuiuvuWkhzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAATfe860NwLtJ6+WlxgzJKajw/4yaBdgsnZHH5UOz5KlHKal85vNYWeQ01/PpMRZNUaHHdZXwBeX1GoE043H7Ydd8ljZwXNi7HeDSk5OZ0AMttAawy81TQ+2Ow34UHNRpc+jDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQBASlFH/K9QJt1QPS2y8ShLC8Htu1TB3dgO4TzTx8jtGh/gCGHenxcJDfjCzyZf1DmZouz26WhqZ8d/ouk6h/XPMBKD1ijXSls4bFMgmRtIOUPWD9w1lNkHAbhkIEvkR6o=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F015
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf55S15a2Q5Y2w56ug5rOo5YaM566h55CG6K6+5aSHdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf5Y+v5L+h5pe26Ze05pyN5YqhLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICgzCCAg+gAwIBAgIDAPAWMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowgaExHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxNjA0BgNVBAMMLeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+WPr+S/oeaXtumXtOacjeWKoTB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAARjbFCPyopT/n1J510rYfqoWOSZ31RZ6tsi2W9ERas86OyZnOYffHN/nNJIhuP62hG+8x1GQvxRQJTtMQmG8yTf3guqCAKEVJvJ8YqvFjrryPr5comQFq+aCPH5DalFsbGjDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQDGnifEI4VCDIuCzkH4T90m/nBKsP40ERsfbgT6f959SPIOhbvT7lQg9iTru21bXHHDwP2ZLOhdr1jRNmguSPRHfYk9R+/CtSijvM5h/VbgbxfB8ifT27yXJYP3G+89oKo=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F016
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf5Y+v5L+h5pe26Ze05pyN5Yqhdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf5o6I5p2D566h55CG6K6+5aSHLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICgzCCAg+gAwIBAgIDAPAXMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowgaExHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxNjA0BgNVBAMMLeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+aOiOadg+euoeeQhuiuvuWkhzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAR9DCT3EnxjPUiNyeeLJeARvaVGbLnqRykTs6g63Pz1sJ8KytUpd8u3TRmE8I6mmg62tj0CrWdRTDWlFCEjDS3nZMmRTr/OF+2TfdQpankZywvalhASLgWZDSw3H2y6bJOjDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQD3AEmWE6YuzItIvRxtqBRbMvGaI4FldYD4eS0qCa9Qpma0izzYOstdam6pBAvLMS93ArmDTlXSsZvx/OEV3/ryTyZHa5moMRJRroQdEmHM1yz2aX4pTq7RFe6PLKSajwE=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F017
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf5o6I5p2D566h55CG6K6+5aSHdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LSj5Lu76K6k5a6a6K6+5aSHLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICgzCCAg+gAwIBAgIDAPAYMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowgaExHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxNjA0BgNVBAMMLeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+i0o+S7u+iupOWumuiuvuWkhzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAATTORploAGr0V5s+yHJHsP8K8tAml8SGyGhajpg6pscwhikkQCDy9uFIMyQJUiEJ8AXod86ZH/KI7XxwK2gfw7+XrjC+YZ+DTE/Ty7babBnOctC1Y/73dqhSoRjMw5q9J2jDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQA6MJjxhAMDKyBNqLhnG2vhsCPDjXcjeQkzP9H54UJKlAkqldGVlxEhCdeKoqOppg8F9CgfYdi+4FD4ZtKZMvd6SibC+n4Kbd/PbjaIH5gG/lt35AKLgkb79n0x+HDtMu4=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F018
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LSj5Lu76K6k5a6a6K6+5aSHdn:: Y24955yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ566h55CG6K6+5aSHLG91PeeUteWtkOaUv+WKoeWKnuWFrOWupCxvPea1t+WNl+ecgeS6uuawkeaUv+W6nOWKnuWFrOWOhSwgYz1jbg==
EncryptCertificate;binary:: MIICgzCCAg+gAwIBAgIDAPAZMAsGCSqBHIFFAYdoCzCBpDE2MDQGA1UEAwwt5rW35Y2X55yB55S15a2Q5pS/5Yqh5YaF572R55S15a2Q6K6k6K+B57uT54K5MTYwNAYDVQQKDC3mtbfljZfnnIHnlLXlrZDmlL/liqHlhoXnvZHnlLXlrZDorqTor4Hnu5PngrkxEjAQBgNVBAgMCea1t+WNl+ecgTEeMBwGA1UEBgwV5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu9MB4XDTE3MDYxNTE2MDAwMFoXDTIwMDYxNTE1NTk1OVowgaExHjAcBgNVBAYMFeS4reWNjuS6uuawkeWFseWSjOWbvTEnMCUGA1UECgwe5rW35Y2X55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6FMR4wHAYDVQQLDBXnlLXlrZDmlL/liqHlip7lhazlrqQxNjA0BgNVBAMMLeecgeaUv+W6nOS/oeS7u+acjeWKoeezu+e7n+i1hOa6kOeuoeeQhuiuvuWkhzB6MBQGByqGSM49AgEGCSqBHIFFAYdoCANiAAQoMEkVxLEqNYvIaiQ/3eICcDMJ9/3TIdpkRP6puuwQ43TQdr/UUqPzrd0lWNtdWe35H0+ENwUNlYisBJraco/GHpw81LNRtzfo4okEgukL9X0tXnxyusd6z6EZJcmCvH+jDzANMAsGA1UdDwQEAwID+DALBgkqgRyBRQGHaAsDYQCuJ+HYlSJXSn6G5g+xF7NCjNixSO72vghDKs+O32dz3lL7jKdZ8foMJ55S7Z2HTVNLBQbwOJDv//J03XeXvcuc+Bos7PTYtQHJ5tYn4rSDDrUbY+LQA1oZxoE+BQ3s7yg=
EncryptnotAfter: 20200615115959
objectClass: wstCertificateUser
EncryptserialNumber: F019
cn:: 55yB5pS/5bqc5L+h5Lu75pyN5Yqh57O757uf6LWE5rqQ566h55CG6K6+5aSHdn:: bz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 5Zub5bed55yB5Lq65rCR5pS/5bqc5Yqe5YWs5Y6Fdn:: bz3nlLXlrZDmlL/liqHlip7lhazlrqQsbz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55S15a2Q5pS/5Yqh5Yqe5YWs5a6kdn:: bz3kv53lr4blip7lhazlrqQsbz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 5L+d5a+G5Yqe5YWs5a6kdn:: bz3lrqPkvKDpg6gsbz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 5a6j5Lyg6YOodn:: bz3mlrDpl7vlip7kuovlpIQsbz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 5paw6Ze75Yqe5LqL5aSEdn:: bz3nnIHlp5Tnu4Tnu4fpg6gsbz3lm5vlt53nnIHkurrmsJHmlL/lupzlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55yB5aeU57uE57uH6YOodn:: bz3muZbljJfnnIHkurrmsJHmlL/liqHlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 5rmW5YyX55yB5Lq65rCR5pS/5Yqh5Yqe5YWs5Y6Fdn:: bz3nnIHlp5TlrqPkvKDpg6gsbz3muZbljJfnnIHkurrmsJHmlL/liqHlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55yB5aeU5a6j5Lyg6YOodn:: bz3nnIHlp5Tkv53lr4bnnaPmn6Xnu4Qsbz3muZbljJfnnIHkurrmsJHmlL/liqHlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55yB5aeU5L+d5a+G552j5p+l57uEdn:: bz3nnIHlp5TlpJbkuqTpg6gsbz3muZbljJfnnIHkurrmsJHmlL/liqHlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55yB5aeU5aSW5Lqk6YOodn:: bz3nlLXlrZDmlL/liqHlip7lhazlrqQsbz3muZbljJfnnIHkurrmsJHmlL/liqHlip7lhazljoUsIGM9Y24=
objectClass: top
objectClass: organization
o:: 55S15a2Q5pS/5Yqh5Yqe5YWs5a6k

最后运行LdifImport.java中的main方法,控制台输出结果为以下就说明成功了

LDIF change fileAdding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
changetype: attribute type undefinedAdding entry...Adding entry...
Directory information has been modified.Adding entry...
changetype: attribute type undefinedAdding entry...Adding entry...
Directory information has been modified.Adding entry...Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.Adding entry...
Directory information has been modified.

转载于:https://www.cnblogs.com/dqcer/p/7682154.html

java导入ldif文件相关推荐

  1. JAVA 导入excel文件

    JAVA 导入excel文件 背景 –>struts2框架 –>from表单提交excel模板文件 –>java获取excel数据 步骤 1.获取excel文件 struts2 fr ...

  2. java txt数据导入excel,java导入excle文件《如何用java 将txt数据导入excel》

    如何用java 将txt数据导入excel 代码如下: import java.io.*; import jxl.*; import jxl.write.*; public class CreateX ...

  3. java导入csv文件时利弊,关于在自己写的应用上导入csv文件时踩过的坑

    1.因为字符串分割问题,一个疏漏导致Java java.lang.NumberFormatException: empty String: 2.涉及到文件编码问题而导致的乱码. image.png 首 ...

  4. java解析excel的js页面,Java导入Excel文件页面实现JS

    Excel导入: 页面创建导入按钮,如: 代码: 导入交易 JS: function upload(){ layer.open({ type : 2, //层类型 title :'导入文件', //标 ...

  5. java导入excel文件到服务器,javaexcel导出到远程服务器

    javaexcel导出到远程服务器 内容精选 换一换 该任务指导用户使用Loader将数据从Hive导出到关系型数据库.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业执 ...

  6. JAVA导入gpx文件_技术贴 | 如何将赛事路线导入 Garmin 设备(BaseCamp 篇)

    原标题:技术贴 | 如何将赛事路线导入 Garmin 设备(BaseCamp 篇) 近些年,越野挑战赛受到越来越多跑者的欢迎,虽翻山越岭.历尽艰辛,但跨过终点时的成就与满足是常人无法感受和体会到的.为 ...

  7. java导入visio文件

    String filePath = "E:/桌面/cesgi.vsdx";File file = new File(filePath);XmlVisioDocument xmlVi ...

  8. Java导入Excel文件日期解析成了中文问题解决

    Excel文件日期为2018-12-12,在解析出来的时候变成了 12-十二月-2018 cell.setCellType(Cell.CELL_TYPE_STRING);//根据不同类型转化成字符串 ...

  9. java导入excel文件工具,附面试题答案

    前言: 都说学历是敲门砖,是一点都没错,即使是在重技术轻学历的互联网企业,面试官对于学历越高的程序员初印象会更好,面试也会更顺利,而大部分专科学历的程序员,除非有过硬的技术,否则想要进入一二线互联网公 ...

  10. java大文件导入_java导入大文件数据的解决方案

    2018年11月5号于南昌 中海蓝域小区 卧榻伴音弦 最近在做项目,一个20G大小的文件,要按行读入到数据库,妈呀,有什么好方法吗? 20G如果按照行读入的方式,需要20多个小时才能入库成功.主要性能 ...

最新文章

  1. 离不开深度学习的自动驾驶
  2. 揭秘罗永浩直播带货幕后之师
  3. java反射 基本知识
  4. 中小型互联网公司微服务实践-经验和教训
  5. 如何查看长文本的标识和对象(读长文本)。
  6. java规则表达式_Java基础--正则表达式的规则
  7. iot nb 曹淑敏 鹰潭_移动物联时代来啦 鹰潭一项成就为全球首个 江西力争在全国“四个领先”...
  8. 漫谈广告竞价模式(五)
  9. Linux Tomcat9 控制界面及管理配置
  10. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_18-异常处理-不可预知异常处理...
  11. SpringMVC文件下载IOException: UT010029: Stream is closed
  12. 解决Ubuntu设置静态ip网络连接失败的问题
  13. Hystrix php,详解 hystrix-go 使用与原理
  14. 日语里面用言连体,连用,终止形分别是什么
  15. Parameter Attribute
  16. cad展点kszd小程序_cad实现批量展坐标点方法介绍
  17. module blacklist
  18. YY会是百度的YY,但百度的直播不只是YY
  19. hbase shell 创建表
  20. linux arm上实现插入U盘自动运行的设计

热门文章

  1. Android手机摄像头作为PC摄像头开发
  2. 串的模式匹配算法之BF算法
  3. ssh:connect to host localhost port 22: Connection refused解决方法
  4. 火狐怎么导入旧的火狐数据_如何与Firefox分手
  5. Z05 - 033、访客分析 - 独立访客
  6. 解决:RN和H5之间通信
  7. 计算机控制键有哪些,常用的电脑快捷键大全有哪些
  8. C++之(public/protect/private)及fiend
  9. 红帽子linux9百度云,红帽 Red Hat Linux相关产品iso镜像下载【百度云】
  10. python3多线程爬取微博配图相册,可自动获取session【简单,快速】