summaryrefslogtreecommitdiff
path: root/contrib/python/examples/ldns-keygen.py
blob: 71375fce205c7bf343f13dbf4ae7245d8fa5a199 (plain)
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)