in image/v1.go [439:489]
func GenerateV1Image(opts ImageCreateOpts) (ImageV1, error) {
ic := NewImageCreator()
srcBin, err := ioutil.ReadFile(opts.SrcBinFilename)
if err != nil {
return ImageV1{}, errors.Wrapf(err, "can't read app binary")
}
ic.Body = srcBin
ic.Version = opts.Version
ic.SigKeys = opts.SigKeys
if opts.LoaderHash != nil {
ic.InitialHash = opts.LoaderHash
ic.Bootable = false
} else {
ic.Bootable = true
}
if opts.SrcEncKeyFilename != "" {
plainSecret, err := GeneratePlainSecret()
if err != nil {
return ImageV1{}, err
}
pubKeBytes, err := ioutil.ReadFile(opts.SrcEncKeyFilename)
if err != nil {
return ImageV1{}, errors.Wrapf(err, "error reading pubkey file")
}
pubKe, err := sec.ParsePubEncKey(pubKeBytes)
if err != nil {
return ImageV1{}, err
}
cipherSecret, err := pubKe.Encrypt(plainSecret)
if err != nil {
return ImageV1{}, err
}
ic.PlainSecret = plainSecret
ic.CipherSecret = cipherSecret
}
ri, err := ic.CreateV1()
if err != nil {
return ImageV1{}, err
}
return ri, nil
}