How to implement X9.63 with bouncycastle libarary
Posted: Tue Aug 21, 2018 1:23 am
Hello,
Does anybody know how to implement X9.63 with bouncycastle libarary?
Does anybody know how to implement X9.63 with bouncycastle libarary?
JavaCardOS - JavaCardForum
http://www.javacardos.com/javacardforum/
http://www.javacardos.com/javacardforum/viewtopic.php?f=15&t=1655
A demo like this:iSmartcard wrote: ↑Tue Aug 21, 2018 1:23 amHello,
Does anybody know how to implement X9.63 with bouncycastle libarary?
Code: Select all
/**
* X9.63 key derivation function, Derive AES Session key from secret and
* sharedInfo.
*
* @param zab
* secret
* @param sharedInfo
* sharedInfo
* @param keydatalen
* the byte length of the keying data to generate.e.g. 16*5
* @return 5 keys
*/
public static byte[] deriveFunction(byte[] za, byte[] zb, byte[] sharedInfo, int keyDataLen) {
int len = za.length + zb.length;
byte[] secret = new byte[len];
byte[] keys = new byte[keyDataLen];
short offset = 0;
System.arraycopy(za, 0, secret, offset, za.length);
offset += za.length;
System.arraycopy(zb, 0, secret, offset, zb.length);
offset += zb.length;
SHA256Digest hash = new SHA256Digest();
KDF2BytesGenerator kdf = new KDF2BytesGenerator(hash);
kdf.init(new KDFParameters(secret, sharedInfo));
kdf.generateBytes(keys, (short) 0, keyDataLen);
return keys;
}