Example #1
0
 /// <exception cref="U2FException"/>
 /// <exception cref="System.IO.IOException"/>
 public static KeySignResponse ParseAuthenticateResponse(Stream inputStream)
 {
     using (var dataInputStream = new EndianReader(inputStream, Endianness.BigEndian))
     {
         return(RawMessageCodec.DecodeKeySignResponse(ParseMessage(dataInputStream).Segment()));
     }
 }
Example #2
0
        /// <exception cref="U2FException"/>
        /// <exception cref="System.IO.IOException"/>
        public static IU2FRequest ParseRequest(Stream inputStream)
        {
            using (var dataInputStream = new EndianReader(inputStream, Endianness.BigEndian))
            {
                var version = dataInputStream.ReadByte();
                if (version != Version)
                {
                    throw new U2FException($"Unsupported message version: {version}");
                }
                var command = dataInputStream.ReadByte();
                switch (command)
                {
                case CommandRegister:
                {
                    return(RawMessageCodec.DecodeKeyRegisterRequest(ParseMessage(dataInputStream
                                                                                 )));
                }

                case CommandAuthenticate:
                {
                    return(RawMessageCodec.DecodeKeySignRequest(ParseMessage
                                                                    (dataInputStream)));
                }

                default:
                {
                    throw new U2FException($"Unsupported command: {command}");
                }
                }
            }
        }
Example #3
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));
        }
Example #4
0
 /// <exception cref="System.IO.IOException"/>
 /// <exception cref="U2FException"/>
 public static void SendAuthenticateResponse(Stream outputStream, KeySignResponse
                                             keySignResponse)
 {
     SendResponse(outputStream, RawMessageCodec.EncodeKeySignResponse(keySignResponse));
 }
Example #5
0
 /// <exception cref="System.IO.IOException"/>
 /// <exception cref="U2FException"/>
 public static void SendAuthenticateRequest(Stream outputStream, KeySignRequest keySignRequest)
 {
     SendRequest(outputStream, CommandAuthenticate,
                 RawMessageCodec.EncodeKeySignRequest(keySignRequest));
 }
Example #6
0
 /// <exception cref="System.IO.IOException"/>
 /// <exception cref="U2FException"/>
 public static void SendRegisterResponse(Stream outputStream, KeyRegisterResponse keyRegisterResponse)
 {
     SendResponse(outputStream, RawMessageCodec.EncodeKeyRegisterResponse(keyRegisterResponse));
 }
Example #7
0
 /// <exception cref="System.IO.IOException"/>
 /// <exception cref="U2FException"/>
 public static void SendRegisterRequest(Stream outputStream, KeyRegisterRequest keyRegisterRequest)
 {
     SendRequest(outputStream, CommandRegister, RawMessageCodec.
                 EncodeKeyRegisterRequest(keyRegisterRequest));
 }
Example #8
0
        public static ApduRequest EncodeAuthenticateRequest(KeyRequest <KeySignRequest> request)
        {
            var requestBytes = RawMessageCodec.EncodeKeySignRequest(request.Request);

            return(new ApduRequest(AuthenticateCommand, (byte)request.Flags, 0x00, requestBytes.Segment()));
        }
Example #9
0
        public static ApduRequest EncodeRegisterRequest(KeyRequest <KeyRegisterRequest> request)
        {
            var requestBytes = RawMessageCodec.EncodeKeyRegisterRequest(request.Request);

            return(new ApduRequest(RegisterCommand, (byte)request.Flags, 0x00, requestBytes.Segment()));
        }