/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.intel.mountwilson.trustagent.data; import com.intel.dcsg.cpg.crypto.RandomUtil; import java.io.File; import com.intel.mountwilson.common.Config; import com.intel.mountwilson.common.ErrorCode; import com.intel.mtwilson.MyFilesystem; import com.intel.mtwilson.trustagent.TrustagentConfiguration; import com.intel.mtwilson.trustagent.model.TpmQuoteResponse; import com.intel.mtwilson.util.ResourceFinder; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; /** * * @author dsmagadX */ public class TADataContext { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TADataContext.class); private ErrorCode errorCode = ErrorCode.OK; private String selectedPCRs = null; private String nonceBase64; private String AIKCertificate = null; private byte[] tpmQuote = null; private String responseXML = null; private byte[] daaChallenge; private byte[] daaResponse; private String osName; private String osVersion; private String biosOem; private String biosVersion; private String vmmName; private String vmmVersion; private String modulesStr; private String processorInfo; private String hostUUID; private String ipaddress; // localhost ip address private String assetTagHash; private TpmQuoteResponse tpmQuoteResponse; private String sessionId; public String getSessionId() { if( sessionId == null ) { sessionId = RandomUtil.randomHexString(4); log.debug("Generated session id {}", sessionId); } return sessionId; } public String getBiosOem() { return biosOem; } public void setBiosOem(String biosName) { this.biosOem = biosName; } public String getBiosVersion() { return biosVersion; } public void setBiosVersion(String biosVersion) { this.biosVersion = biosVersion; } public String getVmmName() { return vmmName; } public void setVmmName(String vmmName) { this.vmmName = vmmName; } public String getVmmVersion() { return vmmVersion; } public void setVmmVersion(String vmmVersion) { this.vmmVersion = vmmVersion; } public String getNonceFileName() { return getDataFolder() + File.separator + "nonce"; // like /opt/trustagent/var/nonce } public String getResponseXML() { return responseXML; } public String getSelectedPCRs() { return selectedPCRs; } public void setSelectedPCRs(String selectedPCRs) { this.selectedPCRs = selectedPCRs; } public byte[] getTpmQuote() { return tpmQuote; } public void setTpmQuote(byte[] tpmQuote) { this.tpmQuote = tpmQuote; //Arrays.copyOf(tpmQuote, tpmQuote.length); } public String getNonce() { return nonceBase64; } public void setNonce(String nonce) { this.nonceBase64 = nonce; } // issue #1038 prevent trust agent relay by default; customer can turn this off in configuration file by setting tpm.quote.ipv4=false public boolean isQuoteWithIPAddress() { String enabled = Config.getInstance().getProperty("tpm.quote.ipv4"); if( enabled == null || "true".equalsIgnoreCase(enabled) || "enabled".equalsIgnoreCase(enabled) ) { return true; } return false; } public String getIPAddress() { return ipaddress; } // set by TrustAgent when it initializes the context for this request public void setIPAddress(String ipaddress) { this.ipaddress = ipaddress; } public String getQuoteFileName() { return getDataFolder() + File.separator + "aikquote"; } public String getAikBlobFileName() { return getCertificateFolder() + File.separator + Config.getInstance().getProperty("aikblob.filename"); } public String getAikCertFileName() { return getCertificateFolder() + File.separator + Config.getInstance().getProperty("aikcert.filename"); } // used only by the CreateIdentityDaaCmd public String getEKCertFileName() { return getCertificateFolder() + File.separator + Config.getInstance().getProperty("ekcert.filename"); } public String getDaaChallengeFileName() { return getDataFolder() + File.separator + Config.getInstance().getProperty("daa.challenge.filename"); } public String getDaaResponseFileName() { return getDataFolder() + File.separator + Config.getInstance().getProperty("daa.response.filename"); } public String getCertificateFolder() { return MyFilesystem.getApplicationFilesystem().getConfigurationPath(); } public String getDataFolder() { String path = MyFilesystem.getApplicationFilesystem().getBootstrapFilesystem().getVarPath() + File.separator + getSessionId(); File dir = new File(path); if( !dir.exists() ) { if( dir.mkdirs() ) { log.debug("Created session data folder {}", path); } else { log.error("Error creating data folder {}", path); } } //return Config.getHomeFolder() + File.separator + Config.getInstance().getProperty("data.folder") + File.separator; return path; } public void setAIKCertificate(String certBytes) { this.AIKCertificate = certBytes; } public String getAIKCertificate() { return AIKCertificate; } public void setDaaChallenge(byte[] bytes) { daaChallenge = bytes; } public byte[] getDaaChallenge() { return daaChallenge; } public void setDaaResponse(byte[] bytes) { daaResponse = bytes; } public byte[] getDaaResponse() { return daaResponse; } /** * @deprecated use setTpmQuoteResponse * @param responseXML */ public void setResponseXML(String responseXML) { this.responseXML = responseXML; } public void setTpmQuoteResponse(TpmQuoteResponse tpmQuoteResponse) { this.tpmQuoteResponse = tpmQuoteResponse; } public TpmQuoteResponse getTpmQuoteResponse() { return tpmQuoteResponse; } public ErrorCode getErrorCode() { return errorCode; } public void setErrorCode(ErrorCode errorCode) { this.errorCode = errorCode; } public String getIdentityAuthKey() { try { TrustagentConfiguration configuration = TrustagentConfiguration.loadConfiguration(); return configuration.getAikSecretHex(); /* File aikAuthFile = ResourceFinder.getFile("trustagent.properties"); FileInputStream aikAuthFileInput = new FileInputStream(aikAuthFile); Properties tpmOwnerProperties = new Properties(); tpmOwnerProperties.load(aikAuthFileInput); aikAuthFileInput.close(); return tpmOwnerProperties.getProperty("HisIdentityAuth"); */ } catch(IOException e) { throw new IllegalStateException("Cannot read trustagent.properties", e); } } public void setOsName(String osName) { this.osName = osName; } public String getOsName() { return osName; } public void setOsVersion(String osVersion) { this.osVersion = osVersion; } public String getOsVersion() { return osVersion; } public String getModulesFolder() { return Config.getHomeFolder() + File.separator; } public File getMeasureLogLaunchScript() { // return Config.getInstance().getProperty("modulesScript.filename"); return new File(MyFilesystem.getApplicationFilesystem().getBootstrapFilesystem().getBinPath() + File.separator + "module_analysis.sh"); // Config.getInstance().getProperty("modulesScript.filename")); } public File getMeasureLogXmlFile() { //return Config.getInstance().getProperty("modulesXml.filename"); return new File(MyFilesystem.getApplicationFilesystem().getBootstrapFilesystem().getVarPath() + File.separator + "measureLog.xml"); // Config.getInstance().getProperty("modulesXml.filename")); } public void setModules(String allModules) { this.modulesStr = allModules; } public String getModules() { return modulesStr; } public String getProcessorInfo() { return processorInfo; } public void setProcessorInfo(String processorInfo) { this.processorInfo = processorInfo; } public String getHostUUID() { return hostUUID; } public void setHostUUID(String hostUUID) { this.hostUUID = hostUUID; } public String getAssetTagHash() { return assetTagHash; } public void setAssetTagHash(String assetTagHash) { this.assetTagHash = assetTagHash; } }