Add an auth "counter" function for tracking auth changes
   
    
     
 	return ret;
 }
+
+/* Return a 32-bit integer "counter" that will change when the password is
+ * updated.  Used to invalidate password recovery schemes after the password is
+ * updated.  Returns the counter in the "counter" argument, and returns
+ * true/false on success/failure. */
+int auth_get_counter(const char *username, uint32_t *counter) {
+	struct auth_v2 auth;
+	struct MD5Context ctx;
+	uint8_t md5hash[MD5_DIGEST_SIZE];
+
+	if (auth_get_data(username, (void *) &auth, sizeof(struct auth_v2)) == 0)
+		return 0;
+
+	/* There's probably going to be some question about using MD5 here.
+	 * All I really need is to quickly and repeatably scramble some bits.
+	 * MD5 can still do that. */
+	MD5Init(&ctx);
+	MD5Update(&ctx, auth.password, SCRYPT_OUTPUT_SIZE);
+	MD5Update(&ctx, auth.salt, SCRYPT_SALT_SIZE);
+	MD5Final((unsigned char *)md5hash, &ctx);
+
+	*counter = ((uint32_t *)md5hash)[0];
+
+	return 1;
+}
    
   
    
     char * auth_login(const char *username, const char *password);
 int auth_logout(const char *username, const char *token);
 int auth_check_token(const char *username, const char *given_token);
+int auth_get_counter(const char *username, uint32_t *counter);
 
 #endif //_AUTH_H