package hamaster.gradesign.ibe.jni; /** * 底层的JNI接口类,提供对本地IBE库的访问 * @author <a href="mailto:wangyeee@gmail.com">王烨</a> */ public final class IBENative { final private static String LIB_NAME = "ibejni"; static { System.loadLibrary(LIB_NAME); } /** * 生成系统参数 * @param alpha_out 系统主密钥,长度20字节 * @param g_out 参数g,长度128字节 * @param g1_out 参数g1,长度128字节 * @param h_out 参数h,长度128字节 * @param pairing_str_in 椭圆曲线参数 * @return */ public static native int setup_str(byte[] alpha_out, byte[] g_out, byte[] g1_out, byte[] h_out, byte[] pairing_str_in); /** * 为用户生成私钥 * @param hID_out 私钥hID参数,长度128字节 * @param rID_out 私钥rID参数,长度20字节 * @param user_in 用户身份,如电子邮件地址 * @param alpha_in 系统主密钥,长度20字节 * @param g_in 参数g,长度128字节 * @param h_in 参数h,长度128字节 * @param pairing_str_in 椭圆曲线参数 * @param random_rID 是否随即生成rID * @return */ public static native int keygen_str(byte[] hID_out, byte[] rID_out, byte[] user_in, byte[] alpha_in, byte[] g_in, byte[] h_in, byte[] pairing_str_in, boolean random_rID); /** * 加密数据 * @param cipher_buffer_out 输出密文,长度384字节,按照uvw顺序排列 * @param plain_in 明文,长度128字节 * @param g_in 接收方参数g,长度128字节 * @param g1_in 接收方参数g1,长度128字节 * @param h_in 接收方参数h,长度128字节 * @param alice_in 接收方身份,长度20字节 * @param pairing_str_in 椭圆曲线参数 * @return */ public static native int encrypt_str(byte[] cipher_buffer_out, byte[] plain_in, byte[] g_in, byte[] g1_in, byte[] h_in, byte[] alice_in, byte[] pairing_str_in); /** * 解密数据 * @param plain_buffer_out 输出明文,长度128字节 * @param cipher_in 输入密文,长度384字节,按照uvw顺序排列 * @param rID_in 接收方私钥rID,长度20字节 * @param hID_in 接收方私钥hID,长度128字节 * @param pairing_str_in 椭圆曲线参数 * @return */ public static native int decrypt_str(byte[] plain_buffer_out, byte[] cipher_in, byte[] rID_in, byte[] hID_in, byte[] pairing_str_in); private IBENative() { } }