Esempio n. 1
0
 //读取标签信息到相关文本框  txtID帐号 txtName账户姓名
 private void ReadInfo(TextBox txtID, TextBox txtname)
 {
     //如果没有发现可用设备,则提示信息
     if (!getinvatehandle)
     {
         MessageBox.Show("请连接相关设备!");
         return;
     }
     try
     {
         byte[] tagId      = new byte[12];
         byte[] antennaNos = new byte[1];
         byte[] data       = new byte[12];
         //获取账户帐号
         if (txtID != null && EPCSDKHelper.IdentifySingleTag(handle, tagId, antennaNos, 0))
         {
             txtID.Text = ConvertHelper.ByteArrayToHexString(tagId);
             //获取账户姓名
             if (txtname != null && EPCSDKHelper.ReadTag(handle, 0x03, 0, 6, data, 0))
             {
                 txtname.Text = Encoding.Default.GetString(data);
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
        /// <summary>
        /// Open a new authenticated session via password
        /// </summary>
        /// <param name="spaceName">space name</param>
        /// <param name="password">space password</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <ApiSession> OpenSessionViaSpacePasswordAsync(string spaceName, string password, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(spaceName))
            {
                throw new ArgumentException("Space name is not set.", nameof(spaceName));
            }

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            var passwordHash = CryptographyHelper.CalculateSha256HEX(password);
            var serverNonce  = await internalGetAuthNonceAsync(GetHttpClient(), cancellationToken);

            var clientNonce = ConvertHelper.ByteArrayToHexString(CryptographyHelper.GenerateRandomSequence(16));
            var all         = passwordHash + serverNonce + clientNonce;
            var allHash     = CryptographyHelper.CalculateSha256HEX(all);


            var token = await internalAuthLoginAsync(clientNonce, serverNonce, spaceName, allHash, cancellationToken);

            return(new ApiSession(this)
            {
                AuthToken = token,
                IsAnonymous = false,
                IsClosed = false,
                SpaceName = spaceName
            });
        }
Esempio n. 3
0
        /// <summary>
        /// Open a new authenticated session via password
        /// </summary>
        /// <param name="spaceName">space name</param>
        /// <param name="password">space password</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        static async Task <ApiSession> OpenSessionViaSpacePasswordAsync(OpenSessionAuthenticatorContext context, string spaceName, string password, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(spaceName))
            {
                throw new ArgumentException("Space name is not set.", nameof(spaceName));
            }

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            var passwordSha256       = CryptographyHelper.CalculateSha256HEX(password);
            var serverNonceApiResult = await context.LowLevelApiClient.AuthGenerateNonce(cancellationToken);

            serverNonceApiResult.ThrowIfFailed();
            var serverNonce  = serverNonceApiResult.Data.Nonce;
            var clientNonce  = ConvertHelper.ByteArrayToHexString(CryptographyHelper.GenerateRandomSequence(16));
            var all          = passwordSha256 + serverNonce + clientNonce;
            var composedHash = CryptographyHelper.CalculateSha256HEX(all);


            var requestDto = new LoginRequestDto
            {
                ClientSeed   = clientNonce,
                Password     = composedHash,
                Provider     = "Space",
                UserName     = spaceName,
                RequestToken = serverNonce
            };
            var authApiResult = await context.LowLevelApiClient.AuthLoginPasswordAsync(requestDto, cancellationToken);

            authApiResult.ThrowIfFailed();
            var token = authApiResult.Data.Token;


            return(new ApiSession(context.MorphServerApiClient)
            {
                AuthToken = token,
                IsAnonymous = false,
                IsClosed = false,
                SpaceName = spaceName
            });
        }
Esempio n. 4
0
 /// <summary>
 /// 转化为16字节字符串数组
 /// </summary>
 /// <returns></returns>
 public override string ToString()
 {
     return(ConvertHelper.ByteArrayToHexString(ToArray()));
 }