github.com/maenmax/kairep@v0.0.0-20210218001208-55bf3df36788/src/fernet-go/cmd/fernet-sign/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"log"
     7  	"os"
     8  
     9  	"github.com/fernet/fernet-go"
    10  )
    11  
    12  const Usage = `Usage: fernet-sign ENV
    13  
    14  fernet-sign encrypts and signs its input and prints the resulting token.
    15  It uses the key in environment variable ENV.`
    16  
    17  func main() {
    18  	log.SetFlags(0)
    19  	log.SetPrefix("fernet: ")
    20  
    21  	if len(os.Args) != 2 {
    22  		fmt.Fprintln(os.Stderr, Usage)
    23  		os.Exit(2)
    24  	}
    25  
    26  	key, err := fernet.DecodeKey(os.Getenv(os.Args[1]))
    27  	if err != nil {
    28  		log.Fatalln(err)
    29  	}
    30  
    31  	b, err := ioutil.ReadAll(os.Stdin)
    32  	if err != nil {
    33  		log.Fatalln(err)
    34  	}
    35  
    36  	t, err := fernet.EncryptAndSign(b, key)
    37  	if err != nil {
    38  		log.Fatalln(err)
    39  	}
    40  
    41  	_, err = os.Stdout.Write(append(t, '\n'))
    42  	if err != nil {
    43  		log.Fatalln(err)
    44  	}
    45  }