Java tutorial
/******************************************************************************* * Copyright (c) 2015 Kaloyan Raev. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Kaloyan Raev - initial API and implementation *******************************************************************************/ package signature; import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.PrivateKey; import java.security.Signature; import java.util.Arrays; import java.util.Properties; import org.apache.commons.codec.binary.Base64; public class SignLicense { public static void main(String[] args) throws Exception { if (args.length != 2) { System.out.println("Usage: SignLicense licenseFile privateKey"); System.exit(1); } Properties license = new Properties(); license.load(new FileInputStream(args[0])); PrivateKey privateKey = Utils.readPrivateKeyFromFile(args[1]); Signature signature = Signature.getInstance("SHA1withDSA", "SUN"); signature.initSign(privateKey); String[] propKeys = license.keySet().toArray(new String[0]); Arrays.sort(propKeys); for (String propKey : propKeys) { if (!"Signature".equals(propKey)) { String propValue = license.getProperty(propKey); signature.update(propValue.getBytes("UTF-8")); } } byte[] sig = signature.sign(); license.setProperty("Signature", new String(Base64.encodeBase64(sig))); license.store(new FileOutputStream(args[0]), null); } }