From: Steve L. <st...@us...> - 2004-11-02 15:45:40
|
Update of /cvsroot/smartfrog/core/extras/ant/src/org/smartfrog/tools/ant In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28298/extras/ant/src/org/smartfrog/tools/ant Modified Files: Security.java SecurityHolder.java SmartFrogSign.java types.properties Log Message: Security support. Not passing (commented out) tests. Basic type is functional, signing broken, running depending on signing... Index: SecurityHolder.java =================================================================== RCS file: /cvsroot/smartfrog/core/extras/ant/src/org/smartfrog/tools/ant/SecurityHolder.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SecurityHolder.java 8 Oct 2004 16:21:36 -0000 1.4 --- SecurityHolder.java 2 Nov 2004 15:45:03 -0000 1.5 *************** *** 48,51 **** --- 48,52 ---- */ private Reference securityRef; + public static final String ERROR_MULTIPLE_DECLARATIONS = "Multiple security declarations"; /** *************** *** 65,69 **** public void addSecurity(Security security) { if (this.security != null || this.securityRef != null) { ! throw new BuildException("Multiple security settings"); } this.security = security; --- 66,70 ---- public void addSecurity(Security security) { if (this.security != null || this.securityRef != null) { ! throw new BuildException(ERROR_MULTIPLE_DECLARATIONS); } this.security = security; *************** *** 78,82 **** public Security getSecurity(Task owner) { if (security != null) { ! return security; } if (securityRef != null) { --- 79,83 ---- public Security getSecurity(Task owner) { if (security != null) { ! return security.resolve(); } if (securityRef != null) { Index: SmartFrogSign.java =================================================================== RCS file: /cvsroot/smartfrog/core/extras/ant/src/org/smartfrog/tools/ant/SmartFrogSign.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SmartFrogSign.java 8 Oct 2004 16:21:36 -0000 1.5 --- SmartFrogSign.java 2 Nov 2004 15:45:03 -0000 1.6 *************** *** 53,56 **** --- 53,57 ---- public static final String ERROR_NO_SECURITY_SETTINGS = "No security settings provided"; public static final String ERROR_COULD_NOT_APPLY_SETTINGS = "Could not apply security settings with "; + public static final String MESSAGE_EMPTY_SECURITY = "Empty security: signing skipped"; *************** *** 92,96 **** * @param file */ ! public void setFile(File file) { signer.setSignedjar(file); } --- 93,105 ---- * @param file */ ! public void setJar(File file) { ! signer.setJar(file); ! } ! ! /** ! * name the jar to sign ! * @param file ! */ ! public void setSignedJar(File file) { signer.setSignedjar(file); } *************** *** 113,116 **** --- 122,134 ---- /** + * flag to control whether the presence of a signature file means a JAR is signed + * and so does not need resigning + * @param lazy + */ + public void setLazy(boolean lazy) { + signer.setLazy(true); + } + + /** * Set the maximum memory to be used by the jarsigner process * *************** *** 138,141 **** --- 156,162 ---- throw new BuildException(ERROR_NO_SECURITY_SETTINGS); } + if(sec.isEmpty()) { + log(MESSAGE_EMPTY_SECURITY); + } try { sec.applySecuritySettings(signer); Index: types.properties =================================================================== RCS file: /cvsroot/smartfrog/core/extras/ant/src/org/smartfrog/tools/ant/types.properties,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** types.properties 22 Apr 2004 10:26:22 -0000 1.1 --- types.properties 2 Nov 2004 15:45:03 -0000 1.2 *************** *** 1,2 **** #type definitions file for ant ! security=org.smartfrog.tools.ant.Security \ No newline at end of file --- 1,2 ---- #type definitions file for ant ! sf-security=org.smartfrog.tools.ant.Security \ No newline at end of file Index: Security.java =================================================================== RCS file: /cvsroot/smartfrog/core/extras/ant/src/org/smartfrog/tools/ant/Security.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Security.java 8 Oct 2004 16:21:36 -0000 1.5 --- Security.java 2 Nov 2004 15:45:03 -0000 1.6 *************** *** 24,27 **** --- 24,28 ---- import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; + import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.taskdefs.SignJar; import org.apache.tools.ant.types.DataType; *************** *** 48,56 **** private File policyFile; //sf security resource ! private String securityProperties; //the identity to use private String alias; ! public File getKeystore() { --- 49,58 ---- private File policyFile; //sf security resource ! private File securityProperties; //the identity to use private String alias; ! public static final String ERROR_REFID_EXCLUSIVE = "Cannot have other attributes when refid is set"; ! public static final String ERROR_NO_ALIAS = "alias attribute must be set"; public File getKeystore() { *************** *** 67,71 **** } ! public String getSecurityProperties() { return securityProperties; } --- 69,73 ---- } ! public File getSecurityProperties() { return securityProperties; } *************** *** 78,84 **** --- 80,88 ---- * @param securityProperties */ + /* public void setSecurityResource(String securityProperties) { this.securityProperties = securityProperties; } + */ /** *************** *** 87,91 **** */ public void setSecurityFile(File securityProperties) { ! this.securityProperties = securityProperties.getAbsolutePath(); } --- 91,95 ---- */ public void setSecurityFile(File securityProperties) { ! this.securityProperties = securityProperties; } *************** *** 108,111 **** --- 112,119 ---- } + /** + * set the alias to use when signing + * @param alias + */ public void setAlias(String alias) { this.alias = alias; *************** *** 122,125 **** --- 130,146 ---- /** + * resolve any references, return the base security reference + * @return the security instance that may be us, may be somebody else. + */ + public Security resolve() { + if(getRefid()==null) { + //check the syntax is good + validateReferencesAndAttributes(); + return this; + } + return (Security) getCheckedRef(Security.class, "Security"); + } + + /** * take a reference in a project and resolve it. * *************** *** 131,141 **** public static Security resolveReference(Project project, Reference reference) { ! assert project != null; ! assert reference != null; ! Object o = reference.getReferencedObject(project); ! if (!(o instanceof Security)) { ! throw new BuildException("reference is of wrong type"); ! } ! return (Security) o; } --- 152,163 ---- public static Security resolveReference(Project project, Reference reference) { ! //create a temp security ! Security security=new Security(); ! //bound to this project ! security.setProject(project); ! //with the refID attr ! security.setRefid(reference); ! //which we ask to resolve ! return security.resolve(); } *************** *** 165,168 **** --- 187,206 ---- /** + * verifies that attributes are free if the references are set + */ + private void validateReferencesAndAttributes() { + if(getRefid()!=null) { + boolean attrs=false; + attrs = keystore!=null; + attrs |= policyFile!=null; + attrs |= securityProperties!=null; + attrs |= alias != null; + if(attrs) { + throw new BuildException(ERROR_REFID_EXCLUSIVE); + } + } + } + + /** * validate the settings. */ *************** *** 178,181 **** --- 216,223 ---- public void validateForSigning() { assertValidFile(keystore, "Keystore"); + assertValidFile(securityProperties, "Security Properties"); + if(alias==null) { + throw new BuildException(ERROR_NO_ALIAS); + } } *************** *** 207,211 **** //get the pass in. Properties securityProps = loadPassFile(); ! signJar.setKeypass(securityProps.getProperty(SmartFrogJVMProperties.KEYSTORE_PASSWORD)); signJar.setAlias(getAlias()); } --- 249,253 ---- //get the pass in. Properties securityProps = loadPassFile(); ! signJar.setStorepass(securityProps.getProperty(SmartFrogJVMProperties.KEYSTORE_PASSWORD)); signJar.setAlias(getAlias()); } *************** *** 224,234 **** return securityProps; } finally { ! if(instream!=null) { ! try { ! instream.close(); ! } catch (IOException e) { ! ! } ! } } } --- 266,270 ---- return securityProps; } finally { ! FileUtils.close(instream); } } |