public boolean dec(String pubfile, String prvfile, String encfile, String decfile) throws Exception { byte[] plt, prv_byte, pub_byte; CpabeEncryptedFile ciphertext; BswabeCph cph; BswabePrv prv; BswabePub pub; /* get BswabePub from pubfile */ pub_byte = Common.suckFile(pubfile); pub = new BswabePub(); pub.initFromBuffer(pub_byte); /* read ciphertext */ ciphertext = new CpabeEncryptedFile(pub, encfile); cph = ciphertext.getCph(); /* get BswabePrv form prvfile */ prv_byte = Common.suckFile(prvfile); prv = new BswabePrv(pub); prv.initFromBuffer(prv_byte); BswabeElementBoolean beb = Bswabe.dec(pub, prv, cph); if (beb.isSuccessful() == false) { return false; } plt = AESCoder.decrypt(beb.getElement().toBytes(), ciphertext.getAesBuf()); Common.spitFile(decfile, plt); return true; }
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 = new BswabePub(); pub.initFromBuffer(pub_byte); /* get BswabeMsk from mskfile */ msk_byte = Common.suckFile(mskfile); msk = new BswabeMsk(pub); msk.initFromBuffer(msk_byte); String[] attr_arr = LangPolicy.parseAttribute(attr_str); BswabePrv prv = Bswabe.keygen(pub, msk, attr_arr); /* store BswabePrv into prvfile */ prv_byte = prv.serialize(); Common.spitFile(prvfile, prv_byte); }