package peergos.shared.user;
import jsinterop.annotations.*;
import peergos.shared.cbor.*;
import java.util.*;
public class ScryptEd25519Curve25519 implements UserGenerationAlgorithm {
public static final int MIN_MEMORY_COST = 17;
@JsProperty
public final int memoryCost, cpuCost, parallelism, outputBytes;
public ScryptEd25519Curve25519(int memoryCost, int cpuCost, int parallelism, int outputBytes) {
if (memoryCost < MIN_MEMORY_COST)
throw new IllegalStateException("Scrpyt memory cost must be >= 17");
this.memoryCost = memoryCost;
this.cpuCost = cpuCost;
this.parallelism = parallelism;
this.outputBytes = outputBytes;
}
@Override
public CborObject toCbor() {
Map<String, CborObject> props = new TreeMap<>();
props.put("type", new CborObject.CborLong(getType().value));
props.put("m", new CborObject.CborLong(memoryCost));
props.put("c", new CborObject.CborLong(cpuCost));
props.put("p", new CborObject.CborLong(parallelism));
props.put("o", new CborObject.CborLong(outputBytes));
return CborObject.CborMap.build(props);
}
static peergos.shared.user.ScryptEd25519Curve25519 fromCbor(CborObject cbor) {
int memoryCost = (int) ((CborObject.CborLong) ((CborObject.CborMap) cbor).values.get(new CborObject.CborString("m"))).value;
int cpuCost = (int) ((CborObject.CborLong) ((CborObject.CborMap) cbor).values.get(new CborObject.CborString("c"))).value;
int parallelsm = (int) ((CborObject.CborLong) ((CborObject.CborMap) cbor).values.get(new CborObject.CborString("p"))).value;
int outputBytes = (int) ((CborObject.CborLong) ((CborObject.CborMap) cbor).values.get(new CborObject.CborString("o"))).value;
return new peergos.shared.user.ScryptEd25519Curve25519(memoryCost, cpuCost, parallelsm, outputBytes);
}
@Override
public Type getType() {
return Type.ScryptEd25519Curve25519;
}
}