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}