glenda.party
term% ls -F
term% cat index.txt
DSA(8)                      System Manager's Manual                     DSA(8)



delim $$

NAME
       dsagen, asn12dsa, dsa2pub, dsa2ssh - generate and format dsa keys

SYNOPSIS
       auth/dsagen [ -t tag ]

       auth/asn12dsa [ -t tag ] [ file ]

       auth/dsa2pub [ file ]

       auth/dsa2ssh [ -c comment ] [ file ]

DESCRIPTION
       Plan  9 represents a DSA (Digital Signature Algorithm) key as an attri‐
       bute-value pair list prefixed with the string key; this is the  generic
       key format used by factotum(4).  A full DSA private key has the follow‐
       ing attributes:

       proto  must be dsa

       !secret
              decryption key

       p      modulus, a large prime

       q      group order, another large prime that divides p - 1.

       alpha  group generator

       key    $"alpha" sup secret ~ mod ~ p$

       All the numbers are in hexadecimal.  A DSA public  key  omits  the  at‐
       tributes  beginning  with  A key may have other attributes as well (for
       example, a service attribute identifying  how  this  key  is  typically
       used), but to these utilities such attributes are merely comments.

       For example, a private key and corresponding public key might look like
       this (with [â¯] indicating elisions and \ marking line breaks for read‐
       ability):

              key proto=dsa p=D5[â¯]DB q=C2[â¯]E7 alpha=44[â¯]9B key=C1[â¯]3F \
                   !secret=9E[â¯]3B
              key proto=dsa p=D5[â¯]DB q=C2[â¯]E7 alpha=44[â¯]9B key=C1[â¯]3F

       Note that the order of the attributes does not matter.

       Dsagen  prints a randomly generated DSA private key whose n has exactly
       nbits (default 1024) significant bits.  If  tag  is  specified,  it  is
       printed  between key and proto=dsa; typically, tag is a sequence of at‐
       tribute-value comments describing the key.

       Asn12dsa reads an DSA private key stored as ASN.1 encoded in the binary
       Distinguished Encoding Rules (DER) and prints a Plan 9 DSA key, insert‐
       ing tag exactly as dsagen does.  ASN.1/DER is a popular key  format  on
       Unix  and  Windows;  it is often encoded in text form using the Privacy
       Enhanced Mail (PEM) format in a section labeled  as  an  ``DSA  PRIVATE
       KEY.''  The command:

              auth/pemdecode 'DSA PRIVATE KEY' | auth/asn12dsa

       extracts  the  key section from a textual ASN.1/DER/PEM key into binary
       ASN.1/DER format and then converts it to a Plan 9 DSA key.

       Dsa2pub reads a Plan 9 DSA public or private key, removes  the  private
       attributes,  and  prints  the resulting public key.  Comment attributes
       are preserved.

       Dsa2ssh reads a Plan 9 DSA public or private key and prints the  public
       portion  in  the format used by SSH: and a long base-64 encoded number.
       delim @@ For compatibility with external SSH implementations, the  pub‐
       lic  keys  in  /sys/lib/ssh/keyring and $home/lib/keyring are stored in
       this format.

EXAMPLES
       Generate a fresh key and configure a remote Unix system to allow use of
       that key for logins:

              auth/dsagen -t 'service=ssh' >key
              auth/dsa2ssh key | ssh unix 'cat >>.ssh/authorized_keys'
              cat key >/mnt/factotum/ctl
              ssh unix

SOURCE
       /sys/src/cmd/auth

SEE ALSO
       ssh(1), factotum(4), pem(8), rsa(8)

BUGS
       There are too many key formats.



                                                                        DSA(8)