public async Task HandleAsync() { NodeResponse response; if (request.KeyId == null) { response = new PublicKeyNodeResponse( request.RequestId, NodeData.Instance.NodeKeys.PublicKey, NodeData.Instance.NodeKeys.SignPublicKey, NodeData.Instance.NodeKeys.KeyId, NodeData.Instance.NodeKeys.ExpirationTime); } else { var key = await keysService.GetNodeKeysAsync(NodeSettings.Configs.Node.Id, request.KeyId.Value); if (key == null) { response = new ResultNodeResponse(request.RequestId, ObjectsLibrary.Enums.ErrorCode.ObjectDoesNotExists, "The key was not found."); } else { response = new PublicKeyNodeResponse(request.RequestId, key.PublicKey, key.SignPublicKey, key.KeyId, key.ExpirationTime); } } await NodeWebSocketCommunicationManager.SendResponseAsync(response, current).ConfigureAwait(false); }
public async Task <NodeKeysDto> GetNodePublicKeyAsync(NodeConnection nodeConnection, long?keyId = null) { NodeRequest nodeRequest = keyId == null ? new GetPublicKeyNodeRequest() : new GetPublicKeyNodeRequest(keyId.Value); SendRequest(nodeConnection, nodeRequest); try { NodeResponse response = await GetResponseAsync(nodeRequest).ConfigureAwait(false); switch (response.ResponseType) { case Enums.NodeResponseType.PublicKey: { PublicKeyNodeResponse nodeKeysResponse = (PublicKeyNodeResponse)response; return(new NodeKeysDto { NodeId = (nodeConnection.Node?.Id).GetValueOrDefault(), KeyId = nodeKeysResponse.KeyId, PublicKey = nodeKeysResponse.PublicKey, ExpirationTime = nodeKeysResponse.ExpirationTime, SignPublicKey = nodeKeysResponse.SignPublicKey }); } default: return(null); } } catch (ResponseException ex) { Logger.WriteLog(ex); return(null); } }