List of usage examples for org.bouncycastle.crypto.macs CMac getMacSize
public int getMacSize()
From source file:com.pearson.pdn.learningstudio.helloworld.OAuth1SignatureServlet.java
License:Apache License
private String generateCmac(String key, String msg) throws UnsupportedEncodingException { byte[] keyBytes = key.getBytes("UTF-8"); byte[] data = msg.getBytes("UTF-8"); CMac macProvider = new CMac(new AESFastEngine()); macProvider.init(new KeyParameter(keyBytes)); macProvider.reset();/*ww w.ja v a2 s . c o m*/ macProvider.update(data, 0, data.length); byte[] output = new byte[macProvider.getMacSize()]; macProvider.doFinal(output, 0); // Convert the CMAC to a Base64 string and remove the new line the // Base64 library adds String cmac = Base64.encodeBase64String(output).replaceAll("\r\n", ""); return cmac; }
From source file:com.pearson.pdn.learningstudio.helloworld.OAuth2AssertionServlet.java
License:Apache License
private String generateCmac(String key, String msg) throws UnsupportedEncodingException { byte[] keyBytes = key.getBytes("UTF-8"); byte[] data = msg.getBytes("UTF-8"); CMac macProvider = new CMac(new AESFastEngine()); macProvider.init(new KeyParameter(keyBytes)); macProvider.reset();/* ww w . ja v a 2s .com*/ macProvider.update(data, 0, data.length); byte[] output = new byte[macProvider.getMacSize()]; macProvider.doFinal(output, 0); return Strings.fromUTF8ByteArray(Hex.encode(output)); }
From source file:com.pearson.pdn.learningstudio.oauth.OAuth1SignatureService.java
License:Apache License
/** * Generates a Base64-encoded CMAC-AES digest * /* w ww.j ava2 s .com*/ * @param key * The secret key used to sign the data * @param msg * The data to be signed * * @return A CMAC-AES hash * * @throws UnsupportedEncodingException */ private String generateCmac(String key, String msg) throws UnsupportedEncodingException { byte[] keyBytes = key.getBytes("UTF-8"); byte[] data = msg.getBytes("UTF-8"); CMac macProvider = new CMac(new AESFastEngine()); macProvider.init(new KeyParameter(keyBytes)); macProvider.reset(); macProvider.update(data, 0, data.length); byte[] output = new byte[macProvider.getMacSize()]; macProvider.doFinal(output, 0); // Convert the CMAC to a Base64 string and remove the new line the // Base64 library adds String cmac = Base64.encodeBase64String(output).replaceAll("\r\n", ""); return cmac; }
From source file:com.pearson.pdn.learningstudio.oauth.OAuth2AssertionService.java
License:Apache License
/** * Generates a HEX-encoded CMAC-AES digest * //from w w w.j a va 2s. c o m * @param key * The secret key used to sign the data * @param msg * The data to be signed * * @return A CMAC-AES digest * * @throws UnsupportedEncodingException */ private String generateCmac(String key, String msg) throws UnsupportedEncodingException { byte[] keyBytes = key.getBytes("UTF-8"); byte[] data = msg.getBytes("UTF-8"); CMac macProvider = new CMac(new AESFastEngine()); macProvider.init(new KeyParameter(keyBytes)); macProvider.reset(); macProvider.update(data, 0, data.length); byte[] output = new byte[macProvider.getMacSize()]; macProvider.doFinal(output, 0); return Strings.fromUTF8ByteArray(Hex.encode(output)); }
From source file:io.warp10.script.lora.LORAMIC.java
License:Apache License
@Override public Object apply(WarpScriptStack stack) throws WarpScriptException { Object top = stack.pop();//from w ww . ja v a2s.c o m if (!(top instanceof String)) { throw new WarpScriptException(getName() + " expects a 128 bits hex encoded key on top of the stack."); } String keystr = top.toString(); if (keystr.length() != 32) { throw new WarpScriptException(getName() + " expects a 128 bits hex encoded key on top of the stack."); } top = stack.pop(); if (!(top instanceof Long)) { throw new WarpScriptException(getName() + " expects a sequence counter below the key."); } int sequenceCounter = ((Number) top).intValue(); top = stack.pop(); if (!(top instanceof Long)) { throw new WarpScriptException( getName() + " expects a direction (0 uplink or 1 downlink) below the sequence counter."); } int dir = ((Number) top).intValue(); if (0 != dir && 1 != dir) { throw new WarpScriptException( getName() + " expects a direction (0 uplink or 1 downlink) below the sequence counter."); } top = stack.pop(); if (!(top instanceof Long)) { throw new WarpScriptException(getName() + " expects a device address below the direction."); } int addr = ((Number) top).intValue(); String datastr = stack.pop().toString(); if (0 != datastr.length() % 2) { throw new WarpScriptException( getName() + " expects a hex encoded data frame with an even length of hex digits."); } byte[] data = Hex.decode(datastr); // // Compute MIC block B0 // byte[] MicBlockB0 = new byte[16]; MicBlockB0[0] = 0x49; MicBlockB0[5] = (byte) (dir & 0x1); MicBlockB0[6] = (byte) (addr & 0xFF); MicBlockB0[7] = (byte) ((addr >> 8) & 0xFF); MicBlockB0[8] = (byte) ((addr >> 16) & 0xFF); MicBlockB0[9] = (byte) ((addr >> 24) & 0xFF); MicBlockB0[10] = (byte) ((sequenceCounter) & 0xFF); MicBlockB0[11] = (byte) ((sequenceCounter >> 8) & 0xFF); MicBlockB0[12] = (byte) ((sequenceCounter >> 16) & 0xFF); MicBlockB0[13] = (byte) ((sequenceCounter >> 24) & 0xFF); MicBlockB0[15] = (byte) (data.length & 0xFF); AESEngine aes = new AESEngine(); CMac cmac = new CMac(aes); KeyParameter key = new KeyParameter(Hex.decode(keystr)); cmac.init(key); cmac.update(MicBlockB0, 0, MicBlockB0.length); cmac.update(data, 0, data.length & 0xFF); byte[] mac = new byte[cmac.getMacSize()]; cmac.doFinal(mac, 0); // byte[] mic = new byte[4]; // mic[0] = mac[3]; // mic[1] = mac[2]; // mic[2] = mac[1]; // mic[3] = mac[0]; stack.push(new String(Hex.encode(mac, 0, 4), Charsets.US_ASCII)); return stack; }
From source file:org.crypto.sse.CryptoPrimitives.java
License:Open Source License
public static byte[] generateCmac(byte[] key, String msg) throws UnsupportedEncodingException { CMac cmac = new CMac(new AESFastEngine()); byte[] data = msg.getBytes("UTF-8"); byte[] output = new byte[cmac.getMacSize()]; cmac.init(new KeyParameter(key)); cmac.reset();/*from www. j a va2 s.c o m*/ cmac.update(data, 0, data.length); cmac.doFinal(output, 0); return output; }