So I did a little digging on this:
WordPress 4.2.3 had
$hashed = $wp_hasher->HashPassword( $key );
WordPress 4.3 has
$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
TML 6.3.9 has
$key = wp_generate_password( 20, false );
do_action( 'retrieve_password_key', $user_login, $key );
// Now insert the new md5 key into the db
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $key ), array( 'user_login' => $user_login ) );
TML 6.3.12 has
$key = wp_generate_password( 20, false );
do_action( 'retrieve_password_key', $user_login, $key );
// Now insert the key, hashed, into the DB.
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = $wp_hasher->HashPassword( $key );
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user_login ) );
So there’s actually two issues in here in TML 6.3.12. The first one is that $key is generated but never actually used now. The second is that $hashed does not add the timestamp wordpress expects. TML still relies on the wordpress function check_password_reset_key() which is expecting the timestamp.