File: ldns-keygen.py

package info (click to toggle)
ldns 1.8.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,864 kB
  • sloc: ansic: 46,986; python: 7,675; sh: 4,229; perl: 2,186; makefile: 1,231; xml: 518
file content (46 lines) | stat: -rwxr-xr-x 1,012 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/python
#
# This example shows how to generate public/private key pair
#
import ldns

algorithm = ldns.LDNS_SIGN_DSA
bits = 512

ldns.ldns_init_random(open("/dev/urandom","rb"), (bits+7)//8)

domain = ldns.ldns_dname("example.")

#generate a new key
key = ldns.ldns_key.new_frm_algorithm(algorithm, bits);
print key

#set owner
key.set_pubkey_owner(domain)

#create the public from the ldns_key
pubkey = key.key_to_rr()
#previous command is equivalent to
# pubkey = ldns.ldns_key2rr(key)
print pubkey

#calculate and set the keytag
key.set_keytag(ldns.ldns_calc_keytag(pubkey))

#build the DS record
ds = ldns.ldns_key_rr2ds(pubkey, ldns.LDNS_SHA1)
print ds

owner, tag = pubkey.owner(), key.keytag()

#write public key to .key file
fw = open("key-%s-%d.key" % (owner,tag), "wb")
pubkey.print_to_file(fw)

#write private key to .priv file
fw = open("key-%s-%d.private" % (owner,tag), "wb")
key.print_to_file(fw)

#write DS to .ds file
fw = open("key-%s-%d.ds" % (owner,tag), "wb")
ds.print_to_file(fw)