📄 readme
字号:
Yarrow - Secure Pseudo-Random Number Generator==============================================This is an implementation of the cryptographic pseudo-random numbergenerator Yarrow. You are encouraged to use, modify, and incorporatethis code. Please see the accompanying LICENSE file for more details.Yarrow can be used with OpenSSL 0.9.5a (http://www.openssl.org) andother cryptographic libraries.The Yarrow design is described in "Yarrow-160: Notes on the Design andAnalysis of the Yarrow Cryptographic Pseudorandom Number Generator" byJohn Kelsey, Bruce Schneier and Niels Ferguson of Counterpane Systems,available from http://www.counterpane.com/yarrow.htmlThe Yarrow function calls are described in the yarrow(3) manpage.Installation============By default, Yarrow is built with OpenSSL. If the OpenSSL headers arenot installed in the standard directory /usr/local/ssl/include,set the path in the Makefile.If it is possible that an application using Yarrow will fork(), Yarrowmust be compiled with -DYARROW_DETECT_FORK (then the child processwill have to seed Yarrow again), or the Yarrow_CTX must be allocatedin shared memory.If compiled with -DYARROW_SAVE_STATE, Yarrow will use a seed filespecified in the Yarrow_Init call.When the settings in the Makefile are correct, run "make".Yarrow with OpenSSL:-------------------The macros YARROW_CIPHER_3DES (default), YARROW_CIPHER_BLOWFISH andYARROW_CIPHER_IDEA for ciphers and YARROW_HASH_SHA1 (default) andYARROW_HASH_MD5 for hash functions are available to select algorithmsfrom OpenSSL.CRYPTO_set_locking_callback() is required in multithreaded applications.Yarrow with other cryptographic libraries:-----------------------------------------The Yarrow implementation uses a symmetric cipher, a cryptographichash function and a mutex. By default, Yarrow calls OpenSSL. For usewith other cryptographic libraries, the following types and macrosshould be defined:Symmetric cipher - ycipher.h: typedef struct { ... } CIPHER_CTX; #define CIPHER_BLOCK_SIZE ... #define CIPHER_KEY_SIZE ... void CIPHER_Init(CIPHER_CTX *ctx, void *key); void CIPHER_Encrypt_Block(CIPHER_CTX *ctx, void *in, void *out);Hash function - yhash.h: typedef struct { ... } HASH_CTX; #define HASH_DIGEST_SIZE ... #define HASH_STATE_SIZE ... void HASH_Init(HASH_CTX *ctx); void HASH_Update(HASH_CTX *ctx, const void *data, unsigned long size); void HASH_Final(HASH_CTX *ctx, unsigned char *md);Mutex - ylock.h: int LOCK(void); int UNLOCK(void);Learn More:----------It is Zero-Knowledge's hope that third party developers of yarrow willcollaborate to derive test vectors for yarrow. In an effort to furtherthis discussion, we have created a mailing list for developers andinterested parties. To subscribe, send an email to"yarrow-request@zeroknowledge.com" with "subscribe" in the body of themessage.For more information, or if you have questions or comments regarding opensource at Zero-Knowledge Systems, please visithttp://opensource.zeroknowledge.com
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -