Support TOTP secret with Valve's Steam

Apr 27, 2016 at 5:38 PM
I found a plugin TOP modification with an added Steam.
You could take the stand? I have now applied and mobile application closes when you select the input of Steam (with the secret TOTP).

https://github.com/victor-rds/KeeTrayTOTP
Jun 4, 2016 at 11:24 AM
To expand on this:

The above mentioned enhanced version of Tray TOTP slightly extends the plugin to allow the creation of TOTP hashes according to Steam's goofy non-standard variant of TOTP.

In normal use (with 6 or 8 character hashes), the plugin operates identically to the original Tray TOTP plugin. When the user wants the plugin to generate Steam codes, it populates the "TOTP Settings" custom string field with the value "30;S" -- thus giving the output hash length a value of "S".

Note: this causes Keepass2Android to throw an exception the instant one opens an account entry with that modified field value, resulting in the database being closed and the user having to re-enter their master key to get back in -- very annoying.

When validating the textfield, the plugin interprets "S" to mean "use a hash length of '5', and use the Steam hash encoding function instead of the normal one."

See: ( https://github.com/victor-rds/KeeTrayTOTP/blob/master/Libraries/TOTPProvider.cs ) -- lines 117-126

It then replaces the original Generate(byte[]) function with a modified Generate(string) one

See: ( https://github.com/victor-rds/KeeTrayTOTP/blob/master/Libraries/TOTPProvider.cs ) -- lines 229-265

which calls the appropriate hash encoding function to return the desired output.

See: ( https://github.com/victor-rds/KeeTrayTOTP/blob/master/Libraries/TOTPEncoder.cs )


At the very least, if you could fix the error handling so that the program doesn't crash out when it sees "TOTP Settings" == "30:S", that'd be a good thing.