package controllers import ( "log" "net/http" "smt/models" "github.com/gin-gonic/gin" ) type UnlockInput struct { SecretKey string `json:"secretKey"` } // receive secret key and store it using the Key model func Unlock(c *gin.Context) { var input UnlockInput // Validate the input matches our struct if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } log.Println("Unlock received JSON input") // check that the key is 32 bytes long if len(input.SecretKey) != 32 { c.JSON(http.StatusBadRequest, gin.H{"error": "secret key provided is invalid, must be exactly 32 bytes long"}) return } err := models.ReceiveKey(input.SecretKey) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err}) return } // output results as json c.JSON(http.StatusOK, gin.H{"message": "success", "data": "secret key successfully processed"}) }