⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fnaaccumulator.h

📁 手机加密通话软件
💻 H
字号:
/* Copyright 2001,2002,2003 NAH6 BV
 * All Rights Reserved
 *
 *  $Header: /var/lib/cvs/secphone/ui/rng/fortuna/fnaAccumulator.h,v 1.3 2003/11/21 12:39:24 itsme Exp $
 *
 *
 */


#ifndef __FNAACCUMULATOR_H__

#include "vectorutils.h"
#include "fnaPool.h"
#include "fnaGenerator.h"
#include "winMutex.h"

//--------------------------------------------------------------------------
//
// the Accumulator is also referred to as the 'PRNG' in practical cryptography
//
// todo: add flag that signals if we are seeded properly
class Accumulator {
public:
    typedef int sourcenumber_t;
    typedef int poolnumber_t;

    Accumulator();
    ~Accumulator();

    void Initialize();

    bool AddRandomEvent(sourcenumber_t source, poolnumber_t pool, const ByteVector& data);
    bool RandomData(int nBytesRequested, ByteVector& r);

    bool UpdateSeedFile();
    void DoReseed();
    bool WriteSeedFile();

    enum { NROFSOURCES= 256 };
    enum { NROFPOOLS= 32 };
    enum { MINIMUMPOOLSIZE= 64 };           // in bytes
    enum { MINIMUMRESEEDINTERVAL= 100 };    // in msec
    enum { SEEDFILESIZE= 64 };              // in bytes

private:
    Pool m_pools[NROFPOOLS];

    Mutex m_mutexUpdateSeed;

    Generator m_generator;
    DWORD m_reseedtime;
    DWORD m_reseedcount;
    bool m_properly_seeded;

    void AddSystemTimeToRandom(ByteVector& random);

};


#define __FNAACCUMULATOR_H__
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -