예제 #1
0
파일: Cpabe.java 프로젝트: darkscout/cpabe
  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;
  }
예제 #2
0
파일: Cpabe.java 프로젝트: darkscout/cpabe
  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);
  }