use of org.fisco.bcos.channel.protocol.NodeRequestSdkVerifyTopic in project web3sdk by FISCO-BCOS.
the class Service method checkTopicVerify.
public void checkTopicVerify(ChannelHandlerContext ctx, TopicVerifyMessage message) throws IOException {
SocketChannel socketChannel = (SocketChannel) ctx.channel();
logger.info("get rand value request ChannelResponse seq:{} msgtype:{} address:{} port:{}", message.getSeq(), message.getType(), socketChannel.remoteAddress().getAddress().getHostAddress(), socketChannel.remoteAddress().getPort());
logger.info("get rand value request :{} length:{}", Arrays.toString(message.getData()), message.getLength());
sendResponse2Node(ctx, message);
String content = new String(message.getData());
logger.info("content:{} content:{}", content, Arrays.toString(content.getBytes()));
NodeRequestSdkVerifyTopic nodeRequestSdkVerifyTopic = ObjectMapperFactory.getObjectMapper().readValue(content, NodeRequestSdkVerifyTopic.class);
String topic = nodeRequestSdkVerifyTopic.getTopic();
String topicForCert = nodeRequestSdkVerifyTopic.getTopicForCert();
String nodeid = nodeRequestSdkVerifyTopic.getNodeId();
logger.info("topic:{} topicForCert:{} nodeid:{}", topic, topicForCert, nodeid);
ChannelRequest request = new ChannelRequest();
request.setToTopic(topicForCert);
request.setMessageID(newSeq());
request.setTimeout(5000);
request.setType((short) ChannelMessageType.AMOP_REQUEST.getType());
String randValue = UUID.randomUUID().toString().replaceAll("-", "");
TopicVerifyReqProtocol topicVerifyProtocol = new TopicVerifyReqProtocol();
topicVerifyProtocol.setRandValue(randValue);
topicVerifyProtocol.setTopic(topic);
String jsonStr = ObjectMapperFactory.getObjectMapper().writeValueAsString(topicVerifyProtocol);
logger.info("generate rand value jsonStr:{} topic:{} messageid:{}", jsonStr, request.getToTopic(), message.getSeq());
byte[] bytes = topicVerify.getByteBuffByString(request.getToTopic(), jsonStr);
request.setContent(bytes);
asyncSendChannelMessage2(request, new ChannelResponseCallback2() {
@Override
public void onResponseMessage(ChannelResponse response) {
logger.info("get response messageid:{}", response.getMessageID());
try {
checkSignForAmop(topic, String.valueOf(randValue), nodeid, ctx, response);
} catch (IOException e) {
logger.error("check sign for amop failed:{}", e);
}
}
});
}
Aggregations