package com.cwa.msg.sign; import com.cwa.crypto.RsaKeyHolder; import com.cwa.crypto.RsaUtil; import com.cwa.gamecore.io.GameOutput; import com.cwa.gamecore.message.GameMessage; import com.cwa.gamecore.message.GameResponse; import com.cwa.gamecore.util.MessageUtil; import com.cwa.msg.WrapperResponse; /** * 用服务器私钥签名的响应消息。 */ public class RsaSignedResponse extends WrapperResponse { public RsaSignedResponse(GameResponse wrappedResponse) { this.wrappedResponse = wrappedResponse; } @Override public int getCommandId() { return GameMessage.CMD_SIGNED_ACTION; } @Override public void encodeBody(GameOutput out) { byte[] msgData = MessageUtil.encode(wrappedResponse); byte[] msgSign = RsaUtil.sign(msgData, RsaKeyHolder.getInstance().getPrivateKey()); out.putBytes(msgData); out.putBytes(msgSign); } }