Solución:
No es solo la muestra de código y los valores de prueba, incluso está allí explícitamente en el RFC 6238:
Las implementaciones de TOTP PUEDEN usar funciones HMAC-SHA-256 o HMAC-SHA-512, basadas en SHA-256 o SHA-512 [SHA2] funciones hash, en lugar de la función HMAC-SHA-1 que se ha especificado para el cálculo HOTP en [RFC4226].
Entonces sí.
Mi conjetura sin experiencia pero un poco educada sería que no hay nada de malo en usarlos incluso con HOTP (aunque el RFC no lo dice explícitamente). Después de todo, HOTP y TOPT son prácticamente lo mismo.
Obviamente, estos dos algoritmos hash no son compatibles con el estándar. De hecho, SHA-1 se usa prácticamente en todas partes en RFC 4226, por lo que, si lo reemplaza con otro hash, implementará un sistema diferente.
Además, me pregunto cuál sería la idea detrás de esto: la implementación exige que se trunque el resultado del HMAC y el HMAC inicial usa un secreto muy breve: usar un algoritmo hash diferente aquí no mejoraría la seguridad, pero lo haría incompatible con aplicaciones y tokens existentes.
editar:
RFC 4226 es bastante claro sobre qué algoritmo puede usar: HMAC-SHA-1 (sección 5.2), por lo que, si debe admitir RFC 4226, no puede usar nada más.
RFC 6238, por otro lado, abre la puerta al uso de SHA-256 y SHA-512 (en la sección 1.2).
Por lo tanto, parece que todo depende de sus requisitos: si está implementando RFC4226 (HOTP) o debe ser compatible con él, no puede usar nada más que HMAC-SHA-1. Sin embargo, si está implementando RFC 6238 (TOTP), el uso de HMAC-SHA-256 o HMAC-SHA-512 está dentro del alcance del estándar.