* add some warning comment for those who want to choose their secret * strictly follow the golang doc for using crypto/rand * fatal if not enough entropy * add a check when using pre-choosen secret