001package org.nuxeo.segment.io.web;
002
003import java.security.MessageDigest;
004import java.security.NoSuchAlgorithmException;
005
006import org.apache.commons.logging.Log;
007import org.apache.commons.logging.LogFactory;
008import org.nuxeo.runtime.api.Framework;
009import org.nuxeo.segment.io.SegmentIO;
010
011public class MarketoHelper {
012
013    public static final String SECRET_KEY_NAME = "MARKETO_SECRET";
014
015    private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
016
017    protected static final Log log = LogFactory.getLog(MarketoHelper.class);
018
019    protected static String toHexString(byte[] data) {
020        StringBuilder buf = new StringBuilder(2 * data.length);
021        for (byte b : data) {
022            buf.append(HEX_DIGITS[(0xF0 & b) >> 4]);
023            buf.append(HEX_DIGITS[0x0F & b]);
024        }
025        return buf.toString();
026    }
027
028    protected static String getSecret() {
029        SegmentIO service = Framework.getLocalService(SegmentIO.class);
030        return service.getGlobalParameters().get(SECRET_KEY_NAME);
031    }
032
033    public static String getLeadHash(String leadEmail)  {
034
035        try {
036           String digestInput = getSecret() + leadEmail;
037           MessageDigest md = MessageDigest.getInstance("SHA-1");
038           byte[] digest = md.digest(digestInput.getBytes());
039           return toHexString(digest);
040        }
041        catch (NoSuchAlgorithmException t) {
042            log.error("Error while computing Marketo digest", t);
043            return null;
044        }
045    }
046}