Module pyvcli_akey

Expand source code
#!/usr/bin/env python3

from __future__ import print_function

# ------------------------------------------------------------------------
# Test client for the pyserv project. Encrypt test.

import  os, sys, getopt, signal, select, socket, time, struct
import  random, stat

from pyvecc.Key import Key

from Crypto.Hash import SHA512
from Crypto.Hash import SHA256
from Crypto import Random

base = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(base,  '..' + os.sep + 'pyvcommon'))

import support, pycrypt, pyservsup, pyclisup
import pysyslog, comline

# ------------------------------------------------------------------------
# Functions from command line

def phelp():

    print()
    print( "Usage: " + os.path.basename(sys.argv[0]) + " [options]")
    print()
    print( "Options:    -d level  - Debug level 0-10")
    print( "            -p port   - Port to use (default: 6666)")
    print( "            -v        - Verbose")
    print( "            -q        - Quiet")
    print( "            -s        - Showkey")
    print( "            -h        - Help")
    print( " Needs debug level or verbose to have any output.")
    sys.exit(0)

def pversion():
    print( os.path.basename(sys.argv[0]), "Version", support.version)
    sys.exit(0)

    # option, var_name, initial_val, function
optarr = \
    ["d:",  "pgdebug",  0,      None],      \
    ["p:",  "port",     6666,   None],      \
    ["v",   "verbose",  0,      None],      \
    ["q",   "quiet",    0,      None],      \
    ["t",   "test",     "x",    None],      \
    ["s",   "showkey",  "",    None],      \
    ["V",   None,       None,   pversion],  \
    ["h",   None,       None,   phelp]      \

conf = comline.Config(optarr)

# ------------------------------------------------------------------------

if __name__ == '__main__':

    args = conf.comline(sys.argv[1:])

    pyclisup.verbose = conf.verbose
    pyclisup.pgdebug = conf.pgdebug

    if len(args) == 0:
        ip = '127.0.0.1'
    else:
        ip = args[0]

    #print(dir(RSA))
    #print(dir(RSA.RsaKey))
    #sys.exit(0)

    hand = pyclisup.CliSup()
    hand.verbose = conf.verbose
    hand.pgdebug = conf.pgdebug

    try:
        resp2 = hand.connect(ip, conf.port)
    except:
        print( "Cannot connect to:", ip + ":" + str(conf.port), sys.exc_info()[1])
        sys.exit(1)

    if conf.quiet == False:
        print ("Server initial:", hand.pb.decode_data(resp2[1])[0])

    resp = hand.client(["akey"])
    if resp[0] != "OK":
        print("key resp", resp)
        sys.exit(1)

    if conf.verbose:
        print("got response to akey: ", resp)

    if conf.pgdebug > 2:
        print("Got hash:", "'" + resp[1] + "'")

    if conf.pgdebug > 3:
        print ("Server pub key response:\n" +  "'" + str(resp[2]) +  "'\n")

    hhh = SHA256.new(); hhh.update(resp[2].encode())
    ddd = hhh.hexdigest()

    if conf.pgdebug > 1:
        print("Hash1:\n" + str(resp[2]), "\nHash2:\n" + str(ddd) + "\n")

    # Remember key
    if ddd !=  resp[1]:
        print("Tainted key")
    else:
        hand.pkey = resp[2]
        if conf.quiet == False:
             print("Key OK")

    if conf.showkey:
        print("Key:")
        print(hand.pkey)

    try:
        #hand.pubkey = RSA.importKey(hand.pkey)
        hand.pubkey = Key.import_pub(hand.pkey)
        if conf.pgdebug > 0:
            print (hand.pubkey)
    except:
        print("Cannot import public key.")
        support.put_exception("import key")

    #print("Got ", hand.pubkey )
    #print(hand.pubkey.size_in_bits(), "bits", hand.pubkey.export_key()[27:48])
    #print(hand.pubkey.size_in_bits(), "bits, Hash: ",  ddd[:24])
    #for aa in dir(hand.pubkey):
    #    print("Got ", aa, hand.pubkey.__getattribute__(aa))

    hand.client(["quit"])
    hand.close();

    sys.exit(0)

# EOF

Functions

def phelp()
Expand source code
def phelp():

    print()
    print( "Usage: " + os.path.basename(sys.argv[0]) + " [options]")
    print()
    print( "Options:    -d level  - Debug level 0-10")
    print( "            -p port   - Port to use (default: 6666)")
    print( "            -v        - Verbose")
    print( "            -q        - Quiet")
    print( "            -s        - Showkey")
    print( "            -h        - Help")
    print( " Needs debug level or verbose to have any output.")
    sys.exit(0)
def pversion()
Expand source code
def pversion():
    print( os.path.basename(sys.argv[0]), "Version", support.version)
    sys.exit(0)

    # option, var_name, initial_val, function