1 21 package org.jsmtpd.plugins.smtpExtension; 22 23 import java.security.MessageDigest ; 24 import java.security.NoSuchAlgorithmException ; 25 import java.util.HashMap ; 26 import java.util.Map ; 27 28 import org.jsmtpd.core.common.PluginInitException; 29 import org.jsmtpd.tools.Base64Helper; 30 import org.jsmtpd.tools.ByteArrayTool; 31 32 35 public class BasicSmtpAuth extends SmtpAuthenticator { 36 37 private Map <String ,byte[]> users = new HashMap <String ,byte[]>(); 38 private MessageDigest md; 39 protected boolean performAuth(String login, byte[] password) { 40 if (!users.containsKey(login)) 41 return false; 42 43 byte[] hash = (byte[]) users.get(login); 44 45 return ByteArrayTool.compare(hash, md.digest(password)); 46 } 47 48 private void addPlainUser(String user, String password) throws Exception { 49 MessageDigest md5 = MessageDigest.getInstance("MD5"); 50 users.put(user, md5.digest(password.getBytes())); 51 } 52 53 private void addMD5User(String user, String md5base64password) { 54 users.put(user, Base64Helper.decode(md5base64password)); 55 } 56 57 public void setPlainUser(String in) throws Exception { 58 String [] tmp = in.split(","); 59 addPlainUser(tmp[0], tmp[1]); 60 } 61 62 public void setMD5User(String in) { 63 String [] tmp = in.split(","); 64 addMD5User(tmp[0], tmp[1]); 65 } 66 67 @Override 68 public void initPlugin() throws PluginInitException { 69 try { 70 md=MessageDigest.getInstance("md5"); 71 } catch (NoSuchAlgorithmException e) { 72 throw new PluginInitException("md5 not available"); 73 } 74 super.initPlugin(); 75 } 76 } | Popular Tags |