Next: , Up: Used S-expressions


6.2.1 RSA key parameters

An RSA private key is described by this S-expression:

     (private-key
       (rsa
         (n n-mpi)
         (e e-mpi)
         (d d-mpi)
         (p p-mpi)
         (q q-mpi)
         (u u-mpi)))

An RSA public key is described by this S-expression:

     (public-key
       (rsa
         (n n-mpi)
         (e e-mpi)))
n-mpi
RSA public modulus n.
e-mpi
RSA public exponent e.
d-mpi
RSA secret exponent d = e^-1 \bmod (p-1)(q-1).
p-mpi
RSA secret prime p.
q-mpi
RSA secret prime q with p < q.
u-mpi
Multiplicative inverse u = p^-1 \bmod q.

For signing and decryption the parameters (p, q, u) are optional but greatly improve the performance. Either all of these optional parameters must be given or none of them. They are mandatory for gcry_pk_testkey.

Note that OpenSSL uses slighly different parameters: q < p and u = q^-1 \bmod p. To use these parameters you will need to swap the values and recompute u. Here is example code to do this:

       if (gcry_mpi_cmp (p, q) > 0)
         {
           gcry_mpi_swap (p, q);
           gcry_mpi_invm (u, p, q);
         }