@Launcher:
public string EncMsg(string Msg, string Key, out string EncMsg)
{
int iResult;
EncMsg = "";
StringBuilder sbEncMsg = new StringBuilder();
byte[] ret = new byte[3];
byte[] curMsg;
int processedLen = 0;
byte[] msg = Encoding.UTF8.GetBytes(Msg);
int HLen = msg.Length + 4;
byte[] msgBytes = new byte[HLen];
msgBytes.SetValues(msg.Length.ToString("D08").ToHex(), 0, 4);
msgBytes.SetValues(msg, 4, msg.Length);
while (processedLen < HLen)
{
int curLen = HLen - processedLen;
if (curLen > 900)
curLen = 900;
ret = new byte[3];
EncMsg = "";
curMsg = new byte[curLen];
Buffer.BlockCopy(msgBytes, processedLen, curMsg, 0, curLen);
iResult = _hsmRal.HsmIstE0_("0".ToASCII(), "1".ToASCII(), "I".ToASCII(), "0".ToASCII(), Key.ToASCII(), 32, curLen, curMsg, ref EncMsg, ref ret);
if (ret.ToASC(0, 2) == "00")
{
sbEncMsg.Append(EncMsg);
}
else
{
return ret.ToASC(0, 2);
}
processedLen += 900;
}
EncMsg = sbEncMsg.ToString();
return ret.ToASC(0, 2);
}