Một số chức năng chính của hệ thống

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống quản lý chứng chỉ số sử dụng công nghệ IAIK và SSL (Trang 84)

Chương 3 THỬ NGHIỆM XÂY DỰNG HỆ THỐNG QUẢN LÝ CHỨNG CHỈ SỐ

3.5 HỆ THỐNG QUẢN LÝ CHỨNG CHỈ SỐ

3.5.2. Một số chức năng chính của hệ thống

3.5.2.1. Cấp mới

Chức năng này được áp dụng cho khách đăng ký lần đầu. Tùy thuộc vào loại chứng chỉ số sẽ cĩ quy trình đăng ký khác nhau.

- Đăng ký cho cá nhân - Đăng ký cho server

- Đăng ký cho phát triển phần mềm

Bước 1: Khách hàng gửi các thơng tin cho bộ phận quản lý đăng ký và xác thực thơng tin khách hàng (RA)

Bước 2: RA gửi cho khách hàng email thơng báo xác nhận đăng ký.

Bước 3: Tương ứng với các trình duyệt khác nhau, hệ thống sẽ yêu cầu khách hàng sinh cặp khĩa và đĩng gĩi yêu cầu theo 2 chuẩn được dùng phổ biến hiện nay là PKCS#10 và CMRF. Bước này sẽ được thực hiện một cách tự động mà khơng địi hỏi khách hàng phải hiểu rõ về mặt kỹ thuật.

Bước 4: Bộ phận RA xác thực các thơng tin khách hàng và kiểm tra tính hợp lệ của của yêu cầu. Sau khi tất cả đều hợp lệ, yêu cầu sẽ được gửi tới CA để thực hiện tạo chứng chỉ số cho khách hàng.

Bước 5: CA đưa chứng chỉ số vào kho thơng tin và gửi cho khách hàng kèm theo các thơng tin cần thiết để thực hiện việc cài đặt.

Các bước đăng ký chứng chỉ số cho server và phát triển phần mềm cũng tương tự chỉ khác về ý nghĩa của các thơng tin yêu cầu.

3.5.2.2. Gia hạn hoặc thay thế

Việc gia han hoặc thay thế sẽ cĩ hai hình thức:

Tự động: Trạng thái của chứng chỉ số phải là hợp lệ mới cĩ thể sử dụng chức năng gia hạn tự động, hình 3-14.

Sử dụng mật khẩu: Áp dụng trong tất cả trường hợp. Phương pháp này địi hỏi người sử dụng phải nhớ được mật khẩu lúc đăng ký chứng chỉ số, hình 3-15.

Hình 3-14. Mẫu gia hạn chứng chỉ số tự động.

3.5.2.3. Xem trạng thái yêu cầu

Sau khi hồn thành việc đăng ký, người sử dụng sẽ nhận được thơng báo mã yêu cầu và hướng dẫn xem trạng thái. Để cĩ thể biết được trạng thái yêu cầu, người sử dụng cần phải nhập mã yêu cầu trong mẫu nhập như hình 3.16.

Hình 3-16. Mẫu nhập xem trạng thái yêu cầu

3.5.2.4. Tìm kiếm, xem trạng thái và lấy chứng chỉ số

Để cĩ thể giúp đỡ các thành viên tham gia vào hệ thống cĩ thể tìm kiếm và xem trạng thái, VASC CA đưa ra chức năng tìm kiếm và xem trạng thái chứng chỉ số từ đơn giản cho đến thơng tin chi tiết.

3.5.2.5. Xem và cài đặt chuỗi chứng thực

Chuỗi chứng thực là một trong những thành phần khơng thể thiếu của bất kỳ một hệ thống quản lý chứng chỉ số. Nĩ giúp cho các đối tượng tham gia cĩ thể thực hiện việc kiểm tra tính hợp lệ của chứng chỉ số. Thơng tin này cũng cĩ trong phần kho thơng tin của hệ thống.

Hình 3-17. Mẫu nhập xem và cài đặt chuỗi chứng thực. 3.5.2.6. Xem và cài đặt danh sách chứng chỉ số bị thu hồi

Chứng chỉ số cĩ thể khơng cịn hợp lệ trong các trường hợp phi kỹ thuật như lộ khĩa, khơng sử dụng nữa, thay đổi thơng tin, và cần phải đưa vào danh sách thu hồi. Các thành viên tham gia vào hệ thống dựa vào thơng tin của danh sách thu hồi để ngừng giao dịch khi sử dụng các chứng chỉ số đĩ.

3.5.2.7 Đăng ký thu hồi

Chức năng về hình thức thực hiện sẽ giống như chức năng gia hạn (tự động và sử dụng mật khẩu), chỉ cĩ điểm khác về ý nghĩa là thu hồi chứng chỉ số kèm theo lý do tại sao. Khi chứng chỉ số bị hỏng, mất, lộ khĩa hoặc thay đổi thơng tin, người sử dụng cĩ thể sử dụng chức năng này để thơng báo cho hệ thống và các thành viên khác biết. Khi cảm thấy nghi ngờ, chứng chỉ số của thành viên cũng cĩ thể bị thu hồi cưỡng bức bởi hệ thống

3.5.2.8 Quản trị hệ thống

Hệ thống quản trị CA phân quyền dựa trên chứng chỉ số. Khi truy cập, hệ thống quản trị sẽ yêu cầu đưa ra chứng chỉ số. Sau khi thực hiện các bước bắt tay và chứng thực việc sở hữu chứng chỉ số, hệ thống quản trị sẽ thực hiện việc phần quyền. Trình duyệt sẽ cĩ hộp thoại yêu cầu chọn chứng chỉ số như hình 3- 20.

Hình 3-20

Lựa chọn chứng chỉ số thích hợp khi đăng nhập hệ thống quản trị

Tương ứng với mỗi chức năng của hệ thống sẽ cĩ một quyền. Tùy theo các quyền, các thành viên quản trị cĩ thể thực hiện các chức năng chính sau:

 Thu hồi

 Cập nhật trạng thái  Tìm kiếm yêu cầu  Ký duyệt yêu cầu

 Cập nhập danh sách thu hồi  Quản lý thành viên quản trị  Quản lý đối tác

 Thống kê hệ thống  Cấu hình hệ thống

KẾT LUẬN

Kết quả chính của luận văn bao gồm:

1. Tìm hiểu và nghiên cứu qua các tài liệu để hệ thống lại các vấn để sau

 Giới thiệu về hệ mật mã đối xứng, hệ mật mã khĩa cơng khai, giao thức SSL và bộ cơng cụ IAIK hộ trợ cho hệ thống PKI

 Giới thiệu về chứng chỉ khĩa cơng khai, cơ sở hạ tầng mã khĩa cơng khai. 2. Thử nghiệm xây dựng hệ thống quản lý chứng chỉ số

TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt:

1. GS.TS Phan Đình Diệu, Giáo trình Lý thuyết mật mã và an tồn thơng tin. 2. PGS.TS Trịnh Nhật Tiến, Giáo trình An tồn dữ liệu.

Tài liệu tiếng Anh:

1. Secure Electronic Commerce, Building the Infrastructure for Digital Signatures and Encryption, Second Edition. Warwick Ford, Michael S. Baum. Prentice Hall PTR, 2001.

2. PKI Implementing and Managing E-Security. Andrew Nash, William Duane, Celia Joseph, Derek Brink. McGraw-Hill, 2001.

3. Digital Signatures. Mohad Atreya, Benjamin Hammond, Stephen Paine, Paul Starrett, Stephen Wu. McGraw-Hill, 2001.

4. Internet X.509 Public Key Infrastructure Certificate Policy and Certification Practices Framework (RFC2527), Internet Engineering Task Force (IETF). 5. Internet X.509 Public Key Infrastructure Qualified Certificates Profile,

Internet Engineering Task Force (IETF).

PHỤ LỤC Một số modul chính của chương trình

1) Modul tiếp nhận yêu cầu của khách hàng

import java.sql.*; import javax.ejb.*; import javax.sql.DataSource; import java.rmi.RemoteException; import java.math.*; import java.util.Collection; import java.util.Vector; import vasc.ca.Common; import java.io.*; /** * <p>Title: CA Developement</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * @author Vu Van Trieu

* @version 1.0 */

public class CertificateEJBBMP extends CertificateEJB { DataSource dataSource;

public BigDecimal ejbCreate(String crtFormat, String crtType, BigDecimal crtClass, BigDecimal keyLen, String algorithm, String crtStatus, Timestamp startDate, Timestamp endDate, BigDecimal publish, String cn, String email,

String o, String ou, String s, String l, String c, byte[] crtData, BigDecimal reqId) throws CreateException {

super.ejbCreate(crtFormat, crtType, crtClass, keyLen, algorithm, crtStatus, startDate, endDate, publish, cn, email, o, ou, s, l, c, crtData, reqId);

Connection connection = null;

PreparedStatement statement = null; BigDecimal crtId=null; ResultSet resultSet=null; try { ////////////////////////////////////////// connection = dataSource.getConnection(); connection.setAutoCommit(false); statement=connection.prepareStatement("SELECT SEQ_CRT_ID.nextval FROM DUAL"); resultSet=statement.executeQuery();

if(resultSet.next()==false) throw new CreateException("Error REQUEST Sequence nextval");

crtId=resultSet.getBigDecimal(1); if(resultSet!=null) {resultSet.close();} statement.close();

///////////////////////////////////////////

statement = connection.prepareStatement("INSERT INTO CERTIFICATE (CRT_ID, CRT_FORMAT, CRT_TYPE, CRT_CLASS, KEY_LEN, ALGORITHM, CRT_STATUS, START_DATE, END_DATE, PUBLISH, CN, EMAIL, O, OU, S, L, C, CRT_DATA, REQ_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, EMPTY_BLOB(), ?)");

statement.setBigDecimal(1, crtId); statement.setString(2, crtFormat); statement.setString(3, crtType);

statement.setBigDecimal(4, crtClass); statement.setBigDecimal(5, keyLen); statement.setString(6, algorithm); statement.setString(7, crtStatus); statement.setTimestamp(8, startDate); statement.setTimestamp(9, endDate); statement.setBigDecimal(10, publish); statement.setString(11, cn); statement.setString(12, email); statement.setString(13, o); statement.setString(14, ou); statement.setString(15, s); statement.setString(16, l); statement.setString(17, c);

/**@todo Set parameter crtData*/ statement.setBigDecimal(18, reqId); //Attention

super.crtId =crtId;

if (statement.executeUpdate() != 1) {

throw new CreateException("Error adding row"); }

else {

statement.close();

statement = connection.prepareStatement("SELECT CRT_DATA FROM CERTIFICATE WHERE CRT_ID=? FOR UPDATE");

statement.setBigDecimal(1, crtId); ResultSet rs=statement.executeQuery(); if(rs.next()) { Blob contentdata=rs.getBlob(1); try { Common.writeBlob(contentdata,crtData); } catch(Exception e) { System.out.println(e.getMessage()); } rs.close(); } } connection.commit(); connection.setAutoCommit(true); return crtId; } catch(SQLException e) {

throw new EJBException("Error executing SQL INSERT INTO CERTIFICATE (CRT_ID, CRT_FORMAT, CRT_TYPE, CRT_CLASS, KEY_LEN, ALGORITHM, CRT_STATUS, START_DATE, END_DATE, PUBLISH, CN, EMAIL, O, OU, S, L, C, CRT_DATA, REQ_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?): " + e.toString());

closeConnection(connection, statement); }

}

public void ejbRemove() throws RemoveException { super.ejbRemove();

Connection connection = null;

PreparedStatement statement = null; try {

connection = dataSource.getConnection();

statement = connection.prepareStatement("DELETE FROM CERTIFICATE WHERE CRT_ID = ?");

statement.setBigDecimal(1, crtId); if (statement.executeUpdate() < 1) {

throw new RemoveException("Error deleting row"); }

}

catch(SQLException e) {

throw new EJBException("Error executing SQL DELETE FROM CERTIFICATE WHERE CRT_ID = ?: " + e.toString());

}

finally {

closeConnection(connection, statement); }

}

public void ejbLoad() {

PreparedStatement statement = null; try {

connection = dataSource.getConnection(); connection.setAutoCommit(false);

statement = connection.prepareStatement("SELECT CRT_FORMAT, CRT_TYPE, CRT_CLASS, KEY_LEN, ALGORITHM, CRT_STATUS, START_DATE, END_DATE, PUBLISH, CN, EMAIL, O, OU, S, L, C, CRT_DATA, REQ_ID FROM CERTIFICATE WHERE CRT_ID = ?");

statement.setBigDecimal(1, crtId);

ResultSet resultSet = statement.executeQuery(); if (!resultSet.next()) {

throw new NoSuchEntityException("Row does not exist"); } this.crtFormat = resultSet.getString(1); this.crtType = resultSet.getString(2); this.crtClass = resultSet.getBigDecimal(3); this.keyLen = resultSet.getBigDecimal(4); this.algorithm = resultSet.getString(5); this.crtStatus = resultSet.getString(6); this.startDate = resultSet.getTimestamp(7); this.endDate = resultSet.getTimestamp(8); this.publish = resultSet.getBigDecimal(9); this.cn = resultSet.getString(10); this.email = resultSet.getString(11); this.o = resultSet.getString(12); this.ou = resultSet.getString(13); this.s = resultSet.getString(14);

this.l = resultSet.getString(15); this.c = resultSet.getString(16); Blob temp=resultSet.getBlob("CRT_DATA"); try { this.crtData=Common.readBlob(temp); } catch(Exception e) {System.out.println(e.getMessage());} this.reqId=resultSet.getBigDecimal(18); if(resultSet!=null) { resultSet.close(); } connection.setAutoCommit(true); } catch(SQLException e) {

throw new EJBException("Error executing SQL SELECT CRT_FORMAT, CRT_TYPE, CRT_CLASS, KEY_LEN, ALGORITHM, CRT_STATUS, START_DATE, END_DATE, PUBLISH, CN, EMAIL, O, OU, S, L, C, CRT_DATA, REQ_ID FROM CERTIFICATE WHERE CRT_ID = ?: " + e.toString());

}

finally {

closeConnection(connection, statement); }

public void ejbStore() { super.ejbStore();

Connection connection = null;

PreparedStatement statement = null; try {

connection = dataSource.getConnection(); connection.setAutoCommit(false);

statement = connection.prepareStatement("UPDATE CERTIFICATE SET CRT_FORMAT = ?, CRT_TYPE = ?, CRT_CLASS = ?, KEY_LEN = ?, ALGORITHM = ?, CRT_STATUS = ?, START_DATE = ?, END_DATE = ?, PUBLISH = ?, CN = ?, EMAIL = ?, O = ?, OU = ?, S = ?, L = ?, C = ?, CRT_DATA =EMPTY_BLOB(), REQ_ID = ? WHERE CRT_ID = ?");

statement.setString(1, crtFormat); statement.setString(2, crtType); statement.setBigDecimal(3, crtClass); statement.setBigDecimal(4, keyLen); statement.setString(5, algorithm); statement.setString(6, crtStatus); statement.setTimestamp(7, startDate); statement.setTimestamp(8, endDate); statement.setBigDecimal(9, publish); statement.setString(10, cn); statement.setString(11, email); statement.setString(12, o); statement.setString(13, ou); statement.setString(14, s); statement.setString(15, l);

/**@todo Set parameter crtData*/ statement.setBigDecimal(17, reqId); statement.setBigDecimal(18, crtId); if (statement.executeUpdate() < 1) {

throw new NoSuchEntityException("Row does not exist"); }

else

{ statement.close();

statement = connection.prepareStatement("SELECT CRT_DATA FROM CERTIFICATE WHERE CRT_ID=? FOR UPDATE");

statement.setBigDecimal(1,crtId); ResultSet rs=statement.executeQuery(); if(rs.next()) { Blob contentdata=rs.getBlob(1); try { Common.writeBlob(contentdata,this.crtData); } catch(Exception e){System.out.println(e.getMessage());} } rs.close(); } connection.commit(); connection.setAutoCommit(true);

}

catch(SQLException e) {

throw new EJBException("Error executing SQL UPDATE CERTIFICATE SET CRT_FORMAT = ?, CRT_TYPE = ?, CRT_CLASS = ?, KEY_LEN = ?, ALGORITHM = ?, CRT_STATUS = ?, START_DATE = ?, END_DATE = ?, PUBLISH = ?, CN = ?, EMAIL = ?, O = ?, OU = ?, S = ?, L = ?, C = ?, CRT_DATA = ?, REQ_ID = ? WHERE CRT_ID = ?: " + e.toString());

}

finally {

closeConnection(connection, statement); }

}

public BigDecimal ejbFindByPrimaryKey(BigDecimal certificateRemoteKey) throws ObjectNotFoundException {

Connection connection = null;

PreparedStatement statement = null; try {

connection = dataSource.getConnection();

statement = connection.prepareStatement("SELECT CRT_ID FROM CERTIFICATE WHERE CRT_ID = ?");

statement.setBigDecimal(1, certificateRemoteKey); ResultSet resultSet = statement.executeQuery(); if (!resultSet.next()) {

throw new ObjectNotFoundException("Primary key does not exist"); }

return certificateRemoteKey; }

throw new EJBException("Error executing SQL SELECT CRT_ID FROM CERTIFICATE WHERE CRT_ID = ?: " + e.toString());

}

finally {

closeConnection(connection, statement); }

}

public BigDecimal ejbFindReqId(BigDecimal reqId){ Connection connection = null;

PreparedStatement statement = null; try {

connection = dataSource.getConnection();

statement = connection.prepareStatement("SELECT CRT_ID FROM CERTIFICATE WHERE REQ_ID = ? ");

statement.setBigDecimal(1, reqId);

ResultSet resultSet = statement.executeQuery(); BigDecimal keys = null;

if (!resultSet.next()) {

//throw new ObjectNotFoundException("Primary key does not exist"); }else{keys = resultSet.getBigDecimal(1);}

return keys; }

catch(SQLException e) {

throw new EJBException("Error executing SQL SELECT CRT_ID FROM CERTIFICATE WHERE REQ_ID = ?: " + e.toString());

}

closeConnection(connection, statement); }

}

public Collection ejbFindAll() { Connection connection = null;

PreparedStatement statement = null; try {

connection = dataSource.getConnection();

statement = connection.prepareStatement("SELECT CRT_ID FROM CERTIFICATE");

ResultSet resultSet = statement.executeQuery(); Vector keys = new Vector();

while (resultSet.next()) {

BigDecimal crtId = resultSet.getBigDecimal(1); keys.addElement(crtId);

}

return keys; }

catch(SQLException e) {

throw new EJBException("Error executing SQL SELECT CRT_ID FROM CERTIFICATE: " + e.toString()); } finally { closeConnection(connection, statement); } }

BigDecimal endSerial, String cn,String email,String o, String ou,String l,String s,String c,

String reason,String startDateValid, String endDateValid,String startDateInvalid, String endDateInvalid,

String category,boolean exact ) {

Connection connection = null;

PreparedStatement statement = null; try { connection = dataSource.getConnection(); try{ statement=vasc.ca.utils.Utils.createStatement(connection,startSerial, endSerial,cn,email,o,ou,l,s,c,reason,startDateValid,endDateValid,startDateInvali d, endDateInvalid, category,exact); } catch(Exception e) {System.out.println(e.getMessage());}

ResultSet resultSet = statement.executeQuery(); Vector keys = new Vector();

while (resultSet.next()) {

BigDecimal crtId = resultSet.getBigDecimal(1); keys.addElement(crtId);

}

return keys; }

catch(SQLException e) {

finally {

closeConnection(connection, statement); }

}

public Collection ejbFindInfoCount (BigDecimal startSerial,

BigDecimal endSerial, String cn,String email,String o, String ou,String l,String s,String c,String reason,String startDateValid, String endDateValid,String startDateInvalid, String endDateInvalid, String category,boolean exact,long start, long end )

{

Connection connection = null;

PreparedStatement statement = null; try { connection = dataSource.getConnection(); try{ statement=vasc.ca.utils.Utils.createStatement(connection,startSerial, endSerial,cn,email,o,ou,l,s,c,reason,startDateValid,endDateValid,startDateInvali d, endDateInvalid, category,exact,start,end); } catch(Exception e) {System.out.println(e.getMessage());}

ResultSet resultSet = statement.executeQuery(); Vector keys = new Vector();

while (resultSet.next()) {

BigDecimal crtId = resultSet.getBigDecimal("CRT_ID"); keys.addElement(crtId);

return keys; }

catch(SQLException e) {

throw new EJBException(" ejbFindInfoCount Error executing " + e.toString()); } finally { closeConnection(connection, statement); } }

void closeConnection(Connection connection, Statement statement) { try { if (statement != null) { statement.close(); } } catch(SQLException e) { } try { if (connection != null) { connection.close(); } } catch(SQLException e) { } }

public void setEntityContext(EntityContext entityContext) { super.setEntityContext(entityContext); try { try { dataSource =Common.getDataSource(); } catch(Exception e) {

throw new EJBException("Error looking up dataSource: " + e.toString()); }

}

catch(Exception e) {

throw new EJBException("Error initializing context:" + e.toString()); }

}

public void unsetEntityContext() { super.unsetEntityContext(); this.entityContext = null; }}

2) Các modul liên quan đến việc tạo chứng chí số package vasc.ca.security.interfaces; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * @author Vu Van Trieu

* @version 1.0 */ import iaik.x509.*; import java.io.*; import java.math.*; import java.rmi.*; import javax.ejb.*; import java.security.*; import iaik.asn1.structures.*; import iaik.asn1.*; import java.util.*; import iaik.x509.extensions.*; public class iCATool

{

public static final boolean CA_CERT = true; public static final boolean USER_CERT = false; public static final int DER=1;

public static final int PEM=2;

public static final int MD5withRSA = 1; public static final int SHA1withRSA = 2; public static final int dsaWithSHA = 3; public static final int dsaWithSHA1 = 4; protected PrivateKey privateKey=null; protected PublicKey publicKey=null; protected X509Certificate certificate=null; protected int algorithm=1;

protected BigInteger serial;

protected String keyAlgorithm="RSA"; protected int keyLen=512;

protected boolean selfCreateKeyPair=false; protected Name name;

protected Date idCardIssueDate=null; protected String ks_alias;

protected String ks_filename; protected String ks_pwd; protected String ks_provider; protected String ks_type;

protected java.util.Date validFrom; protected java.util.Date validTo; protected byte[] cert_temp;

protected boolean subCritical=false; protected boolean auCritical=false;

protected boolean idCardNumCritical = false; protected byte[] ks_data;

public PrivateKey getPrivateKey() {

return privateKey; }

public PublicKey getPublicKey() {

return publicKey; }

public boolean getSelfCreateKeyPair() {

return selfCreateKeyPair; }

public BigInteger getSerial() {

return serial; }

public void setPrivateKey(PrivateKey privateKey) {

this.privateKey = privateKey; }

public void setPublicKey(PublicKey publicKey) {

this.publicKey = publicKey; }

{

this.selfCreateKeyPair = selfCreateKeyPair; }

public void setSerial(BigInteger serial) {

this.serial = serial; }

public byte[] getCertificate() throws EJBException { ByteArrayOutputStream out = null;

try {

out = new ByteArrayOutputStream(1024); this.certificate.writeTo(out);

}

catch(Exception e) {

throw new EJBException(e.getMessage()); }

return out.toByteArray(); }

public int getAlgorithm() {

return algorithm; }

public int getKeyLen() {

return keyLen; }

public void setAlgorithm(int algorithm) {

this.algorithm = algorithm; }

public void setKeyLen(int keyLen) {

this.keyLen = keyLen; }

this.keyAlgorithm = keyAlgorithm; }

public String getKeyAlgorithm() {

return keyAlgorithm; }

//E,CN,UID,OU,O,C

public void setSubjectInfo( String emailAddress, String commonName, String organizationalUnit, String organization, String stateOrProvince, String locality, String country)

{ if (commonName==null || commonName.equals("")) { name=null; return; }

name = new Name();

if (country!=null && !country.equals("")) name.addRDN(ObjectID.country, country); if (locality!=null && !locality.equals("")) name.addRDN(ObjectID.locality, locality);

if (stateOrProvince!=null && !stateOrProvince.equals("")) name.addRDN(ObjectID.stateOrProvince, stateOrProvince); if (organization!=null && !organization.equals(""))

name.addRDN(ObjectID.organization, organization);

if (organizationalUnit!=null && !organizationalUnit.equals("")) name.addRDN(ObjectID.organizationalUnit, organizationalUnit); if (emailAddress!=null && !emailAddress.equals(""))

name.addRDN(ObjectID.emailAddress, emailAddress); if (commonName!=null && !commonName.equals("")) name.addRDN(ObjectID.commonName, commonName); }

public void addName(int oid, String name) {

if (this.name==null)

this.name = new Name(); switch(oid) { case iName.commonName: this.name.addRDN(ObjectID.commonName,name); break; case iName.country:

break; case iName.emailAddress: this.name.addRDN(ObjectID.emailAddress,name); break; case iName.locality: this.name.addRDN(ObjectID.locality,name); break; case iName.organization: this.name.addRDN(ObjectID.organization,name); break; case iName.organizationalUnit: this.name.addRDN(ObjectID.organizationalUnit,name); break; case iName.stateOrProvince: this.name.addRDN(ObjectID.stateOrProvince,name); break; case iName.streetAddress: this.name.addRDN(ObjectID.streetAddress,name); break; case iName.surName: this.name.addRDN(ObjectID.surName,name); break; case iName.title: this.name.addRDN(ObjectID.title,name); break; case iName.unstructuredAddress: this.name.addRDN(ObjectID.unstructuredAddress,name); break; case iName.unstructuredName: this.name.addRDN(ObjectID.unstructuredName,name); break; default: break; } }

public void setKs_alias(String ks_alias) {

this.ks_alias = ks_alias; }

public void setKs_filename(String ks_filename) {

this.ks_filename = ks_filename; }

this.ks_pwd = ks_pwd; }

public void setKs_provider(String ks_provider) {

this.ks_provider = ks_provider; }

public void setKs_type(String ks_type) {

this.ks_type = ks_type; }

public void setValidFrom(java.util.Date validFrom) {

this.validFrom = validFrom; }

public java.util.Date getValidFrom() {

return validFrom; }

public void setValidTo(Date validTo) {

this.validTo = validTo; }

public Date getValidTo() {

return validTo; }

public void setCert_temp(byte[] cert_temp) {

this.cert_temp = cert_temp; }

public void setSubCritical(boolean subCritical) {

this.subCritical = subCritical; }

public boolean isSubCritical() {

return subCritical; }

public void setAuCritical(boolean auCritical) {

this.auCritical = auCritical; }

public boolean isAuCritical()

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống quản lý chứng chỉ số sử dụng công nghệ IAIK và SSL (Trang 84)

Tải bản đầy đủ (PDF)

(120 trang)