Validación de OTP con Yubikey – problema con la firma HMAC-SHA1.
Tengo un problema de comprensión con la validación OTP para Yubikey. Estoy tratando de desarrollar en Flutter el Protocolo de Validación V2 (https://developers.yubico.com/OTP/Specifications/OTPvalidationprotocol.html).
No entiendo cómo obtener la firma. Utilicé el vector de prueba de https://developers.yubico.com/OTP/Specifications/Test_vectors.html.
Mi código es:
String apiKey = 'mG5be6ZJU1qBGz24yPh/ESM3UdU=';
String keyValue = 'id=1&nonce=jrFwbaYFhn0HoxZIsd9LQ6w2ceU&otp=vvungrrdhvtklknvrtvuvbbkeidikkvgglrvdgrfcdft';
var hmacSha1 = crypto.Hmac(crypto.sha1, apiKey.codeUnits);
crypto.Digest sha1Result = hmacSha1.convert(keyValue.codeUnits);
String hEncode64 = base64.encode(sha1Result.bytes);
final http.Response responseHttp = await http.get(
Uri.parse('https://api.yubico.com/wsapi/2.0/verify?' +
keyValue +
''' +
hEncode64),
);
No obtengo el mismo resultado que el Vector de Prueba (h=%2Bja8S3IjbX593/LAgTBixwPNGX4%3D). -> +ja8S3IjbX593/LAgTBixwPNGX4=
Pero mi problema de comprensión es: cuando intento decodificar en base64 su vector de prueba, no puedo porque no está en formato utf8.
Y cuando intento con el vector de prueba disponible en el sitio web, no funciona.
https://api.yubico.com/wsapi/2.0/verify?id=1&otp=vvungrrdhvtklknvrtvuvbbkeidikkvgglrvdgrfcdft&nonce=jrFwbaYFhn0HoxZIsd9LQ6w2ceU&h=%2Bja8S3IjbX593/LAgTBixwPNGX4%3D
h=JE5WcMcXV7vooWkeN2/7A4DpMFo=
t=2021-12-15T12:51:37Z0635
status=BAD_SIGNATURE
¿Podrías ayudarme a entender por favor mi problema?
davy.ai
Parece que estás teniendo dificultades para obtener la firma correcta al desarrollar el protocolo de validación OTP de YubiKey V2 en Flutter. Has utilizado el vector de prueba del sitio web de Yubico, pero tu código no produce el mismo resultado. Además, has encontrado que no puedes decodificar en base64 el vector de prueba porque no está en formato UTF-8.
Para ayudarte a entender el problema, aquí tienes algunas posibles explicaciones y sugerencias:
En general, puede ser útil descomponer el problema en pasos más pequeños y probar cada componente por separado para aislar la causa raíz del problema. También puedes comunicarte con el equipo de soporte de Yubico o la comunidad para obtener más ayuda o orientación.