1 13 14 package org.ejbca.core.protocol.xkms.generators; 15 16 import java.security.PublicKey ; 17 import java.security.cert.X509Certificate ; 18 19 import org.ejbca.core.model.ra.UserDataVO; 20 import org.ejbca.core.protocol.xkms.common.XKMSConstants; 21 import org.w3._2002._03.xkms_.KeyBindingAbstractType; 22 import org.w3._2002._03.xkms_.KeyBindingType; 23 import org.w3._2002._03.xkms_.RegisterRequestType; 24 import org.w3._2002._03.xkms_.RegisterResultType; 25 import org.w3c.dom.Document ; 26 27 35 36 public class RegisterResponseGenerator extends 37 KRSSResponseGenerator { 38 40 public RegisterResponseGenerator(String remoteIP, RegisterRequestType req, Document requestDoc) { 41 super(remoteIP, req,requestDoc); 42 } 43 44 47 public RegisterResultType getResponse(boolean requestVerifies){ 48 RegisterResultType result = xkmsFactory.createRegisterResultType(); 49 super.populateResponse(result, requestVerifies); 50 RegisterRequestType req = (RegisterRequestType) this.req; 51 52 53 if(resultMajor == null){ 54 if(!checkValidRespondWithRequest(req.getRespondWith(),false)){ 55 resultMajor = XKMSConstants.RESULTMAJOR_SENDER; 56 resultMinor = XKMSConstants.RESULTMINOR_MESSAGENOTSUPPORTED; 57 } 58 59 if(resultMajor == null){ 60 61 62 if(resultMajor == null){ 63 PublicKey publicKey = getPublicKey(req); 64 if(confirmPOP(publicKey)){ 65 String subjectDN = getSubjectDN(req); 66 UserDataVO userData = findUserData(subjectDN); 67 if(userData != null){ 68 String password = ""; 69 boolean encryptedPassword = isPasswordEncrypted(req); 70 if(encryptedPassword){ 71 password = getEncryptedPassword(requestDoc, userData.getPassword()); 72 }else{ 73 password = getClearPassword(req, userData.getPassword()); 74 } 75 String revocationCode = getRevocationCode(req); 76 if(password != null ){ 77 X509Certificate cert = registerReissueOrRecover(false,false, result, userData,password, publicKey, revocationCode); 78 if(cert != null){ 79 KeyBindingAbstractType keyBinding = getResponseValues(req.getPrototypeKeyBinding(), cert, false, true); 80 result.getKeyBinding().add((KeyBindingType) keyBinding); 81 } 82 } 83 } 84 } 85 } 86 } 87 } 88 89 if(resultMajor == null){ 90 resultMajor = XKMSConstants.RESULTMAJOR_SUCCESS; 91 } 92 93 setResult(result); 94 95 return result; 96 } 97 98 103 protected PublicKey getPublicKey(RegisterRequestType req){ 104 Object retval = getPublicKeyInfo(req, true); 105 if(retval instanceof X509Certificate ){ 106 retval = ((X509Certificate ) retval).getPublicKey(); 107 } 108 109 110 return (PublicKey ) retval; 111 } 112 113 114 115 116 117 118 } 119 | Popular Tags |