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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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));
        }