def decode_cipher(cipher_spec, key_size):
    """Decode a dm-crypt style cipher specification string

       The assumed format being cipher[:keycount]-chainmode-ivmode[:ivopts] as
       documented under linux/Documentation/device-mapper/dm-crypt.txt in the
       kernel source tree.
    """
    cipher_alg, cipher_mode, ivgen_alg = cipher_spec.split('-')
    cipher_alg = cipher_alg + '-' + str(key_size)
    return {'cipher_alg': cipher_alg, 'cipher_mode': cipher_mode,
        'ivgen_alg': ivgen_alg}
