2 from twisted.python import usage
4 class GenerateKeypairOptions(usage.Options):
6 return "Usage: tahoe admin generate-keypair"
8 def getUsage(self, width=None):
9 t = usage.Options.getUsage(self, width)
11 Generate a public/private keypair, dumped to stdout as two lines of ASCII..
16 def print_keypair(options):
17 from allmydata.util.keyutil import make_keypair
19 privkey_vs, pubkey_vs = make_keypair()
20 print >>out, "private:", privkey_vs
21 print >>out, "public:", pubkey_vs
23 class DerivePubkeyOptions(usage.Options):
24 def parseArgs(self, privkey):
25 self.privkey = privkey
27 def getSynopsis(self):
28 return "Usage: tahoe admin derive-pubkey PRIVKEY"
30 def getUsage(self, width=None):
31 t = usage.Options.getUsage(self, width)
33 Given a private (signing) key that was previously generated with
34 generate-keypair, derive the public key and print it to stdout.
39 def derive_pubkey(options):
41 from allmydata.util import keyutil
42 privkey_vs = options.privkey
43 sk, pubkey_vs = keyutil.parse_privkey(privkey_vs)
44 print >>out, "private:", privkey_vs
45 print >>out, "public:", pubkey_vs
48 class AdminCommand(usage.Options):
50 ("generate-keypair", None, GenerateKeypairOptions,
51 "Generate a public/private keypair, write to stdout."),
52 ("derive-pubkey", None, DerivePubkeyOptions,
53 "Derive a public key from a private key."),
55 def postOptions(self):
56 if not hasattr(self, 'subOptions'):
57 raise usage.UsageError("must specify a subcommand")
58 def getSynopsis(self):
59 return "Usage: tahoe admin SUBCOMMAND"
60 def getUsage(self, width=None):
61 t = usage.Options.getUsage(self, width)
63 Please run e.g. 'tahoe admin generate-keypair --help' for more details on
69 "generate-keypair": print_keypair,
70 "derive-pubkey": derive_pubkey,
73 def do_admin(options):
74 so = options.subOptions
75 so.stdout = options.stdout
76 so.stderr = options.stderr
77 f = subDispatch[options.subCommand]
82 ["admin", None, AdminCommand, "admin subcommands: use 'tahoe admin' for a list"],