zone = len(sys.argv) >= 6 and dns.dns_domain_fromdot(sys.argv[5]) if pubkey: try: pubkey = pubkey.decode('hex') if len(pubkey) != 32: raise 'Invalid DNSCurve public key' except TypeError, e: pubkey = dnscurve.dnscurve_getpubkey(dns.dns_domain_fromdot(pubkey)) if not pubkey: raise 'Invalid DNSCurve public key' s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((server, 53)) query0 = dns.dns_build_query(type, name) if pubkey: mykey = open('/dev/urandom').read(32) mypubkey = nacl.smult_curve25519_base(mykey) key = nacl.box_curve25519xsalsa20poly1305_beforenm(pubkey, mykey) nonce1 = open('/dev/urandom').read(12) box = nacl.box_curve25519xsalsa20poly1305_afternm(query0, nonce1 + 12 * '\0', key) if zone is not False: query = dnscurve.dnscurve_encode_txt_query(nonce1, box, mypubkey, zone) else: query = dnscurve.dnscurve_encode_streamlined_query(nonce1, box, mypubkey) else: query = query0 s.send(query) response = s.recv(4096)
import sys import dns if __name__ == '__main__': sys.stdout.write(dns.dns_build_query(sys.argv[1], sys.argv[2]))
zone = len(sys.argv) >= 6 and dns.dns_domain_fromdot(sys.argv[5]) if pubkey: try: pubkey = pubkey.decode('hex') if len(pubkey) != 32: raise 'Invalid DNSCurve public key' except TypeError, e: pubkey = dnscurve.dnscurve_getpubkey(dns.dns_domain_fromdot(pubkey)) if not pubkey: raise 'Invalid DNSCurve public key' s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((server, 53)) query0 = dns.dns_build_query(type, name) if pubkey: mykey = open('/dev/urandom').read(32) mypubkey = nacl.smult_curve25519_base(mykey) key = nacl.box_curve25519xsalsa20poly1305_beforenm(pubkey, mykey) nonce1 = open('/dev/urandom').read(12) box = nacl.box_curve25519xsalsa20poly1305_afternm(query0, nonce1 + 12 * '\0', key) if zone is not False: query = dnscurve.dnscurve_encode_txt_query(nonce1, box, mypubkey, zone) else: query = dnscurve.dnscurve_encode_streamlined_query( nonce1, box, mypubkey) else: query = query0 s.send(query)