package org.graylog2.syslog4j.impl.message.modifier.mac; import java.security.Key; import javax.crypto.spec.SecretKeySpec; import org.graylog2.syslog4j.SyslogRuntimeException; import org.graylog2.syslog4j.impl.message.modifier.AbstractSyslogMessageModifierConfig; import org.graylog2.syslog4j.util.Base64; /** * MacSyslogMessageModifierConfig is an implementation of AbstractSyslogMessageModifierConfig * that provides configuration for HashSyslogMessageModifier. * <p/> * <p>Syslog4j is licensed under the Lesser GNU Public License v2.1. A copy * of the LGPL license is available in the META-INF folder in all * distributions of Syslog4j and in the base directory of the "doc" ZIP.</p> * * @author <syslog4j@productivity.org> * @version $Id: MacSyslogMessageModifierConfig.java,v 1.3 2009/04/17 02:37:04 cvs Exp $ */ public class MacSyslogMessageModifierConfig extends AbstractSyslogMessageModifierConfig { private static final long serialVersionUID = 4524180892377960695L; protected String macAlgorithm = null; protected String keyAlgorithm = null; protected Key key = null; public MacSyslogMessageModifierConfig(String macAlgorithm, String keyAlgorithm, Key key) { this.macAlgorithm = macAlgorithm; this.keyAlgorithm = keyAlgorithm; this.key = key; } public MacSyslogMessageModifierConfig(String macAlgorithm, String keyAlgorithm, byte[] keyBytes) { this.macAlgorithm = macAlgorithm; this.keyAlgorithm = keyAlgorithm; try { this.key = new SecretKeySpec(keyBytes, keyAlgorithm); } catch (IllegalArgumentException iae) { throw new SyslogRuntimeException(iae); } } public MacSyslogMessageModifierConfig(String macAlgorithm, String keyAlgorithm, String base64Key) { this.macAlgorithm = macAlgorithm; this.keyAlgorithm = keyAlgorithm; byte[] keyBytes = Base64.decode(base64Key); try { this.key = new SecretKeySpec(keyBytes, keyAlgorithm); } catch (IllegalArgumentException iae) { throw new SyslogRuntimeException(iae); } } public static MacSyslogMessageModifierConfig createHmacSHA1(Key key) { return new MacSyslogMessageModifierConfig("HmacSHA1", "SHA1", key); } public static MacSyslogMessageModifierConfig createHmacSHA1(String base64Key) { return new MacSyslogMessageModifierConfig("HmacSHA1", "SHA1", base64Key); } public static MacSyslogMessageModifierConfig createHmacSHA256(Key key) { return new MacSyslogMessageModifierConfig("HmacSHA256", "SHA-256", key); } public static MacSyslogMessageModifierConfig createHmacSHA256(String base64Key) { return new MacSyslogMessageModifierConfig("HmacSHA256", "SHA-256", base64Key); } public static MacSyslogMessageModifierConfig createHmacSHA512(Key key) { return new MacSyslogMessageModifierConfig("HmacSHA512", "SHA-512", key); } public static MacSyslogMessageModifierConfig createHmacSHA512(String base64Key) { return new MacSyslogMessageModifierConfig("HmacSHA512", "SHA-512", base64Key); } public static MacSyslogMessageModifierConfig createHmacMD5(Key key) { return new MacSyslogMessageModifierConfig("HmacMD5", "MD5", key); } public static MacSyslogMessageModifierConfig createHmacMD5(String base64Key) { return new MacSyslogMessageModifierConfig("HmacMD5", "MD5", base64Key); } public String getMacAlgorithm() { return this.macAlgorithm; } public String getKeyAlgorithm() { return this.keyAlgorithm; } public Key getKey() { return this.key; } public void setKey(Key key) { this.key = key; } }