package cc.nfscan.server.utils; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * Class in charge of generating signature and validate counterSignature to fend off requests that aren't coming from * our app. We've decided to do that since the app doesn't provide any log in feature. Another good reason why we've * chosen to implement in that way is that we wanted to keep this application as stateless as possible so that we could * scale without have to enabled stickess sessions on the load balancer or have to deal with connection draining when * scaling up and down. * * @author Marcelo Carlos Agostinho Junior <a href="http://github.com/magostinhojr">@magostinhojr</a> */ @Component public class SignatureUtils { /** * Generates a signature that only this server and your app knows how to break it. * * @return a string */ public String generateSignature() { //TODO You should implement a signature that only your server and your mobile application is able to identify return "PASS"; } /** * Validates whether or not the counter signature generated by you mobile application * * @param signature the signature this server has generated * @param counterSignature the counter signature the mobile app has generated * @return true if valid and false otherwise */ public boolean validateCounterSignature(String signature, String counterSignature) { //TODO Given a server generated signature, your mobile application must create a counter signature that only // your server know how to validate return true; } }