48 lines
932 B
Go
48 lines
932 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
|
|
"github.com/MDrollette/go-i2p/reseed"
|
|
"github.com/MDrollette/go-i2p/su3"
|
|
"github.com/codegangsta/cli"
|
|
)
|
|
|
|
func NewSu3VerifyCommand() cli.Command {
|
|
return cli.Command{
|
|
Name: "verify",
|
|
Usage: "Verify a Su3 file",
|
|
Description: "Verify a Su3 file",
|
|
Action: su3VerifyAction,
|
|
Flags: []cli.Flag{},
|
|
}
|
|
}
|
|
|
|
func su3VerifyAction(c *cli.Context) {
|
|
su3File := su3.Su3File{}
|
|
|
|
data, err := ioutil.ReadFile(c.Args().Get(0))
|
|
if nil != err {
|
|
panic(err)
|
|
}
|
|
if err := su3File.UnmarshalBinary(data); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Println(su3File.String())
|
|
|
|
// get the reseeder key
|
|
ks := reseed.KeyStore{Path: "./certificates"}
|
|
cert, err := ks.ReseederCertificate(su3File.SignerId)
|
|
if nil != err {
|
|
panic(err)
|
|
}
|
|
|
|
if err := su3File.VerifySignature(cert); nil != err {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Printf("Signature is valid for signer '%s'\n", su3File.SignerId)
|
|
}
|