Subkey Creation

Adding subkeys to a primary key is fairly similar to creating the primary key with the create_subkey method. Most of the arguments are the same, but not quite all. Instead of the userid argument there is now a key argument for selecting which primary key to add the subkey to.

In the following example an encryption subkey will be added to the primary key. Since Danger Mouse is a security conscious secret agent, this subkey will only be valid for about six months, half the length of the primary key.

import gpg c = gpg.Context() c.home_dir = "~/.gnupg-dm" key = c.get_key(dmkey.fpr, secret=True) dmsub = c.create_subkey(key, algorithm="rsa3072", expires_in=15768000, encrypt=True)

As with the primary key, the results here can be checked with:

print(""" Fingerprint: {0} Primary Key: {1} Public Key: {2} Secret Key: {3} Sub Key: {4} User IDs: {5} """.format(dmsub.fpr, dmsub.primary, dmsub.pubkey, dmsub.seckey, dmsub.sub, dmsub.uid))

As well as on the command line with:

bash-4.4$ gpg --homedir ~/.gnupg-dm -K ~/.gnupg-dm/pubring.kbx ---------------------- sec rsa3072 2018-03-15 [SC] [expires: 2019-03-15] 177B7C25DB99745EE2EE13ED026D2F19E99E63AA uid [ultimate] Danger Mouse <dm@secret.example.net> ssb rsa3072 2018-03-15 [E] [expires: 2018-09-13] bash-4.4$