def keygen(length=1024):
    import os, base64
    from datetime import date
    from Crypto.PublicKey import RSA

    key = RSA.generate(length, os.urandom)
    try:
        pub = key.exportKey('OpenSSH')
        if not pub.startswith("ssh-"):
            raise ValueError(pub)
    except:
        ssh_rsa = '00000007' + base64.b16encode('ssh-rsa')
        exponent = '%x' % (key.e, )
        if len(exponent) % 2:
            exponent = '0' + exponent

        ssh_rsa += '%08x' % (len(exponent) / 2, )
        ssh_rsa += exponent

        modulus = '%x' % (key.n, )
        if len(modulus) % 2:
            modulus = '0' + modulus

        if modulus[0] in '89abcdef':
            modulus = '00' + modulus

        ssh_rsa += '%08x' % (len(modulus) / 2, )
        ssh_rsa += modulus

        pub = 'ssh-rsa %s' % (
            base64.b64encode(base64.b16decode(ssh_rsa.upper())), )
    return key.exportKey(), "%s %s" % (pub, "cloud-%s" % date.today())
        

