This is an automated email from the ASF dual-hosted git repository. utzig pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git
The following commit(s) were added to refs/heads/master by this push: new da16a62 newt: Support legacy TLV option da16a62 is described below commit da16a6226cad504ea8c700965f279b1d63592fac Author: Andy Gross <andy.gr...@juul.com> AuthorDate: Wed Nov 18 11:47:44 2020 -0600 newt: Support legacy TLV option This patch adds support for generating images using legacy TLV values for AES_NONCE and SECRET_ID. This allows newer newt tool versions to be able to create new application images for devices which only support legacy TLV values. Signed-off-by: Andy Gross <andy.gr...@juul.com> --- go.mod | 3 ++- newt/cli/image_cmds.go | 8 ++++++-- newt/cli/run_cmds.go | 4 ++-- newt/imgprod/imgprod.go | 9 ++++++--- newt/imgprod/v1.go | 4 ++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 4ea3030..9494e6f 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.13 require ( github.com/NickBall/go-aes-key-wrap v0.0.0-20170929221519-1c3aa3e4dfc5 - github.com/apache/mynewt-artifact v0.0.20 + github.com/apache/mynewt-artifact v0.0.21 github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/shirou/gopsutil v2.20.8+incompatible @@ -16,3 +16,4 @@ require ( github.com/ugorji/go/codec v1.1.7 golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4 ) + diff --git a/newt/cli/image_cmds.go b/newt/cli/image_cmds.go index fb5373d..6da30a7 100644 --- a/newt/cli/image_cmds.go +++ b/newt/cli/image_cmds.go @@ -35,6 +35,7 @@ import ( var useV1 bool var useV2 bool +var useLegacyTLV bool var encKeyFilename string var encKeyIndex int var hdrPad int @@ -136,10 +137,10 @@ func createImageRunCmd(cmd *cobra.Command, args []string) { if useV1 { err = imgprod.ProduceAllV1(b, ver, keys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, sections) + hdrPad, imagePad, sections, useLegacyTLV) } else { err = imgprod.ProduceAll(b, ver, keys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, sections) + hdrPad, imagePad, sections, useLegacyTLV) } if err != nil { NewtUsage(nil, err) @@ -205,6 +206,9 @@ func AddImageCommands(cmd *cobra.Command) { createImageCmd.PersistentFlags().StringVarP(§ions, "sections", "S", "", "Section names for TLVs, comma delimited") + createImageCmd.PersistentFlags().BoolVarP(&useLegacyTLV, + "legacy-tlvs", "L", false, "Use legacy TLV values for NONCE and SECRET_ID") + cmd.AddCommand(createImageCmd) AddTabCompleteFn(createImageCmd, targetList) diff --git a/newt/cli/run_cmds.go b/newt/cli/run_cmds.go index cd7ce09..936dde8 100644 --- a/newt/cli/run_cmds.go +++ b/newt/cli/run_cmds.go @@ -106,10 +106,10 @@ func runRunCmd(cmd *cobra.Command, args []string) { if useV1 { err = imgprod.ProduceAllV1(b, ver, keys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, sections) + hdrPad, imagePad, sections, useLegacyTLV) } else { err = imgprod.ProduceAll(b, ver, keys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, sections) + hdrPad, imagePad, sections, useLegacyTLV) } if err != nil { NewtUsage(nil, err) diff --git a/newt/imgprod/imgprod.go b/newt/imgprod/imgprod.go index 8b25f85..1e82977 100644 --- a/newt/imgprod/imgprod.go +++ b/newt/imgprod/imgprod.go @@ -54,6 +54,7 @@ type ImageProdOpts struct { HdrPad int ImagePad int DummyC *toolchain.Compiler + UseLegacyTLV bool } type ProducedImage struct { @@ -153,6 +154,7 @@ func produceApp(opts ImageProdOpts, loaderHash []byte) (ProducedImage, error) { LoaderHash: loaderHash, HdrPad: opts.HdrPad, ImagePad: opts.ImagePad, + UseLegacyTLV: opts.UseLegacyTLV, } ri, err := image.GenerateImage(igo) @@ -270,7 +272,7 @@ func ProduceManifest(opts manifest.ManifestCreateOpts) error { func OptsFromTgtBldr(b *builder.TargetBuilder, ver image.ImageVersion, sigKeys []sec.PrivSignKey, encKeyFilename string, encKeyIndex int, - hdrPad int, imagePad int, sections []image.Section) (ImageProdOpts, error) { + hdrPad int, imagePad int, sections []image.Section, useLegacyTLV bool) (ImageProdOpts, error) { // This compiler is just used for converting .img files to .hex files, so // dummy paths are OK. @@ -305,6 +307,7 @@ func OptsFromTgtBldr(b *builder.TargetBuilder, ver image.ImageVersion, HdrPad: hdrPad, ImagePad: imagePad, Sections: sections, + UseLegacyTLV: useLegacyTLV, } if b.LoaderBuilder != nil { @@ -318,7 +321,7 @@ func OptsFromTgtBldr(b *builder.TargetBuilder, ver image.ImageVersion, func ProduceAll(t *builder.TargetBuilder, ver image.ImageVersion, sigKeys []sec.PrivSignKey, encKeyFilename string, encKeyIndex int, - hdrPad int, imagePad int, sectionString string) error { + hdrPad int, imagePad int, sectionString string, useLegacyTLV bool) error { elfPath := t.AppBuilder.AppElfPath() @@ -366,7 +369,7 @@ func ProduceAll(t *builder.TargetBuilder, ver image.ImageVersion, } popts, err := OptsFromTgtBldr(t, ver, sigKeys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, sections) + hdrPad, imagePad, sections, useLegacyTLV) if err != nil { return err } diff --git a/newt/imgprod/v1.go b/newt/imgprod/v1.go index 7ae2b36..f3beb8c 100644 --- a/newt/imgprod/v1.go +++ b/newt/imgprod/v1.go @@ -209,10 +209,10 @@ func ProduceImagesV1(opts ImageProdOpts) (ProducedImageSetV1, error) { func ProduceAllV1(t *builder.TargetBuilder, ver image.ImageVersion, sigKeys []sec.PrivSignKey, encKeyFilename string, encKeyIndex int, - hdrPad int, imagePad int, sections string) error { + hdrPad int, imagePad int, sections string, useLegacyTLV bool) error { popts, err := OptsFromTgtBldr(t, ver, sigKeys, encKeyFilename, encKeyIndex, - hdrPad, imagePad, nil) + hdrPad, imagePad, nil, false) if err != nil { return err }