//读取标签信息到相关文本框 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 }); }
/// <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 }); }
/// <summary> /// 转化为16字节字符串数组 /// </summary> /// <returns></returns> public override string ToString() { return(ConvertHelper.ByteArrayToHexString(ToArray())); }