Warning, /libraries/qca/src/botantools/botantools.diff is written in an unsupported language. File is not indexed.
0001 diff -ur a/include/bigint.h b/include/bigint.h 0002 --- a/include/bigint.h 2007-03-24 11:51:37.000000000 -0700 0003 +++ b/include/bigint.h 2007-06-26 11:31:40.000000000 -0700 0004 @@ -6,7 +6,13 @@ 0005 #ifndef BOTAN_BIGINT_H__ 0006 #define BOTAN_BIGINT_H__ 0007 0008 -#include <botan/base.h> 0009 +#ifdef BOTAN_MINIMAL_BIGINT 0010 +# include <botan/secmem.h> 0011 +# include <botan/exceptn.h> 0012 +#else 0013 +# include <botan/base.h> 0014 +#endif 0015 + 0016 #include <botan/mp_types.h> 0017 #include <iosfwd> 0018 0019 @@ -82,7 +88,9 @@ 0020 word operator[](u32bit index) const { return reg[index]; } 0021 void clear() { reg.clear(); } 0022 0023 +#ifndef BOTAN_MINIMAL_BIGINT 0024 void randomize(u32bit = 0); 0025 +#endif 0026 0027 void binary_encode(byte[]) const; 0028 void binary_decode(const byte[], u32bit); 0029 @@ -102,7 +110,9 @@ 0030 BigInt(const std::string&); 0031 BigInt(const byte[], u32bit, Base = Binary); 0032 BigInt(Sign, u32bit); 0033 +#ifndef BOTAN_MINIMAL_BIGINT 0034 BigInt(NumberType, u32bit); 0035 +#endif 0036 private: 0037 void grow_to(u32bit) const; 0038 SecureVector<word> reg; 0039 @@ -140,15 +150,19 @@ 0040 /************************************************* 0041 * I/O Operators * 0042 *************************************************/ 0043 +#ifndef BOTAN_MINIMAL_BIGINT 0044 std::ostream& operator<<(std::ostream&, const BigInt&); 0045 std::istream& operator>>(std::istream&, BigInt&); 0046 +#endif 0047 0048 } 0049 0050 +#ifndef BOTAN_MINIMAL_BIGINT 0051 namespace std { 0052 0053 inline void swap(Botan::BigInt& a, Botan::BigInt& b) { a.swap(b); } 0054 0055 } 0056 +#endif 0057 0058 #endif 0059 diff -ur a/include/charset.h b/include/charset.h 0060 --- a/include/charset.h 2007-03-24 11:51:37.000000000 -0700 0061 +++ b/include/charset.h 2007-06-26 11:31:40.000000000 -0700 0062 @@ -7,7 +7,9 @@ 0063 #define BOTAN_CHARSET_H__ 0064 0065 #include <botan/types.h> 0066 +#ifndef BOTAN_TOOLS_ONLY 0067 #include <botan/enums.h> 0068 +#endif 0069 #include <string> 0070 0071 namespace Botan { 0072 @@ -15,6 +17,7 @@ 0073 /************************************************* 0074 * Character Set Transcoder Interface * 0075 *************************************************/ 0076 +#ifndef BOTAN_TOOLS_ONLY 0077 class Charset_Transcoder 0078 { 0079 public: 0080 @@ -23,13 +26,16 @@ 0081 0082 virtual ~Charset_Transcoder() {} 0083 }; 0084 +#endif 0085 0086 namespace Charset { 0087 0088 /************************************************* 0089 * Character Set Handling * 0090 *************************************************/ 0091 +#ifndef BOTAN_TOOLS_ONLY 0092 std::string transcode(const std::string&, Character_Set, Character_Set); 0093 +#endif 0094 0095 bool is_digit(char); 0096 bool is_space(char); 0097 diff -ur a/include/libstate.h b/include/libstate.h 0098 --- a/include/libstate.h 2007-03-24 11:51:37.000000000 -0700 0099 +++ b/include/libstate.h 2007-06-26 11:31:40.000000000 -0700 0100 @@ -6,9 +6,13 @@ 0101 #ifndef BOTAN_LIB_STATE_H__ 0102 #define BOTAN_LIB_STATE_H__ 0103 0104 +#ifdef BOTAN_TOOLS_ONLY 0105 +#include <botan/allocate.h> 0106 +#else 0107 #include <botan/base.h> 0108 #include <botan/enums.h> 0109 #include <botan/ui.h> 0110 +#endif 0111 #include <string> 0112 #include <vector> 0113 #include <map> 0114 @@ -21,6 +25,7 @@ 0115 class Library_State 0116 { 0117 public: 0118 +#ifndef BOTAN_TOOLS_ONLY 0119 class Engine_Iterator 0120 { 0121 public: 0122 @@ -38,11 +43,18 @@ 0123 virtual void pulse(Pulse_Type) {} 0124 virtual ~UI() {} 0125 }; 0126 +#endif 0127 0128 + int prealloc_size; 0129 Allocator* get_allocator(const std::string& = "") const; 0130 void add_allocator(Allocator*); 0131 +#ifdef BOTAN_TOOLS_ONLY 0132 + void set_default_allocator(const std::string&); 0133 +#else 0134 void set_default_allocator(const std::string&) const; 0135 +#endif 0136 0137 +#ifndef BOTAN_TOOLS_ONLY 0138 bool rng_is_seeded() const { return rng->is_seeded(); } 0139 void randomize(byte[], u32bit); 0140 0141 @@ -51,19 +63,23 @@ 0142 void add_entropy(const byte[], u32bit); 0143 void add_entropy(EntropySource&, bool); 0144 u32bit seed_prng(bool, u32bit); 0145 +#endif 0146 0147 void load(class Modules&); 0148 0149 +#ifndef BOTAN_TOOLS_ONLY 0150 void set_timer(class Timer*); 0151 u64bit system_clock() const; 0152 0153 class Config& config() const; 0154 0155 void add_engine(class Engine*); 0156 +#endif 0157 0158 class Mutex* get_mutex() const; 0159 class Mutex* get_named_mutex(const std::string&); 0160 0161 +#ifndef BOTAN_TOOLS_ONLY 0162 void set_x509_state(class X509_GlobalState*); 0163 class X509_GlobalState& x509_state(); 0164 0165 @@ -73,6 +89,7 @@ 0166 void set_transcoder(class Charset_Transcoder*); 0167 std::string transcode(const std::string, 0168 Character_Set, Character_Set) const; 0169 +#endif 0170 0171 Library_State(class Mutex_Factory*); 0172 ~Library_State(); 0173 @@ -80,23 +97,34 @@ 0174 Library_State(const Library_State&) {} 0175 Library_State& operator=(const Library_State&) { return (*this); } 0176 0177 +#ifndef BOTAN_TOOLS_ONLY 0178 class Engine* get_engine_n(u32bit) const; 0179 +#endif 0180 0181 class Mutex_Factory* mutex_factory; 0182 +#ifndef BOTAN_TOOLS_ONLY 0183 class Timer* timer; 0184 class Config* config_obj; 0185 class X509_GlobalState* x509_state_obj; 0186 +#endif 0187 0188 std::map<std::string, class Mutex*> locks; 0189 std::map<std::string, Allocator*> alloc_factory; 0190 mutable Allocator* cached_default_allocator; 0191 +#ifdef BOTAN_TOOLS_ONLY 0192 + std::string default_allocator_type; 0193 +#endif 0194 0195 +#ifndef BOTAN_TOOLS_ONLY 0196 UI* ui; 0197 class Charset_Transcoder* transcoder; 0198 RandomNumberGenerator* rng; 0199 +#endif 0200 std::vector<Allocator*> allocators; 0201 +#ifndef BOTAN_TOOLS_ONLY 0202 std::vector<EntropySource*> entropy_sources; 0203 std::vector<class Engine*> engines; 0204 +#endif 0205 }; 0206 0207 /************************************************* 0208 diff -ur a/include/mem_ops.h b/include/mem_ops.h 0209 --- a/include/mem_ops.h 2007-03-24 11:51:37.000000000 -0700 0210 +++ b/include/mem_ops.h 2007-06-26 11:31:40.000000000 -0700 0211 @@ -8,6 +8,7 @@ 0212 0213 #include <botan/types.h> 0214 #include <cstring> 0215 +#include <string.h> 0216 0217 namespace Botan { 0218 0219 @@ -15,16 +16,16 @@ 0220 * Memory Manipulation Functions * 0221 *************************************************/ 0222 template<typename T> inline void copy_mem(T* out, const T* in, u32bit n) 0223 - { std::memmove(out, in, sizeof(T)*n); } 0224 + { memmove(out, in, sizeof(T)*n); } 0225 0226 template<typename T> inline void clear_mem(T* ptr, u32bit n) 0227 - { std::memset(ptr, 0, sizeof(T)*n); } 0228 + { memset(ptr, 0, sizeof(T)*n); } 0229 0230 template<typename T> inline void set_mem(T* ptr, u32bit n, byte val) 0231 - { std::memset(ptr, val, sizeof(T)*n); } 0232 + { memset(ptr, val, sizeof(T)*n); } 0233 0234 template<typename T> inline bool same_mem(const T* p1, const T* p2, u32bit n) 0235 - { return (std::memcmp(p1, p2, sizeof(T)*n) == 0); } 0236 + { return (memcmp(p1, p2, sizeof(T)*n) == 0); } 0237 0238 } 0239 0240 diff -ur a/include/mem_pool.h b/include/mem_pool.h 0241 --- a/include/mem_pool.h 2007-03-24 11:51:37.000000000 -0700 0242 +++ b/include/mem_pool.h 2007-06-26 11:31:40.000000000 -0700 0243 @@ -46,13 +46,17 @@ 0244 byte* alloc(u32bit) throw(); 0245 void free(void*, u32bit) throw(); 0246 0247 - bool operator<(const void*) const; 0248 bool operator<(const Memory_Block& other) const 0249 - { return (buffer < other.buffer); } 0250 + { 0251 + if(buffer < other.buffer && other.buffer < buffer_end) 0252 + return false; 0253 + return (buffer < other.buffer); 0254 + } 0255 + 0256 private: 0257 typedef u64bit bitmap_type; 0258 - static const u32bit BITMAP_SIZE = 8 * sizeof(bitmap_type); 0259 - static const u32bit BLOCK_SIZE = 64; 0260 + static const u32bit BITMAP_SIZE; 0261 + static const u32bit BLOCK_SIZE; 0262 0263 bitmap_type bitmap; 0264 byte* buffer, *buffer_end; 0265 Only in b/include: mmap_mem.h 0266 diff -ur a/include/modules.h b/include/modules.h 0267 --- a/include/modules.h 2007-03-24 11:51:37.000000000 -0700 0268 +++ b/include/modules.h 2007-06-26 11:31:40.000000000 -0700 0269 @@ -6,7 +6,9 @@ 0270 #ifndef BOTAN_MODULE_FACTORIES_H__ 0271 #define BOTAN_MODULE_FACTORIES_H__ 0272 0273 +#ifndef BOTAN_TOOLS_ONLY 0274 #include <botan/init.h> 0275 +#endif 0276 #include <string> 0277 #include <vector> 0278 0279 @@ -19,14 +21,18 @@ 0280 { 0281 public: 0282 virtual class Mutex_Factory* mutex_factory() const = 0; 0283 +#ifndef BOTAN_TOOLS_ONLY 0284 virtual class Timer* timer() const = 0; 0285 virtual class Charset_Transcoder* transcoder() const = 0; 0286 +#endif 0287 0288 virtual std::string default_allocator() const = 0; 0289 0290 virtual std::vector<class Allocator*> allocators() const = 0; 0291 +#ifndef BOTAN_TOOLS_ONLY 0292 virtual std::vector<class EntropySource*> entropy_sources() const = 0; 0293 virtual std::vector<class Engine*> engines() const = 0; 0294 +#endif 0295 0296 virtual ~Modules() {} 0297 }; 0298 @@ -38,18 +44,30 @@ 0299 { 0300 public: 0301 class Mutex_Factory* mutex_factory() const; 0302 +#ifndef BOTAN_TOOLS_ONLY 0303 class Timer* timer() const; 0304 class Charset_Transcoder* transcoder() const; 0305 +#endif 0306 0307 std::string default_allocator() const; 0308 0309 std::vector<class Allocator*> allocators() const; 0310 +#ifndef BOTAN_TOOLS_ONLY 0311 std::vector<class EntropySource*> entropy_sources() const; 0312 std::vector<class Engine*> engines() const; 0313 +#endif 0314 0315 +#ifdef BOTAN_TOOLS_ONLY 0316 + Builtin_Modules(); 0317 +#else 0318 Builtin_Modules(const InitializerOptions&); 0319 +#endif 0320 private: 0321 +#ifdef BOTAN_TOOLS_ONLY 0322 + const bool should_lock; 0323 +#else 0324 const bool should_lock, use_engines; 0325 +#endif 0326 }; 0327 0328 } 0329 diff -ur a/include/mutex.h b/include/mutex.h 0330 --- a/include/mutex.h 2007-03-24 11:51:37.000000000 -0700 0331 +++ b/include/mutex.h 2007-06-26 11:31:40.000000000 -0700 0332 @@ -55,6 +55,7 @@ 0333 /************************************************* 0334 * Named Mutex Holder * 0335 *************************************************/ 0336 +#ifndef BOTAN_NO_LIBSTATE 0337 class Named_Mutex_Holder 0338 { 0339 public: 0340 @@ -63,6 +64,7 @@ 0341 private: 0342 const std::string mutex_name; 0343 }; 0344 +#endif 0345 0346 } 0347 0348 Only in b/include: mux_qt.h 0349 diff -ur a/include/numthry.h b/include/numthry.h 0350 --- a/include/numthry.h 2007-03-24 11:51:37.000000000 -0700 0351 +++ b/include/numthry.h 2007-06-26 11:31:40.000000000 -0700 0352 @@ -7,11 +7,14 @@ 0353 #define BOTAN_NUMBTHRY_H__ 0354 0355 #include <botan/bigint.h> 0356 +#ifndef BOTAN_MINIMAL_BIGINT 0357 #include <botan/reducer.h> 0358 #include <botan/pow_mod.h> 0359 +#endif 0360 0361 namespace Botan { 0362 0363 +#ifndef BOTAN_MINIMAL_BIGINT 0364 /************************************************* 0365 * Fused Arithmetic Operations * 0366 *************************************************/ 0367 @@ -22,9 +25,11 @@ 0368 * Number Theory Functions * 0369 *************************************************/ 0370 inline BigInt abs(const BigInt& n) { return n.abs(); } 0371 +#endif 0372 0373 void divide(const BigInt&, const BigInt&, BigInt&, BigInt&); 0374 0375 +#ifndef BOTAN_MINIMAL_BIGINT 0376 BigInt gcd(const BigInt&, const BigInt&); 0377 BigInt lcm(const BigInt&, const BigInt&); 0378 0379 @@ -85,6 +90,7 @@ 0380 Fixed_Exponent_Power_Mod pow_mod; 0381 Modular_Reducer reducer; 0382 }; 0383 +#endif 0384 0385 } 0386 0387 diff -ur a/include/parsing.h b/include/parsing.h 0388 --- a/include/parsing.h 2007-03-24 11:51:37.000000000 -0700 0389 +++ b/include/parsing.h 2007-06-26 11:31:40.000000000 -0700 0390 @@ -15,17 +15,21 @@ 0391 /************************************************* 0392 * String Parsing Functions * 0393 *************************************************/ 0394 +#ifndef BOTAN_TOOLS_ONLY 0395 std::vector<std::string> parse_algorithm_name(const std::string&); 0396 std::vector<std::string> split_on(const std::string&, char); 0397 std::vector<u32bit> parse_asn1_oid(const std::string&); 0398 bool x500_name_cmp(const std::string&, const std::string&); 0399 u32bit parse_expr(const std::string&); 0400 +#endif 0401 0402 /************************************************* 0403 * String/Integer Conversions * 0404 *************************************************/ 0405 std::string to_string(u64bit, u32bit = 0); 0406 +#ifndef BOTAN_TOOLS_ONLY 0407 u32bit to_u32bit(const std::string&); 0408 +#endif 0409 0410 } 0411 0412 diff -ur a/include/types.h b/include/types.h 0413 --- a/include/types.h 2007-03-24 11:51:37.000000000 -0700 0414 +++ b/include/types.h 2007-06-26 11:31:40.000000000 -0700 0415 @@ -6,10 +6,24 @@ 0416 #ifndef BOTAN_TYPES_H__ 0417 #define BOTAN_TYPES_H__ 0418 0419 +#ifdef BOTAN_TYPES_QT 0420 +#include <QtGlobal> 0421 +#else 0422 #include <botan/build.h> 0423 +#endif 0424 0425 namespace Botan { 0426 0427 +#ifdef BOTAN_TYPES_QT 0428 + 0429 +typedef quint8 byte; 0430 +typedef quint16 u16bit; 0431 +typedef quint32 u32bit; 0432 +typedef qint32 s32bit; 0433 +typedef quint64 u64bit; 0434 + 0435 +#else 0436 + 0437 typedef unsigned char byte; 0438 typedef unsigned short u16bit; 0439 typedef unsigned int u32bit; 0440 @@ -26,6 +40,8 @@ 0441 typedef unsigned long long u64bit; 0442 #endif 0443 0444 +#endif // BOTAN_TYPES_QT 0445 + 0446 } 0447 0448 namespace Botan_types { 0449 diff -ur a/include/util.h b/include/util.h 0450 --- a/include/util.h 2007-03-24 11:51:37.000000000 -0700 0451 +++ b/include/util.h 2007-06-26 11:31:40.000000000 -0700 0452 @@ -13,8 +13,10 @@ 0453 /************************************************* 0454 * Timer Access Functions * 0455 *************************************************/ 0456 +#ifndef BOTAN_TOOLS_ONLY 0457 u64bit system_time(); 0458 u64bit system_clock(); 0459 +#endif 0460 0461 /************************************************* 0462 * Memory Locking Functions * 0463 @@ -27,13 +29,17 @@ 0464 *************************************************/ 0465 u32bit round_up(u32bit, u32bit); 0466 u32bit round_down(u32bit, u32bit); 0467 +#ifndef BOTAN_TOOLS_ONLY 0468 u64bit combine_timers(u32bit, u32bit, u32bit); 0469 +#endif 0470 0471 /************************************************* 0472 * Work Factor Estimates * 0473 *************************************************/ 0474 +#ifndef BOTAN_TOOLS_ONLY 0475 u32bit entropy_estimate(const byte[], u32bit); 0476 u32bit dl_work_factor(u32bit); 0477 +#endif 0478 0479 } 0480 0481 diff -ur a/modules/alloc_mmap/mmap_mem.cpp b/modules/alloc_mmap/mmap_mem.cpp 0482 --- a/modules/alloc_mmap/mmap_mem.cpp 2007-03-24 11:51:37.000000000 -0700 0483 +++ b/modules/alloc_mmap/mmap_mem.cpp 2007-08-20 07:51:08.000000000 -0700 0484 @@ -102,6 +102,11 @@ 0485 void MemoryMapping_Allocator::dealloc_block(void* ptr, u32bit n) 0486 { 0487 if(ptr == 0) return; 0488 +#ifdef MLOCK_NOT_VOID_PTR 0489 +# define MLOCK_TYPE_CAST (char *) 0490 +#else 0491 +# define MLOCK_TYPE_CAST 0492 +#endif 0493 0494 const u32bit OVERWRITE_PASSES = 12; 0495 const byte PATTERNS[] = { 0x00, 0xFF, 0xAA, 0x55, 0x73, 0x8C, 0x5F, 0xA0, 0496 @@ -110,14 +115,14 @@ 0497 for(u32bit j = 0; j != OVERWRITE_PASSES; j++) 0498 { 0499 std::memset(ptr, PATTERNS[j % sizeof(PATTERNS)], n); 0500 - if(msync(ptr, n, MS_SYNC)) 0501 + if(msync(MLOCK_TYPE_CAST ptr, n, MS_SYNC)) 0502 throw MemoryMapping_Failed("Sync operation failed"); 0503 } 0504 std::memset(ptr, 0, n); 0505 - if(msync(ptr, n, MS_SYNC)) 0506 + if(msync(MLOCK_TYPE_CAST ptr, n, MS_SYNC)) 0507 throw MemoryMapping_Failed("Sync operation failed"); 0508 0509 - if(munmap(ptr, n)) 0510 + if(munmap(MLOCK_TYPE_CAST ptr, n)) 0511 throw MemoryMapping_Failed("Could not unmap file"); 0512 } 0513 0514 diff -ur a/modules/mux_qt/mux_qt.cpp b/modules/mux_qt/mux_qt.cpp 0515 --- a/modules/mux_qt/mux_qt.cpp 2007-03-24 11:51:37.000000000 -0700 0516 +++ b/modules/mux_qt/mux_qt.cpp 2007-06-26 11:32:30.000000000 -0700 0517 @@ -6,7 +6,7 @@ 0518 #include <botan/mux_qt.h> 0519 #include <qmutex.h> 0520 0521 -#if !defined(QT_THREAD_SUPPORT) 0522 +#if QT_VERSION <= 0x040000 && !defined(QT_THREAD_SUPPORT) 0523 #error Your version of Qt does not support threads or mutexes 0524 #endif 0525 0526 diff -ur a/src/big_code.cpp b/src/big_code.cpp 0527 --- a/src/big_code.cpp 2007-03-24 11:51:37.000000000 -0700 0528 +++ b/src/big_code.cpp 2007-06-26 11:31:30.000000000 -0700 0529 @@ -6,7 +6,9 @@ 0530 #include <botan/bigint.h> 0531 #include <botan/numthry.h> 0532 #include <botan/charset.h> 0533 +#ifndef BOTAN_MINIMAL_BIGINT 0534 #include <botan/hex.h> 0535 +#endif 0536 0537 namespace Botan { 0538 0539 @@ -17,6 +19,7 @@ 0540 { 0541 if(base == Binary) 0542 n.binary_encode(output); 0543 +#ifndef BOTAN_MINIMAL_BIGINT 0544 else if(base == Hexadecimal) 0545 { 0546 SecureVector<byte> binary(n.encoded_size(Binary)); 0547 @@ -24,6 +27,7 @@ 0548 for(u32bit j = 0; j != binary.size(); ++j) 0549 Hex_Encoder::encode(binary[j], output + 2*j); 0550 } 0551 +#endif 0552 else if(base == Octal) 0553 { 0554 BigInt copy = n; 0555 @@ -46,7 +50,15 @@ 0556 output[output_size - 1 - j] = 0557 Charset::digit2char(remainder.word_at(0)); 0558 if(copy.is_zero()) 0559 + { 0560 + if(j < output_size - 1) 0561 + { 0562 + int extra = output_size - 1 - j; 0563 + memmove(output, output + extra, output_size - extra); 0564 + memset(output + output_size - extra, 0, extra); 0565 + } 0566 break; 0567 + } 0568 } 0569 } 0570 else 0571 @@ -99,6 +111,7 @@ 0572 BigInt r; 0573 if(base == Binary) 0574 r.binary_decode(buf, length); 0575 +#ifndef BOTAN_MINIMAL_BIGINT 0576 else if(base == Hexadecimal) 0577 { 0578 SecureVector<byte> hex; 0579 @@ -119,6 +132,7 @@ 0580 binary[j] = Hex_Decoder::decode(hex+2*j-offset); 0581 r.binary_decode(binary, binary.size()); 0582 } 0583 +#endif 0584 else if(base == Decimal || base == Octal) 0585 { 0586 const u32bit RADIX = ((base == Decimal) ? 10 : 8); 0587 diff -ur a/src/big_io.cpp b/src/big_io.cpp 0588 --- a/src/big_io.cpp 2007-03-24 11:51:37.000000000 -0700 0589 +++ b/src/big_io.cpp 2007-06-26 11:31:30.000000000 -0700 0590 @@ -8,6 +8,8 @@ 0591 0592 namespace Botan { 0593 0594 +#ifndef BOTAN_MINIMAL_BIGINT 0595 + 0596 /************************************************* 0597 * Write the BigInt into a stream * 0598 *************************************************/ 0599 @@ -49,4 +51,6 @@ 0600 return stream; 0601 } 0602 0603 +#endif 0604 + 0605 } 0606 diff -ur a/src/big_ops2.cpp b/src/big_ops2.cpp 0607 --- a/src/big_ops2.cpp 2007-03-24 11:51:37.000000000 -0700 0608 +++ b/src/big_ops2.cpp 2007-06-26 11:31:30.000000000 -0700 0609 @@ -19,7 +19,11 @@ 0610 { 0611 const u32bit x_sw = sig_words(), y_sw = y.sig_words(); 0612 0613 +#ifdef BOTAN_TYPES_QT 0614 + const u32bit reg_size = qMax(x_sw, y_sw) + 1; 0615 +#else 0616 const u32bit reg_size = std::max(x_sw, y_sw) + 1; 0617 +#endif 0618 grow_to(reg_size); 0619 0620 if((sign() == y.sign())) 0621 @@ -56,7 +60,11 @@ 0622 0623 s32bit relative_size = bigint_cmp(data(), x_sw, y.data(), y_sw); 0624 0625 +#ifdef BOTAN_TYPES_QT 0626 + const u32bit reg_size = qMax(x_sw, y_sw) + 1; 0627 +#else 0628 const u32bit reg_size = std::max(x_sw, y_sw) + 1; 0629 +#endif 0630 grow_to(reg_size); 0631 0632 if(relative_size < 0) 0633 diff -ur a/src/big_ops3.cpp b/src/big_ops3.cpp 0634 --- a/src/big_ops3.cpp 2007-03-24 11:51:37.000000000 -0700 0635 +++ b/src/big_ops3.cpp 2007-06-26 11:31:30.000000000 -0700 0636 @@ -18,7 +18,11 @@ 0637 { 0638 const u32bit x_sw = x.sig_words(), y_sw = y.sig_words(); 0639 0640 +#ifdef BOTAN_TYPES_QT 0641 + BigInt z(x.sign(), qMax(x_sw, y_sw) + 1); 0642 +#else 0643 BigInt z(x.sign(), std::max(x_sw, y_sw) + 1); 0644 +#endif 0645 0646 if((x.sign() == y.sign())) 0647 bigint_add3(z.get_reg(), x.data(), x_sw, y.data(), y_sw); 0648 @@ -49,7 +53,11 @@ 0649 0650 s32bit relative_size = bigint_cmp(x.data(), x_sw, y.data(), y_sw); 0651 0652 +#ifdef BOTAN_TYPES_QT 0653 + BigInt z(BigInt::Positive, qMax(x_sw, y_sw) + 1); 0654 +#else 0655 BigInt z(BigInt::Positive, std::max(x_sw, y_sw) + 1); 0656 +#endif 0657 0658 if(relative_size < 0) 0659 { 0660 diff -ur a/src/charset.cpp b/src/charset.cpp 0661 --- a/src/charset.cpp 2007-03-24 11:51:37.000000000 -0700 0662 +++ b/src/charset.cpp 2007-06-26 11:31:30.000000000 -0700 0663 @@ -4,10 +4,15 @@ 0664 *************************************************/ 0665 0666 #include <botan/charset.h> 0667 +#ifdef BOTAN_TOOLS_ONLY 0668 +#include <botan/exceptn.h> 0669 +#else 0670 #include <botan/hex.h> 0671 #include <botan/base64.h> 0672 +#endif 0673 #include <botan/libstate.h> 0674 #include <cctype> 0675 +#include <ctype.h> 0676 0677 namespace Botan { 0678 0679 @@ -16,11 +21,13 @@ 0680 /************************************************* 0681 * Perform character set transcoding * 0682 *************************************************/ 0683 +#ifndef BOTAN_TOOLS_ONLY 0684 std::string transcode(const std::string& str, 0685 Character_Set to, Character_Set from) 0686 { 0687 return global_state().transcode(str, to, from); 0688 } 0689 +#endif 0690 0691 /************************************************* 0692 * Check if a character represents a digit * 0693 @@ -92,11 +99,13 @@ 0694 *************************************************/ 0695 bool caseless_cmp(char a, char b) 0696 { 0697 - return (std::tolower((unsigned char)a) == std::tolower((unsigned char)b)); 0698 + return (tolower((unsigned char)a) == tolower((unsigned char)b)); 0699 } 0700 0701 } 0702 0703 +#ifndef BOTAN_TOOLS_ONLY 0704 + 0705 /************************************************* 0706 * Hex Encoder Lookup Tables * 0707 *************************************************/ 0708 @@ -168,4 +177,6 @@ 0709 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0710 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }; 0711 0712 +#endif 0713 + 0714 } 0715 diff -ur a/src/defalloc.cpp b/src/defalloc.cpp 0716 --- a/src/defalloc.cpp 2007-03-24 11:51:37.000000000 -0700 0717 +++ b/src/defalloc.cpp 2007-06-26 11:31:30.000000000 -0700 0718 @@ -8,6 +8,8 @@ 0719 #include <botan/util.h> 0720 #include <cstdlib> 0721 #include <cstring> 0722 +#include <stdlib.h> 0723 +#include <string.h> 0724 0725 namespace Botan { 0726 0727 @@ -18,7 +20,7 @@ 0728 *************************************************/ 0729 void* do_malloc(u32bit n, bool do_lock) 0730 { 0731 - void* ptr = std::malloc(n); 0732 + void* ptr = malloc(n); 0733 0734 if(!ptr) 0735 return 0; 0736 @@ -26,7 +28,7 @@ 0737 if(do_lock) 0738 lock_mem(ptr, n); 0739 0740 - std::memset(ptr, 0, n); 0741 + memset(ptr, 0, n); 0742 return ptr; 0743 } 0744 0745 @@ -38,11 +40,11 @@ 0746 if(!ptr) 0747 return; 0748 0749 - std::memset(ptr, 0, n); 0750 + memset(ptr, 0, n); 0751 if(do_lock) 0752 unlock_mem(ptr, n); 0753 0754 - std::free(ptr); 0755 + free(ptr); 0756 } 0757 0758 } 0759 diff -ur a/src/libstate.cpp b/src/libstate.cpp 0760 --- a/src/libstate.cpp 2007-03-24 11:51:37.000000000 -0700 0761 +++ b/src/libstate.cpp 2007-06-26 11:31:30.000000000 -0700 0762 @@ -4,14 +4,20 @@ 0763 *************************************************/ 0764 0765 #include <botan/libstate.h> 0766 +#ifndef BOTAN_TOOLS_ONLY 0767 #include <botan/config.h> 0768 +#endif 0769 #include <botan/modules.h> 0770 +#ifndef BOTAN_TOOLS_ONLY 0771 #include <botan/engine.h> 0772 #include <botan/x509stat.h> 0773 +#endif 0774 #include <botan/stl_util.h> 0775 #include <botan/mutex.h> 0776 +#ifndef BOTAN_TOOLS_ONLY 0777 #include <botan/timers.h> 0778 #include <botan/charset.h> 0779 +#endif 0780 #include <algorithm> 0781 0782 namespace Botan { 0783 @@ -56,10 +62,12 @@ 0784 /************************************************* 0785 * Increment the Engine iterator * 0786 *************************************************/ 0787 +#ifndef BOTAN_TOOLS_ONLY 0788 Engine* Library_State::Engine_Iterator::next() 0789 { 0790 return lib.get_engine_n(n++); 0791 } 0792 +#endif 0793 0794 /************************************************* 0795 * Get a new mutex object * 0796 @@ -92,8 +100,11 @@ 0797 0798 if(!cached_default_allocator) 0799 { 0800 +#ifdef BOTAN_TOOLS_ONLY 0801 + std::string chosen = default_allocator_type; 0802 +#else 0803 std::string chosen = config().option("base/default_allocator"); 0804 - 0805 +#endif 0806 if(chosen == "") 0807 chosen = "malloc"; 0808 0809 @@ -120,17 +131,26 @@ 0810 /************************************************* 0811 * Set the default allocator type * 0812 *************************************************/ 0813 +#ifdef BOTAN_TOOLS_ONLY 0814 +void Library_State::set_default_allocator(const std::string& type) 0815 +#else 0816 void Library_State::set_default_allocator(const std::string& type) const 0817 +#endif 0818 { 0819 Named_Mutex_Holder lock("allocator"); 0820 0821 if(type == "") 0822 return; 0823 0824 +#ifdef BOTAN_TOOLS_ONLY 0825 + default_allocator_type = type; 0826 +#else 0827 config().set("conf", "base/default_allocator", type); 0828 +#endif 0829 cached_default_allocator = 0; 0830 } 0831 0832 +#ifndef BOTAN_TOOLS_ONLY 0833 /************************************************* 0834 * Set the high resolution clock implementation * 0835 *************************************************/ 0836 @@ -317,13 +337,17 @@ 0837 return (*config_obj); 0838 } 0839 0840 +#endif 0841 + 0842 /************************************************* 0843 * Load modules * 0844 *************************************************/ 0845 void Library_State::load(Modules& modules) 0846 { 0847 +#ifndef BOTAN_TOOLS_ONLY 0848 set_timer(modules.timer()); 0849 set_transcoder(modules.transcoder()); 0850 +#endif 0851 0852 std::vector<Allocator*> mod_allocs = modules.allocators(); 0853 for(u32bit j = 0; j != mod_allocs.size(); j++) 0854 @@ -331,6 +355,7 @@ 0855 0856 set_default_allocator(modules.default_allocator()); 0857 0858 +#ifndef BOTAN_TOOLS_ONLY 0859 std::vector<Engine*> mod_engines = modules.engines(); 0860 for(u32bit j = 0; j != mod_engines.size(); ++j) 0861 { 0862 @@ -341,6 +366,7 @@ 0863 std::vector<EntropySource*> sources = modules.entropy_sources(); 0864 for(u32bit j = 0; j != sources.size(); ++j) 0865 add_entropy_source(sources[j]); 0866 +#endif 0867 } 0868 0869 /************************************************* 0870 @@ -352,25 +378,39 @@ 0871 throw Exception("Library_State: no mutex found"); 0872 0873 this->mutex_factory = mutex_factory; 0874 +#ifndef BOTAN_TOOLS_ONLY 0875 this->timer = new Timer(); 0876 this->transcoder = 0; 0877 this->config_obj = new Config(); 0878 +#endif 0879 0880 +#ifndef BOTAN_TOOLS_ONLY 0881 locks["settings"] = get_mutex(); 0882 +#endif 0883 locks["allocator"] = get_mutex(); 0884 +#ifndef BOTAN_TOOLS_ONLY 0885 locks["rng"] = get_mutex(); 0886 locks["engine"] = get_mutex(); 0887 rng = 0; 0888 +#endif 0889 cached_default_allocator = 0; 0890 +#ifndef BOTAN_TOOLS_ONLY 0891 x509_state_obj = 0; 0892 ui = 0; 0893 +#endif 0894 } 0895 0896 /************************************************* 0897 * Library_State Destructor * 0898 *************************************************/ 0899 +static void delete_lock(std::pair<const std::string, Mutex*> &pair) 0900 + { 0901 + delete pair.second; 0902 + } 0903 + 0904 Library_State::~Library_State() 0905 { 0906 +#ifndef BOTAN_TOOLS_ONLY 0907 delete x509_state_obj; 0908 delete transcoder; 0909 delete rng; 0910 @@ -381,6 +421,7 @@ 0911 std::for_each(entropy_sources.begin(), entropy_sources.end(), 0912 del_fun<EntropySource>()); 0913 std::for_each(engines.begin(), engines.end(), del_fun<Engine>()); 0914 +#endif 0915 0916 cached_default_allocator = 0; 0917 0918 @@ -390,8 +431,7 @@ 0919 delete allocators[j]; 0920 } 0921 0922 - std::for_each(locks.begin(), locks.end(), 0923 - delete2nd<std::map<std::string, Mutex*>::value_type>); 0924 + std::for_each(locks.begin(), locks.end(), delete_lock); 0925 0926 delete mutex_factory; 0927 } 0928 diff -ur a/src/mem_pool.cpp b/src/mem_pool.cpp 0929 --- a/src/mem_pool.cpp 2007-03-24 11:51:37.000000000 -0700 0930 +++ b/src/mem_pool.cpp 2007-06-26 11:31:30.000000000 -0700 0931 @@ -5,8 +5,12 @@ 0932 0933 #include <botan/mem_pool.h> 0934 #include <botan/libstate.h> 0935 +#ifdef BOTAN_TOOLS_ONLY 0936 +#include <botan/mem_ops.h> 0937 +#else 0938 #include <botan/config.h> 0939 #include <botan/bit_ops.h> 0940 +#endif 0941 #include <botan/util.h> 0942 #include <algorithm> 0943 0944 @@ -22,7 +26,11 @@ 0945 if(provided) 0946 return provided; 0947 0948 +#ifdef BOTAN_TOOLS_ONLY 0949 + u32bit result = (u32bit)global_state().prealloc_size; 0950 +#else 0951 u32bit result = global_config().option_as_u32bit("base/memory_chunk"); 0952 +#endif 0953 if(result) 0954 return result; 0955 0956 @@ -42,16 +50,6 @@ 0957 } 0958 0959 /************************************************* 0960 -* Compare a Memory_Block with a void pointer * 0961 -*************************************************/ 0962 -inline bool Pooling_Allocator::Memory_Block::operator<(const void* other) const 0963 - { 0964 - if(buffer <= other && other < buffer_end) 0965 - return false; 0966 - return (buffer < other); 0967 - } 0968 - 0969 -/************************************************* 0970 * See if ptr is contained by this block * 0971 *************************************************/ 0972 bool Pooling_Allocator::Memory_Block::contains(void* ptr, 0973 @@ -207,7 +205,7 @@ 0974 const u32bit block_no = round_up(n, BLOCK_SIZE) / BLOCK_SIZE; 0975 0976 std::vector<Memory_Block>::iterator i = 0977 - std::lower_bound(blocks.begin(), blocks.end(), ptr); 0978 + std::lower_bound(blocks.begin(), blocks.end(), Memory_Block(ptr)); 0979 0980 if(i == blocks.end() || !i->contains(ptr, block_no)) 0981 throw Invalid_State("Pointer released to the wrong allocator"); 0982 @@ -270,7 +268,10 @@ 0983 } 0984 0985 std::sort(blocks.begin(), blocks.end()); 0986 - last_used = std::lower_bound(blocks.begin(), blocks.end(), ptr); 0987 + last_used = std::lower_bound(blocks.begin(), blocks.end(), Memory_Block(ptr)); 0988 } 0989 0990 +const u32bit Pooling_Allocator::Memory_Block::BITMAP_SIZE = 8 * sizeof(Pooling_Allocator::Memory_Block::bitmap_type); 0991 +const u32bit Pooling_Allocator::Memory_Block::BLOCK_SIZE = 64; 0992 + 0993 } 0994 diff -ur a/src/modules.cpp b/src/modules.cpp 0995 --- a/src/modules.cpp 2007-03-24 11:51:37.000000000 -0700 0996 +++ b/src/modules.cpp 2007-06-26 11:31:30.000000000 -0700 0997 @@ -5,71 +5,77 @@ 0998 0999 #include <botan/modules.h> 1000 #include <botan/defalloc.h> 1001 +#ifndef BOTAN_TOOLS_ONLY 1002 #include <botan/def_char.h> 1003 #include <botan/eng_def.h> 1004 #include <botan/es_file.h> 1005 #include <botan/timers.h> 1006 +#endif 1007 1008 #if defined(BOTAN_EXT_MUTEX_PTHREAD) 1009 - #include <botan/mux_pthr.h> 1010 +# include <botan/mux_pthr.h> 1011 #elif defined(BOTAN_EXT_MUTEX_WIN32) 1012 - #include <botan/mux_win32.h> 1013 +# include <botan/mux_win32.h> 1014 #elif defined(BOTAN_EXT_MUTEX_QT) 1015 - #include <botan/mux_qt.h> 1016 +# include <botan/mux_qt.h> 1017 #endif 1018 1019 #if defined(BOTAN_EXT_ALLOC_MMAP) 1020 - #include <botan/mmap_mem.h> 1021 +# include <botan/mmap_mem.h> 1022 #endif 1023 1024 +#ifndef BOTAN_TOOLS_ONLY 1025 + 1026 #if defined(BOTAN_EXT_TIMER_HARDWARE) 1027 - #include <botan/tm_hard.h> 1028 +# include <botan/tm_hard.h> 1029 #elif defined(BOTAN_EXT_TIMER_POSIX) 1030 - #include <botan/tm_posix.h> 1031 +# include <botan/tm_posix.h> 1032 #elif defined(BOTAN_EXT_TIMER_UNIX) 1033 - #include <botan/tm_unix.h> 1034 +# include <botan/tm_unix.h> 1035 #elif defined(BOTAN_EXT_TIMER_WIN32) 1036 - #include <botan/tm_win32.h> 1037 +# include <botan/tm_win32.h> 1038 #endif 1039 1040 #if defined(BOTAN_EXT_ENGINE_AEP) 1041 - #include <botan/eng_aep.h> 1042 +# include <botan/eng_aep.h> 1043 #endif 1044 1045 #if defined(BOTAN_EXT_ENGINE_GNU_MP) 1046 - #include <botan/eng_gmp.h> 1047 +# include <botan/eng_gmp.h> 1048 #endif 1049 1050 #if defined(BOTAN_EXT_ENGINE_OPENSSL) 1051 - #include <botan/eng_ossl.h> 1052 +# include <botan/eng_ossl.h> 1053 #endif 1054 1055 #if defined(BOTAN_EXT_ENTROPY_SRC_AEP) 1056 - #include <botan/es_aep.h> 1057 +# include <botan/es_aep.h> 1058 #endif 1059 1060 #if defined(BOTAN_EXT_ENTROPY_SRC_EGD) 1061 - #include <botan/es_egd.h> 1062 +# include <botan/es_egd.h> 1063 #endif 1064 1065 #if defined(BOTAN_EXT_ENTROPY_SRC_UNIX) 1066 - #include <botan/es_unix.h> 1067 +# include <botan/es_unix.h> 1068 #endif 1069 1070 #if defined(BOTAN_EXT_ENTROPY_SRC_BEOS) 1071 - #include <botan/es_beos.h> 1072 +# include <botan/es_beos.h> 1073 #endif 1074 1075 #if defined(BOTAN_EXT_ENTROPY_SRC_CAPI) 1076 - #include <botan/es_capi.h> 1077 +# include <botan/es_capi.h> 1078 #endif 1079 1080 #if defined(BOTAN_EXT_ENTROPY_SRC_WIN32) 1081 - #include <botan/es_win32.h> 1082 +# include <botan/es_win32.h> 1083 #endif 1084 1085 #if defined(BOTAN_EXT_ENTROPY_SRC_FTW) 1086 - #include <botan/es_ftw.h> 1087 +# include <botan/es_ftw.h> 1088 +#endif 1089 + 1090 #endif 1091 1092 namespace Botan { 1093 @@ -93,6 +99,7 @@ 1094 /************************************************* 1095 * Find a high resolution timer, if possible * 1096 *************************************************/ 1097 +#ifndef BOTAN_TOOLS_ONLY 1098 Timer* Builtin_Modules::timer() const 1099 { 1100 #if defined(BOTAN_EXT_TIMER_HARDWARE) 1101 @@ -107,6 +114,7 @@ 1102 return new Timer; 1103 #endif 1104 } 1105 +#endif 1106 1107 /************************************************* 1108 * Find any usable allocators * 1109 @@ -142,6 +150,8 @@ 1110 return "malloc"; 1111 } 1112 1113 +#ifndef BOTAN_TOOLS_ONLY 1114 + 1115 /************************************************* 1116 * Register any usable entropy sources * 1117 *************************************************/ 1118 @@ -217,13 +227,22 @@ 1119 return new Default_Charset_Transcoder; 1120 } 1121 1122 +#endif 1123 + 1124 /************************************************* 1125 * Builtin_Modules Constructor * 1126 *************************************************/ 1127 +#ifdef BOTAN_TOOLS_ONLY 1128 +Builtin_Modules::Builtin_Modules() : 1129 + should_lock(true) 1130 + { 1131 + } 1132 +#else 1133 Builtin_Modules::Builtin_Modules(const InitializerOptions& args) : 1134 should_lock(args.secure_memory()), 1135 use_engines(args.use_engines()) 1136 { 1137 } 1138 +#endif 1139 1140 } 1141 diff -ur a/src/mp_asm.cpp b/src/mp_asm.cpp 1142 --- a/src/mp_asm.cpp 2007-03-24 11:51:37.000000000 -0700 1143 +++ b/src/mp_asm.cpp 2007-06-26 11:31:30.000000000 -0700 1144 @@ -174,6 +174,7 @@ 1145 /************************************************* 1146 * Montgomery Reduction Algorithm * 1147 *************************************************/ 1148 +#ifndef BOTAN_MINIMAL_BIGINT 1149 void bigint_monty_redc(word z[], u32bit z_size, 1150 const word x[], u32bit x_size, word u) 1151 { 1152 @@ -199,6 +200,7 @@ 1153 if(bigint_cmp(z + x_size, x_size + 1, x, x_size) >= 0) 1154 bigint_sub2(z + x_size, x_size + 1, x, x_size); 1155 } 1156 +#endif 1157 1158 } 1159 1160 diff -ur a/src/mutex.cpp b/src/mutex.cpp 1161 --- a/src/mutex.cpp 2007-03-24 11:51:37.000000000 -0700 1162 +++ b/src/mutex.cpp 2007-08-20 07:53:57.000000000 -0700 1163 @@ -3,8 +3,11 @@ 1164 * (C) 1999-2007 The Botan Project * 1165 *************************************************/ 1166 1167 +#include <stdlib.h> 1168 #include <botan/mutex.h> 1169 +#ifndef BOTAN_NO_LIBSTATE 1170 #include <botan/libstate.h> 1171 +#endif 1172 1173 namespace Botan { 1174 1175 @@ -26,6 +29,7 @@ 1176 mux->unlock(); 1177 } 1178 1179 +#ifndef BOTAN_NO_LIBSTATE 1180 /************************************************* 1181 * Named_Mutex_Holder Constructor * 1182 *************************************************/ 1183 @@ -42,12 +46,17 @@ 1184 { 1185 global_state().get_named_mutex(mutex_name)->unlock(); 1186 } 1187 +#endif 1188 1189 /************************************************* 1190 * Default Mutex Factory * 1191 *************************************************/ 1192 +#ifdef BOTAN_FIX_GDB 1193 +namespace { 1194 +#else 1195 Mutex* Default_Mutex_Factory::make() 1196 { 1197 +#endif 1198 class Default_Mutex : public Mutex 1199 { 1200 public: 1201 @@ -78,6 +87,12 @@ 1202 bool locked; 1203 }; 1204 1205 +#ifdef BOTAN_FIX_GDB 1206 + } // end unnamed namespace 1207 +Mutex* Default_Mutex_Factory::make() 1208 + { 1209 +#endif 1210 + 1211 return new Default_Mutex; 1212 } 1213 1214 diff -ur a/src/parsing.cpp b/src/parsing.cpp 1215 --- a/src/parsing.cpp 2007-03-24 11:51:37.000000000 -0700 1216 +++ b/src/parsing.cpp 2007-06-26 11:31:30.000000000 -0700 1217 @@ -12,6 +12,7 @@ 1218 /************************************************* 1219 * Convert a string into an integer * 1220 *************************************************/ 1221 +#ifndef BOTAN_TOOLS_ONLY 1222 u32bit to_u32bit(const std::string& number) 1223 { 1224 u32bit n = 0; 1225 @@ -29,7 +30,7 @@ 1226 } 1227 return n; 1228 } 1229 - 1230 +#endif 1231 1232 /************************************************* 1233 * Convert an integer into a string * 1234 @@ -54,6 +55,7 @@ 1235 return lenstr; 1236 } 1237 1238 +#ifndef BOTAN_TOOLS_ONLY 1239 /************************************************* 1240 * Parse a SCAN-style algorithm name * 1241 *************************************************/ 1242 @@ -237,5 +239,6 @@ 1243 else 1244 return to_u32bit(expr); 1245 } 1246 +#endif 1247 1248 } 1249 diff -ur a/src/util.cpp b/src/util.cpp 1250 --- a/src/util.cpp 2007-03-24 11:51:37.000000000 -0700 1251 +++ b/src/util.cpp 2007-06-26 11:31:30.000000000 -0700 1252 @@ -4,7 +4,9 @@ 1253 *************************************************/ 1254 1255 #include <botan/util.h> 1256 +#ifndef BOTAN_TOOLS_ONLY 1257 #include <botan/bit_ops.h> 1258 +#endif 1259 #include <algorithm> 1260 #include <cmath> 1261 1262 @@ -28,6 +30,7 @@ 1263 return (n - (n % align_to)); 1264 } 1265 1266 +#ifndef BOTAN_TOOLS_ONLY 1267 /************************************************* 1268 * Return the work required for solving DL * 1269 *************************************************/ 1270 @@ -77,5 +80,6 @@ 1271 1272 return (estimate / 2); 1273 } 1274 +#endif 1275 1276 }