On 15/07/14 11:21, Ben Laurie wrote:
On 15 July 2014 06:15, Matt Palmer <[email protected]> wrote:
<snip>
As for exactly how it is signed, I don't have strong feelings about
that. Is there some appropriate RFC that specifies how to sign some
arbitrary binary blob using RSA or EC keys?

struct {
     digitally-signed TBSCertificate;
     opaque TBSCertificate<1..2^24-1>;
} Precertificate;

Hmm. That's a tempting thought!

"SIGNED", defined by X.509, is one of the ASN.1 ways to sign arbitrary blobs. It's used for signing certificates, CRLs, CSRs, OCSP responses, etc.

RFC2459 expressed it as...
  "SIGNED { ToBeSigned } ::= SEQUENCE {
      toBeSigned  ToBeSigned,
      algorithm   AlgorithmIdentifier,
      signature   BIT STRING
   }

   Certificate            ::=   SIGNED { SEQUENCE {
      version                 [0]   Version DEFAULT v1,
      serialNumber                  CertificateSerialNumber,
      ..."

(However, for some reason RFC3280/5280 dropped "SIGNED" and changed the certificate definition to...
  "Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signature            BIT STRING  }")

We could define TBSPrecertificate as an ASN.1 structure that is very similar to, but incompatible with, TBSCertificate. And then we could define...
   Precertificate   ::=   SIGNED { TBSPrecertificate }


An alternative ASN.1 way to sign arbitrary binary blobs is CMS (originally called PKCS#7). See RFC5652. A Precertificate could be a CMS object that uses the Signed-data content type to carry a TBSCertificate.

--
Rob Stradling
Senior Research & Development Scientist
COMODO - Creating Trust Online

_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans

Reply via email to