/** * Create Preq message body Preq = Comm(ID_P, r_P)|T|L_1 * * @param aStampContext current context * @param aLocLevel desired location level (0 usually) * @return Preq message */ public static byte[] createPreq(ProverContext aStampContext) { byte commID[] = aStampContext.getCommittedID(); byte time[] = ByteBuffer.allocate(8).putLong(ProverContext.getTime()).array(); /* TODO: check if aLocLevel is valid */ byte location[] = aStampContext.getLocation().toString().getBytes(); ArrayList<byte[]> array = new ArrayList<byte[]>(); array.add(commID); array.add(time); array.add(location); return MessageUtil.compileMessages(array); }
/** * Create DB ready message body * * @return DB ready message */ public static byte[] createCeCk(ProverContext aStampContext) { BigInteger e = aStampContext.getE(); BigInteger k = aStampContext.getK(); BigInteger p = aStampContext.getPubDSASelf().getParams().getP(); BigInteger g = aStampContext.getPubDSASelf().getParams().getG(); BigInteger h = aStampContext.getH(); BigInteger v = aStampContext.getV(); ArrayList<byte[]> ces = CryptoUtil.getBitCommitments(g, p, h, v, e); ArrayList<byte[]> cks = CryptoUtil.getBitCommitments(g, p, h, v, k); byte[] cesBytes = MessageUtil.createMessageFromArray(ces); byte[] cksBytes = MessageUtil.createMessageFromArray(cks); ArrayList<byte[]> array = new ArrayList<byte[]>(); array.add(cesBytes); array.add(cksBytes); return MessageUtil.compileMessages(array); }