""" Generación de claves seguras a partir de un nombre
    de usuario y una clave maestra.

    Jaime Suarez <mcripto@bigfoot.com> 2003
    en http://elparaiso.mat.uned.es """

import base64
import getpass
import sha
import sys

def genera_clave(username, clavemaestra, longitud):
	"""Produce a partir de un nombre de usuario y una clave maestra,
	una clave de longitud hasta 27 caracteres """
	m = sha.new()
	m.update(username)
	m.update(clavemaestra)
	cadena = m.digest()
	cadena = base64.encodestring(cadena)
	return cadena[:longitud]

def main():
	if len(sys.argv) > 1:
		lonClave = int(sys.argv[1])
	else:
		lonClave = 10
	u = raw_input("Nombre de usuario: ")
	s = getpass.getpass("Clave maestra : ")
	t = getpass.getpass("Confirme clave: ")
	if s != t :
		print "Las claves no coinciden."
	else:
		print "Clave: ", genera_clave(u, s, lonClave)

if __name__ == '__main__':
	main()