public static byte[] serializeBswabePrv(BswabePrv prv) { ArrayList<Byte> arrlist; int prvCompsLen, i; arrlist = new ArrayList<Byte>(); prvCompsLen = prv.comps.size(); serializeElement(arrlist, prv.d); serializeUint32(arrlist, prvCompsLen); for (i = 0; i < prvCompsLen; i++) { serializeString(arrlist, prv.comps.get(i).attr); serializeElement(arrlist, prv.comps.get(i).d); serializeElement(arrlist, prv.comps.get(i).dp); } return Byte_arr2byte_arr(arrlist); }
private static int unserializeUint32(byte[] arr, int offset) { int i; int r = 0; for (i = 3; i >= 0; i--) r |= (byte2int(arr[offset++])) << (i * 8); return r; }
public static void serializeString(ArrayList<Byte> arrlist, String s) { byte[] b = s.getBytes(); serializeUint32(arrlist, b.length); byteArrListAppend(arrlist, b); }
private static void serializePolicy(ArrayList<Byte> arrlist, BswabePolicy p) { serializeUint32(arrlist, p.k); if (p.children == null || p.children.length == 0) { serializeUint32(arrlist, 0); serializeString(arrlist, p.attr); serializeElement(arrlist, p.c); serializeElement(arrlist, p.cp); } else { serializeUint32(arrlist, p.children.length); for (int i = 0; i < p.children.length; i++) serializePolicy(arrlist, p.children[i]); } }
public static byte[] serializeBswabePub(BswabePub pub) { ArrayList<Byte> arrlist = new ArrayList<Byte>(); serializeString(arrlist, pub.pairingDesc); serializeElement(arrlist, pub.g); serializeElement(arrlist, pub.h); serializeElement(arrlist, pub.gp); serializeElement(arrlist, pub.g_hat_alpha); return Byte_arr2byte_arr(arrlist); }
public static byte[] bswabeCphSerialize(BswabeCph cph) { ArrayList<Byte> arrlist = new ArrayList<Byte>(); SerializeUtils.serializeElement(arrlist, cph.cs); SerializeUtils.serializeElement(arrlist, cph.c); SerializeUtils.serializePolicy(arrlist, cph.p); return Byte_arr2byte_arr(arrlist); }
public void keygen(String pubfile, String prvfile, String mskfile, String attr_str) throws NoSuchAlgorithmException, IOException { BswabePub pub; BswabeMsk msk; byte[] pub_byte, msk_byte, prv_byte; /* get BswabePub from pubfile */ pub_byte = Common.suckFile(pubfile); pub = SerializeUtils.unserializeBswabePub(pub_byte); /* get BswabeMsk from mskfile */ msk_byte = Common.suckFile(mskfile); msk = SerializeUtils.unserializeBswabeMsk(pub, msk_byte); String[] attr_arr = LangPolicy.parseAttribute(attr_str); BswabePrv prv = Bswabe.keygen(pub, msk, attr_arr); /* store BswabePrv into prvfile */ prv_byte = SerializeUtils.serializeBswabePrv(prv); Common.spitFile(prvfile, prv_byte); }
public void dec(String pubfile, String prvfile, String encfile, String decfile) throws Exception { byte[] aesBuf, cphBuf; byte[] plt; byte[] prv_byte; byte[] pub_byte; byte[][] tmp; BswabeCph cph; BswabePrv prv; BswabePub pub; /* get BswabePub from pubfile */ pub_byte = Common.suckFile(pubfile); pub = SerializeUtils.unserializeBswabePub(pub_byte); /* read ciphertext */ tmp = Common.readCpabeFile(encfile); aesBuf = tmp[0]; cphBuf = tmp[1]; cph = SerializeUtils.bswabeCphUnserialize(pub, cphBuf); /* get BswabePrv form prvfile */ prv_byte = Common.suckFile(prvfile); prv = SerializeUtils.unserializeBswabePrv(pub, prv_byte); BswabeElementBoolean beb = Bswabe.dec(pub, prv, cph); System.err.println("e = " + beb.e.toString()); if (beb.b) { plt = AESCoder.decrypt(beb.e.toBytes(), aesBuf); Common.spitFile(decfile, plt); } else { System.exit(0); } }
public static byte[] serializeBswabeMsk(BswabeMsk msk) { ArrayList<Byte> arrlist = new ArrayList<Byte>(); serializeElement(arrlist, msk.beta); serializeElement(arrlist, msk.g_alpha); return Byte_arr2byte_arr(arrlist); }
/** * @param * @author Junwei Wang(wakemecn@gmail.com) */ public void setup(String pubfile, String mskfile) throws IOException, ClassNotFoundException { byte[] pub_byte, msk_byte; BswabePub pub = new BswabePub(); BswabeMsk msk = new BswabeMsk(); Bswabe.setup(pub, msk); /* store BswabePub into mskfile */ pub_byte = SerializeUtils.serializeBswabePub(pub); Common.spitFile(pubfile, pub_byte); /* store BswabeMsk into mskfile */ msk_byte = SerializeUtils.serializeBswabeMsk(msk); Common.spitFile(mskfile, msk_byte); }
public void enc(String pubfile, String policy, String inputfile, String encfile) throws Exception { BswabePub pub; BswabeCph cph; BswabeCphKey keyCph; byte[] plt; byte[] cphBuf; byte[] aesBuf; byte[] pub_byte; Element m; /* get BswabePub from pubfile */ pub_byte = Common.suckFile(pubfile); pub = SerializeUtils.unserializeBswabePub(pub_byte); keyCph = Bswabe.enc(pub, policy); cph = keyCph.cph; m = keyCph.key; System.err.println("m = " + m.toString()); if (cph == null) { System.out.println("Error happed in enc"); System.exit(0); } cphBuf = SerializeUtils.bswabeCphSerialize(cph); /* read file to encrypted */ plt = Common.suckFile(inputfile); aesBuf = AESCoder.encrypt(m.toBytes(), plt); // PrintArr("element: ", m.toBytes()); Common.writeCpabeFile(encfile, cphBuf, aesBuf); }
public static void serializeElement(ArrayList<Byte> arrlist, Element e) { byte[] arr_e = e.toBytes(); serializeUint32(arrlist, arr_e.length); byteArrListAppend(arrlist, arr_e); }