Subject: PKAlgs: 02: DSA Signature Keys needs re-wording

From: "Manger, James H" <[email-masked]>
Date: Fri, 23 Mar 2001 17:51:42 +1100

Comments on draft-ietf-pkix-ipki-pkalgs-02.txt, section 2.3.2 "DSA Signature
Keys":

The paragraph beginning "If the DSA algorithm parameters are absent" has 3
sentences.  The 2nd and 3rd contradict each other (at least the 2nd is
useless in light of the 3rd).  The next paragraph repeats the 1st and 3rd
sentences.
Delete something.  Perhaps replace the two paragraphs with "The DSA domain
parameters may be omitted if and only if the certificate is signed using a
DSA key that has the same parameters.".

The DSA signature values r & s should not be mentioned in this section.
They are appropriately, clearly and completely defined in section 2.2.2 "DSA
Signature Algorithm"; with an OID, parameters (omit), Dss-Sig-Value syntax
and mapping to a bit string.
Delete the paragraph beginning "When signing, DSA algorithm generates", the
definition of Dss-Sig-Value and the paragraph beginning "The encoded
signature is conveyed".

Minor editorials:
Ecdsa-Sig-Value is ECDSA-Sig-Value in the ASN.1 module.
RSAPublicKey, DSAPublicKey and DHPublicKey are not in the ASN.1 module.
Comment with Dss-Parms in ASN.1 module should be "for DSA parameters", not
"for DSA public key".

-----draft-ietf-pkix-ipki-pkalgs-02.txt
2.3.2  DSA Signature Keys

   The Digital Signature Algorithm (DSA) is defined in the Digital Sig-
   nature Standard (DSS) [FIPS 186]. The DSA OID supported by this pro-
   file is

        id-dsa ID ::= { iso(1) member-body(2) us(840) x9-57(10040)
                  x9cm(4) 1 }

   The id-dsa algorithm syntax includes optional domain parameters.
   These parameters are commonly referred to as p, q, and g.  When omit-
   ted, the parameters component MUST be omitted entirely. That is, the
   AlgorithmIdentifier MUST be a SEQUENCE of one component: the OBJECT
   IDENTIFIER id-dsa.

   If the DSA domain parameters are present in the subjectPublicKeyInfo
   AlgorithmIdentifier, the parameters are included using the following
   ASN.1 structure:

        Dss-Parms  ::=  SEQUENCE  {
            p             INTEGER,
            q             INTEGER,
            g             INTEGER  }

   If the DSA algorithm parameters are absent from the subjectPublicKey-
   Info AlgorithmIdentifier and the CA signed the subject certificate
   using DSA, then the certificate issuer's DSA parameters apply to the
   subject's DSA key.  If the DSA domain parameters are absent from the
   subjectPublicKeyInfo AlgorithmIdentifier and the CA signed the sub-
   ject certificate using a signature algorithm other than DSA, then the
   subject's DSA domain parameters are distributed by other means.  If
   the subjectPublicKeyInfo AlgorithmIdentifier field omits the parame-
   ters component and the CA signed the subject with a signature algo-
   rithm other than DSA, then clients MUST reject the certificate.

   The AlgorithmIdentifier within subjectPublicKeyInfo is the only place
   within a certificate where the parameters may be used. If the DSA
   domain parameters are absent from the subjectPublicKeyInfo Algorith-
   mIdentifier and the CA signed the subject certificate using DSA, then
   the certificate issuer's DSA domain parameters apply to the subject's
   DSA key.  If the DSA domain parameters are absent from the sub-
   jectPublicKeyInfo AlgorithmIdentifier and the CA signed the certifi-
   cate using a signature algorithm other than DSA, then clients shall
   not validate the certificate.

   When signing, DSA algorithm generates two values.  These values are
   commonly referred to as r and s.  To easily transfer these two values
   as one signature, they are ASN.1 encoded using the following ASN.1
   structure:

        Dss-Sig-Value  ::=  SEQUENCE  {
            r             INTEGER,
            s             INTEGER  }

   The encoded signature is conveyed as the value of the BIT STRING sig-
   nature in a Certificate or CertificateList.

   The DSA public key MUST be ASN.1 DER encoded as an INTEGER; this
   encoding shall be used as the contents (i.e., the value) of the sub-
   jectPublicKey component (a BIT STRING) of the SubjectPublicKeyInfo
   data element.

        DSAPublicKey ::= INTEGER -- public key, Y