List of usage examples for org.bouncycastle.crypto.macs CMac doFinal
public int doFinal(byte[] out, int outOff)
From source file:com.pearson.pdn.demos.chainoflearning.EventingUtility.java
License:Apache License
/** * Creates an auth token signed with principal's credentials * /*ww w .j a v a2 s .c om*/ * @param dateTime utc time in yyyy-MM-dd'T'HH:mm:ssZ format * @param delimiter Delimiter to between token parts * @param principalId Id portion of credentials * @param key Secret portion of credentials * @param payload Data being signed * @return Token value * @throws UnsupportedEncodingException */ private static String generateAuthToken(String dateTime, String delimiter, String principalId, String key, String payload) throws UnsupportedEncodingException { // prepare the data byte[] macInput = (dateTime + payload).getBytes("UTF-8"); byte[] macOutput = new byte[16]; // sign the data CMac macProvider = new CMac(new AESFastEngine(), 128); macProvider.init(new KeyParameter(key.getBytes())); macProvider.update(macInput, 0, macInput.length); macProvider.doFinal(macOutput, 0); // hex the signed data String macOutputHex = new String(Hex.encode(macOutput)); // concatenate the token parts return principalId + delimiter + dateTime + delimiter + macOutputHex; }
From source file:com.pearson.pdn.learningstudio.eventing.EventingClient.java
License:Apache License
/** * Creates an auth token signed with principal's credentials * /*from w w w .ja v a 2 s .co m*/ * @param dateTime utc time in yyyy-MM-dd'T'HH:mm:ssZ format * @param delimiter Delimiter to between token parts * @param principalId Id portion of credentials * @param key Secret portion of credentials * @param payload Data being signed * @return Token value * @throws UnsupportedEncodingException */ String generateAuthToken(String dateTime, String payload) throws UnsupportedEncodingException { // prepare the data byte[] macInput = (dateTime + payload).getBytes("UTF-8"); byte[] macOutput = new byte[16]; // sign the data CMac macProvider = new CMac(new AESFastEngine(), 128); macProvider.init(new KeyParameter(config.getPrincipalSecret().getBytes())); macProvider.update(macInput, 0, macInput.length); macProvider.doFinal(macOutput, 0); // hex the signed data String macOutputHex = new String(Hex.encode(macOutput)); // concatenate the token parts return config.getPrincipalId() + DEFAULT_DELIMITER + dateTime + DEFAULT_DELIMITER + macOutputHex; }
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();/*from w w w.j av a 2 s. co 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();/* w w w . j a v a 2s . co m*/ 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 * /*from w w w. jav a2s .c o m*/ * @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 * //ww w . j a v a 2s. co 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 w w . j av a2 s . co 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 w ww . j ava2 s.c om cmac.update(data, 0, data.length); cmac.doFinal(output, 0); return output; }