bool Cssao::Init(unsigned int WindowWidth, unsigned int WindowHeight){ m_noiseScale[0] = WindowWidth / m_noise_size; m_noiseScale[1] = WindowHeight / m_noise_size; CreateKernel(); CreateNoise(); //Create FBO glGenFramebuffers(1, &m_fbo); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fbo); glGenTextures(1, &m_ssaoTexture); glBindTexture(GL_TEXTURE_2D, m_ssaoTexture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, WindowWidth, WindowHeight, 0, GL_RGBA, GL_FLOAT, NULL); glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_ssaoTexture, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); GLenum DrawBuffers[] = {GL_COLOR_ATTACHMENT0}; glDrawBuffers(1, DrawBuffers); GLenum Status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if(Status != GL_FRAMEBUFFER_COMPLETE){ printf("FB error, status 0x%04x", Status); return false; } //Restore default framebuffer glBindFramebuffer(GL_FRAMEBUFFER, 0); return true; }
bool CUserCryptoManager::InitPasswordMode(CFilePage *pPage, const wchar_t *pszPassword) { IDBStoragePtr pDBStorage = m_pDB->getDBStorage(); CRandomGenerator::GetRandomValues(m_szSalt, ___nSALT_SIZE); CRandomGenerator::GetRandomValues(m_szSaltIV, ___nSALT_SIZE); CommonLib::CString sPWD = pszPassword; std::vector<byte> vecUtf8PWD; uint32 nUtf8Len = sPWD.calcUTF8Length(); vecUtf8PWD.resize(nUtf8Len + 1); sPWD.exportToUTF8((char*)&vecUtf8PWD[0], nUtf8Len); m_nOffset = CalcOffset(&vecUtf8PWD[0], nUtf8Len, m_szSalt, ___nSALT_SIZE); m_PageChiper.reset( new CPageCipher( m_qryptoAlg)); m_pCheckPageChiper.reset(new CPageCipher(m_qryptoAlg)); m_PageChiper->SetKey(&vecUtf8PWD[0], nUtf8Len, m_szSalt, m_szSaltIV, ___nSALT_SIZE); ((CStorage*)pDBStorage.get())->setPageChiper(m_PageChiper.get()); m_nPWDPage = CreateCheckPWDPage(); CreateNoise(m_nOffset); CommonLib::FxMemoryWriteStream stream; stream.attachBuffer(pPage->getRowData(), pPage->getPageSize()); sFilePageHeader header(stream, DATABASE_PAGE, DB_ROOT_USER_PAGE, pPage->getPageSize(),true); stream.write((uint16)m_UserMode); stream.write((uint16)m_qryptoAlg); stream.write(m_szSalt, ___nSALT_SIZE); stream.write(m_szSaltIV, ___nSALT_SIZE); stream.write(m_nPWDPage); header.writeCRC32(stream); pPage->setNeedEncrypt(false); pDBStorage->saveFilePage(pPage); pDBStorage->SetOffset(m_nOffset); m_bPWDCheck = true; return true; }
int64 CDatabase::InitCrypto(byte* pPWD, uint32 nLen) { CRandomGenerator::GetRandomValues(m_dbHeader.szSalt, sDBHeader::SALT_SIZE); CRandomGenerator::GetRandomValues(m_dbHeader.szSaltIV, sDBHeader::SALT_SIZE); int64 nOffset = CalcOffset(pPWD, nLen, m_dbHeader.szSalt, sDBHeader::SALT_SIZE); m_PageChiper.reset( new CPageCipher(m_DBParams.qryptoAlg)); m_PageChiper->SetKey(pPWD, nLen, m_dbHeader.szSalt, m_dbHeader.szSaltIV, sDBHeader::SALT_SIZE); ((CStorage*)m_pStorage.get())->setPageChiper(m_PageChiper.get()); CreateCheckPWDPage(); CreateNoise(nOffset); return nOffset; }