How generate MAC (ANSI X9.19) according JCESecurityModule?

172 views
Skip to first unread message

Mahdi Kamyab

unread,
Apr 5, 2021, 9:26:08 AM4/5/21
to jPOS Users

Hi

I wanna make a MAC with using of JCESecurityModule and wrote following method:
public byte[] generateMac(byte[] Message, ParamKey paramKey)
{
byte[] MacResult = new byte[8];
try {

//JCESecurityModule jceSecurityModule = new JCESecurityModule("./cfg/secret.lmk");
//JCESecurityModule jceSecurityModule = new JCESecurityModule("./cfg/secret.lmk", "org.bouncycastle.jce.provider.BouncyCastleProvider");

JCESecurityModule sm = new JCESecurityModule();
Logger logger = new Logger();
logger.addListener(new SimpleLogListener());
sm.setLogger(logger, "jce-security-module");
Properties cfgProps = new Properties();
cfgProps.setProperty("lmk", "./cfg/secret.lmk");
cfgProps.setProperty("provider", "org.bouncycastle.jce.provider.BouncyCastleProvider"); //"com.sun.crypto.provider.SunJCE"
cfgProps.setProperty("rebuildlmk", "true");
cfgProps.setProperty("ede-mac", "DESEDEMAC");
SimpleConfiguration cfg = new SimpleConfiguration(cfgProps);

JCESecurityModule jceSecurityModule = new JCESecurityModule(cfg, logger, this.getClass().getName());

org.jpos.security.SecureDESKey secureDESKey = new SecureDESKey(LENGTH_DES3_2KEY , SMAdapter.TYPE_ZMK+":1U", getKey(paramKey) , getKeyCheckValue (paramKey) );
MacResult = jceSecurityModule.generateEDE_MAC(Message, secureDESKey);
}
catch (Exception e)
{
e.printStackTrace();
}
return MacResult;
}

my code not work fine and i get following error:
org.jpos.security.SMException: Unable to load MAC algorithm whose name is: DESEDEMAC. Check that is used correct JCE provider and/or it is proper configured for this module. (org.jpos.security.jceadapter.JCEHandlerException: Parity not adjusted)

How do I do that?

Best regards
Mehdi

Reply all
Reply to author
Forward
0 new messages