úÎıh      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgNone5)DGeneric request for old version of protocol. Probably want to remove0$Bluetooth Classic (Bluetooth BR/EDR)1&Bluetooth Low Energy (Bluetooth Smart)2Near-Field Communications3 USB HID (Human Interface Device)H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG@  !"#$%&'()*,+-./0123456789:;<=>?H456789:;<=>?/0123)*+,-.GF%&'(ED !"#$CB A @   !"#$%&'()*+,-./01234 56789:;<=>?@ABCDEFGNone5 hHThe U2F Spec (currently) exclusively supports use of the SEC p256r Curve`*Parses Registration or Signin Request JSONa!Parses Registration response JSONb9Parses base64-encoded bytestring in Registration responsec=Verifies that Registration is a valid response to the RequestdParses Signin response JSONeCParses base64-encoded client data bytestring inside Signin responsefMVerifies that Signin response is valid given saved pubkey bytestring, requestgEURL-friendly base64 encoding may or may not contain padding. (https:/tools.ietf.org0html/rfc4648#section-3.2). We remove it here.h`abijklmcdefnopqgrstuv`abcdefg`abcdefgh`abijklmcdefnopqgrstuvw       !""#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr"u2f-0.1.0.1-8NJYcVaqlHrG22xgVvP1Oe U2F.TypesU2F SignatureDatasignatureData_userPresenceFlagsignatureData_countersignatureData_signature ClientDataclientData_typclientData_challengeclientData_originclientData_cid_pubkeySigninsignin_keyHandlesignin_clientDatasignin_signatureDataRegistrationDataregistrationData_reservedregistrationData_publicKeyregistrationData_keyHandleregistrationData_certificateregistrationData_signature Registrationregistration_registrationDataregistration_challengeregistration_versionregistration_appIdregistration_clientDataregistration_sessionID RegisteredKeyregisteredKey_versionregisteredKey_keyHandleregisteredKey_transportsregisteredKey_appIdRegisterRequestregisterRequest_versionregisterRequest_challengeRequestappIdversion challenge keyHandle TransportBTBLENFCUSBU2FErrorRegistrationParseErrorRegistrationDataParseError!RegistrationCertificateParseErrorPubKeyParsingErrorSignatureParseErrorChallengeMismatchErrorFailedVerificationErrorSigninParseErrorClientDataParseErrorRequestParseErrorRegisterRequestParseError$fFromJSONClientData$fFromJSONSignin$fFromJSONRegistration$fToJSONRegistration$fFromJSONRegisterRequest$fToJSONRegisterRequest$fToJSONRequest$fFromJSONRequest$fShowU2FError $fEqU2FError$fShowTransport $fEqTransport $fShowRequest$fGenericRequest $fEqRequest$fShowRegisterRequest$fGenericRegisterRequest$fShowRegisteredKey$fGenericRegisteredKey$fEqRegisteredKey$fShowRegistration$fGenericRegistration$fShowRegistrationData$fGenericRegistrationData $fShowSignin$fGenericSignin $fEqSignin$fShowClientData$fGenericClientData$fEqClientData$fShowSignatureData$fGenericSignatureData parseRequestparseRegistrationparseRegistrationDataverifyRegistration parseSigninparseClientData verifySigninformatOutputBase64ourCurvegetPubKeyFromCertificate findPubKey pubKeyShapegetSignatureBase getSignatureBaseFromRegistrationparseSignatureDataparseSignaturegetSigninSignatureBaseparsePublicKeyverifySignature u2fComparatorunpackRegistrationDataunpackSignatureData unpackASN1