public static KeyResponse<KeySignResponse> DecodeAuthenticateReponse(ApduResponse apdu) { var status = ParseKeyResponseStatus(apdu.Status); var response = status == KeyResponseStatus.Success ? RawMessageCodec.DecodeKeySignResponse(apdu.ResponseData) : null; return new KeyResponse<KeySignResponse>(apdu, response, status); }
public static KeyResponse <KeySignResponse> DecodeAuthenticateReponse(ApduResponse apdu) { var status = ParseKeyResponseStatus(apdu.Status); var response = status == KeyResponseStatus.Success ? RawMessageCodec.DecodeKeySignResponse(apdu.ResponseData) : null; return(new KeyResponse <KeySignResponse>(apdu, response, status)); }
public static ArraySegment<byte> EncodeResponse(ApduResponse response) { var buffer = new byte[response.ResponseData.Count + 2]; using (var stream = new EndianWriter(new MemoryStream(buffer), Endianness.BigEndian)) { stream.Write(response.ResponseData.Array, response.ResponseData.Offset, response.ResponseData.Count); var status = (short)response.Status; stream.Write(status); } return buffer.Segment(); }
public static ArraySegment <byte> EncodeResponse(ApduResponse response) { var buffer = new byte[response.ResponseData.Count + 2]; using (var stream = new EndianWriter(new MemoryStream(buffer), Endianness.BigEndian)) { stream.Write(response.ResponseData.Array, response.ResponseData.Offset, response.ResponseData.Count); var status = (short)response.Status; stream.Write(status); } return(buffer.Segment()); }
public static KeyResponse<string> DecodeVersionResponse(ApduResponse apdu) { if (apdu.Status == ApduResponseStatus.InsNotSupported) { return new KeyResponse<string>(apdu, U2FConsts.U2Fv1, KeyResponseStatus.Success); } if (apdu.Status != ApduResponseStatus.NoError) { return new KeyResponse<string>(apdu, null, ParseKeyResponseStatus(apdu.Status)); } // TODO: String is ASCII not UTF-8 we should gracefully handle characters with the high bit set var str = Encoding.UTF8.GetString(apdu.ResponseData.Array, apdu.ResponseData.Offset, apdu.ResponseData.Count); return new KeyResponse<string>(apdu, str, KeyResponseStatus.Success); }
public static KeyResponse <string> DecodeVersionResponse(ApduResponse apdu) { if (apdu.Status == ApduResponseStatus.InsNotSupported) { return(new KeyResponse <string>(apdu, U2FConsts.U2Fv1, KeyResponseStatus.Success)); } if (apdu.Status != ApduResponseStatus.NoError) { return(new KeyResponse <string>(apdu, null, ParseKeyResponseStatus(apdu.Status))); } // TODO: String is ASCII not UTF-8 we should gracefully handle characters with the high bit set var str = Encoding.UTF8.GetString(apdu.ResponseData.Array, apdu.ResponseData.Offset, apdu.ResponseData.Count); return(new KeyResponse <string>(apdu, str, KeyResponseStatus.Success)); }