W3C home > Mailing lists > Public > w3c-ietf-xmldsig@w3.org > July to September 2002


From: Phil Griffin <phil.griffin@asn-1.com>
Date: Wed, 17 Jul 2002 12:19:51 -0400
Message-ID: <3D359927.2010907@asn-1.com>
To: "Apvrille, Axelle" <ApvriA@europe.stortek.com>
CC: w3c-ietf-xmldsig@w3.org

Hi Apvrille,

There are two possible ASN.1/XML based solutions
here. One, as you describe, would use DER for the
input to the message digest and signature processes.
That solution would only give you a standard way to
express the ASN.1 abstract values using XML markup.
You could use this technique now with CMS to give
any ASN.1 encoded binary values an XML representation.

But there is another solution, and it only involves
using XML markup. Here, all inputs to the message
digest and subsequent signature processes are encoded
using the canonical variant of XER instead of DER. In
this solution, no binary encodings are used.

For the sake of clarity, consider the current description
of the message digest process for SignedData from XCBF,
noting that this is a simplified use of SignedData as
there are no signed attributes present:

    "A message digest is used to create the digital
    signature carried in the SignerInfo component of
    SignedData. The message digest is calculated using
    the algorithm and parameters specified in the
    digestAlgorithm component of SignerInfo, and the
    value of the eContent component of
    EncapsulatedContentInfo. The eContentType component
    of EncapsulatedContentInfo identifies the type of
    value being signed. This is always the object
    identifer id-data in XCBF.

    When a value of type SignedData is represented as
    XML markup, the starting and ending eContent tags
    are excluded from the message digest process. Only
    the "value" portion of the  complete canonical XER
    encoding of eContent is digested. The  <eContent>
    and </eContent> tags are excluded from the message
    digest process.

    The result of the message digest process is then
    digitally signed using the signers private key and
    the signature algorithm and parameters specified in
    the signatureAlgorithm component of SignerInfo. The
    result of the signature process becomes the value
    of the signature component of the SignerInfo component
    of SignedData.

The more general digest/signature process for SignedData
that includes signed attributes will be defined in X9.96
and can be applied to the X9.95 version of the time stamp
protocol. But the idea is the same. It is canonical XER
encodings that are digested, not DER encodings.

While it is still true that the results of the message
digest process is a binary value, and that this must be
expressed in a human readable format such as hexadecimal
or base64 characters, the input to the digest process is
pure XML markup.

So there is never the need for hexadecimal representations
of binary input values, as all of the values throughout
the protocol can be expressed using XML markup.


Apvrille, Axelle wrote:

> Hi Phil,
> Your answer is very interesting. Actually, I do not think XER can 
> completely help solve the problem for time stamps -- but maybe I'm wrong.
> I'll try to explain why (but do give me your opinion about that):
> the problem is that for time stamping, the time stamp token is first DER 
> encoded and then included as a signed attribute in a CMS structure.
> Now, suppose you XER encode the time stamp. Okay, then, you're going to 
> get something "nice" for the CMS wrapping, but inside, when you get down 
> to the signed attribute for time stamping, you'll get an OCTET STRING... 
> which is the DER encoding of the time stamp token. No way XER can 
> produce something nice out of that, except if we XER recursively that 
> field...
> So, for a time stamp, we'd get something like:
> <CMS>
>  <Version> 1 </Version>
>  <ContentInfo>
>         <Type> id-SignedData </Type>
>         <Content> <EncapsulatedContentInfo> ...
>         <SignedAttributes>
>                 <Attr>
>                         <type> id-timestamping </type>
>                         <value> 3082104150454 ... </value>
>                 </Attr>
>         </SignedAttributes>
>         ...    
>  </ContentInfo>
> </CMS>
> (This is roughly what it would show -- I'm writing this by memory, it's 
> maybe not the exact names).
> The problem is that our goal was to read the time stamp token (included 
> in 3082...): we've got an XML output for the CMS message (that's nice, 
> but is it really useful ?) but nothing for the real payload information...
> Unless we can recursively XER encode fields, I do not see how we can get 
> XER to "output" something really useful -- in the case of time stamps 
> (I'm not saying XER is not useful at all !).
> Is this clear ? Am I wrong about XER ?
> Thanks again for your mail,
> Axelle Apvrille.
Received on Wednesday, 17 July 2002 12:22:56 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 20:10:10 UTC