@Override public int getPrgSeedLength() { return mascotSecurityParameters.getPrgSeedLength(); } }
private Drbg getDrbg() { byte[] drbgSeed = new byte[mascotSecurityParameters.getPrgSeedLength() / 8]; new SecureRandom().nextBytes(drbgSeed); Drbg drbg = AesCtrDrbgFactory.fromDerivedSeed(drbgSeed); return drbg; }
private Map<Integer, FieldElement> setupMacKeyShares() { Map<Integer, FieldElement> macKeyShares = new HashMap<>(); for (int myId = 1; myId <= noOfParties; myId++) { FieldElement ssk = SpdzMascotDataSupplier .createRandomSsk(definition, mascotSecurityParameters.getPrgSeedLength()); macKeyShares.put(myId, ssk); } return macKeyShares; }
/** * Creates new {@link MascotResourcePoolImpl}. * * @param myId this party's id * @param noOfParties number of parties * @param instanceId the instance ID which is unique for this particular resource pool object, * but * only in the given execution. * @param drbg source of randomness * @param seedOts pre-computed base OTs * @param mascotSecurityParameters mascot security parameters ({@link * MascotSecurityParameters}) * @param fieldDefinition field used for calculations */ public MascotResourcePoolImpl(int myId, int noOfParties, int instanceId, Drbg drbg, Map<Integer, RotList> seedOts, MascotSecurityParameters mascotSecurityParameters, FieldDefinition fieldDefinition) { super(myId, noOfParties); this.drbg = drbg; this.instanceId = instanceId; this.seedOts = seedOts; this.fieldDefinition = fieldDefinition; this.mascotSecurityParameters = mascotSecurityParameters; this.localSampler = new FieldElementPrgImpl( new StrictBitVector(mascotSecurityParameters.getPrgSeedLength(), drbg), this.fieldDefinition); this.messageDigest = ExceptionConverter.safe(() -> MessageDigest.getInstance("SHA-256"), "Configuration error, SHA-256 is needed for Mascot"); }
private Map<Integer, RotList> perPartySingleSeedOtSetup(int myId, Drbg drbg, Network network) { Map<Integer, RotList> seedOts = new HashMap<>(); for (int otherId = 1; otherId <= noOfParties; otherId++) { if (otherId != myId) { Ot ot = new DummyOt(otherId, network); RotList currentSeedOts = new RotList(drbg, mascotSecurityParameters.getPrgSeedLength()); if (myId < otherId) { currentSeedOts.send(ot); currentSeedOts.receive(ot); } else { currentSeedOts.receive(ot); currentSeedOts.send(ot); } seedOts.put(otherId, currentSeedOts); } } return seedOts; }