///////////////////////////////////////////////////////////////////////////// // 장애정보설정 ///////////////////////////////////////////////////////////////////////////// void CProfile::ErrSub(DERRINFO* DErrInfo, char* MainSec, char* SubSec) { int i = 0; char SUB_SECT[81]; HERRINFO MAIN; DERRINFO ERR; memcpy(&ERR.Remark[0], &DErrInfo->Remark[0], sizeof(ERR.Remark) - 1); ERR.Remark[sizeof(ERR.Remark)-1] = NULL; // V05-01-04-#06:codesonar 오류지적 i = 0; MAIN.Loop = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); MAIN.Count = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); sprintf(SUB_SECT, "%s %d", SubSec, MAIN.Count); i = 0; PutPStr(SUB_SECT, ErrName[i++].name, ERR.Remark, sizeof(ERR.Remark), _ERRHOST_INI); MAIN.Count++; // 위치정보 if (MAIN.Count >= ErrHost_MaxNumber) { MAIN.Loop = 1; // 환영 PutPInt(MainSec, Main[0].name, MAIN.Loop, _ERRHOST_INI); MAIN.Count = 0; } PutPInt(MainSec, Main[1].name, MAIN.Count, _ERRHOST_INI); }
///////////////////////////////////////////////////////////////////////////// // 현재장애정보 ///////////////////////////////////////////////////////////////////////////// int CProfile::GetCrtErrSub(DERRINFO* DErrInfo, char* MainSec, char* SubSec) { int i = 0, ii = 0; char SUB_SECT[81]; HERRINFO MAIN; DERRINFO ERR; i = 0; MAIN.Loop = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); MAIN.Count = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); if (MAIN.Loop || MAIN.Count) // 장애 있슴 { if (MAIN.Count == 0) MAIN.Count = ErrHost_MaxNumber - 1; else MAIN.Count = MAIN.Count - 1; sprintf(SUB_SECT, "%s %d", SubSec, MAIN.Count); i = 0; GetPStr(SUB_SECT, ErrName[i++].name, '?', ERR.Remark, sizeof(ERR.Remark), _ERRHOST_INI); return 1; } else return 0; }
///////////////////////////////////////////////////////////////////////////// // 전체장애정보 ///////////////////////////////////////////////////////////////////////////// int CProfile::GetAllErrSub(DERRINFO* DErrInfo, char* MainSec, char* SubSec) { int i = 0, ii = 0; char SUB_SECT[81]; HERRINFO MAIN; DERRINFO ERR; i = 0; MAIN.Loop = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); MAIN.Count = GetPInt(MainSec, Main[i++].name, 0, _ERRHOST_INI); if (MAIN.Loop || MAIN.Count) // 장애 있슴 { if (MAIN.Count) { for (int j = (MAIN.Count - 1); j >= 0; j--) // 최근순서부터 { sprintf(SUB_SECT, "%s %d", SubSec, j); i = 0; GetPStr(SUB_SECT, ErrName[i++].name, '?', ERR.Remark, sizeof(ERR.Remark), _ERRHOST_INI); memcpy(&DErrInfo[ii++], &ERR, sizeof(DERRINFO)); } } if (MAIN.Loop) { for (int j = (ErrHost_MaxNumber - 1); j >= MAIN.Count; j--) { sprintf(SUB_SECT, "%s %d", SubSec, j); i = 0; GetPStr(SUB_SECT, ErrName[i++].name, '?', ERR.Remark, sizeof(ERR.Remark), _ERRHOST_INI); memcpy(&DErrInfo[ii++], &ERR, sizeof(DERRINFO)); } return ErrHost_MaxNumber; } else return MAIN.Count; } else return 0; }
CppDiffieHellman::CppDiffieHellman(const QByteArray &data, bool seed) { _dh_params.AccessGroupParameters().Initialize(GetPInt(), GetQInt(), GetGInt()); _public_key = QByteArray(_dh_params.PublicKeyLength(), 0); CppRandom rng(data); if(data.isEmpty() || seed) { _private_key = QByteArray(_dh_params.PrivateKeyLength(), 0); _dh_params.GenerateKeyPair(*rng.GetHandle(), reinterpret_cast<byte *>(_private_key.data()), reinterpret_cast<byte *>(_public_key.data())); } else { _private_key = data; // This DOES NOT use the rng _dh_params.GeneratePublicKey(*rng.GetHandle(), reinterpret_cast<byte *>(_private_key.data()), reinterpret_cast<byte *>(_public_key.data())); } }