Files
ANSLibs/chilkat/include/CkPrng.h

314 lines
13 KiB
C++

// CkPrng.h: interface for the CkPrng class.
//
//////////////////////////////////////////////////////////////////////
// This header is generated for Chilkat 11.3.0
#define _CkVersion 11.3.0
#ifndef _CkPrng_H
#define _CkPrng_H
#include "chilkatDefs.h"
#include "CkString.h"
#include "CkMultiByteBase.h"
class CkByteData;
class CkBinData;
#if !defined(__sun__) && !defined(__sun)
#pragma pack (push, 8)
#endif
#undef Copy
// CLASS: CkPrng
class CK_VISIBLE_PUBLIC CkPrng : public CkMultiByteBase
{
private:
// Don't allow assignment or copying these objects.
CkPrng(const CkPrng &);
CkPrng &operator=(const CkPrng &);
public:
CkPrng(void);
virtual ~CkPrng(void);
static CkPrng *createNew(void);
static CkPrng *createNew2(int progLang);
void CK_VISIBLE_PRIVATE inject(void *impl);
// May be called when finished with the object to free/dispose of any
// internal resources held by the object.
void dispose(void);
// BEGIN PUBLIC INTERFACE
// ----------------------
// Properties
// ----------------------
// The name of the PRNG selected. Currently, the default and only possible value is
// fortuna . See the links below for information about the Fortuna PRNG.
//
// Note: Because fortuna is the only valid choice, assigning this property to a
// different value will always be ignored (until alternative PRNG algorithms are
// added in the future).
//
void get_PrngName(CkString &str);
// The name of the PRNG selected. Currently, the default and only possible value is
// fortuna . See the links below for information about the Fortuna PRNG.
//
// Note: Because fortuna is the only valid choice, assigning this property to a
// different value will always be ignored (until alternative PRNG algorithms are
// added in the future).
//
const char *prngName(void);
// The name of the PRNG selected. Currently, the default and only possible value is
// fortuna . See the links below for information about the Fortuna PRNG.
//
// Note: Because fortuna is the only valid choice, assigning this property to a
// different value will always be ignored (until alternative PRNG algorithms are
// added in the future).
//
void put_PrngName(const char *newVal);
// ----------------------
// Methods
// ----------------------
// Adds entropy to the PRNG (i.e. adds more seed material to the PRNG). Entropy can
// be obtained by calling GetEntropy, or the application might have its own sources
// for obtaining entropy. An application may continue to add entropy at desired
// intervals. How the entropy is used depends on the PRNG algorithm. For Fortuna,
// the entropy is added to the internal entropy pools and used when internal
// automatic reseeding occurs.
//
// An application may add non-random entropy for testing purposes. This allows for
// the reproduction of the same pseudo-random number sequence for testing and
// debugging purposes.
//
// The entropy bytes are passed in entropy using the binary encoding specified in
// encoding. Binary encodings can be hex , base64 , etc. See the link below for
// supported binary encodings.
//
bool AddEntropy(const char *entropy, const char *encoding);
// Adds entropy to the PRNG (i.e. adds more seed material to the PRNG). Entropy can
// be obtained by calling GetEntropy, or the application might have its own sources
// for obtaining entropy. An application may continue to add entropy at desired
// intervals. How the entropy is used depends on the PRNG algorithm. For Fortuna,
// the entropy is added to the internal entropy pools and used when internal
// automatic reseeding occurs.
//
// An application may add non-random entropy for testing purposes. This allows for
// the reproduction of the same pseudo-random number sequence for testing and
// debugging purposes.
//
bool AddEntropyBytes(CkByteData &entropy);
// Exports all accumulated entropy and returns it in a base64 encoded string.
// (Internally the entropy pools are re-hashed so that a hacker cannot determine
// the state of the PRNG even if the exported entropy was obtained.) When a system
// restarts it can import what was previously exported by calling ImportEntropy.
// This ensures an adequate amount of entropy is immediately available when first
// generating random bytes.
//
// For example, an application could persist the exported entropy to a database or
// file. When the application starts again, it could import the persisted entropy,
// add some entropy from a system source (via the GetEntropy/AddEntropy methods),
// and then begin generating random data.
//
bool ExportEntropy(CkString &outStr);
// Exports all accumulated entropy and returns it in a base64 encoded string.
// (Internally the entropy pools are re-hashed so that a hacker cannot determine
// the state of the PRNG even if the exported entropy was obtained.) When a system
// restarts it can import what was previously exported by calling ImportEntropy.
// This ensures an adequate amount of entropy is immediately available when first
// generating random bytes.
//
// For example, an application could persist the exported entropy to a database or
// file. When the application starts again, it could import the persisted entropy,
// add some entropy from a system source (via the GetEntropy/AddEntropy methods),
// and then begin generating random data.
//
const char *exportEntropy(void);
// Generates a random Firebase Push ID. See Firebase Unique Identifiers.
//
// References:
// 1: https://www.firebase.com/blog/2015-02-11-firebase-unique-identifiers.html
bool FirebasePushId(CkString &outStr);
// Generates a random Firebase Push ID. See Firebase Unique Identifiers.
//
// References:
// 1: https://www.firebase.com/blog/2015-02-11-firebase-unique-identifiers.html
const char *firebasePushId(void);
// Generates and returns numBytes random bytes in encoded string form. The binary
// encoding is specified by encoding, and can be hex , base64 , etc. (See the link
// below for supported binary encodings.)
//
// Important: If no entropy was explicitly added prior to first call to generate
// random bytes, then 32 bytes of entropy (from the system source, such as
// /dev/random) are automatically added to seed the PRNG.
//
bool GenRandom(int numBytes, const char *encoding, CkString &outStr);
// Generates and returns numBytes random bytes in encoded string form. The binary
// encoding is specified by encoding, and can be hex , base64 , etc. (See the link
// below for supported binary encodings.)
//
// Important: If no entropy was explicitly added prior to first call to generate
// random bytes, then 32 bytes of entropy (from the system source, such as
// /dev/random) are automatically added to seed the PRNG.
//
const char *genRandom(int numBytes, const char *encoding);
// Appends numBytes random bytes to bd.
//
// Important: If no entropy was explicitly added prior to first call to generate
// random bytes, then 32 bytes of entropy (from the system source, such as
// /dev/random) are automatically added to seed the PRNG.
//
bool GenRandomBd(int numBytes, CkBinData &bd);
// Generates and returns numBytes random bytes.
//
// Important: If no entropy was explicitly added prior to first call to generate
// random bytes, then 32 bytes of entropy (from the system source, such as
// /dev/random) are automatically added to seed the PRNG.
//
bool GenRandomBytes(int numBytes, CkByteData &outBytes);
// Reads real entropy bytes from a system entropy source and returns as an encoded
// string. On Linux/Unix based systems, including MAC OS X, this is accomplished by
// reading /dev/random. On Windows systems, it uses the Microsoft Cryptographic
// Service Provider's CryptGenRandom method.
//
// It is recommended that no more than 32 bytes of entropy should be retrieved to
// initially seed a PRNG. Larger amounts of entropy are fairly useless. However, an
// app is free to periodically add bits of entropy to a long-running PRNG as it
// sees fit.
//
// The encoding specifies the encoding to be used. It can be hex , base64 , or many
// other possibilities. See the link below.
//
bool GetEntropy(int numBytes, const char *encoding, CkString &outStr);
// Reads real entropy bytes from a system entropy source and returns as an encoded
// string. On Linux/Unix based systems, including MAC OS X, this is accomplished by
// reading /dev/random. On Windows systems, it uses the Microsoft Cryptographic
// Service Provider's CryptGenRandom method.
//
// It is recommended that no more than 32 bytes of entropy should be retrieved to
// initially seed a PRNG. Larger amounts of entropy are fairly useless. However, an
// app is free to periodically add bits of entropy to a long-running PRNG as it
// sees fit.
//
// The encoding specifies the encoding to be used. It can be hex , base64 , or many
// other possibilities. See the link below.
//
const char *getEntropy(int numBytes, const char *encoding);
// Reads real entropy bytes from a system entropy source and returns as an encoded
// string. On Linux/Unix based systems, including MAC OS X, this is accomplished by
// reading /dev/random. On Windows systems, it uses the Microsoft Cryptographic
// Service Provider's CryptGenRandom method.
//
// It is recommended that no more than 32 bytes of entropy should be retrieved to
// initially seed a PRNG. Larger amounts of entropy are fairly useless. However, an
// app is free to periodically add bits of entropy to a long-running PRNG as it
// sees fit.
//
// The encoding specifies the encoding to be used. It can be hex , base64 , or many
// other possibilities. See the link below.
//
const char *entropy(int numBytes, const char *encoding);
// Reads and returns real entropy bytes from a system entropy source. On Linux/Unix
// based systems, including MAC OS X, this is accomplished by reading /dev/random.
// On Windows systems, it uses the Microsoft Cryptographic Service Provider's
// CryptGenRandom method.
//
// It is recommended that no more than 32 bytes of entropy should be retrieved to
// initially seed a PRNG. Larger amounts of entropy are fairly useless. However, an
// app is free to periodically add bits of entropy to a long-running PRNG as it
// sees fit.
//
bool GetEntropyBytes(int numBytes, CkByteData &outBytes);
// Imports entropy from previously exported entropy. See the ExportEntropy method
// for more information.
bool ImportEntropy(const char *entropy);
// Generates and returns a random integer between low and high (inclusive). For
// example, if low is 4 and high is 8, then random integers in the range 4, 5, 6,
// 7, 8 are returned.
int RandomInt(int low, int high);
// Generates and returns a random password of a specified length. If mustIncludeDigit is
// true, the generated password will contain at least one digit (0-9). If upperAndLowercase is
// true, then generated password will contain both lowercase and uppercase
// USASCII chars (a-z and A-Z). If mustHaveOneOf is a non-empty string, it contains the set
// of non-alphanumeric characters, one of which must be included in the password.
// For example, mustHaveOneOf might be the string !@#$% . If excludeChars is a non-empty string, it
// contains chars that should be excluded from the password. A typical need would
// be to exclude chars that appear similar to others, such as i, l, 1, L, o, 0, O.
bool RandomPassword(int length, bool mustIncludeDigit, bool upperAndLowercase, const char *mustHaveOneOf, const char *excludeChars, CkString &outStr);
// Generates and returns a random password of a specified length. If mustIncludeDigit is
// true, the generated password will contain at least one digit (0-9). If upperAndLowercase is
// true, then generated password will contain both lowercase and uppercase
// USASCII chars (a-z and A-Z). If mustHaveOneOf is a non-empty string, it contains the set
// of non-alphanumeric characters, one of which must be included in the password.
// For example, mustHaveOneOf might be the string !@#$% . If excludeChars is a non-empty string, it
// contains chars that should be excluded from the password. A typical need would
// be to exclude chars that appear similar to others, such as i, l, 1, L, o, 0, O.
const char *randomPassword(int length, bool mustIncludeDigit, bool upperAndLowercase, const char *mustHaveOneOf, const char *excludeChars);
// Generates and returns a random string that may contain digits (0-9), lowercase
// ASCII (a-z) , and uppercase ASCII (A-Z). To include numeric digits, set bDigits
// equal to true. To include lowercase ASCII, set bLower equal to true. To
// include uppercase ASCII, set bUpper equal to true. The length of the string to
// be generated is specified by length.
bool RandomString(int length, bool bDigits, bool bLower, bool bUpper, CkString &outStr);
// Generates and returns a random string that may contain digits (0-9), lowercase
// ASCII (a-z) , and uppercase ASCII (A-Z). To include numeric digits, set bDigits
// equal to true. To include lowercase ASCII, set bLower equal to true. To
// include uppercase ASCII, set bUpper equal to true. The length of the string to
// be generated is specified by length.
const char *randomString(int length, bool bDigits, bool bLower, bool bUpper);
// END PUBLIC INTERFACE
};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
#endif