From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: linux-integrity@vger.kernel.org, Mimi Zohar <zohar@linux.ibm.com>,
David Woodhouse <dwmw2@infradead.org>,
keyrings@vger.kernel.org
Subject: Re: [PATCH v6 1/6] lib: add ASN.1 encoder
Date: Tue, 03 Mar 2020 21:31:20 +0000 [thread overview]
Message-ID: <20200303213120.GC110353@linux.intel.com> (raw)
In-Reply-To: <1583268570.3638.15.camel@HansenPartnership.com>
On Tue, Mar 03, 2020 at 03:49:30PM -0500, James Bottomley wrote:
> On Tue, 2020-03-03 at 21:22 +0200, Jarkko Sakkinen wrote:
> > On Mon, Mar 02, 2020 at 07:27:54AM -0500, James Bottomley wrote:
> [...]
> > > diff --git a/lib/asn1_encoder.c b/lib/asn1_encoder.c
> > > new file mode 100644
> > > index 000000000000..c7493667656e
> > > --- /dev/null
> > > +++ b/lib/asn1_encoder.c
> > > @@ -0,0 +1,431 @@
> > > +// SPDX-License-Identifier: GPL-2.0-only
> > > +/*
> > > + * Simple encoder primitives for ASN.1 BER/DER/CER
> > > + *
> > > + * Copyright (C) 2019 James.Bottomley@HansenPartnership.com
> > > + */
> > > +
> > > +#include <linux/asn1_encoder.h>
> > > +#include <linux/bug.h>
> > > +#include <linux/string.h>
> > > +#include <linux/module.h>
> > > +
> > > +/**
> > > + * asn1_encode_integer() - encode positive integer to ASN.1
> > > + * @data: pointer to the pointer to the data
> > > + * @end_data: end of data pointer, points one beyond last
> > > usable byte in @data
> > > + * @integer: integer to be encoded
> > > + *
> > > + * This is a simplified encoder: it only currently does
> > > + * positive integers, but it should be simple enough to add the
> > > + * negative case if a use comes along.
> > > + */
> > > +unsigned char *
> > > +asn1_encode_integer(unsigned char *data, const unsigned char
> > > *end_data,
> > > + s64 integer)
> > > +{
> > > + unsigned char *d = &data[2];
> >
> > So what magic does index 2 contain?
>
> ASN.1 has the form <tag> <length> <content> so a small integer has one
> byte for the _tag(UNIV, PRIM, INT), one byte for the length, which must
> be between 1 and 4, so the actual integer itself starts at 2.
OK cool.
> > > + int i;
> > > + bool found = false;
> > > + int data_len = end_data - data;
> >
> > I'd reorder these:
> >
> > int data_len = end_data - data;
> > unsigned char *d = &data[2];
> > bool found = false;
> > int i;
>
> Ah, reverse Christmas tree ... I can do that.
Always prefer it.
/Jarkko
WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: linux-integrity@vger.kernel.org, Mimi Zohar <zohar@linux.ibm.com>,
David Woodhouse <dwmw2@infradead.org>,
keyrings@vger.kernel.org
Subject: Re: [PATCH v6 1/6] lib: add ASN.1 encoder
Date: Tue, 3 Mar 2020 23:31:20 +0200 [thread overview]
Message-ID: <20200303213120.GC110353@linux.intel.com> (raw)
In-Reply-To: <1583268570.3638.15.camel@HansenPartnership.com>
On Tue, Mar 03, 2020 at 03:49:30PM -0500, James Bottomley wrote:
> On Tue, 2020-03-03 at 21:22 +0200, Jarkko Sakkinen wrote:
> > On Mon, Mar 02, 2020 at 07:27:54AM -0500, James Bottomley wrote:
> [...]
> > > diff --git a/lib/asn1_encoder.c b/lib/asn1_encoder.c
> > > new file mode 100644
> > > index 000000000000..c7493667656e
> > > --- /dev/null
> > > +++ b/lib/asn1_encoder.c
> > > @@ -0,0 +1,431 @@
> > > +// SPDX-License-Identifier: GPL-2.0-only
> > > +/*
> > > + * Simple encoder primitives for ASN.1 BER/DER/CER
> > > + *
> > > + * Copyright (C) 2019 James.Bottomley@HansenPartnership.com
> > > + */
> > > +
> > > +#include <linux/asn1_encoder.h>
> > > +#include <linux/bug.h>
> > > +#include <linux/string.h>
> > > +#include <linux/module.h>
> > > +
> > > +/**
> > > + * asn1_encode_integer() - encode positive integer to ASN.1
> > > + * @data: pointer to the pointer to the data
> > > + * @end_data: end of data pointer, points one beyond last
> > > usable byte in @data
> > > + * @integer: integer to be encoded
> > > + *
> > > + * This is a simplified encoder: it only currently does
> > > + * positive integers, but it should be simple enough to add the
> > > + * negative case if a use comes along.
> > > + */
> > > +unsigned char *
> > > +asn1_encode_integer(unsigned char *data, const unsigned char
> > > *end_data,
> > > + s64 integer)
> > > +{
> > > + unsigned char *d = &data[2];
> >
> > So what magic does index 2 contain?
>
> ASN.1 has the form <tag> <length> <content> so a small integer has one
> byte for the _tag(UNIV, PRIM, INT), one byte for the length, which must
> be between 1 and 4, so the actual integer itself starts at 2.
OK cool.
> > > + int i;
> > > + bool found = false;
> > > + int data_len = end_data - data;
> >
> > I'd reorder these:
> >
> > int data_len = end_data - data;
> > unsigned char *d = &data[2];
> > bool found = false;
> > int i;
>
> Ah, reverse Christmas tree ... I can do that.
Always prefer it.
/Jarkko
next prev parent reply other threads:[~2020-03-03 21:31 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-02 12:27 [PATCH v6 0/6] TPM 2.0 trusted keys with attached policy James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-02 12:27 ` [PATCH v6 1/6] lib: add ASN.1 encoder James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-03 19:22 ` Jarkko Sakkinen
2020-03-03 19:22 ` Jarkko Sakkinen
2020-03-03 20:49 ` James Bottomley
2020-03-03 20:49 ` James Bottomley
2020-03-03 21:31 ` Jarkko Sakkinen [this message]
2020-03-03 21:31 ` Jarkko Sakkinen
2020-03-02 12:27 ` [PATCH v6 2/6] oid_registry: Add TCG defined OIDS for TPM keys James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-03 19:24 ` Jarkko Sakkinen
2020-03-03 19:24 ` Jarkko Sakkinen
2020-03-02 12:27 ` [PATCH v6 3/6] security: keys: trusted: fix TPM2 authorizations James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-03 19:33 ` Jarkko Sakkinen
2020-03-03 19:33 ` Jarkko Sakkinen
2020-03-03 20:39 ` James Bottomley
2020-03-03 20:39 ` James Bottomley
2020-03-03 21:32 ` Jarkko Sakkinen
2020-03-03 21:32 ` Jarkko Sakkinen
2020-03-02 12:27 ` [PATCH v6 4/6] security: keys: trusted: use ASN.1 TPM2 key format for the blobs James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-03 20:06 ` Jarkko Sakkinen
2020-03-03 20:06 ` Jarkko Sakkinen
2020-03-03 20:42 ` James Bottomley
2020-03-03 20:42 ` James Bottomley
2020-03-03 21:20 ` Jarkko Sakkinen
2020-03-03 21:20 ` Jarkko Sakkinen
2020-03-02 12:27 ` [PATCH v6 5/6] security: keys: trusted: add ability to specify arbitrary policy James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-02 12:27 ` [PATCH v6 6/6] security: keys: trusted: implement counter/timer policy James Bottomley
2020-03-02 12:27 ` James Bottomley
2020-03-03 20:08 ` Jarkko Sakkinen
2020-03-03 20:08 ` Jarkko Sakkinen
2020-03-03 20:40 ` James Bottomley
2020-03-03 20:40 ` James Bottomley
2020-03-03 21:20 ` Jarkko Sakkinen
2020-03-03 21:20 ` Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200303213120.GC110353@linux.intel.com \
--to=jarkko.sakkinen@linux.intel.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=dwmw2@infradead.org \
--cc=keyrings@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=zohar@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.