From 1a3d0b0128fa90b0ba3829c9993a9df3de31d884 Mon Sep 17 00:00:00 2001 From: Double Sine Date: Mon, 25 Feb 2019 22:51:47 +0800 Subject: [PATCH] Move all 3rd-party libraries to 'libraries' folder --- .../capstone-win32}/CREDITS.TXT | 0 .../capstone-win32}/ChangeLog | 0 .../capstone-win32}/LICENSE.TXT | 0 .../capstone-win32}/LICENSE_LLVM.TXT | 0 .../capstone-win32}/README.md | 0 .../capstone-win32}/SPONSORS.TXT | 0 .../capstone-win32}/capstone.dll | Bin .../capstone-win32}/capstone.lib | Bin .../capstone-win32}/capstone_dll.lib | Bin .../capstone-win32}/cstool.exe | Bin .../capstone-win32}/include/capstone/arm.h | 0 .../capstone-win32}/include/capstone/arm64.h | 0 .../include/capstone/capstone.h | 0 .../capstone-win32}/include/capstone/evm.h | 0 .../capstone-win32}/include/capstone/m680x.h | 0 .../capstone-win32}/include/capstone/m68k.h | 0 .../capstone-win32}/include/capstone/mips.h | 0 .../include/capstone/platform.h | 0 .../capstone-win32}/include/capstone/ppc.h | 0 .../capstone-win32}/include/capstone/sparc.h | 0 .../include/capstone/systemz.h | 0 .../include/capstone/tms320c64x.h | 0 .../capstone-win32}/include/capstone/x86.h | 0 .../capstone-win32}/include/capstone/xcore.h | 0 .../capstone-win32}/include/platform.h | 0 .../include/windowsce/intrin.h | 0 .../include/windowsce/stdint.h | 0 .../capstone-win64}/CREDITS.TXT | 0 .../capstone-win64}/ChangeLog | 0 .../capstone-win64}/LICENSE.TXT | 0 .../capstone-win64}/LICENSE_LLVM.TXT | 0 .../capstone-win64}/README.md | 0 .../capstone-win64}/SPONSORS.TXT | 0 .../capstone-win64}/capstone.dll | Bin .../capstone-win64}/capstone.lib | Bin .../capstone-win64}/capstone_static.lib | Bin .../capstone-win64}/cstool.exe | Bin .../capstone-win64}/include/capstone/arm.h | 0 .../capstone-win64}/include/capstone/arm64.h | 0 .../include/capstone/capstone.h | 0 .../capstone-win64}/include/capstone/evm.h | 0 .../capstone-win64}/include/capstone/m680x.h | 0 .../capstone-win64}/include/capstone/m68k.h | 0 .../capstone-win64}/include/capstone/mips.h | 0 .../include/capstone/platform.h | 0 .../capstone-win64}/include/capstone/ppc.h | 0 .../capstone-win64}/include/capstone/sparc.h | 0 .../include/capstone/systemz.h | 0 .../include/capstone/tms320c64x.h | 0 .../capstone-win64}/include/capstone/x86.h | 0 .../capstone-win64}/include/capstone/xcore.h | 0 .../capstone-win64}/include/platform.h | 0 .../include/windowsce/intrin.h | 0 .../include/windowsce/stdint.h | 0 .../openssl}/ACKNOWLEDGEMENTS.txt | 0 .../openssl}/AUTHORS.txt | 0 .../openssl}/CONTRIBUTING.txt | 0 .../openssl}/LICENSE.txt | 0 .../include/openssl/__DECC_INCLUDE_EPILOGUE.H | 0 .../include/openssl/__DECC_INCLUDE_PROLOGUE.H | 0 .../openssl}/include/openssl/aes.h | 0 .../openssl}/include/openssl/applink.c | 0 .../openssl}/include/openssl/asn1.h | 0 .../openssl}/include/openssl/asn1_mac.h | 0 .../openssl}/include/openssl/asn1t.h | 0 .../openssl}/include/openssl/async.h | 0 .../openssl}/include/openssl/bio.h | 0 .../openssl}/include/openssl/blowfish.h | 0 .../openssl}/include/openssl/bn.h | 0 .../openssl}/include/openssl/buffer.h | 0 .../openssl}/include/openssl/camellia.h | 0 .../openssl}/include/openssl/cast.h | 0 .../openssl}/include/openssl/cmac.h | 0 .../openssl}/include/openssl/cms.h | 0 .../openssl}/include/openssl/comp.h | 0 .../openssl}/include/openssl/conf.h | 0 .../openssl}/include/openssl/conf_api.h | 0 .../openssl}/include/openssl/crypto.h | 0 .../openssl}/include/openssl/ct.h | 0 .../openssl}/include/openssl/des.h | 0 .../openssl}/include/openssl/dh.h | 0 .../openssl}/include/openssl/dsa.h | 0 .../openssl}/include/openssl/dtls1.h | 0 .../openssl}/include/openssl/e_os2.h | 0 .../openssl}/include/openssl/ebcdic.h | 0 .../openssl}/include/openssl/ec.h | 0 .../openssl}/include/openssl/ecdh.h | 0 .../openssl}/include/openssl/ecdsa.h | 0 .../openssl}/include/openssl/engine.h | 0 .../openssl}/include/openssl/err.h | 0 .../openssl}/include/openssl/evp.h | 0 .../openssl}/include/openssl/hmac.h | 0 .../openssl}/include/openssl/idea.h | 0 .../openssl}/include/openssl/kdf.h | 0 .../openssl}/include/openssl/lhash.h | 0 .../openssl}/include/openssl/md2.h | 0 .../openssl}/include/openssl/md4.h | 0 .../openssl}/include/openssl/md5.h | 0 .../openssl}/include/openssl/mdc2.h | 0 .../openssl}/include/openssl/modes.h | 0 .../openssl}/include/openssl/obj_mac.h | 0 .../openssl}/include/openssl/objects.h | 0 .../openssl}/include/openssl/ocsp.h | 0 .../openssl}/include/openssl/opensslconf.h | 0 .../openssl}/include/openssl/opensslv.h | 0 .../openssl}/include/openssl/ossl_typ.h | 0 .../openssl}/include/openssl/pem.h | 0 .../openssl}/include/openssl/pem2.h | 0 .../openssl}/include/openssl/pkcs12.h | 0 .../openssl}/include/openssl/pkcs7.h | 0 .../openssl}/include/openssl/rand.h | 0 .../openssl}/include/openssl/rc2.h | 0 .../openssl}/include/openssl/rc4.h | 0 .../openssl}/include/openssl/rc5.h | 0 .../openssl}/include/openssl/ripemd.h | 0 .../openssl}/include/openssl/rsa.h | 0 .../openssl}/include/openssl/safestack.h | 0 .../openssl}/include/openssl/seed.h | 0 .../openssl}/include/openssl/sha.h | 0 .../openssl}/include/openssl/srp.h | 0 .../openssl}/include/openssl/srtp.h | 0 .../openssl}/include/openssl/ssl.h | 0 .../openssl}/include/openssl/ssl2.h | 0 .../openssl}/include/openssl/ssl3.h | 0 .../openssl}/include/openssl/stack.h | 0 .../openssl}/include/openssl/symhacks.h | 0 .../openssl}/include/openssl/tls1.h | 0 .../openssl}/include/openssl/ts.h | 0 .../openssl}/include/openssl/txt_db.h | 0 .../openssl}/include/openssl/ui.h | 0 .../openssl}/include/openssl/whrlpool.h | 0 .../openssl}/include/openssl/x509.h | 0 .../openssl}/include/openssl/x509_vfy.h | 0 .../openssl}/include/openssl/x509v3.h | 0 .../openssl/__DECC_INCLUDE_EPILOGUE.H | 0 .../openssl/__DECC_INCLUDE_PROLOGUE.H | 0 .../openssl}/include64/openssl/aes.h | 0 .../openssl}/include64/openssl/applink.c | 0 .../openssl}/include64/openssl/asn1.h | 0 .../openssl}/include64/openssl/asn1_mac.h | 0 .../openssl}/include64/openssl/asn1t.h | 0 .../openssl}/include64/openssl/async.h | 0 .../openssl}/include64/openssl/bio.h | 0 .../openssl}/include64/openssl/blowfish.h | 0 .../openssl}/include64/openssl/bn.h | 0 .../openssl}/include64/openssl/buffer.h | 0 .../openssl}/include64/openssl/camellia.h | 0 .../openssl}/include64/openssl/cast.h | 0 .../openssl}/include64/openssl/cmac.h | 0 .../openssl}/include64/openssl/cms.h | 0 .../openssl}/include64/openssl/comp.h | 0 .../openssl}/include64/openssl/conf.h | 0 .../openssl}/include64/openssl/conf_api.h | 0 .../openssl}/include64/openssl/crypto.h | 0 .../openssl}/include64/openssl/ct.h | 0 .../openssl}/include64/openssl/des.h | 0 .../openssl}/include64/openssl/dh.h | 0 .../openssl}/include64/openssl/dsa.h | 0 .../openssl}/include64/openssl/dtls1.h | 0 .../openssl}/include64/openssl/e_os2.h | 0 .../openssl}/include64/openssl/ebcdic.h | 0 .../openssl}/include64/openssl/ec.h | 0 .../openssl}/include64/openssl/ecdh.h | 0 .../openssl}/include64/openssl/ecdsa.h | 0 .../openssl}/include64/openssl/engine.h | 0 .../openssl}/include64/openssl/err.h | 0 .../openssl}/include64/openssl/evp.h | 0 .../openssl}/include64/openssl/hmac.h | 0 .../openssl}/include64/openssl/idea.h | 0 .../openssl}/include64/openssl/kdf.h | 0 .../openssl}/include64/openssl/lhash.h | 0 .../openssl}/include64/openssl/md2.h | 0 .../openssl}/include64/openssl/md4.h | 0 .../openssl}/include64/openssl/md5.h | 0 .../openssl}/include64/openssl/mdc2.h | 0 .../openssl}/include64/openssl/modes.h | 0 .../openssl}/include64/openssl/obj_mac.h | 0 .../openssl}/include64/openssl/objects.h | 0 .../openssl}/include64/openssl/ocsp.h | 0 .../openssl}/include64/openssl/opensslconf.h | 0 .../openssl}/include64/openssl/opensslv.h | 0 .../openssl}/include64/openssl/ossl_typ.h | 0 .../openssl}/include64/openssl/pem.h | 0 .../openssl}/include64/openssl/pem2.h | 0 .../openssl}/include64/openssl/pkcs12.h | 0 .../openssl}/include64/openssl/pkcs7.h | 0 .../openssl}/include64/openssl/rand.h | 0 .../openssl}/include64/openssl/rc2.h | 0 .../openssl}/include64/openssl/rc4.h | 0 .../openssl}/include64/openssl/rc5.h | 0 .../openssl}/include64/openssl/ripemd.h | 0 .../openssl}/include64/openssl/rsa.h | 0 .../openssl}/include64/openssl/safestack.h | 0 .../openssl}/include64/openssl/seed.h | 0 .../openssl}/include64/openssl/sha.h | 0 .../openssl}/include64/openssl/srp.h | 0 .../openssl}/include64/openssl/srtp.h | 0 .../openssl}/include64/openssl/ssl.h | 0 .../openssl}/include64/openssl/ssl2.h | 0 .../openssl}/include64/openssl/ssl3.h | 0 .../openssl}/include64/openssl/stack.h | 0 .../openssl}/include64/openssl/symhacks.h | 0 .../openssl}/include64/openssl/tls1.h | 0 .../openssl}/include64/openssl/ts.h | 0 .../openssl}/include64/openssl/txt_db.h | 0 .../openssl}/include64/openssl/ui.h | 0 .../openssl}/include64/openssl/whrlpool.h | 0 .../openssl}/include64/openssl/x509.h | 0 .../openssl}/include64/openssl/x509_vfy.h | 0 .../openssl}/include64/openssl/x509v3.h | 0 .../openssl}/lib/libcryptoMD.lib | Bin .../openssl}/lib/libcryptoMDd.lib | Bin .../openssl}/lib/libcryptoMT.lib | Bin .../openssl}/lib/libcryptoMTd.lib | Bin .../openssl}/lib/libsslMD.lib | Bin .../openssl}/lib/libsslMDd.lib | Bin .../openssl}/lib/libsslMT.lib | Bin .../openssl}/lib/libsslMTd.lib | Bin .../openssl}/lib64/libcryptoMD.lib | Bin .../openssl}/lib64/libcryptoMDd.lib | Bin .../openssl}/lib64/libcryptoMT.lib | Bin .../openssl}/lib64/libcryptoMTd.lib | Bin .../openssl}/lib64/libsslMD.lib | Bin .../openssl}/lib64/libsslMDd.lib | Bin .../openssl}/lib64/libsslMT.lib | Bin .../openssl}/lib64/libsslMTd.lib | Bin .../rapidjson}/include/rapidjson/allocators.h | 0 .../rapidjson}/include/rapidjson/document.h | 0 .../include/rapidjson/encodedstream.h | 0 .../rapidjson}/include/rapidjson/encodings.h | 0 .../rapidjson}/include/rapidjson/error/en.h | 0 .../include/rapidjson/error/error.h | 0 .../include/rapidjson/filereadstream.h | 0 .../include/rapidjson/filewritestream.h | 0 .../rapidjson}/include/rapidjson/fwd.h | 0 .../include/rapidjson/internal/biginteger.h | 0 .../include/rapidjson/internal/diyfp.h | 0 .../include/rapidjson/internal/dtoa.h | 0 .../include/rapidjson/internal/ieee754.h | 0 .../include/rapidjson/internal/itoa.h | 0 .../include/rapidjson/internal/meta.h | 0 .../include/rapidjson/internal/pow10.h | 0 .../include/rapidjson/internal/regex.h | 0 .../include/rapidjson/internal/stack.h | 0 .../include/rapidjson/internal/strfunc.h | 0 .../include/rapidjson/internal/strtod.h | 0 .../include/rapidjson/internal/swap.h | 0 .../include/rapidjson/istreamwrapper.h | 0 .../include/rapidjson/memorybuffer.h | 0 .../include/rapidjson/memorystream.h | 0 .../include/rapidjson/msinttypes/inttypes.h | 0 .../include/rapidjson/msinttypes/stdint.h | 0 .../include/rapidjson/ostreamwrapper.h | 0 .../rapidjson}/include/rapidjson/pointer.h | 0 .../include/rapidjson/prettywriter.h | 0 .../rapidjson}/include/rapidjson/rapidjson.h | 0 .../rapidjson}/include/rapidjson/reader.h | 0 .../rapidjson}/include/rapidjson/schema.h | 0 .../rapidjson}/include/rapidjson/stream.h | 0 .../include/rapidjson/stringbuffer.h | 0 .../rapidjson}/include/rapidjson/writer.h | 0 .../rapidjson}/license.txt | 0 navicat-keygen/navicat-keygen.vcxproj | 16 +- navicat-patcher/navicat-patcher.vcxproj | 16 +- openssl-lib/CHANGES.txt | 12465 ---------------- openssl-lib/FAQ.txt | 2 - openssl-lib/NEWS.txt | 856 -- openssl-lib/NOTES.WIN.txt | 139 - openssl-lib/README.ECC.txt | 61 - openssl-lib/README.txt | 94 - openssl-lib/bin64/libcryptoMD.dll | Bin 2393600 -> 0 bytes openssl-lib/bin64/libcryptoMDd.dll | Bin 3196928 -> 0 bytes openssl-lib/bin64/libsslMD.dll | Bin 490496 -> 0 bytes openssl-lib/bin64/libsslMDd.dll | Bin 622080 -> 0 bytes openssl-lib/bin64/openssl.exe | Bin 488448 -> 0 bytes openssl-lib/readme.precompiled.txt | 51 - openssl-lib/ssl/misc/CA.pl | 197 - openssl-lib/ssl/misc/tsget.pl | 201 - openssl-lib/ssl/openssl.cnf | 346 - openssl-lib/ssl/openssl.cnf.dist | 346 - rapidjson-lib/.gitattributes | 22 - rapidjson-lib/.gitignore | 25 - rapidjson-lib/.gitmodules | 3 - rapidjson-lib/.travis.yml | 98 - rapidjson-lib/CHANGELOG.md | 158 - rapidjson-lib/CMakeLists.txt | 173 - rapidjson-lib/CMakeModules/FindGTestSrc.cmake | 30 - rapidjson-lib/RapidJSON.pc.in | 7 - rapidjson-lib/RapidJSONConfig.cmake.in | 3 - rapidjson-lib/RapidJSONConfigVersion.cmake.in | 10 - rapidjson-lib/appveyor.yml | 41 - rapidjson-lib/doc/CMakeLists.txt | 25 - rapidjson-lib/doc/Doxyfile.in | 2369 --- rapidjson-lib/doc/Doxyfile.zh-cn.in | 2369 --- rapidjson-lib/doc/diagram/architecture.dot | 50 - rapidjson-lib/doc/diagram/architecture.png | Bin 16569 -> 0 bytes rapidjson-lib/doc/diagram/insituparsing.dot | 65 - rapidjson-lib/doc/diagram/insituparsing.png | Bin 37281 -> 0 bytes .../iterative-parser-states-diagram.dot | 62 - .../iterative-parser-states-diagram.png | Bin 92378 -> 0 bytes rapidjson-lib/doc/diagram/move1.dot | 47 - rapidjson-lib/doc/diagram/move1.png | Bin 16081 -> 0 bytes rapidjson-lib/doc/diagram/move2.dot | 62 - rapidjson-lib/doc/diagram/move2.png | Bin 41517 -> 0 bytes rapidjson-lib/doc/diagram/move3.dot | 60 - rapidjson-lib/doc/diagram/move3.png | Bin 36371 -> 0 bytes rapidjson-lib/doc/diagram/normalparsing.dot | 56 - rapidjson-lib/doc/diagram/normalparsing.png | Bin 32887 -> 0 bytes rapidjson-lib/doc/diagram/simpledom.dot | 54 - rapidjson-lib/doc/diagram/simpledom.png | Bin 43670 -> 0 bytes rapidjson-lib/doc/diagram/tutorial.dot | 58 - rapidjson-lib/doc/diagram/tutorial.png | Bin 44634 -> 0 bytes rapidjson-lib/doc/diagram/utilityclass.dot | 73 - rapidjson-lib/doc/diagram/utilityclass.png | Bin 99993 -> 0 bytes rapidjson-lib/doc/dom.md | 280 - rapidjson-lib/doc/dom.zh-cn.md | 284 - rapidjson-lib/doc/encoding.md | 146 - rapidjson-lib/doc/encoding.zh-cn.md | 152 - rapidjson-lib/doc/faq.md | 289 - rapidjson-lib/doc/faq.zh-cn.md | 290 - rapidjson-lib/doc/features.md | 104 - rapidjson-lib/doc/features.zh-cn.md | 103 - rapidjson-lib/doc/internals.md | 365 - rapidjson-lib/doc/logo/rapidjson.png | Bin 5259 -> 0 bytes rapidjson-lib/doc/logo/rapidjson.svg | 119 - rapidjson-lib/doc/misc/DoxygenLayout.xml | 194 - rapidjson-lib/doc/misc/doxygenextra.css | 274 - rapidjson-lib/doc/misc/footer.html | 11 - rapidjson-lib/doc/misc/header.html | 24 - rapidjson-lib/doc/npm.md | 31 - rapidjson-lib/doc/performance.md | 26 - rapidjson-lib/doc/performance.zh-cn.md | 26 - rapidjson-lib/doc/pointer.md | 234 - rapidjson-lib/doc/pointer.zh-cn.md | 234 - rapidjson-lib/doc/sax.md | 486 - rapidjson-lib/doc/sax.zh-cn.md | 487 - rapidjson-lib/doc/schema.md | 237 - rapidjson-lib/doc/schema.zh-cn.md | 237 - rapidjson-lib/doc/stream.md | 426 - rapidjson-lib/doc/stream.zh-cn.md | 426 - rapidjson-lib/doc/tutorial.md | 536 - rapidjson-lib/doc/tutorial.zh-cn.md | 534 - rapidjson-lib/docker/debian/Dockerfile | 8 - rapidjson-lib/example/CMakeLists.txt | 42 - .../example/capitalize/capitalize.cpp | 67 - rapidjson-lib/example/condense/condense.cpp | 32 - rapidjson-lib/example/filterkey/filterkey.cpp | 135 - .../example/filterkeydom/filterkeydom.cpp | 170 - rapidjson-lib/example/jsonx/jsonx.cpp | 207 - .../example/messagereader/messagereader.cpp | 105 - .../example/parsebyparts/parsebyparts.cpp | 173 - rapidjson-lib/example/pretty/pretty.cpp | 30 - .../example/prettyauto/prettyauto.cpp | 56 - .../schemavalidator/schemavalidator.cpp | 72 - rapidjson-lib/example/serialize/serialize.cpp | 173 - rapidjson-lib/example/simpledom/simpledom.cpp | 29 - .../example/simplereader/simplereader.cpp | 42 - .../example/simplewriter/simplewriter.cpp | 36 - rapidjson-lib/example/tutorial/tutorial.cpp | 151 - rapidjson-lib/include_dirs.js | 2 - rapidjson-lib/library.json | 12 - rapidjson-lib/package.json | 24 - rapidjson-lib/rapidjson.autopkg | 75 - rapidjson-lib/readme.md | 160 - rapidjson-lib/readme.zh-cn.md | 152 - rapidjson-lib/test/CMakeLists.txt | 20 - rapidjson-lib/test/perftest/CMakeLists.txt | 26 - rapidjson-lib/test/perftest/misctest.cpp | 974 -- rapidjson-lib/test/perftest/perftest.cpp | 24 - rapidjson-lib/test/perftest/perftest.h | 182 - rapidjson-lib/test/perftest/platformtest.cpp | 166 - rapidjson-lib/test/perftest/rapidjsontest.cpp | 441 - rapidjson-lib/test/perftest/schematest.cpp | 216 - rapidjson-lib/test/unittest/CMakeLists.txt | 92 - .../test/unittest/allocatorstest.cpp | 102 - .../test/unittest/bigintegertest.cpp | 133 - rapidjson-lib/test/unittest/documenttest.cpp | 652 - rapidjson-lib/test/unittest/dtoatest.cpp | 98 - .../test/unittest/encodedstreamtest.cpp | 313 - rapidjson-lib/test/unittest/encodingstest.cpp | 451 - .../test/unittest/filestreamtest.cpp | 112 - rapidjson-lib/test/unittest/fwdtest.cpp | 227 - .../test/unittest/istreamwrappertest.cpp | 181 - rapidjson-lib/test/unittest/itoatest.cpp | 160 - .../test/unittest/jsoncheckertest.cpp | 99 - rapidjson-lib/test/unittest/namespacetest.cpp | 70 - .../test/unittest/ostreamwrappertest.cpp | 91 - rapidjson-lib/test/unittest/pointertest.cpp | 1524 -- .../test/unittest/prettywritertest.cpp | 203 - rapidjson-lib/test/unittest/readertest.cpp | 1844 --- rapidjson-lib/test/unittest/regextest.cpp | 592 - rapidjson-lib/test/unittest/schematest.cpp | 1313 -- rapidjson-lib/test/unittest/simdtest.cpp | 215 - rapidjson-lib/test/unittest/strfunctest.cpp | 30 - .../test/unittest/stringbuffertest.cpp | 170 - rapidjson-lib/test/unittest/strtodtest.cpp | 132 - rapidjson-lib/test/unittest/unittest.cpp | 51 - rapidjson-lib/test/unittest/unittest.h | 135 - rapidjson-lib/test/unittest/valuetest.cpp | 1792 --- rapidjson-lib/test/unittest/writertest.cpp | 497 - rapidjson-lib/travis-doxygen.sh | 122 - 401 files changed, 16 insertions(+), 42652 deletions(-) rename {capstone-lib-win32 => libraries/capstone-win32}/CREDITS.TXT (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/ChangeLog (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/LICENSE.TXT (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/LICENSE_LLVM.TXT (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/README.md (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/SPONSORS.TXT (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/capstone.dll (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/capstone.lib (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/capstone_dll.lib (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/cstool.exe (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/arm.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/arm64.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/capstone.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/evm.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/m680x.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/m68k.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/mips.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/platform.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/ppc.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/sparc.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/systemz.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/tms320c64x.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/x86.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/capstone/xcore.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/platform.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/windowsce/intrin.h (100%) rename {capstone-lib-win32 => libraries/capstone-win32}/include/windowsce/stdint.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/CREDITS.TXT (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/ChangeLog (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/LICENSE.TXT (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/LICENSE_LLVM.TXT (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/README.md (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/SPONSORS.TXT (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/capstone.dll (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/capstone.lib (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/capstone_static.lib (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/cstool.exe (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/arm.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/arm64.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/capstone.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/evm.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/m680x.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/m68k.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/mips.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/platform.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/ppc.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/sparc.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/systemz.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/tms320c64x.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/x86.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/capstone/xcore.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/platform.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/windowsce/intrin.h (100%) rename {capstone-lib-win64 => libraries/capstone-win64}/include/windowsce/stdint.h (100%) rename {openssl-lib => libraries/openssl}/ACKNOWLEDGEMENTS.txt (100%) rename {openssl-lib => libraries/openssl}/AUTHORS.txt (100%) rename {openssl-lib => libraries/openssl}/CONTRIBUTING.txt (100%) rename {openssl-lib => libraries/openssl}/LICENSE.txt (100%) rename {openssl-lib => libraries/openssl}/include/openssl/__DECC_INCLUDE_EPILOGUE.H (100%) rename {openssl-lib => libraries/openssl}/include/openssl/__DECC_INCLUDE_PROLOGUE.H (100%) rename {openssl-lib => libraries/openssl}/include/openssl/aes.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/applink.c (100%) rename {openssl-lib => libraries/openssl}/include/openssl/asn1.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/asn1_mac.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/asn1t.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/async.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/bio.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/blowfish.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/bn.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/buffer.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/camellia.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/cast.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/cmac.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/cms.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/comp.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/conf.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/conf_api.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/crypto.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ct.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/des.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/dh.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/dsa.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/dtls1.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/e_os2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ebcdic.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ec.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ecdh.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ecdsa.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/engine.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/err.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/evp.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/hmac.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/idea.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/kdf.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/lhash.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/md2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/md4.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/md5.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/mdc2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/modes.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/obj_mac.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/objects.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ocsp.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/opensslconf.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/opensslv.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ossl_typ.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/pem.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/pem2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/pkcs12.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/pkcs7.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/rand.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/rc2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/rc4.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/rc5.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ripemd.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/rsa.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/safestack.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/seed.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/sha.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/srp.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/srtp.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ssl.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ssl2.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ssl3.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/stack.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/symhacks.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/tls1.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ts.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/txt_db.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/ui.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/whrlpool.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/x509.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/x509_vfy.h (100%) rename {openssl-lib => libraries/openssl}/include/openssl/x509v3.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/__DECC_INCLUDE_EPILOGUE.H (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/__DECC_INCLUDE_PROLOGUE.H (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/aes.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/applink.c (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/asn1.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/asn1_mac.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/asn1t.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/async.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/bio.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/blowfish.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/bn.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/buffer.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/camellia.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/cast.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/cmac.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/cms.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/comp.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/conf.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/conf_api.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/crypto.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ct.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/des.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/dh.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/dsa.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/dtls1.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/e_os2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ebcdic.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ec.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ecdh.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ecdsa.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/engine.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/err.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/evp.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/hmac.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/idea.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/kdf.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/lhash.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/md2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/md4.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/md5.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/mdc2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/modes.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/obj_mac.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/objects.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ocsp.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/opensslconf.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/opensslv.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ossl_typ.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/pem.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/pem2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/pkcs12.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/pkcs7.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/rand.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/rc2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/rc4.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/rc5.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ripemd.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/rsa.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/safestack.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/seed.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/sha.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/srp.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/srtp.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ssl.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ssl2.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ssl3.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/stack.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/symhacks.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/tls1.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ts.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/txt_db.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/ui.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/whrlpool.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/x509.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/x509_vfy.h (100%) rename {openssl-lib => libraries/openssl}/include64/openssl/x509v3.h (100%) rename {openssl-lib => libraries/openssl}/lib/libcryptoMD.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libcryptoMDd.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libcryptoMT.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libcryptoMTd.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libsslMD.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libsslMDd.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libsslMT.lib (100%) rename {openssl-lib => libraries/openssl}/lib/libsslMTd.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libcryptoMD.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libcryptoMDd.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libcryptoMT.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libcryptoMTd.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libsslMD.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libsslMDd.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libsslMT.lib (100%) rename {openssl-lib => libraries/openssl}/lib64/libsslMTd.lib (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/allocators.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/document.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/encodedstream.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/encodings.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/error/en.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/error/error.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/filereadstream.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/filewritestream.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/fwd.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/biginteger.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/diyfp.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/dtoa.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/ieee754.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/itoa.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/meta.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/pow10.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/regex.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/stack.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/strfunc.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/strtod.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/internal/swap.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/istreamwrapper.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/memorybuffer.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/memorystream.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/msinttypes/inttypes.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/msinttypes/stdint.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/ostreamwrapper.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/pointer.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/prettywriter.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/rapidjson.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/reader.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/schema.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/stream.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/stringbuffer.h (100%) rename {rapidjson-lib => libraries/rapidjson}/include/rapidjson/writer.h (100%) rename {rapidjson-lib => libraries/rapidjson}/license.txt (100%) delete mode 100644 openssl-lib/CHANGES.txt delete mode 100644 openssl-lib/FAQ.txt delete mode 100644 openssl-lib/NEWS.txt delete mode 100644 openssl-lib/NOTES.WIN.txt delete mode 100644 openssl-lib/README.ECC.txt delete mode 100644 openssl-lib/README.txt delete mode 100644 openssl-lib/bin64/libcryptoMD.dll delete mode 100644 openssl-lib/bin64/libcryptoMDd.dll delete mode 100644 openssl-lib/bin64/libsslMD.dll delete mode 100644 openssl-lib/bin64/libsslMDd.dll delete mode 100644 openssl-lib/bin64/openssl.exe delete mode 100644 openssl-lib/readme.precompiled.txt delete mode 100644 openssl-lib/ssl/misc/CA.pl delete mode 100644 openssl-lib/ssl/misc/tsget.pl delete mode 100644 openssl-lib/ssl/openssl.cnf delete mode 100644 openssl-lib/ssl/openssl.cnf.dist delete mode 100644 rapidjson-lib/.gitattributes delete mode 100644 rapidjson-lib/.gitignore delete mode 100644 rapidjson-lib/.gitmodules delete mode 100644 rapidjson-lib/.travis.yml delete mode 100644 rapidjson-lib/CHANGELOG.md delete mode 100644 rapidjson-lib/CMakeLists.txt delete mode 100644 rapidjson-lib/CMakeModules/FindGTestSrc.cmake delete mode 100644 rapidjson-lib/RapidJSON.pc.in delete mode 100644 rapidjson-lib/RapidJSONConfig.cmake.in delete mode 100644 rapidjson-lib/RapidJSONConfigVersion.cmake.in delete mode 100644 rapidjson-lib/appveyor.yml delete mode 100644 rapidjson-lib/doc/CMakeLists.txt delete mode 100644 rapidjson-lib/doc/Doxyfile.in delete mode 100644 rapidjson-lib/doc/Doxyfile.zh-cn.in delete mode 100644 rapidjson-lib/doc/diagram/architecture.dot delete mode 100644 rapidjson-lib/doc/diagram/architecture.png delete mode 100644 rapidjson-lib/doc/diagram/insituparsing.dot delete mode 100644 rapidjson-lib/doc/diagram/insituparsing.png delete mode 100644 rapidjson-lib/doc/diagram/iterative-parser-states-diagram.dot delete mode 100644 rapidjson-lib/doc/diagram/iterative-parser-states-diagram.png delete mode 100644 rapidjson-lib/doc/diagram/move1.dot delete mode 100644 rapidjson-lib/doc/diagram/move1.png delete mode 100644 rapidjson-lib/doc/diagram/move2.dot delete mode 100644 rapidjson-lib/doc/diagram/move2.png delete mode 100644 rapidjson-lib/doc/diagram/move3.dot delete mode 100644 rapidjson-lib/doc/diagram/move3.png delete mode 100644 rapidjson-lib/doc/diagram/normalparsing.dot delete mode 100644 rapidjson-lib/doc/diagram/normalparsing.png delete mode 100644 rapidjson-lib/doc/diagram/simpledom.dot delete mode 100644 rapidjson-lib/doc/diagram/simpledom.png delete mode 100644 rapidjson-lib/doc/diagram/tutorial.dot delete mode 100644 rapidjson-lib/doc/diagram/tutorial.png delete mode 100644 rapidjson-lib/doc/diagram/utilityclass.dot delete mode 100644 rapidjson-lib/doc/diagram/utilityclass.png delete mode 100644 rapidjson-lib/doc/dom.md delete mode 100644 rapidjson-lib/doc/dom.zh-cn.md delete mode 100644 rapidjson-lib/doc/encoding.md delete mode 100644 rapidjson-lib/doc/encoding.zh-cn.md delete mode 100644 rapidjson-lib/doc/faq.md delete mode 100644 rapidjson-lib/doc/faq.zh-cn.md delete mode 100644 rapidjson-lib/doc/features.md delete mode 100644 rapidjson-lib/doc/features.zh-cn.md delete mode 100644 rapidjson-lib/doc/internals.md delete mode 100644 rapidjson-lib/doc/logo/rapidjson.png delete mode 100644 rapidjson-lib/doc/logo/rapidjson.svg delete mode 100644 rapidjson-lib/doc/misc/DoxygenLayout.xml delete mode 100644 rapidjson-lib/doc/misc/doxygenextra.css delete mode 100644 rapidjson-lib/doc/misc/footer.html delete mode 100644 rapidjson-lib/doc/misc/header.html delete mode 100644 rapidjson-lib/doc/npm.md delete mode 100644 rapidjson-lib/doc/performance.md delete mode 100644 rapidjson-lib/doc/performance.zh-cn.md delete mode 100644 rapidjson-lib/doc/pointer.md delete mode 100644 rapidjson-lib/doc/pointer.zh-cn.md delete mode 100644 rapidjson-lib/doc/sax.md delete mode 100644 rapidjson-lib/doc/sax.zh-cn.md delete mode 100644 rapidjson-lib/doc/schema.md delete mode 100644 rapidjson-lib/doc/schema.zh-cn.md delete mode 100644 rapidjson-lib/doc/stream.md delete mode 100644 rapidjson-lib/doc/stream.zh-cn.md delete mode 100644 rapidjson-lib/doc/tutorial.md delete mode 100644 rapidjson-lib/doc/tutorial.zh-cn.md delete mode 100644 rapidjson-lib/docker/debian/Dockerfile delete mode 100644 rapidjson-lib/example/CMakeLists.txt delete mode 100644 rapidjson-lib/example/capitalize/capitalize.cpp delete mode 100644 rapidjson-lib/example/condense/condense.cpp delete mode 100644 rapidjson-lib/example/filterkey/filterkey.cpp delete mode 100644 rapidjson-lib/example/filterkeydom/filterkeydom.cpp delete mode 100644 rapidjson-lib/example/jsonx/jsonx.cpp delete mode 100644 rapidjson-lib/example/messagereader/messagereader.cpp delete mode 100644 rapidjson-lib/example/parsebyparts/parsebyparts.cpp delete mode 100644 rapidjson-lib/example/pretty/pretty.cpp delete mode 100644 rapidjson-lib/example/prettyauto/prettyauto.cpp delete mode 100644 rapidjson-lib/example/schemavalidator/schemavalidator.cpp delete mode 100644 rapidjson-lib/example/serialize/serialize.cpp delete mode 100644 rapidjson-lib/example/simpledom/simpledom.cpp delete mode 100644 rapidjson-lib/example/simplereader/simplereader.cpp delete mode 100644 rapidjson-lib/example/simplewriter/simplewriter.cpp delete mode 100644 rapidjson-lib/example/tutorial/tutorial.cpp delete mode 100644 rapidjson-lib/include_dirs.js delete mode 100644 rapidjson-lib/library.json delete mode 100644 rapidjson-lib/package.json delete mode 100644 rapidjson-lib/rapidjson.autopkg delete mode 100644 rapidjson-lib/readme.md delete mode 100644 rapidjson-lib/readme.zh-cn.md delete mode 100644 rapidjson-lib/test/CMakeLists.txt delete mode 100644 rapidjson-lib/test/perftest/CMakeLists.txt delete mode 100644 rapidjson-lib/test/perftest/misctest.cpp delete mode 100644 rapidjson-lib/test/perftest/perftest.cpp delete mode 100644 rapidjson-lib/test/perftest/perftest.h delete mode 100644 rapidjson-lib/test/perftest/platformtest.cpp delete mode 100644 rapidjson-lib/test/perftest/rapidjsontest.cpp delete mode 100644 rapidjson-lib/test/perftest/schematest.cpp delete mode 100644 rapidjson-lib/test/unittest/CMakeLists.txt delete mode 100644 rapidjson-lib/test/unittest/allocatorstest.cpp delete mode 100644 rapidjson-lib/test/unittest/bigintegertest.cpp delete mode 100644 rapidjson-lib/test/unittest/documenttest.cpp delete mode 100644 rapidjson-lib/test/unittest/dtoatest.cpp delete mode 100644 rapidjson-lib/test/unittest/encodedstreamtest.cpp delete mode 100644 rapidjson-lib/test/unittest/encodingstest.cpp delete mode 100644 rapidjson-lib/test/unittest/filestreamtest.cpp delete mode 100644 rapidjson-lib/test/unittest/fwdtest.cpp delete mode 100644 rapidjson-lib/test/unittest/istreamwrappertest.cpp delete mode 100644 rapidjson-lib/test/unittest/itoatest.cpp delete mode 100644 rapidjson-lib/test/unittest/jsoncheckertest.cpp delete mode 100644 rapidjson-lib/test/unittest/namespacetest.cpp delete mode 100644 rapidjson-lib/test/unittest/ostreamwrappertest.cpp delete mode 100644 rapidjson-lib/test/unittest/pointertest.cpp delete mode 100644 rapidjson-lib/test/unittest/prettywritertest.cpp delete mode 100644 rapidjson-lib/test/unittest/readertest.cpp delete mode 100644 rapidjson-lib/test/unittest/regextest.cpp delete mode 100644 rapidjson-lib/test/unittest/schematest.cpp delete mode 100644 rapidjson-lib/test/unittest/simdtest.cpp delete mode 100644 rapidjson-lib/test/unittest/strfunctest.cpp delete mode 100644 rapidjson-lib/test/unittest/stringbuffertest.cpp delete mode 100644 rapidjson-lib/test/unittest/strtodtest.cpp delete mode 100644 rapidjson-lib/test/unittest/unittest.cpp delete mode 100644 rapidjson-lib/test/unittest/unittest.h delete mode 100644 rapidjson-lib/test/unittest/valuetest.cpp delete mode 100644 rapidjson-lib/test/unittest/writertest.cpp delete mode 100644 rapidjson-lib/travis-doxygen.sh diff --git a/capstone-lib-win32/CREDITS.TXT b/libraries/capstone-win32/CREDITS.TXT similarity index 100% rename from capstone-lib-win32/CREDITS.TXT rename to libraries/capstone-win32/CREDITS.TXT diff --git a/capstone-lib-win32/ChangeLog b/libraries/capstone-win32/ChangeLog similarity index 100% rename from capstone-lib-win32/ChangeLog rename to libraries/capstone-win32/ChangeLog diff --git a/capstone-lib-win32/LICENSE.TXT b/libraries/capstone-win32/LICENSE.TXT similarity index 100% rename from capstone-lib-win32/LICENSE.TXT rename to libraries/capstone-win32/LICENSE.TXT diff --git a/capstone-lib-win32/LICENSE_LLVM.TXT b/libraries/capstone-win32/LICENSE_LLVM.TXT similarity index 100% rename from capstone-lib-win32/LICENSE_LLVM.TXT rename to libraries/capstone-win32/LICENSE_LLVM.TXT diff --git a/capstone-lib-win32/README.md b/libraries/capstone-win32/README.md similarity index 100% rename from capstone-lib-win32/README.md rename to libraries/capstone-win32/README.md diff --git a/capstone-lib-win32/SPONSORS.TXT b/libraries/capstone-win32/SPONSORS.TXT similarity index 100% rename from capstone-lib-win32/SPONSORS.TXT rename to libraries/capstone-win32/SPONSORS.TXT diff --git a/capstone-lib-win32/capstone.dll b/libraries/capstone-win32/capstone.dll similarity index 100% rename from capstone-lib-win32/capstone.dll rename to libraries/capstone-win32/capstone.dll diff --git a/capstone-lib-win32/capstone.lib b/libraries/capstone-win32/capstone.lib similarity index 100% rename from capstone-lib-win32/capstone.lib rename to libraries/capstone-win32/capstone.lib diff --git a/capstone-lib-win32/capstone_dll.lib b/libraries/capstone-win32/capstone_dll.lib similarity index 100% rename from capstone-lib-win32/capstone_dll.lib rename to libraries/capstone-win32/capstone_dll.lib diff --git a/capstone-lib-win32/cstool.exe b/libraries/capstone-win32/cstool.exe similarity index 100% rename from capstone-lib-win32/cstool.exe rename to libraries/capstone-win32/cstool.exe diff --git a/capstone-lib-win32/include/capstone/arm.h b/libraries/capstone-win32/include/capstone/arm.h similarity index 100% rename from capstone-lib-win32/include/capstone/arm.h rename to libraries/capstone-win32/include/capstone/arm.h diff --git a/capstone-lib-win32/include/capstone/arm64.h b/libraries/capstone-win32/include/capstone/arm64.h similarity index 100% rename from capstone-lib-win32/include/capstone/arm64.h rename to libraries/capstone-win32/include/capstone/arm64.h diff --git a/capstone-lib-win32/include/capstone/capstone.h b/libraries/capstone-win32/include/capstone/capstone.h similarity index 100% rename from capstone-lib-win32/include/capstone/capstone.h rename to libraries/capstone-win32/include/capstone/capstone.h diff --git a/capstone-lib-win32/include/capstone/evm.h b/libraries/capstone-win32/include/capstone/evm.h similarity index 100% rename from capstone-lib-win32/include/capstone/evm.h rename to libraries/capstone-win32/include/capstone/evm.h diff --git a/capstone-lib-win32/include/capstone/m680x.h b/libraries/capstone-win32/include/capstone/m680x.h similarity index 100% rename from capstone-lib-win32/include/capstone/m680x.h rename to libraries/capstone-win32/include/capstone/m680x.h diff --git a/capstone-lib-win32/include/capstone/m68k.h b/libraries/capstone-win32/include/capstone/m68k.h similarity index 100% rename from capstone-lib-win32/include/capstone/m68k.h rename to libraries/capstone-win32/include/capstone/m68k.h diff --git a/capstone-lib-win32/include/capstone/mips.h b/libraries/capstone-win32/include/capstone/mips.h similarity index 100% rename from capstone-lib-win32/include/capstone/mips.h rename to libraries/capstone-win32/include/capstone/mips.h diff --git a/capstone-lib-win32/include/capstone/platform.h b/libraries/capstone-win32/include/capstone/platform.h similarity index 100% rename from capstone-lib-win32/include/capstone/platform.h rename to libraries/capstone-win32/include/capstone/platform.h diff --git a/capstone-lib-win32/include/capstone/ppc.h b/libraries/capstone-win32/include/capstone/ppc.h similarity index 100% rename from capstone-lib-win32/include/capstone/ppc.h rename to libraries/capstone-win32/include/capstone/ppc.h diff --git a/capstone-lib-win32/include/capstone/sparc.h b/libraries/capstone-win32/include/capstone/sparc.h similarity index 100% rename from capstone-lib-win32/include/capstone/sparc.h rename to libraries/capstone-win32/include/capstone/sparc.h diff --git a/capstone-lib-win32/include/capstone/systemz.h b/libraries/capstone-win32/include/capstone/systemz.h similarity index 100% rename from capstone-lib-win32/include/capstone/systemz.h rename to libraries/capstone-win32/include/capstone/systemz.h diff --git a/capstone-lib-win32/include/capstone/tms320c64x.h b/libraries/capstone-win32/include/capstone/tms320c64x.h similarity index 100% rename from capstone-lib-win32/include/capstone/tms320c64x.h rename to libraries/capstone-win32/include/capstone/tms320c64x.h diff --git a/capstone-lib-win32/include/capstone/x86.h b/libraries/capstone-win32/include/capstone/x86.h similarity index 100% rename from capstone-lib-win32/include/capstone/x86.h rename to libraries/capstone-win32/include/capstone/x86.h diff --git a/capstone-lib-win32/include/capstone/xcore.h b/libraries/capstone-win32/include/capstone/xcore.h similarity index 100% rename from capstone-lib-win32/include/capstone/xcore.h rename to libraries/capstone-win32/include/capstone/xcore.h diff --git a/capstone-lib-win32/include/platform.h b/libraries/capstone-win32/include/platform.h similarity index 100% rename from capstone-lib-win32/include/platform.h rename to libraries/capstone-win32/include/platform.h diff --git a/capstone-lib-win32/include/windowsce/intrin.h b/libraries/capstone-win32/include/windowsce/intrin.h similarity index 100% rename from capstone-lib-win32/include/windowsce/intrin.h rename to libraries/capstone-win32/include/windowsce/intrin.h diff --git a/capstone-lib-win32/include/windowsce/stdint.h b/libraries/capstone-win32/include/windowsce/stdint.h similarity index 100% rename from capstone-lib-win32/include/windowsce/stdint.h rename to libraries/capstone-win32/include/windowsce/stdint.h diff --git a/capstone-lib-win64/CREDITS.TXT b/libraries/capstone-win64/CREDITS.TXT similarity index 100% rename from capstone-lib-win64/CREDITS.TXT rename to libraries/capstone-win64/CREDITS.TXT diff --git a/capstone-lib-win64/ChangeLog b/libraries/capstone-win64/ChangeLog similarity index 100% rename from capstone-lib-win64/ChangeLog rename to libraries/capstone-win64/ChangeLog diff --git a/capstone-lib-win64/LICENSE.TXT b/libraries/capstone-win64/LICENSE.TXT similarity index 100% rename from capstone-lib-win64/LICENSE.TXT rename to libraries/capstone-win64/LICENSE.TXT diff --git a/capstone-lib-win64/LICENSE_LLVM.TXT b/libraries/capstone-win64/LICENSE_LLVM.TXT similarity index 100% rename from capstone-lib-win64/LICENSE_LLVM.TXT rename to libraries/capstone-win64/LICENSE_LLVM.TXT diff --git a/capstone-lib-win64/README.md b/libraries/capstone-win64/README.md similarity index 100% rename from capstone-lib-win64/README.md rename to libraries/capstone-win64/README.md diff --git a/capstone-lib-win64/SPONSORS.TXT b/libraries/capstone-win64/SPONSORS.TXT similarity index 100% rename from capstone-lib-win64/SPONSORS.TXT rename to libraries/capstone-win64/SPONSORS.TXT diff --git a/capstone-lib-win64/capstone.dll b/libraries/capstone-win64/capstone.dll similarity index 100% rename from capstone-lib-win64/capstone.dll rename to libraries/capstone-win64/capstone.dll diff --git a/capstone-lib-win64/capstone.lib b/libraries/capstone-win64/capstone.lib similarity index 100% rename from capstone-lib-win64/capstone.lib rename to libraries/capstone-win64/capstone.lib diff --git a/capstone-lib-win64/capstone_static.lib b/libraries/capstone-win64/capstone_static.lib similarity index 100% rename from capstone-lib-win64/capstone_static.lib rename to libraries/capstone-win64/capstone_static.lib diff --git a/capstone-lib-win64/cstool.exe b/libraries/capstone-win64/cstool.exe similarity index 100% rename from capstone-lib-win64/cstool.exe rename to libraries/capstone-win64/cstool.exe diff --git a/capstone-lib-win64/include/capstone/arm.h b/libraries/capstone-win64/include/capstone/arm.h similarity index 100% rename from capstone-lib-win64/include/capstone/arm.h rename to libraries/capstone-win64/include/capstone/arm.h diff --git a/capstone-lib-win64/include/capstone/arm64.h b/libraries/capstone-win64/include/capstone/arm64.h similarity index 100% rename from capstone-lib-win64/include/capstone/arm64.h rename to libraries/capstone-win64/include/capstone/arm64.h diff --git a/capstone-lib-win64/include/capstone/capstone.h b/libraries/capstone-win64/include/capstone/capstone.h similarity index 100% rename from capstone-lib-win64/include/capstone/capstone.h rename to libraries/capstone-win64/include/capstone/capstone.h diff --git a/capstone-lib-win64/include/capstone/evm.h b/libraries/capstone-win64/include/capstone/evm.h similarity index 100% rename from capstone-lib-win64/include/capstone/evm.h rename to libraries/capstone-win64/include/capstone/evm.h diff --git a/capstone-lib-win64/include/capstone/m680x.h b/libraries/capstone-win64/include/capstone/m680x.h similarity index 100% rename from capstone-lib-win64/include/capstone/m680x.h rename to libraries/capstone-win64/include/capstone/m680x.h diff --git a/capstone-lib-win64/include/capstone/m68k.h b/libraries/capstone-win64/include/capstone/m68k.h similarity index 100% rename from capstone-lib-win64/include/capstone/m68k.h rename to libraries/capstone-win64/include/capstone/m68k.h diff --git a/capstone-lib-win64/include/capstone/mips.h b/libraries/capstone-win64/include/capstone/mips.h similarity index 100% rename from capstone-lib-win64/include/capstone/mips.h rename to libraries/capstone-win64/include/capstone/mips.h diff --git a/capstone-lib-win64/include/capstone/platform.h b/libraries/capstone-win64/include/capstone/platform.h similarity index 100% rename from capstone-lib-win64/include/capstone/platform.h rename to libraries/capstone-win64/include/capstone/platform.h diff --git a/capstone-lib-win64/include/capstone/ppc.h b/libraries/capstone-win64/include/capstone/ppc.h similarity index 100% rename from capstone-lib-win64/include/capstone/ppc.h rename to libraries/capstone-win64/include/capstone/ppc.h diff --git a/capstone-lib-win64/include/capstone/sparc.h b/libraries/capstone-win64/include/capstone/sparc.h similarity index 100% rename from capstone-lib-win64/include/capstone/sparc.h rename to libraries/capstone-win64/include/capstone/sparc.h diff --git a/capstone-lib-win64/include/capstone/systemz.h b/libraries/capstone-win64/include/capstone/systemz.h similarity index 100% rename from capstone-lib-win64/include/capstone/systemz.h rename to libraries/capstone-win64/include/capstone/systemz.h diff --git a/capstone-lib-win64/include/capstone/tms320c64x.h b/libraries/capstone-win64/include/capstone/tms320c64x.h similarity index 100% rename from capstone-lib-win64/include/capstone/tms320c64x.h rename to libraries/capstone-win64/include/capstone/tms320c64x.h diff --git a/capstone-lib-win64/include/capstone/x86.h b/libraries/capstone-win64/include/capstone/x86.h similarity index 100% rename from capstone-lib-win64/include/capstone/x86.h rename to libraries/capstone-win64/include/capstone/x86.h diff --git a/capstone-lib-win64/include/capstone/xcore.h b/libraries/capstone-win64/include/capstone/xcore.h similarity index 100% rename from capstone-lib-win64/include/capstone/xcore.h rename to libraries/capstone-win64/include/capstone/xcore.h diff --git a/capstone-lib-win64/include/platform.h b/libraries/capstone-win64/include/platform.h similarity index 100% rename from capstone-lib-win64/include/platform.h rename to libraries/capstone-win64/include/platform.h diff --git a/capstone-lib-win64/include/windowsce/intrin.h b/libraries/capstone-win64/include/windowsce/intrin.h similarity index 100% rename from capstone-lib-win64/include/windowsce/intrin.h rename to libraries/capstone-win64/include/windowsce/intrin.h diff --git a/capstone-lib-win64/include/windowsce/stdint.h b/libraries/capstone-win64/include/windowsce/stdint.h similarity index 100% rename from capstone-lib-win64/include/windowsce/stdint.h rename to libraries/capstone-win64/include/windowsce/stdint.h diff --git a/openssl-lib/ACKNOWLEDGEMENTS.txt b/libraries/openssl/ACKNOWLEDGEMENTS.txt similarity index 100% rename from openssl-lib/ACKNOWLEDGEMENTS.txt rename to libraries/openssl/ACKNOWLEDGEMENTS.txt diff --git a/openssl-lib/AUTHORS.txt b/libraries/openssl/AUTHORS.txt similarity index 100% rename from openssl-lib/AUTHORS.txt rename to libraries/openssl/AUTHORS.txt diff --git a/openssl-lib/CONTRIBUTING.txt b/libraries/openssl/CONTRIBUTING.txt similarity index 100% rename from openssl-lib/CONTRIBUTING.txt rename to libraries/openssl/CONTRIBUTING.txt diff --git a/openssl-lib/LICENSE.txt b/libraries/openssl/LICENSE.txt similarity index 100% rename from openssl-lib/LICENSE.txt rename to libraries/openssl/LICENSE.txt diff --git a/openssl-lib/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/libraries/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H similarity index 100% rename from openssl-lib/include/openssl/__DECC_INCLUDE_EPILOGUE.H rename to libraries/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H diff --git a/openssl-lib/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/libraries/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H similarity index 100% rename from openssl-lib/include/openssl/__DECC_INCLUDE_PROLOGUE.H rename to libraries/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H diff --git a/openssl-lib/include/openssl/aes.h b/libraries/openssl/include/openssl/aes.h similarity index 100% rename from openssl-lib/include/openssl/aes.h rename to libraries/openssl/include/openssl/aes.h diff --git a/openssl-lib/include/openssl/applink.c b/libraries/openssl/include/openssl/applink.c similarity index 100% rename from openssl-lib/include/openssl/applink.c rename to libraries/openssl/include/openssl/applink.c diff --git a/openssl-lib/include/openssl/asn1.h b/libraries/openssl/include/openssl/asn1.h similarity index 100% rename from openssl-lib/include/openssl/asn1.h rename to libraries/openssl/include/openssl/asn1.h diff --git a/openssl-lib/include/openssl/asn1_mac.h b/libraries/openssl/include/openssl/asn1_mac.h similarity index 100% rename from openssl-lib/include/openssl/asn1_mac.h rename to libraries/openssl/include/openssl/asn1_mac.h diff --git a/openssl-lib/include/openssl/asn1t.h b/libraries/openssl/include/openssl/asn1t.h similarity index 100% rename from openssl-lib/include/openssl/asn1t.h rename to libraries/openssl/include/openssl/asn1t.h diff --git a/openssl-lib/include/openssl/async.h b/libraries/openssl/include/openssl/async.h similarity index 100% rename from openssl-lib/include/openssl/async.h rename to libraries/openssl/include/openssl/async.h diff --git a/openssl-lib/include/openssl/bio.h b/libraries/openssl/include/openssl/bio.h similarity index 100% rename from openssl-lib/include/openssl/bio.h rename to libraries/openssl/include/openssl/bio.h diff --git a/openssl-lib/include/openssl/blowfish.h b/libraries/openssl/include/openssl/blowfish.h similarity index 100% rename from openssl-lib/include/openssl/blowfish.h rename to libraries/openssl/include/openssl/blowfish.h diff --git a/openssl-lib/include/openssl/bn.h b/libraries/openssl/include/openssl/bn.h similarity index 100% rename from openssl-lib/include/openssl/bn.h rename to libraries/openssl/include/openssl/bn.h diff --git a/openssl-lib/include/openssl/buffer.h b/libraries/openssl/include/openssl/buffer.h similarity index 100% rename from openssl-lib/include/openssl/buffer.h rename to libraries/openssl/include/openssl/buffer.h diff --git a/openssl-lib/include/openssl/camellia.h b/libraries/openssl/include/openssl/camellia.h similarity index 100% rename from openssl-lib/include/openssl/camellia.h rename to libraries/openssl/include/openssl/camellia.h diff --git a/openssl-lib/include/openssl/cast.h b/libraries/openssl/include/openssl/cast.h similarity index 100% rename from openssl-lib/include/openssl/cast.h rename to libraries/openssl/include/openssl/cast.h diff --git a/openssl-lib/include/openssl/cmac.h b/libraries/openssl/include/openssl/cmac.h similarity index 100% rename from openssl-lib/include/openssl/cmac.h rename to libraries/openssl/include/openssl/cmac.h diff --git a/openssl-lib/include/openssl/cms.h b/libraries/openssl/include/openssl/cms.h similarity index 100% rename from openssl-lib/include/openssl/cms.h rename to libraries/openssl/include/openssl/cms.h diff --git a/openssl-lib/include/openssl/comp.h b/libraries/openssl/include/openssl/comp.h similarity index 100% rename from openssl-lib/include/openssl/comp.h rename to libraries/openssl/include/openssl/comp.h diff --git a/openssl-lib/include/openssl/conf.h b/libraries/openssl/include/openssl/conf.h similarity index 100% rename from openssl-lib/include/openssl/conf.h rename to libraries/openssl/include/openssl/conf.h diff --git a/openssl-lib/include/openssl/conf_api.h b/libraries/openssl/include/openssl/conf_api.h similarity index 100% rename from openssl-lib/include/openssl/conf_api.h rename to libraries/openssl/include/openssl/conf_api.h diff --git a/openssl-lib/include/openssl/crypto.h b/libraries/openssl/include/openssl/crypto.h similarity index 100% rename from openssl-lib/include/openssl/crypto.h rename to libraries/openssl/include/openssl/crypto.h diff --git a/openssl-lib/include/openssl/ct.h b/libraries/openssl/include/openssl/ct.h similarity index 100% rename from openssl-lib/include/openssl/ct.h rename to libraries/openssl/include/openssl/ct.h diff --git a/openssl-lib/include/openssl/des.h b/libraries/openssl/include/openssl/des.h similarity index 100% rename from openssl-lib/include/openssl/des.h rename to libraries/openssl/include/openssl/des.h diff --git a/openssl-lib/include/openssl/dh.h b/libraries/openssl/include/openssl/dh.h similarity index 100% rename from openssl-lib/include/openssl/dh.h rename to libraries/openssl/include/openssl/dh.h diff --git a/openssl-lib/include/openssl/dsa.h b/libraries/openssl/include/openssl/dsa.h similarity index 100% rename from openssl-lib/include/openssl/dsa.h rename to libraries/openssl/include/openssl/dsa.h diff --git a/openssl-lib/include/openssl/dtls1.h b/libraries/openssl/include/openssl/dtls1.h similarity index 100% rename from openssl-lib/include/openssl/dtls1.h rename to libraries/openssl/include/openssl/dtls1.h diff --git a/openssl-lib/include/openssl/e_os2.h b/libraries/openssl/include/openssl/e_os2.h similarity index 100% rename from openssl-lib/include/openssl/e_os2.h rename to libraries/openssl/include/openssl/e_os2.h diff --git a/openssl-lib/include/openssl/ebcdic.h b/libraries/openssl/include/openssl/ebcdic.h similarity index 100% rename from openssl-lib/include/openssl/ebcdic.h rename to libraries/openssl/include/openssl/ebcdic.h diff --git a/openssl-lib/include/openssl/ec.h b/libraries/openssl/include/openssl/ec.h similarity index 100% rename from openssl-lib/include/openssl/ec.h rename to libraries/openssl/include/openssl/ec.h diff --git a/openssl-lib/include/openssl/ecdh.h b/libraries/openssl/include/openssl/ecdh.h similarity index 100% rename from openssl-lib/include/openssl/ecdh.h rename to libraries/openssl/include/openssl/ecdh.h diff --git a/openssl-lib/include/openssl/ecdsa.h b/libraries/openssl/include/openssl/ecdsa.h similarity index 100% rename from openssl-lib/include/openssl/ecdsa.h rename to libraries/openssl/include/openssl/ecdsa.h diff --git a/openssl-lib/include/openssl/engine.h b/libraries/openssl/include/openssl/engine.h similarity index 100% rename from openssl-lib/include/openssl/engine.h rename to libraries/openssl/include/openssl/engine.h diff --git a/openssl-lib/include/openssl/err.h b/libraries/openssl/include/openssl/err.h similarity index 100% rename from openssl-lib/include/openssl/err.h rename to libraries/openssl/include/openssl/err.h diff --git a/openssl-lib/include/openssl/evp.h b/libraries/openssl/include/openssl/evp.h similarity index 100% rename from openssl-lib/include/openssl/evp.h rename to libraries/openssl/include/openssl/evp.h diff --git a/openssl-lib/include/openssl/hmac.h b/libraries/openssl/include/openssl/hmac.h similarity index 100% rename from openssl-lib/include/openssl/hmac.h rename to libraries/openssl/include/openssl/hmac.h diff --git a/openssl-lib/include/openssl/idea.h b/libraries/openssl/include/openssl/idea.h similarity index 100% rename from openssl-lib/include/openssl/idea.h rename to libraries/openssl/include/openssl/idea.h diff --git a/openssl-lib/include/openssl/kdf.h b/libraries/openssl/include/openssl/kdf.h similarity index 100% rename from openssl-lib/include/openssl/kdf.h rename to libraries/openssl/include/openssl/kdf.h diff --git a/openssl-lib/include/openssl/lhash.h b/libraries/openssl/include/openssl/lhash.h similarity index 100% rename from openssl-lib/include/openssl/lhash.h rename to libraries/openssl/include/openssl/lhash.h diff --git a/openssl-lib/include/openssl/md2.h b/libraries/openssl/include/openssl/md2.h similarity index 100% rename from openssl-lib/include/openssl/md2.h rename to libraries/openssl/include/openssl/md2.h diff --git a/openssl-lib/include/openssl/md4.h b/libraries/openssl/include/openssl/md4.h similarity index 100% rename from openssl-lib/include/openssl/md4.h rename to libraries/openssl/include/openssl/md4.h diff --git a/openssl-lib/include/openssl/md5.h b/libraries/openssl/include/openssl/md5.h similarity index 100% rename from openssl-lib/include/openssl/md5.h rename to libraries/openssl/include/openssl/md5.h diff --git a/openssl-lib/include/openssl/mdc2.h b/libraries/openssl/include/openssl/mdc2.h similarity index 100% rename from openssl-lib/include/openssl/mdc2.h rename to libraries/openssl/include/openssl/mdc2.h diff --git a/openssl-lib/include/openssl/modes.h b/libraries/openssl/include/openssl/modes.h similarity index 100% rename from openssl-lib/include/openssl/modes.h rename to libraries/openssl/include/openssl/modes.h diff --git a/openssl-lib/include/openssl/obj_mac.h b/libraries/openssl/include/openssl/obj_mac.h similarity index 100% rename from openssl-lib/include/openssl/obj_mac.h rename to libraries/openssl/include/openssl/obj_mac.h diff --git a/openssl-lib/include/openssl/objects.h b/libraries/openssl/include/openssl/objects.h similarity index 100% rename from openssl-lib/include/openssl/objects.h rename to libraries/openssl/include/openssl/objects.h diff --git a/openssl-lib/include/openssl/ocsp.h b/libraries/openssl/include/openssl/ocsp.h similarity index 100% rename from openssl-lib/include/openssl/ocsp.h rename to libraries/openssl/include/openssl/ocsp.h diff --git a/openssl-lib/include/openssl/opensslconf.h b/libraries/openssl/include/openssl/opensslconf.h similarity index 100% rename from openssl-lib/include/openssl/opensslconf.h rename to libraries/openssl/include/openssl/opensslconf.h diff --git a/openssl-lib/include/openssl/opensslv.h b/libraries/openssl/include/openssl/opensslv.h similarity index 100% rename from openssl-lib/include/openssl/opensslv.h rename to libraries/openssl/include/openssl/opensslv.h diff --git a/openssl-lib/include/openssl/ossl_typ.h b/libraries/openssl/include/openssl/ossl_typ.h similarity index 100% rename from openssl-lib/include/openssl/ossl_typ.h rename to libraries/openssl/include/openssl/ossl_typ.h diff --git a/openssl-lib/include/openssl/pem.h b/libraries/openssl/include/openssl/pem.h similarity index 100% rename from openssl-lib/include/openssl/pem.h rename to libraries/openssl/include/openssl/pem.h diff --git a/openssl-lib/include/openssl/pem2.h b/libraries/openssl/include/openssl/pem2.h similarity index 100% rename from openssl-lib/include/openssl/pem2.h rename to libraries/openssl/include/openssl/pem2.h diff --git a/openssl-lib/include/openssl/pkcs12.h b/libraries/openssl/include/openssl/pkcs12.h similarity index 100% rename from openssl-lib/include/openssl/pkcs12.h rename to libraries/openssl/include/openssl/pkcs12.h diff --git a/openssl-lib/include/openssl/pkcs7.h b/libraries/openssl/include/openssl/pkcs7.h similarity index 100% rename from openssl-lib/include/openssl/pkcs7.h rename to libraries/openssl/include/openssl/pkcs7.h diff --git a/openssl-lib/include/openssl/rand.h b/libraries/openssl/include/openssl/rand.h similarity index 100% rename from openssl-lib/include/openssl/rand.h rename to libraries/openssl/include/openssl/rand.h diff --git a/openssl-lib/include/openssl/rc2.h b/libraries/openssl/include/openssl/rc2.h similarity index 100% rename from openssl-lib/include/openssl/rc2.h rename to libraries/openssl/include/openssl/rc2.h diff --git a/openssl-lib/include/openssl/rc4.h b/libraries/openssl/include/openssl/rc4.h similarity index 100% rename from openssl-lib/include/openssl/rc4.h rename to libraries/openssl/include/openssl/rc4.h diff --git a/openssl-lib/include/openssl/rc5.h b/libraries/openssl/include/openssl/rc5.h similarity index 100% rename from openssl-lib/include/openssl/rc5.h rename to libraries/openssl/include/openssl/rc5.h diff --git a/openssl-lib/include/openssl/ripemd.h b/libraries/openssl/include/openssl/ripemd.h similarity index 100% rename from openssl-lib/include/openssl/ripemd.h rename to libraries/openssl/include/openssl/ripemd.h diff --git a/openssl-lib/include/openssl/rsa.h b/libraries/openssl/include/openssl/rsa.h similarity index 100% rename from openssl-lib/include/openssl/rsa.h rename to libraries/openssl/include/openssl/rsa.h diff --git a/openssl-lib/include/openssl/safestack.h b/libraries/openssl/include/openssl/safestack.h similarity index 100% rename from openssl-lib/include/openssl/safestack.h rename to libraries/openssl/include/openssl/safestack.h diff --git a/openssl-lib/include/openssl/seed.h b/libraries/openssl/include/openssl/seed.h similarity index 100% rename from openssl-lib/include/openssl/seed.h rename to libraries/openssl/include/openssl/seed.h diff --git a/openssl-lib/include/openssl/sha.h b/libraries/openssl/include/openssl/sha.h similarity index 100% rename from openssl-lib/include/openssl/sha.h rename to libraries/openssl/include/openssl/sha.h diff --git a/openssl-lib/include/openssl/srp.h b/libraries/openssl/include/openssl/srp.h similarity index 100% rename from openssl-lib/include/openssl/srp.h rename to libraries/openssl/include/openssl/srp.h diff --git a/openssl-lib/include/openssl/srtp.h b/libraries/openssl/include/openssl/srtp.h similarity index 100% rename from openssl-lib/include/openssl/srtp.h rename to libraries/openssl/include/openssl/srtp.h diff --git a/openssl-lib/include/openssl/ssl.h b/libraries/openssl/include/openssl/ssl.h similarity index 100% rename from openssl-lib/include/openssl/ssl.h rename to libraries/openssl/include/openssl/ssl.h diff --git a/openssl-lib/include/openssl/ssl2.h b/libraries/openssl/include/openssl/ssl2.h similarity index 100% rename from openssl-lib/include/openssl/ssl2.h rename to libraries/openssl/include/openssl/ssl2.h diff --git a/openssl-lib/include/openssl/ssl3.h b/libraries/openssl/include/openssl/ssl3.h similarity index 100% rename from openssl-lib/include/openssl/ssl3.h rename to libraries/openssl/include/openssl/ssl3.h diff --git a/openssl-lib/include/openssl/stack.h b/libraries/openssl/include/openssl/stack.h similarity index 100% rename from openssl-lib/include/openssl/stack.h rename to libraries/openssl/include/openssl/stack.h diff --git a/openssl-lib/include/openssl/symhacks.h b/libraries/openssl/include/openssl/symhacks.h similarity index 100% rename from openssl-lib/include/openssl/symhacks.h rename to libraries/openssl/include/openssl/symhacks.h diff --git a/openssl-lib/include/openssl/tls1.h b/libraries/openssl/include/openssl/tls1.h similarity index 100% rename from openssl-lib/include/openssl/tls1.h rename to libraries/openssl/include/openssl/tls1.h diff --git a/openssl-lib/include/openssl/ts.h b/libraries/openssl/include/openssl/ts.h similarity index 100% rename from openssl-lib/include/openssl/ts.h rename to libraries/openssl/include/openssl/ts.h diff --git a/openssl-lib/include/openssl/txt_db.h b/libraries/openssl/include/openssl/txt_db.h similarity index 100% rename from openssl-lib/include/openssl/txt_db.h rename to libraries/openssl/include/openssl/txt_db.h diff --git a/openssl-lib/include/openssl/ui.h b/libraries/openssl/include/openssl/ui.h similarity index 100% rename from openssl-lib/include/openssl/ui.h rename to libraries/openssl/include/openssl/ui.h diff --git a/openssl-lib/include/openssl/whrlpool.h b/libraries/openssl/include/openssl/whrlpool.h similarity index 100% rename from openssl-lib/include/openssl/whrlpool.h rename to libraries/openssl/include/openssl/whrlpool.h diff --git a/openssl-lib/include/openssl/x509.h b/libraries/openssl/include/openssl/x509.h similarity index 100% rename from openssl-lib/include/openssl/x509.h rename to libraries/openssl/include/openssl/x509.h diff --git a/openssl-lib/include/openssl/x509_vfy.h b/libraries/openssl/include/openssl/x509_vfy.h similarity index 100% rename from openssl-lib/include/openssl/x509_vfy.h rename to libraries/openssl/include/openssl/x509_vfy.h diff --git a/openssl-lib/include/openssl/x509v3.h b/libraries/openssl/include/openssl/x509v3.h similarity index 100% rename from openssl-lib/include/openssl/x509v3.h rename to libraries/openssl/include/openssl/x509v3.h diff --git a/openssl-lib/include64/openssl/__DECC_INCLUDE_EPILOGUE.H b/libraries/openssl/include64/openssl/__DECC_INCLUDE_EPILOGUE.H similarity index 100% rename from openssl-lib/include64/openssl/__DECC_INCLUDE_EPILOGUE.H rename to libraries/openssl/include64/openssl/__DECC_INCLUDE_EPILOGUE.H diff --git a/openssl-lib/include64/openssl/__DECC_INCLUDE_PROLOGUE.H b/libraries/openssl/include64/openssl/__DECC_INCLUDE_PROLOGUE.H similarity index 100% rename from openssl-lib/include64/openssl/__DECC_INCLUDE_PROLOGUE.H rename to libraries/openssl/include64/openssl/__DECC_INCLUDE_PROLOGUE.H diff --git a/openssl-lib/include64/openssl/aes.h b/libraries/openssl/include64/openssl/aes.h similarity index 100% rename from openssl-lib/include64/openssl/aes.h rename to libraries/openssl/include64/openssl/aes.h diff --git a/openssl-lib/include64/openssl/applink.c b/libraries/openssl/include64/openssl/applink.c similarity index 100% rename from openssl-lib/include64/openssl/applink.c rename to libraries/openssl/include64/openssl/applink.c diff --git a/openssl-lib/include64/openssl/asn1.h b/libraries/openssl/include64/openssl/asn1.h similarity index 100% rename from openssl-lib/include64/openssl/asn1.h rename to libraries/openssl/include64/openssl/asn1.h diff --git a/openssl-lib/include64/openssl/asn1_mac.h b/libraries/openssl/include64/openssl/asn1_mac.h similarity index 100% rename from openssl-lib/include64/openssl/asn1_mac.h rename to libraries/openssl/include64/openssl/asn1_mac.h diff --git a/openssl-lib/include64/openssl/asn1t.h b/libraries/openssl/include64/openssl/asn1t.h similarity index 100% rename from openssl-lib/include64/openssl/asn1t.h rename to libraries/openssl/include64/openssl/asn1t.h diff --git a/openssl-lib/include64/openssl/async.h b/libraries/openssl/include64/openssl/async.h similarity index 100% rename from openssl-lib/include64/openssl/async.h rename to libraries/openssl/include64/openssl/async.h diff --git a/openssl-lib/include64/openssl/bio.h b/libraries/openssl/include64/openssl/bio.h similarity index 100% rename from openssl-lib/include64/openssl/bio.h rename to libraries/openssl/include64/openssl/bio.h diff --git a/openssl-lib/include64/openssl/blowfish.h b/libraries/openssl/include64/openssl/blowfish.h similarity index 100% rename from openssl-lib/include64/openssl/blowfish.h rename to libraries/openssl/include64/openssl/blowfish.h diff --git a/openssl-lib/include64/openssl/bn.h b/libraries/openssl/include64/openssl/bn.h similarity index 100% rename from openssl-lib/include64/openssl/bn.h rename to libraries/openssl/include64/openssl/bn.h diff --git a/openssl-lib/include64/openssl/buffer.h b/libraries/openssl/include64/openssl/buffer.h similarity index 100% rename from openssl-lib/include64/openssl/buffer.h rename to libraries/openssl/include64/openssl/buffer.h diff --git a/openssl-lib/include64/openssl/camellia.h b/libraries/openssl/include64/openssl/camellia.h similarity index 100% rename from openssl-lib/include64/openssl/camellia.h rename to libraries/openssl/include64/openssl/camellia.h diff --git a/openssl-lib/include64/openssl/cast.h b/libraries/openssl/include64/openssl/cast.h similarity index 100% rename from openssl-lib/include64/openssl/cast.h rename to libraries/openssl/include64/openssl/cast.h diff --git a/openssl-lib/include64/openssl/cmac.h b/libraries/openssl/include64/openssl/cmac.h similarity index 100% rename from openssl-lib/include64/openssl/cmac.h rename to libraries/openssl/include64/openssl/cmac.h diff --git a/openssl-lib/include64/openssl/cms.h b/libraries/openssl/include64/openssl/cms.h similarity index 100% rename from openssl-lib/include64/openssl/cms.h rename to libraries/openssl/include64/openssl/cms.h diff --git a/openssl-lib/include64/openssl/comp.h b/libraries/openssl/include64/openssl/comp.h similarity index 100% rename from openssl-lib/include64/openssl/comp.h rename to libraries/openssl/include64/openssl/comp.h diff --git a/openssl-lib/include64/openssl/conf.h b/libraries/openssl/include64/openssl/conf.h similarity index 100% rename from openssl-lib/include64/openssl/conf.h rename to libraries/openssl/include64/openssl/conf.h diff --git a/openssl-lib/include64/openssl/conf_api.h b/libraries/openssl/include64/openssl/conf_api.h similarity index 100% rename from openssl-lib/include64/openssl/conf_api.h rename to libraries/openssl/include64/openssl/conf_api.h diff --git a/openssl-lib/include64/openssl/crypto.h b/libraries/openssl/include64/openssl/crypto.h similarity index 100% rename from openssl-lib/include64/openssl/crypto.h rename to libraries/openssl/include64/openssl/crypto.h diff --git a/openssl-lib/include64/openssl/ct.h b/libraries/openssl/include64/openssl/ct.h similarity index 100% rename from openssl-lib/include64/openssl/ct.h rename to libraries/openssl/include64/openssl/ct.h diff --git a/openssl-lib/include64/openssl/des.h b/libraries/openssl/include64/openssl/des.h similarity index 100% rename from openssl-lib/include64/openssl/des.h rename to libraries/openssl/include64/openssl/des.h diff --git a/openssl-lib/include64/openssl/dh.h b/libraries/openssl/include64/openssl/dh.h similarity index 100% rename from openssl-lib/include64/openssl/dh.h rename to libraries/openssl/include64/openssl/dh.h diff --git a/openssl-lib/include64/openssl/dsa.h b/libraries/openssl/include64/openssl/dsa.h similarity index 100% rename from openssl-lib/include64/openssl/dsa.h rename to libraries/openssl/include64/openssl/dsa.h diff --git a/openssl-lib/include64/openssl/dtls1.h b/libraries/openssl/include64/openssl/dtls1.h similarity index 100% rename from openssl-lib/include64/openssl/dtls1.h rename to libraries/openssl/include64/openssl/dtls1.h diff --git a/openssl-lib/include64/openssl/e_os2.h b/libraries/openssl/include64/openssl/e_os2.h similarity index 100% rename from openssl-lib/include64/openssl/e_os2.h rename to libraries/openssl/include64/openssl/e_os2.h diff --git a/openssl-lib/include64/openssl/ebcdic.h b/libraries/openssl/include64/openssl/ebcdic.h similarity index 100% rename from openssl-lib/include64/openssl/ebcdic.h rename to libraries/openssl/include64/openssl/ebcdic.h diff --git a/openssl-lib/include64/openssl/ec.h b/libraries/openssl/include64/openssl/ec.h similarity index 100% rename from openssl-lib/include64/openssl/ec.h rename to libraries/openssl/include64/openssl/ec.h diff --git a/openssl-lib/include64/openssl/ecdh.h b/libraries/openssl/include64/openssl/ecdh.h similarity index 100% rename from openssl-lib/include64/openssl/ecdh.h rename to libraries/openssl/include64/openssl/ecdh.h diff --git a/openssl-lib/include64/openssl/ecdsa.h b/libraries/openssl/include64/openssl/ecdsa.h similarity index 100% rename from openssl-lib/include64/openssl/ecdsa.h rename to libraries/openssl/include64/openssl/ecdsa.h diff --git a/openssl-lib/include64/openssl/engine.h b/libraries/openssl/include64/openssl/engine.h similarity index 100% rename from openssl-lib/include64/openssl/engine.h rename to libraries/openssl/include64/openssl/engine.h diff --git a/openssl-lib/include64/openssl/err.h b/libraries/openssl/include64/openssl/err.h similarity index 100% rename from openssl-lib/include64/openssl/err.h rename to libraries/openssl/include64/openssl/err.h diff --git a/openssl-lib/include64/openssl/evp.h b/libraries/openssl/include64/openssl/evp.h similarity index 100% rename from openssl-lib/include64/openssl/evp.h rename to libraries/openssl/include64/openssl/evp.h diff --git a/openssl-lib/include64/openssl/hmac.h b/libraries/openssl/include64/openssl/hmac.h similarity index 100% rename from openssl-lib/include64/openssl/hmac.h rename to libraries/openssl/include64/openssl/hmac.h diff --git a/openssl-lib/include64/openssl/idea.h b/libraries/openssl/include64/openssl/idea.h similarity index 100% rename from openssl-lib/include64/openssl/idea.h rename to libraries/openssl/include64/openssl/idea.h diff --git a/openssl-lib/include64/openssl/kdf.h b/libraries/openssl/include64/openssl/kdf.h similarity index 100% rename from openssl-lib/include64/openssl/kdf.h rename to libraries/openssl/include64/openssl/kdf.h diff --git a/openssl-lib/include64/openssl/lhash.h b/libraries/openssl/include64/openssl/lhash.h similarity index 100% rename from openssl-lib/include64/openssl/lhash.h rename to libraries/openssl/include64/openssl/lhash.h diff --git a/openssl-lib/include64/openssl/md2.h b/libraries/openssl/include64/openssl/md2.h similarity index 100% rename from openssl-lib/include64/openssl/md2.h rename to libraries/openssl/include64/openssl/md2.h diff --git a/openssl-lib/include64/openssl/md4.h b/libraries/openssl/include64/openssl/md4.h similarity index 100% rename from openssl-lib/include64/openssl/md4.h rename to libraries/openssl/include64/openssl/md4.h diff --git a/openssl-lib/include64/openssl/md5.h b/libraries/openssl/include64/openssl/md5.h similarity index 100% rename from openssl-lib/include64/openssl/md5.h rename to libraries/openssl/include64/openssl/md5.h diff --git a/openssl-lib/include64/openssl/mdc2.h b/libraries/openssl/include64/openssl/mdc2.h similarity index 100% rename from openssl-lib/include64/openssl/mdc2.h rename to libraries/openssl/include64/openssl/mdc2.h diff --git a/openssl-lib/include64/openssl/modes.h b/libraries/openssl/include64/openssl/modes.h similarity index 100% rename from openssl-lib/include64/openssl/modes.h rename to libraries/openssl/include64/openssl/modes.h diff --git a/openssl-lib/include64/openssl/obj_mac.h b/libraries/openssl/include64/openssl/obj_mac.h similarity index 100% rename from openssl-lib/include64/openssl/obj_mac.h rename to libraries/openssl/include64/openssl/obj_mac.h diff --git a/openssl-lib/include64/openssl/objects.h b/libraries/openssl/include64/openssl/objects.h similarity index 100% rename from openssl-lib/include64/openssl/objects.h rename to libraries/openssl/include64/openssl/objects.h diff --git a/openssl-lib/include64/openssl/ocsp.h b/libraries/openssl/include64/openssl/ocsp.h similarity index 100% rename from openssl-lib/include64/openssl/ocsp.h rename to libraries/openssl/include64/openssl/ocsp.h diff --git a/openssl-lib/include64/openssl/opensslconf.h b/libraries/openssl/include64/openssl/opensslconf.h similarity index 100% rename from openssl-lib/include64/openssl/opensslconf.h rename to libraries/openssl/include64/openssl/opensslconf.h diff --git a/openssl-lib/include64/openssl/opensslv.h b/libraries/openssl/include64/openssl/opensslv.h similarity index 100% rename from openssl-lib/include64/openssl/opensslv.h rename to libraries/openssl/include64/openssl/opensslv.h diff --git a/openssl-lib/include64/openssl/ossl_typ.h b/libraries/openssl/include64/openssl/ossl_typ.h similarity index 100% rename from openssl-lib/include64/openssl/ossl_typ.h rename to libraries/openssl/include64/openssl/ossl_typ.h diff --git a/openssl-lib/include64/openssl/pem.h b/libraries/openssl/include64/openssl/pem.h similarity index 100% rename from openssl-lib/include64/openssl/pem.h rename to libraries/openssl/include64/openssl/pem.h diff --git a/openssl-lib/include64/openssl/pem2.h b/libraries/openssl/include64/openssl/pem2.h similarity index 100% rename from openssl-lib/include64/openssl/pem2.h rename to libraries/openssl/include64/openssl/pem2.h diff --git a/openssl-lib/include64/openssl/pkcs12.h b/libraries/openssl/include64/openssl/pkcs12.h similarity index 100% rename from openssl-lib/include64/openssl/pkcs12.h rename to libraries/openssl/include64/openssl/pkcs12.h diff --git a/openssl-lib/include64/openssl/pkcs7.h b/libraries/openssl/include64/openssl/pkcs7.h similarity index 100% rename from openssl-lib/include64/openssl/pkcs7.h rename to libraries/openssl/include64/openssl/pkcs7.h diff --git a/openssl-lib/include64/openssl/rand.h b/libraries/openssl/include64/openssl/rand.h similarity index 100% rename from openssl-lib/include64/openssl/rand.h rename to libraries/openssl/include64/openssl/rand.h diff --git a/openssl-lib/include64/openssl/rc2.h b/libraries/openssl/include64/openssl/rc2.h similarity index 100% rename from openssl-lib/include64/openssl/rc2.h rename to libraries/openssl/include64/openssl/rc2.h diff --git a/openssl-lib/include64/openssl/rc4.h b/libraries/openssl/include64/openssl/rc4.h similarity index 100% rename from openssl-lib/include64/openssl/rc4.h rename to libraries/openssl/include64/openssl/rc4.h diff --git a/openssl-lib/include64/openssl/rc5.h b/libraries/openssl/include64/openssl/rc5.h similarity index 100% rename from openssl-lib/include64/openssl/rc5.h rename to libraries/openssl/include64/openssl/rc5.h diff --git a/openssl-lib/include64/openssl/ripemd.h b/libraries/openssl/include64/openssl/ripemd.h similarity index 100% rename from openssl-lib/include64/openssl/ripemd.h rename to libraries/openssl/include64/openssl/ripemd.h diff --git a/openssl-lib/include64/openssl/rsa.h b/libraries/openssl/include64/openssl/rsa.h similarity index 100% rename from openssl-lib/include64/openssl/rsa.h rename to libraries/openssl/include64/openssl/rsa.h diff --git a/openssl-lib/include64/openssl/safestack.h b/libraries/openssl/include64/openssl/safestack.h similarity index 100% rename from openssl-lib/include64/openssl/safestack.h rename to libraries/openssl/include64/openssl/safestack.h diff --git a/openssl-lib/include64/openssl/seed.h b/libraries/openssl/include64/openssl/seed.h similarity index 100% rename from openssl-lib/include64/openssl/seed.h rename to libraries/openssl/include64/openssl/seed.h diff --git a/openssl-lib/include64/openssl/sha.h b/libraries/openssl/include64/openssl/sha.h similarity index 100% rename from openssl-lib/include64/openssl/sha.h rename to libraries/openssl/include64/openssl/sha.h diff --git a/openssl-lib/include64/openssl/srp.h b/libraries/openssl/include64/openssl/srp.h similarity index 100% rename from openssl-lib/include64/openssl/srp.h rename to libraries/openssl/include64/openssl/srp.h diff --git a/openssl-lib/include64/openssl/srtp.h b/libraries/openssl/include64/openssl/srtp.h similarity index 100% rename from openssl-lib/include64/openssl/srtp.h rename to libraries/openssl/include64/openssl/srtp.h diff --git a/openssl-lib/include64/openssl/ssl.h b/libraries/openssl/include64/openssl/ssl.h similarity index 100% rename from openssl-lib/include64/openssl/ssl.h rename to libraries/openssl/include64/openssl/ssl.h diff --git a/openssl-lib/include64/openssl/ssl2.h b/libraries/openssl/include64/openssl/ssl2.h similarity index 100% rename from openssl-lib/include64/openssl/ssl2.h rename to libraries/openssl/include64/openssl/ssl2.h diff --git a/openssl-lib/include64/openssl/ssl3.h b/libraries/openssl/include64/openssl/ssl3.h similarity index 100% rename from openssl-lib/include64/openssl/ssl3.h rename to libraries/openssl/include64/openssl/ssl3.h diff --git a/openssl-lib/include64/openssl/stack.h b/libraries/openssl/include64/openssl/stack.h similarity index 100% rename from openssl-lib/include64/openssl/stack.h rename to libraries/openssl/include64/openssl/stack.h diff --git a/openssl-lib/include64/openssl/symhacks.h b/libraries/openssl/include64/openssl/symhacks.h similarity index 100% rename from openssl-lib/include64/openssl/symhacks.h rename to libraries/openssl/include64/openssl/symhacks.h diff --git a/openssl-lib/include64/openssl/tls1.h b/libraries/openssl/include64/openssl/tls1.h similarity index 100% rename from openssl-lib/include64/openssl/tls1.h rename to libraries/openssl/include64/openssl/tls1.h diff --git a/openssl-lib/include64/openssl/ts.h b/libraries/openssl/include64/openssl/ts.h similarity index 100% rename from openssl-lib/include64/openssl/ts.h rename to libraries/openssl/include64/openssl/ts.h diff --git a/openssl-lib/include64/openssl/txt_db.h b/libraries/openssl/include64/openssl/txt_db.h similarity index 100% rename from openssl-lib/include64/openssl/txt_db.h rename to libraries/openssl/include64/openssl/txt_db.h diff --git a/openssl-lib/include64/openssl/ui.h b/libraries/openssl/include64/openssl/ui.h similarity index 100% rename from openssl-lib/include64/openssl/ui.h rename to libraries/openssl/include64/openssl/ui.h diff --git a/openssl-lib/include64/openssl/whrlpool.h b/libraries/openssl/include64/openssl/whrlpool.h similarity index 100% rename from openssl-lib/include64/openssl/whrlpool.h rename to libraries/openssl/include64/openssl/whrlpool.h diff --git a/openssl-lib/include64/openssl/x509.h b/libraries/openssl/include64/openssl/x509.h similarity index 100% rename from openssl-lib/include64/openssl/x509.h rename to libraries/openssl/include64/openssl/x509.h diff --git a/openssl-lib/include64/openssl/x509_vfy.h b/libraries/openssl/include64/openssl/x509_vfy.h similarity index 100% rename from openssl-lib/include64/openssl/x509_vfy.h rename to libraries/openssl/include64/openssl/x509_vfy.h diff --git a/openssl-lib/include64/openssl/x509v3.h b/libraries/openssl/include64/openssl/x509v3.h similarity index 100% rename from openssl-lib/include64/openssl/x509v3.h rename to libraries/openssl/include64/openssl/x509v3.h diff --git a/openssl-lib/lib/libcryptoMD.lib b/libraries/openssl/lib/libcryptoMD.lib similarity index 100% rename from openssl-lib/lib/libcryptoMD.lib rename to libraries/openssl/lib/libcryptoMD.lib diff --git a/openssl-lib/lib/libcryptoMDd.lib b/libraries/openssl/lib/libcryptoMDd.lib similarity index 100% rename from openssl-lib/lib/libcryptoMDd.lib rename to libraries/openssl/lib/libcryptoMDd.lib diff --git a/openssl-lib/lib/libcryptoMT.lib b/libraries/openssl/lib/libcryptoMT.lib similarity index 100% rename from openssl-lib/lib/libcryptoMT.lib rename to libraries/openssl/lib/libcryptoMT.lib diff --git a/openssl-lib/lib/libcryptoMTd.lib b/libraries/openssl/lib/libcryptoMTd.lib similarity index 100% rename from openssl-lib/lib/libcryptoMTd.lib rename to libraries/openssl/lib/libcryptoMTd.lib diff --git a/openssl-lib/lib/libsslMD.lib b/libraries/openssl/lib/libsslMD.lib similarity index 100% rename from openssl-lib/lib/libsslMD.lib rename to libraries/openssl/lib/libsslMD.lib diff --git a/openssl-lib/lib/libsslMDd.lib b/libraries/openssl/lib/libsslMDd.lib similarity index 100% rename from openssl-lib/lib/libsslMDd.lib rename to libraries/openssl/lib/libsslMDd.lib diff --git a/openssl-lib/lib/libsslMT.lib b/libraries/openssl/lib/libsslMT.lib similarity index 100% rename from openssl-lib/lib/libsslMT.lib rename to libraries/openssl/lib/libsslMT.lib diff --git a/openssl-lib/lib/libsslMTd.lib b/libraries/openssl/lib/libsslMTd.lib similarity index 100% rename from openssl-lib/lib/libsslMTd.lib rename to libraries/openssl/lib/libsslMTd.lib diff --git a/openssl-lib/lib64/libcryptoMD.lib b/libraries/openssl/lib64/libcryptoMD.lib similarity index 100% rename from openssl-lib/lib64/libcryptoMD.lib rename to libraries/openssl/lib64/libcryptoMD.lib diff --git a/openssl-lib/lib64/libcryptoMDd.lib b/libraries/openssl/lib64/libcryptoMDd.lib similarity index 100% rename from openssl-lib/lib64/libcryptoMDd.lib rename to libraries/openssl/lib64/libcryptoMDd.lib diff --git a/openssl-lib/lib64/libcryptoMT.lib b/libraries/openssl/lib64/libcryptoMT.lib similarity index 100% rename from openssl-lib/lib64/libcryptoMT.lib rename to libraries/openssl/lib64/libcryptoMT.lib diff --git a/openssl-lib/lib64/libcryptoMTd.lib b/libraries/openssl/lib64/libcryptoMTd.lib similarity index 100% rename from openssl-lib/lib64/libcryptoMTd.lib rename to libraries/openssl/lib64/libcryptoMTd.lib diff --git a/openssl-lib/lib64/libsslMD.lib b/libraries/openssl/lib64/libsslMD.lib similarity index 100% rename from openssl-lib/lib64/libsslMD.lib rename to libraries/openssl/lib64/libsslMD.lib diff --git a/openssl-lib/lib64/libsslMDd.lib b/libraries/openssl/lib64/libsslMDd.lib similarity index 100% rename from openssl-lib/lib64/libsslMDd.lib rename to libraries/openssl/lib64/libsslMDd.lib diff --git a/openssl-lib/lib64/libsslMT.lib b/libraries/openssl/lib64/libsslMT.lib similarity index 100% rename from openssl-lib/lib64/libsslMT.lib rename to libraries/openssl/lib64/libsslMT.lib diff --git a/openssl-lib/lib64/libsslMTd.lib b/libraries/openssl/lib64/libsslMTd.lib similarity index 100% rename from openssl-lib/lib64/libsslMTd.lib rename to libraries/openssl/lib64/libsslMTd.lib diff --git a/rapidjson-lib/include/rapidjson/allocators.h b/libraries/rapidjson/include/rapidjson/allocators.h similarity index 100% rename from rapidjson-lib/include/rapidjson/allocators.h rename to libraries/rapidjson/include/rapidjson/allocators.h diff --git a/rapidjson-lib/include/rapidjson/document.h b/libraries/rapidjson/include/rapidjson/document.h similarity index 100% rename from rapidjson-lib/include/rapidjson/document.h rename to libraries/rapidjson/include/rapidjson/document.h diff --git a/rapidjson-lib/include/rapidjson/encodedstream.h b/libraries/rapidjson/include/rapidjson/encodedstream.h similarity index 100% rename from rapidjson-lib/include/rapidjson/encodedstream.h rename to libraries/rapidjson/include/rapidjson/encodedstream.h diff --git a/rapidjson-lib/include/rapidjson/encodings.h b/libraries/rapidjson/include/rapidjson/encodings.h similarity index 100% rename from rapidjson-lib/include/rapidjson/encodings.h rename to libraries/rapidjson/include/rapidjson/encodings.h diff --git a/rapidjson-lib/include/rapidjson/error/en.h b/libraries/rapidjson/include/rapidjson/error/en.h similarity index 100% rename from rapidjson-lib/include/rapidjson/error/en.h rename to libraries/rapidjson/include/rapidjson/error/en.h diff --git a/rapidjson-lib/include/rapidjson/error/error.h b/libraries/rapidjson/include/rapidjson/error/error.h similarity index 100% rename from rapidjson-lib/include/rapidjson/error/error.h rename to libraries/rapidjson/include/rapidjson/error/error.h diff --git a/rapidjson-lib/include/rapidjson/filereadstream.h b/libraries/rapidjson/include/rapidjson/filereadstream.h similarity index 100% rename from rapidjson-lib/include/rapidjson/filereadstream.h rename to libraries/rapidjson/include/rapidjson/filereadstream.h diff --git a/rapidjson-lib/include/rapidjson/filewritestream.h b/libraries/rapidjson/include/rapidjson/filewritestream.h similarity index 100% rename from rapidjson-lib/include/rapidjson/filewritestream.h rename to libraries/rapidjson/include/rapidjson/filewritestream.h diff --git a/rapidjson-lib/include/rapidjson/fwd.h b/libraries/rapidjson/include/rapidjson/fwd.h similarity index 100% rename from rapidjson-lib/include/rapidjson/fwd.h rename to libraries/rapidjson/include/rapidjson/fwd.h diff --git a/rapidjson-lib/include/rapidjson/internal/biginteger.h b/libraries/rapidjson/include/rapidjson/internal/biginteger.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/biginteger.h rename to libraries/rapidjson/include/rapidjson/internal/biginteger.h diff --git a/rapidjson-lib/include/rapidjson/internal/diyfp.h b/libraries/rapidjson/include/rapidjson/internal/diyfp.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/diyfp.h rename to libraries/rapidjson/include/rapidjson/internal/diyfp.h diff --git a/rapidjson-lib/include/rapidjson/internal/dtoa.h b/libraries/rapidjson/include/rapidjson/internal/dtoa.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/dtoa.h rename to libraries/rapidjson/include/rapidjson/internal/dtoa.h diff --git a/rapidjson-lib/include/rapidjson/internal/ieee754.h b/libraries/rapidjson/include/rapidjson/internal/ieee754.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/ieee754.h rename to libraries/rapidjson/include/rapidjson/internal/ieee754.h diff --git a/rapidjson-lib/include/rapidjson/internal/itoa.h b/libraries/rapidjson/include/rapidjson/internal/itoa.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/itoa.h rename to libraries/rapidjson/include/rapidjson/internal/itoa.h diff --git a/rapidjson-lib/include/rapidjson/internal/meta.h b/libraries/rapidjson/include/rapidjson/internal/meta.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/meta.h rename to libraries/rapidjson/include/rapidjson/internal/meta.h diff --git a/rapidjson-lib/include/rapidjson/internal/pow10.h b/libraries/rapidjson/include/rapidjson/internal/pow10.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/pow10.h rename to libraries/rapidjson/include/rapidjson/internal/pow10.h diff --git a/rapidjson-lib/include/rapidjson/internal/regex.h b/libraries/rapidjson/include/rapidjson/internal/regex.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/regex.h rename to libraries/rapidjson/include/rapidjson/internal/regex.h diff --git a/rapidjson-lib/include/rapidjson/internal/stack.h b/libraries/rapidjson/include/rapidjson/internal/stack.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/stack.h rename to libraries/rapidjson/include/rapidjson/internal/stack.h diff --git a/rapidjson-lib/include/rapidjson/internal/strfunc.h b/libraries/rapidjson/include/rapidjson/internal/strfunc.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/strfunc.h rename to libraries/rapidjson/include/rapidjson/internal/strfunc.h diff --git a/rapidjson-lib/include/rapidjson/internal/strtod.h b/libraries/rapidjson/include/rapidjson/internal/strtod.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/strtod.h rename to libraries/rapidjson/include/rapidjson/internal/strtod.h diff --git a/rapidjson-lib/include/rapidjson/internal/swap.h b/libraries/rapidjson/include/rapidjson/internal/swap.h similarity index 100% rename from rapidjson-lib/include/rapidjson/internal/swap.h rename to libraries/rapidjson/include/rapidjson/internal/swap.h diff --git a/rapidjson-lib/include/rapidjson/istreamwrapper.h b/libraries/rapidjson/include/rapidjson/istreamwrapper.h similarity index 100% rename from rapidjson-lib/include/rapidjson/istreamwrapper.h rename to libraries/rapidjson/include/rapidjson/istreamwrapper.h diff --git a/rapidjson-lib/include/rapidjson/memorybuffer.h b/libraries/rapidjson/include/rapidjson/memorybuffer.h similarity index 100% rename from rapidjson-lib/include/rapidjson/memorybuffer.h rename to libraries/rapidjson/include/rapidjson/memorybuffer.h diff --git a/rapidjson-lib/include/rapidjson/memorystream.h b/libraries/rapidjson/include/rapidjson/memorystream.h similarity index 100% rename from rapidjson-lib/include/rapidjson/memorystream.h rename to libraries/rapidjson/include/rapidjson/memorystream.h diff --git a/rapidjson-lib/include/rapidjson/msinttypes/inttypes.h b/libraries/rapidjson/include/rapidjson/msinttypes/inttypes.h similarity index 100% rename from rapidjson-lib/include/rapidjson/msinttypes/inttypes.h rename to libraries/rapidjson/include/rapidjson/msinttypes/inttypes.h diff --git a/rapidjson-lib/include/rapidjson/msinttypes/stdint.h b/libraries/rapidjson/include/rapidjson/msinttypes/stdint.h similarity index 100% rename from rapidjson-lib/include/rapidjson/msinttypes/stdint.h rename to libraries/rapidjson/include/rapidjson/msinttypes/stdint.h diff --git a/rapidjson-lib/include/rapidjson/ostreamwrapper.h b/libraries/rapidjson/include/rapidjson/ostreamwrapper.h similarity index 100% rename from rapidjson-lib/include/rapidjson/ostreamwrapper.h rename to libraries/rapidjson/include/rapidjson/ostreamwrapper.h diff --git a/rapidjson-lib/include/rapidjson/pointer.h b/libraries/rapidjson/include/rapidjson/pointer.h similarity index 100% rename from rapidjson-lib/include/rapidjson/pointer.h rename to libraries/rapidjson/include/rapidjson/pointer.h diff --git a/rapidjson-lib/include/rapidjson/prettywriter.h b/libraries/rapidjson/include/rapidjson/prettywriter.h similarity index 100% rename from rapidjson-lib/include/rapidjson/prettywriter.h rename to libraries/rapidjson/include/rapidjson/prettywriter.h diff --git a/rapidjson-lib/include/rapidjson/rapidjson.h b/libraries/rapidjson/include/rapidjson/rapidjson.h similarity index 100% rename from rapidjson-lib/include/rapidjson/rapidjson.h rename to libraries/rapidjson/include/rapidjson/rapidjson.h diff --git a/rapidjson-lib/include/rapidjson/reader.h b/libraries/rapidjson/include/rapidjson/reader.h similarity index 100% rename from rapidjson-lib/include/rapidjson/reader.h rename to libraries/rapidjson/include/rapidjson/reader.h diff --git a/rapidjson-lib/include/rapidjson/schema.h b/libraries/rapidjson/include/rapidjson/schema.h similarity index 100% rename from rapidjson-lib/include/rapidjson/schema.h rename to libraries/rapidjson/include/rapidjson/schema.h diff --git a/rapidjson-lib/include/rapidjson/stream.h b/libraries/rapidjson/include/rapidjson/stream.h similarity index 100% rename from rapidjson-lib/include/rapidjson/stream.h rename to libraries/rapidjson/include/rapidjson/stream.h diff --git a/rapidjson-lib/include/rapidjson/stringbuffer.h b/libraries/rapidjson/include/rapidjson/stringbuffer.h similarity index 100% rename from rapidjson-lib/include/rapidjson/stringbuffer.h rename to libraries/rapidjson/include/rapidjson/stringbuffer.h diff --git a/rapidjson-lib/include/rapidjson/writer.h b/libraries/rapidjson/include/rapidjson/writer.h similarity index 100% rename from rapidjson-lib/include/rapidjson/writer.h rename to libraries/rapidjson/include/rapidjson/writer.h diff --git a/rapidjson-lib/license.txt b/libraries/rapidjson/license.txt similarity index 100% rename from rapidjson-lib/license.txt rename to libraries/rapidjson/license.txt diff --git a/navicat-keygen/navicat-keygen.vcxproj b/navicat-keygen/navicat-keygen.vcxproj index e9e2b4f..1c4347a 100644 --- a/navicat-keygen/navicat-keygen.vcxproj +++ b/navicat-keygen/navicat-keygen.vcxproj @@ -71,27 +71,27 @@ true - $(SolutionDir)rapidjson-lib\include;$(SolutionDir)openssl-lib\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib;$(LibraryPath) + $(SolutionDir)libraries\rapidjson\include;$(SolutionDir)libraries\openssl\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib;$(LibraryPath) $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true - $(SolutionDir)rapidjson-lib\include;$(SolutionDir)openssl-lib\include64;$(IncludePath) - $(SolutionDir)openssl-lib\lib64;$(LibraryPath) + $(SolutionDir)libraries\rapidjson\include;$(SolutionDir)libraries\openssl\include64;$(IncludePath) + $(SolutionDir)libraries\openssl\lib64;$(LibraryPath) false - $(SolutionDir)rapidjson-lib\include;$(SolutionDir)openssl-lib\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib;$(LibraryPath) + $(SolutionDir)libraries\rapidjson\include;$(SolutionDir)libraries\openssl\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib;$(LibraryPath) $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false - $(SolutionDir)rapidjson-lib\include;$(SolutionDir)openssl-lib\include64;$(IncludePath) - $(SolutionDir)openssl-lib\lib64;$(LibraryPath) + $(SolutionDir)libraries\rapidjson\include;$(SolutionDir)libraries\openssl\include64;$(IncludePath) + $(SolutionDir)libraries\openssl\lib64;$(LibraryPath) diff --git a/navicat-patcher/navicat-patcher.vcxproj b/navicat-patcher/navicat-patcher.vcxproj index 13e2ac9..ce61c50 100644 --- a/navicat-patcher/navicat-patcher.vcxproj +++ b/navicat-patcher/navicat-patcher.vcxproj @@ -75,28 +75,28 @@ true - $(SolutionDir)openssl-lib\include;$(SolutionDir)capstone-lib-win32\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib;$(SolutionDir)capstone-lib-win32;$(LibraryPath) + $(SolutionDir)libraries\openssl\include;$(SolutionDir)libraries\capstone-win32\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib;$(SolutionDir)libraries\capstone-win32;$(LibraryPath) $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ true - $(SolutionDir)openssl-lib\include64;$(SolutionDir)capstone-lib-win64\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib64;$(SolutionDir)capstone-lib-win64;$(LibraryPath) + $(SolutionDir)libraries\openssl\include64;$(SolutionDir)libraries\capstone-win64\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib64;$(SolutionDir)libraries\capstone-win64;$(LibraryPath) $(ReferencePath) false - $(SolutionDir)openssl-lib\include;$(SolutionDir)capstone-lib-win32\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib;$(SolutionDir)capstone-lib-win32;$(LibraryPath) + $(SolutionDir)libraries\openssl\include;$(SolutionDir)libraries\capstone-win32\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib;$(SolutionDir)libraries\capstone-win32;$(LibraryPath) $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ false - $(SolutionDir)openssl-lib\include64;$(SolutionDir)capstone-lib-win64\include;$(IncludePath) - $(SolutionDir)openssl-lib\lib64;$(SolutionDir)capstone-lib-win64;$(LibraryPath) + $(SolutionDir)libraries\openssl\include64;$(SolutionDir)libraries\capstone-win64\include;$(IncludePath) + $(SolutionDir)libraries\openssl\lib64;$(SolutionDir)libraries\capstone-win64;$(LibraryPath) $(ReferencePath) diff --git a/openssl-lib/CHANGES.txt b/openssl-lib/CHANGES.txt deleted file mode 100644 index 49f9f78..0000000 --- a/openssl-lib/CHANGES.txt +++ /dev/null @@ -1,12465 +0,0 @@ - - OpenSSL CHANGES - _______________ - - Changes between 1.1.0e and 1.1.0f [25 May 2017] - - *) Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target - platform rather than 'mingw'. - [Richard Levitte] - - *) Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c. - VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1, - which is the minimum version we support. - [Richard Levitte] - - Changes between 1.1.0d and 1.1.0e [16 Feb 2017] - - *) Encrypt-Then-Mac renegotiation crash - - During a renegotiation handshake if the Encrypt-Then-Mac extension is - negotiated where it was not in the original handshake (or vice-versa) then - this can cause OpenSSL to crash (dependant on ciphersuite). Both clients - and servers are affected. - - This issue was reported to OpenSSL by Joe Orton (Red Hat). - (CVE-2017-3733) - [Matt Caswell] - - Changes between 1.1.0c and 1.1.0d [26 Jan 2017] - - *) Truncated packet could crash via OOB read - - If one side of an SSL/TLS path is running on a 32-bit host and a specific - cipher is being used, then a truncated packet can cause that host to - perform an out-of-bounds read, usually resulting in a crash. - - This issue was reported to OpenSSL by Robert Święcki of Google. - (CVE-2017-3731) - [Andy Polyakov] - - *) Bad (EC)DHE parameters cause a client crash - - If a malicious server supplies bad parameters for a DHE or ECDHE key - exchange then this can result in the client attempting to dereference a - NULL pointer leading to a client crash. This could be exploited in a Denial - of Service attack. - - This issue was reported to OpenSSL by Guido Vranken. - (CVE-2017-3730) - [Matt Caswell] - - *) BN_mod_exp may produce incorrect results on x86_64 - - There is a carry propagating bug in the x86_64 Montgomery squaring - procedure. No EC algorithms are affected. Analysis suggests that attacks - against RSA and DSA as a result of this defect would be very difficult to - perform and are not believed likely. Attacks against DH are considered just - feasible (although very difficult) because most of the work necessary to - deduce information about a private key may be performed offline. The amount - of resources required for such an attack would be very significant and - likely only accessible to a limited number of attackers. An attacker would - additionally need online access to an unpatched system using the target - private key in a scenario with persistent DH parameters and a private - key that is shared between multiple clients. For example this can occur by - default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very - similar to CVE-2015-3193 but must be treated as a separate problem. - - This issue was reported to OpenSSL by the OSS-Fuzz project. - (CVE-2017-3732) - [Andy Polyakov] - - Changes between 1.1.0b and 1.1.0c [10 Nov 2016] - - *) ChaCha20/Poly1305 heap-buffer-overflow - - TLS connections using *-CHACHA20-POLY1305 ciphersuites are susceptible to - a DoS attack by corrupting larger payloads. This can result in an OpenSSL - crash. This issue is not considered to be exploitable beyond a DoS. - - This issue was reported to OpenSSL by Robert Święcki (Google Security Team) - (CVE-2016-7054) - [Richard Levitte] - - *) CMS Null dereference - - Applications parsing invalid CMS structures can crash with a NULL pointer - dereference. This is caused by a bug in the handling of the ASN.1 CHOICE - type in OpenSSL 1.1.0 which can result in a NULL value being passed to the - structure callback if an attempt is made to free certain invalid encodings. - Only CHOICE structures using a callback which do not handle NULL value are - affected. - - This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure. - (CVE-2016-7053) - [Stephen Henson] - - *) Montgomery multiplication may produce incorrect results - - There is a carry propagating bug in the Broadwell-specific Montgomery - multiplication procedure that handles input lengths divisible by, but - longer than 256 bits. Analysis suggests that attacks against RSA, DSA - and DH private keys are impossible. This is because the subroutine in - question is not used in operations with the private key itself and an input - of the attacker's direct choice. Otherwise the bug can manifest itself as - transient authentication and key negotiation failures or reproducible - erroneous outcome of public-key operations with specially crafted input. - Among EC algorithms only Brainpool P-512 curves are affected and one - presumably can attack ECDH key negotiation. Impact was not analyzed in - detail, because pre-requisites for attack are considered unlikely. Namely - multiple clients have to choose the curve in question and the server has to - share the private key among them, neither of which is default behaviour. - Even then only clients that chose the curve will be affected. - - This issue was publicly reported as transient failures and was not - initially recognized as a security issue. Thanks to Richard Morgan for - providing reproducible case. - (CVE-2016-7055) - [Andy Polyakov] - - *) OpenSSL now fails if it receives an unrecognised record type in TLS1.0 - or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to - prevent issues where no progress is being made and the peer continually - sends unrecognised record types, using up resources processing them. - [Matt Caswell] - - *) Removed automatic addition of RPATH in shared libraries and executables, - as this was a remainder from OpenSSL 1.0.x and isn't needed any more. - [Richard Levitte] - - Changes between 1.1.0a and 1.1.0b [26 Sep 2016] - - *) Fix Use After Free for large message sizes - - The patch applied to address CVE-2016-6307 resulted in an issue where if a - message larger than approx 16k is received then the underlying buffer to - store the incoming message is reallocated and moved. Unfortunately a - dangling pointer to the old location is left which results in an attempt to - write to the previously freed location. This is likely to result in a - crash, however it could potentially lead to execution of arbitrary code. - - This issue only affects OpenSSL 1.1.0a. - - This issue was reported to OpenSSL by Robert Święcki. - (CVE-2016-6309) - [Matt Caswell] - - Changes between 1.1.0 and 1.1.0a [22 Sep 2016] - - *) OCSP Status Request extension unbounded memory growth - - A malicious client can send an excessively large OCSP Status Request - extension. If that client continually requests renegotiation, sending a - large OCSP Status Request extension each time, then there will be unbounded - memory growth on the server. This will eventually lead to a Denial Of - Service attack through memory exhaustion. Servers with a default - configuration are vulnerable even if they do not support OCSP. Builds using - the "no-ocsp" build time option are not affected. - - This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) - (CVE-2016-6304) - [Matt Caswell] - - *) SSL_peek() hang on empty record - - OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer - sends an empty record. This could be exploited by a malicious peer in a - Denial Of Service attack. - - This issue was reported to OpenSSL by Alex Gaynor. - (CVE-2016-6305) - [Matt Caswell] - - *) Excessive allocation of memory in tls_get_message_header() and - dtls1_preprocess_fragment() - - A (D)TLS message includes 3 bytes for its length in the header for the - message. This would allow for messages up to 16Mb in length. Messages of - this length are excessive and OpenSSL includes a check to ensure that a - peer is sending reasonably sized messages in order to avoid too much memory - being consumed to service a connection. A flaw in the logic of version - 1.1.0 means that memory for the message is allocated too early, prior to - the excessive message length check. Due to way memory is allocated in - OpenSSL this could mean an attacker could force up to 21Mb to be allocated - to service a connection. This could lead to a Denial of Service through - memory exhaustion. However, the excessive message length check still takes - place, and this would cause the connection to immediately fail. Assuming - that the application calls SSL_free() on the failed connection in a timely - manner then the 21Mb of allocated memory will then be immediately freed - again. Therefore the excessive memory allocation will be transitory in - nature. This then means that there is only a security impact if: - - 1) The application does not call SSL_free() in a timely manner in the event - that the connection fails - or - 2) The application is working in a constrained environment where there is - very little free memory - or - 3) The attacker initiates multiple connection attempts such that there are - multiple connections in a state where memory has been allocated for the - connection; SSL_free() has not yet been called; and there is insufficient - memory to service the multiple requests. - - Except in the instance of (1) above any Denial Of Service is likely to be - transitory because as soon as the connection fails the memory is - subsequently freed again in the SSL_free() call. However there is an - increased risk during this period of application crashes due to the lack of - memory - which would then mean a more serious Denial of Service. - - This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) - (CVE-2016-6307 and CVE-2016-6308) - [Matt Caswell] - - *) solaris-x86-cc, i.e. 32-bit configuration with vendor compiler, - had to be removed. Primary reason is that vendor assembler can't - assemble our modules with -KPIC flag. As result it, assembly - support, was not even available as option. But its lack means - lack of side-channel resistant code, which is incompatible with - security by todays standards. Fortunately gcc is readily available - prepackaged option, which we firmly point at... - [Andy Polyakov] - - Changes between 1.0.2h and 1.1.0 [25 Aug 2016] - - *) Windows command-line tool supports UTF-8 opt-in option for arguments - and console input. Setting OPENSSL_WIN32_UTF8 environment variable - (to any value) allows Windows user to access PKCS#12 file generated - with Windows CryptoAPI and protected with non-ASCII password, as well - as files generated under UTF-8 locale on Linux also protected with - non-ASCII password. - [Andy Polyakov] - - *) To mitigate the SWEET32 attack (CVE-2016-2183), 3DES cipher suites - have been disabled by default and removed from DEFAULT, just like RC4. - See the RC4 item below to re-enable both. - [Rich Salz] - - *) The method for finding the storage location for the Windows RAND seed file - has changed. First we check %RANDFILE%. If that is not set then we check - the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If - all else fails we fall back to C:\. - [Matt Caswell] - - *) The EVP_EncryptUpdate() function has had its return type changed from void - to int. A return of 0 indicates and error while a return of 1 indicates - success. - [Matt Caswell] - - *) The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and - DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch - off the constant time implementation for RSA, DSA and DH have been made - no-ops and deprecated. - [Matt Caswell] - - *) Windows RAND implementation was simplified to only get entropy by - calling CryptGenRandom(). Various other RAND-related tickets - were also closed. - [Joseph Wylie Yandle, Rich Salz] - - *) The stack and lhash API's were renamed to start with OPENSSL_SK_ - and OPENSSL_LH_, respectively. The old names are available - with API compatibility. They new names are now completely documented. - [Rich Salz] - - *) Unify TYPE_up_ref(obj) methods signature. - SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(), - X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an - int (instead of void) like all others TYPE_up_ref() methods. - So now these methods also check the return value of CRYPTO_atomic_add(), - and the validity of object reference counter. - [fdasilvayy@gmail.com] - - *) With Windows Visual Studio builds, the .pdb files are installed - alongside the installed libraries and executables. For a static - library installation, ossl_static.pdb is the associate compiler - generated .pdb file to be used when linking programs. - [Richard Levitte] - - *) Remove openssl.spec. Packaging files belong with the packagers. - [Richard Levitte] - - *) Automatic Darwin/OSX configuration has had a refresh, it will now - recognise x86_64 architectures automatically. You can still decide - to build for a different bitness with the environment variable - KERNEL_BITS (can be 32 or 64), for example: - - KERNEL_BITS=32 ./config - - [Richard Levitte] - - *) Change default algorithms in pkcs8 utility to use PKCS#5 v2.0, - 256 bit AES and HMAC with SHA256. - [Steve Henson] - - *) Remove support for MIPS o32 ABI on IRIX (and IRIX only). - [Andy Polyakov] - - *) Triple-DES ciphers have been moved from HIGH to MEDIUM. - [Rich Salz] - - *) To enable users to have their own config files and build file templates, - Configure looks in the directory indicated by the environment variable - OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/ - directory. On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical - name and is used as is. - [Richard Levitte] - - *) The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX, - X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD. The unused type - X509_CERT_FILE_CTX was removed. - [Rich Salz] - - *) "shared" builds are now the default. To create only static libraries use - the "no-shared" Configure option. - [Matt Caswell] - - *) Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options. - All of these option have not worked for some while and are fundamental - algorithms. - [Matt Caswell] - - *) Make various cleanup routines no-ops and mark them as deprecated. Most - global cleanup functions are no longer required because they are handled - via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages). - Explicitly de-initing can cause problems (e.g. where a library that uses - OpenSSL de-inits, but an application is still using it). The affected - functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(), - EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(), - RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and - COMP_zlib_cleanup(). - [Matt Caswell] - - *) --strict-warnings no longer enables runtime debugging options - such as REF_DEBUG. Instead, debug options are automatically - enabled with '--debug' builds. - [Andy Polyakov, Emilia Käsper] - - *) Made DH and DH_METHOD opaque. The structures for managing DH objects - have been moved out of the public header files. New functions for managing - these have been added. - [Matt Caswell] - - *) Made RSA and RSA_METHOD opaque. The structures for managing RSA - objects have been moved out of the public header files. New - functions for managing these have been added. - [Richard Levitte] - - *) Made DSA and DSA_METHOD opaque. The structures for managing DSA objects - have been moved out of the public header files. New functions for managing - these have been added. - [Matt Caswell] - - *) Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been - moved out of the public header files. New functions for managing these - have been added. - [Matt Caswell] - - *) Removed no-rijndael as a config option. Rijndael is an old name for AES. - [Matt Caswell] - - *) Removed the mk1mf build scripts. - [Richard Levitte] - - *) Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so - it is always safe to #include a header now. - [Rich Salz] - - *) Removed the aged BC-32 config and all its supporting scripts - [Richard Levitte] - - *) Removed support for Ultrix, Netware, and OS/2. - [Rich Salz] - - *) Add support for HKDF. - [Alessandro Ghedini] - - *) Add support for blake2b and blake2s - [Bill Cox] - - *) Added support for "pipelining". Ciphers that have the - EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple - encryptions/decryptions simultaneously. There are currently no built-in - ciphers with this property but the expectation is that engines will be able - to offer it to significantly improve throughput. Support has been extended - into libssl so that multiple records for a single connection can be - processed in one go (for >=TLS 1.1). - [Matt Caswell] - - *) Added the AFALG engine. This is an async capable engine which is able to - offload work to the Linux kernel. In this initial version it only supports - AES128-CBC. The kernel must be version 4.1.0 or greater. - [Catriona Lucey] - - *) OpenSSL now uses a new threading API. It is no longer necessary to - set locking callbacks to use OpenSSL in a multi-threaded environment. There - are two supported threading models: pthreads and windows threads. It is - also possible to configure OpenSSL at compile time for "no-threads". The - old threading API should no longer be used. The functions have been - replaced with "no-op" compatibility macros. - [Alessandro Ghedini, Matt Caswell] - - *) Modify behavior of ALPN to invoke callback after SNI/servername - callback, such that updates to the SSL_CTX affect ALPN. - [Todd Short] - - *) Add SSL_CIPHER queries for authentication and key-exchange. - [Todd Short] - - *) Changes to the DEFAULT cipherlist: - - Prefer (EC)DHE handshakes over plain RSA. - - Prefer AEAD ciphers over legacy ciphers. - - Prefer ECDSA over RSA when both certificates are available. - - Prefer TLSv1.2 ciphers/PRF. - - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the - default cipherlist. - [Emilia Käsper] - - *) Change the ECC default curve list to be this, in order: x25519, - secp256r1, secp521r1, secp384r1. - [Rich Salz] - - *) RC4 based libssl ciphersuites are now classed as "weak" ciphers and are - disabled by default. They can be re-enabled using the - enable-weak-ssl-ciphers option to Configure. - [Matt Caswell] - - *) If the server has ALPN configured, but supports no protocols that the - client advertises, send a fatal "no_application_protocol" alert. - This behaviour is SHALL in RFC 7301, though it isn't universally - implemented by other servers. - [Emilia Käsper] - - *) Add X25519 support. - Add ASN.1 and EVP_PKEY methods for X25519. This includes support - for public and private key encoding using the format documented in - draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports - key generation and key derivation. - - TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses - X25519(29). - [Steve Henson] - - *) Deprecate SRP_VBASE_get_by_user. - SRP_VBASE_get_by_user had inconsistent memory management behaviour. - In order to fix an unavoidable memory leak (CVE-2016-0798), - SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP - seed, even if the seed is configured. - - Users should use SRP_VBASE_get1_by_user instead. Note that in - SRP_VBASE_get1_by_user, caller must free the returned value. Note - also that even though configuring the SRP seed attempts to hide - invalid usernames by continuing the handshake with fake - credentials, this behaviour is not constant time and no strong - guarantees are made that the handshake is indistinguishable from - that of a valid user. - [Emilia Käsper] - - *) Configuration change; it's now possible to build dynamic engines - without having to build shared libraries and vice versa. This - only applies to the engines in engines/, those in crypto/engine/ - will always be built into libcrypto (i.e. "static"). - - Building dynamic engines is enabled by default; to disable, use - the configuration option "disable-dynamic-engine". - - The only requirements for building dynamic engines are the - presence of the DSO module and building with position independent - code, so they will also automatically be disabled if configuring - with "disable-dso" or "disable-pic". - - The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE - are also taken away from openssl/opensslconf.h, as they are - irrelevant. - [Richard Levitte] - - *) Configuration change; if there is a known flag to compile - position independent code, it will always be applied on the - libcrypto and libssl object files, and never on the application - object files. This means other libraries that use routines from - libcrypto / libssl can be made into shared libraries regardless - of how OpenSSL was configured. - - If this isn't desirable, the configuration options "disable-pic" - or "no-pic" can be used to disable the use of PIC. This will - also disable building shared libraries and dynamic engines. - [Richard Levitte] - - *) Removed JPAKE code. It was experimental and has no wide use. - [Rich Salz] - - *) The INSTALL_PREFIX Makefile variable has been renamed to - DESTDIR. That makes for less confusion on what this variable - is for. Also, the configuration option --install_prefix is - removed. - [Richard Levitte] - - *) Heartbeat for TLS has been removed and is disabled by default - for DTLS; configure with enable-heartbeats. Code that uses the - old #define's might need to be updated. - [Emilia Käsper, Rich Salz] - - *) Rename REF_CHECK to REF_DEBUG. - [Rich Salz] - - *) New "unified" build system - - The "unified" build system is aimed to be a common system for all - platforms we support. With it comes new support for VMS. - - This system builds supports building in a different directory tree - than the source tree. It produces one Makefile (for unix family - or lookalikes), or one descrip.mms (for VMS). - - The source of information to make the Makefile / descrip.mms is - small files called 'build.info', holding the necessary - information for each directory with source to compile, and a - template in Configurations, like unix-Makefile.tmpl or - descrip.mms.tmpl. - - With this change, the library names were also renamed on Windows - and on VMS. They now have names that are closer to the standard - on Unix, and include the major version number, and in certain - cases, the architecture they are built for. See "Notes on shared - libraries" in INSTALL. - - We rely heavily on the perl module Text::Template. - [Richard Levitte] - - *) Added support for auto-initialisation and de-initialisation of the library. - OpenSSL no longer requires explicit init or deinit routines to be called, - except in certain circumstances. See the OPENSSL_init_crypto() and - OPENSSL_init_ssl() man pages for further information. - [Matt Caswell] - - *) The arguments to the DTLSv1_listen function have changed. Specifically the - "peer" argument is now expected to be a BIO_ADDR object. - - *) Rewrite of BIO networking library. The BIO library lacked consistent - support of IPv6, and adding it required some more extensive - modifications. This introduces the BIO_ADDR and BIO_ADDRINFO types, - which hold all types of addresses and chains of address information. - It also introduces a new API, with functions like BIO_socket, - BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept. - The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram - have been adapted accordingly. - [Richard Levitte] - - *) RSA_padding_check_PKCS1_type_1 now accepts inputs with and without - the leading 0-byte. - [Emilia Käsper] - - *) CRIME protection: disable compression by default, even if OpenSSL is - compiled with zlib enabled. Applications can still enable compression - by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by - using the SSL_CONF library to configure compression. - [Emilia Käsper] - - *) The signature of the session callback configured with - SSL_CTX_sess_set_get_cb was changed. The read-only input buffer - was explicitly marked as 'const unsigned char*' instead of - 'unsigned char*'. - [Emilia Käsper] - - *) Always DPURIFY. Remove the use of uninitialized memory in the - RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op. - [Emilia Käsper] - - *) Removed many obsolete configuration items, including - DES_PTR, DES_RISC1, DES_RISC2, DES_INT - MD2_CHAR, MD2_INT, MD2_LONG - BF_PTR, BF_PTR2 - IDEA_SHORT, IDEA_LONG - RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX - [Rich Salz, with advice from Andy Polyakov] - - *) Many BN internals have been moved to an internal header file. - [Rich Salz with help from Andy Polyakov] - - *) Configuration and writing out the results from it has changed. - Files such as Makefile include/openssl/opensslconf.h and are now - produced through general templates, such as Makefile.in and - crypto/opensslconf.h.in and some help from the perl module - Text::Template. - - Also, the center of configuration information is no longer - Makefile. Instead, Configure produces a perl module in - configdata.pm which holds most of the config data (in the hash - table %config), the target data that comes from the target - configuration in one of the Configurations/*.conf files (in - %target). - [Richard Levitte] - - *) To clarify their intended purposes, the Configure options - --prefix and --openssldir change their semantics, and become more - straightforward and less interdependent. - - --prefix shall be used exclusively to give the location INSTALLTOP - where programs, scripts, libraries, include files and manuals are - going to be installed. The default is now /usr/local. - - --openssldir shall be used exclusively to give the default - location OPENSSLDIR where certificates, private keys, CRLs are - managed. This is also where the default openssl.cnf gets - installed. - If the directory given with this option is a relative path, the - values of both the --prefix value and the --openssldir value will - be combined to become OPENSSLDIR. - The default for --openssldir is INSTALLTOP/ssl. - - Anyone who uses --openssldir to specify where OpenSSL is to be - installed MUST change to use --prefix instead. - [Richard Levitte] - - *) The GOST engine was out of date and therefore it has been removed. An up - to date GOST engine is now being maintained in an external repository. - See: https://wiki.openssl.org/index.php/Binaries. Libssl still retains - support for GOST ciphersuites (these are only activated if a GOST engine - is present). - [Matt Caswell] - - *) EGD is no longer supported by default; use enable-egd when - configuring. - [Ben Kaduk and Rich Salz] - - *) The distribution now has Makefile.in files, which are used to - create Makefile's when Configure is run. *Configure must be run - before trying to build now.* - [Rich Salz] - - *) The return value for SSL_CIPHER_description() for error conditions - has changed. - [Rich Salz] - - *) Support for RFC6698/RFC7671 DANE TLSA peer authentication. - - Obtaining and performing DNSSEC validation of TLSA records is - the application's responsibility. The application provides - the TLSA records of its choice to OpenSSL, and these are then - used to authenticate the peer. - - The TLSA records need not even come from DNS. They can, for - example, be used to implement local end-entity certificate or - trust-anchor "pinning", where the "pin" data takes the form - of TLSA records, which can augment or replace verification - based on the usual WebPKI public certification authorities. - [Viktor Dukhovni] - - *) Revert default OPENSSL_NO_DEPRECATED setting. Instead OpenSSL - continues to support deprecated interfaces in default builds. - However, applications are strongly advised to compile their - source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides - the declarations of all interfaces deprecated in 0.9.8, 1.0.0 - or the 1.1.0 releases. - - In environments in which all applications have been ported to - not use any deprecated interfaces OpenSSL's Configure script - should be used with the --api=1.1.0 option to entirely remove - support for the deprecated features from the library and - unconditionally disable them in the installed headers. - Essentially the same effect can be achieved with the "no-deprecated" - argument to Configure, except that this will always restrict - the build to just the latest API, rather than a fixed API - version. - - As applications are ported to future revisions of the API, - they should update their compile-time OPENSSL_API_COMPAT define - accordingly, but in most cases should be able to continue to - compile with later releases. - - The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are - 0x10000000L and 0x00908000L, respectively. However those - versions did not support the OPENSSL_API_COMPAT feature, and - so applications are not typically tested for explicit support - of just the undeprecated features of either release. - [Viktor Dukhovni] - - *) Add support for setting the minimum and maximum supported protocol. - It can bet set via the SSL_set_min_proto_version() and - SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and - MaxProtcol. It's recommended to use the new APIs to disable - protocols instead of disabling individual protocols using - SSL_set_options() or SSL_CONF's Protocol. This change also - removes support for disabling TLS 1.2 in the OpenSSL TLS - client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT. - [Kurt Roeckx] - - *) Support for ChaCha20 and Poly1305 added to libcrypto and libssl. - [Andy Polyakov] - - *) New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD - and integrates ECDSA and ECDH functionality into EC. Implementations can - now redirect key generation and no longer need to convert to or from - ECDSA_SIG format. - - Note: the ecdsa.h and ecdh.h headers are now no longer needed and just - include the ec.h header file instead. - [Steve Henson] - - *) Remove support for all 40 and 56 bit ciphers. This includes all the export - ciphers who are no longer supported and drops support the ephemeral RSA key - exchange. The LOW ciphers currently doesn't have any ciphers in it. - [Kurt Roeckx] - - *) Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX - opaque. For HMAC_CTX, the following constructors and destructors - were added: - - HMAC_CTX *HMAC_CTX_new(void); - void HMAC_CTX_free(HMAC_CTX *ctx); - - For EVP_MD and EVP_CIPHER, complete APIs to create, fill and - destroy such methods has been added. See EVP_MD_meth_new(3) and - EVP_CIPHER_meth_new(3) for documentation. - - Additional changes: - 1) EVP_MD_CTX_cleanup(), EVP_CIPHER_CTX_cleanup() and - HMAC_CTX_cleanup() were removed. HMAC_CTX_reset() and - EVP_MD_CTX_reset() should be called instead to reinitialise - an already created structure. - 2) For consistency with the majority of our object creators and - destructors, EVP_MD_CTX_(create|destroy) were renamed to - EVP_MD_CTX_(new|free). The old names are retained as macros - for deprecated builds. - [Richard Levitte] - - *) Added ASYNC support. Libcrypto now includes the async sub-library to enable - cryptographic operations to be performed asynchronously as long as an - asynchronous capable engine is used. See the ASYNC_start_job() man page for - further details. Libssl has also had this capability integrated with the - introduction of the new mode SSL_MODE_ASYNC and associated error - SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man - pages. This work was developed in partnership with Intel Corp. - [Matt Caswell] - - *) SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is - always enabled now. If you want to disable the support you should - exclude it using the list of supported ciphers. This also means that the - "-no_ecdhe" option has been removed from s_server. - [Kurt Roeckx] - - *) SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls - SSL_{CTX_}set1_curves() which can set a list. - [Kurt Roeckx] - - *) Remove support for SSL_{CTX_}set_tmp_ecdh_callback(). You should set the - curve you want to support using SSL_{CTX_}set1_curves(). - [Kurt Roeckx] - - *) State machine rewrite. The state machine code has been significantly - refactored in order to remove much duplication of code and solve issues - with the old code (see ssl/statem/README for further details). This change - does have some associated API changes. Notably the SSL_state() function - has been removed and replaced by SSL_get_state which now returns an - "OSSL_HANDSHAKE_STATE" instead of an int. SSL_set_state() has been removed - altogether. The previous handshake states defined in ssl.h and ssl3.h have - also been removed. - [Matt Caswell] - - *) All instances of the string "ssleay" in the public API were replaced - with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's) - Some error codes related to internal RSA_eay API's were renamed. - [Rich Salz] - - *) The demo files in crypto/threads were moved to demo/threads. - [Rich Salz] - - *) Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp, - sureware and ubsec. - [Matt Caswell, Rich Salz] - - *) New ASN.1 embed macro. - - New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the - structure is not allocated: it is part of the parent. That is instead of - - FOO *x; - - it must be: - - FOO x; - - This reduces memory fragmentation and make it impossible to accidentally - set a mandatory field to NULL. - - This currently only works for some fields specifically a SEQUENCE, CHOICE, - or ASN1_STRING type which is part of a parent SEQUENCE. Since it is - equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or - SEQUENCE OF. - [Steve Henson] - - *) Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled. - [Emilia Käsper] - - *) Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although - in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also - an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add - DES and RC4 ciphersuites. - [Matt Caswell] - - *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs. - This changes the decoding behaviour for some invalid messages, - though the change is mostly in the more lenient direction, and - legacy behaviour is preserved as much as possible. - [Emilia Käsper] - - *) Fix no-stdio build. - [ David Woodhouse and also - Ivan Nestlerode ] - - *) New testing framework - The testing framework has been largely rewritten and is now using - perl and the perl modules Test::Harness and an extended variant of - Test::More called OpenSSL::Test to do its work. All test scripts in - test/ have been rewritten into test recipes, and all direct calls to - executables in test/Makefile have become individual recipes using the - simplified testing OpenSSL::Test::Simple. - - For documentation on our testing modules, do: - - perldoc test/testlib/OpenSSL/Test/Simple.pm - perldoc test/testlib/OpenSSL/Test.pm - - [Richard Levitte] - - *) Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT - are used; the latter aborts on memory leaks (usually checked on exit). - Some undocumented "set malloc, etc., hooks" functions were removed - and others were changed. All are now documented. - [Rich Salz] - - *) In DSA_generate_parameters_ex, if the provided seed is too short, - return an error - [Rich Salz and Ismo Puustinen ] - - *) Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites - from RFC4279, RFC4785, RFC5487, RFC5489. - - Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the - original RSA_PSK patch. - [Steve Henson] - - *) Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay - era flag was never set throughout the codebase (only read). Also removed - SSL3_FLAGS_POP_BUFFER which was only used if - SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set. - [Matt Caswell] - - *) Changed the default name options in the "ca", "crl", "req" and "x509" - to be "oneline" instead of "compat". - [Richard Levitte] - - *) Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're - not aware of clients that still exhibit this bug, and the workaround - hasn't been working properly for a while. - [Emilia Käsper] - - *) The return type of BIO_number_read() and BIO_number_written() as well as - the corresponding num_read and num_write members in the BIO structure has - changed from unsigned long to uint64_t. On platforms where an unsigned - long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is - transferred. - [Matt Caswell] - - *) Given the pervasive nature of TLS extensions it is inadvisable to run - OpenSSL without support for them. It also means that maintaining - the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably - not well tested). Therefore the OPENSSL_NO_TLSEXT option has been removed. - [Matt Caswell] - - *) Removed support for the two export grade static DH ciphersuites - EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites - were newly added (along with a number of other static DH ciphersuites) to - 1.0.2. However the two export ones have *never* worked since they were - introduced. It seems strange in any case to be adding new export - ciphersuites, and given "logjam" it also does not seem correct to fix them. - [Matt Caswell] - - *) Version negotiation has been rewritten. In particular SSLv23_method(), - SSLv23_client_method() and SSLv23_server_method() have been deprecated, - and turned into macros which simply call the new preferred function names - TLS_method(), TLS_client_method() and TLS_server_method(). All new code - should use the new names instead. Also as part of this change the ssl23.h - header file has been removed. - [Matt Caswell] - - *) Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This - code and the associated standard is no longer considered fit-for-purpose. - [Matt Caswell] - - *) RT2547 was closed. When generating a private key, try to make the - output file readable only by the owner. This behavior change might - be noticeable when interacting with other software. - - *) Documented all exdata functions. Added CRYPTO_free_ex_index. - Added a test. - [Rich Salz] - - *) Added HTTP GET support to the ocsp command. - [Rich Salz] - - *) Changed default digest for the dgst and enc commands from MD5 to - sha256 - [Rich Salz] - - *) RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead. - [Matt Caswell] - - *) Added support for TLS extended master secret from - draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an - initial patch which was a great help during development. - [Steve Henson] - - *) All libssl internal structures have been removed from the public header - files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is - now redundant). Users should not attempt to access internal structures - directly. Instead they should use the provided API functions. - [Matt Caswell] - - *) config has been changed so that by default OPENSSL_NO_DEPRECATED is used. - Access to deprecated functions can be re-enabled by running config with - "enable-deprecated". In addition applications wishing to use deprecated - functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour - will, by default, disable some transitive includes that previously existed - in the header files (e.g. ec.h will no longer, by default, include bn.h) - [Matt Caswell] - - *) Added support for OCB mode. OpenSSL has been granted a patent license - compatible with the OpenSSL license for use of OCB. Details are available - at https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf. Support - for OCB can be removed by calling config with no-ocb. - [Matt Caswell] - - *) SSLv2 support has been removed. It still supports receiving a SSLv2 - compatible client hello. - [Kurt Roeckx] - - *) Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz], - done while fixing the error code for the key-too-small case. - [Annie Yousar ] - - *) CA.sh has been removed; use CA.pl instead. - [Rich Salz] - - *) Removed old DES API. - [Rich Salz] - - *) Remove various unsupported platforms: - Sony NEWS4 - BEOS and BEOS_R5 - NeXT - SUNOS - MPE/iX - Sinix/ReliantUNIX RM400 - DGUX - NCR - Tandem - Cray - 16-bit platforms such as WIN16 - [Rich Salz] - - *) Clean up OPENSSL_NO_xxx #define's - Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF - Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx - OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC - OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160 - OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO - Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY - OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP - OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK - OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY - Remove MS_STATIC; it's a relic from platforms <32 bits. - [Rich Salz] - - *) Cleaned up dead code - Remove all but one '#ifdef undef' which is to be looked at. - [Rich Salz] - - *) Clean up calling of xxx_free routines. - Just like free(), fix most of the xxx_free routines to accept - NULL. Remove the non-null checks from callers. Save much code. - [Rich Salz] - - *) Add secure heap for storage of private keys (when possible). - Add BIO_s_secmem(), CBIGNUM, etc. - Contributed by Akamai Technologies under our Corporate CLA. - [Rich Salz] - - *) Experimental support for a new, fast, unbiased prime candidate generator, - bn_probable_prime_dh_coprime(). Not currently used by any prime generator. - [Felix Laurie von Massenbach ] - - *) New output format NSS in the sess_id command line tool. This allows - exporting the session id and the master key in NSS keylog format. - [Martin Kaiser ] - - *) Harmonize version and its documentation. -f flag is used to display - compilation flags. - [mancha ] - - *) Fix eckey_priv_encode so it immediately returns an error upon a failure - in i2d_ECPrivateKey. Thanks to Ted Unangst for feedback on this issue. - [mancha ] - - *) Fix some double frees. These are not thought to be exploitable. - [mancha ] - - *) A missing bounds check in the handling of the TLS heartbeat extension - can be used to reveal up to 64k of memory to a connected client or - server. - - Thanks for Neel Mehta of Google Security for discovering this bug and to - Adam Langley and Bodo Moeller for - preparing the fix (CVE-2014-0160) - [Adam Langley, Bodo Moeller] - - *) Fix for the attack described in the paper "Recovering OpenSSL - ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" - by Yuval Yarom and Naomi Benger. Details can be obtained from: - http://eprint.iacr.org/2014/140 - - Thanks to Yuval Yarom and Naomi Benger for discovering this - flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076) - [Yuval Yarom and Naomi Benger] - - *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file(): - this fixes a limitation in previous versions of OpenSSL. - [Steve Henson] - - *) Experimental encrypt-then-mac support. - - Experimental support for encrypt then mac from - draft-gutmann-tls-encrypt-then-mac-02.txt - - To enable it set the appropriate extension number (0x42 for the test - server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42 - - For non-compliant peers (i.e. just about everything) this should have no - effect. - - WARNING: EXPERIMENTAL, SUBJECT TO CHANGE. - - [Steve Henson] - - *) Add EVP support for key wrapping algorithms, to avoid problems with - existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in - the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap - algorithms and include tests cases. - [Steve Henson] - - *) Extend CMS code to support RSA-PSS signatures and RSA-OAEP for - enveloped data. - [Steve Henson] - - *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest, - MGF1 digest and OAEP label. - [Steve Henson] - - *) Make openssl verify return errors. - [Chris Palmer and Ben Laurie] - - *) New function ASN1_TIME_diff to calculate the difference between two - ASN1_TIME structures or one structure and the current time. - [Steve Henson] - - *) Update fips_test_suite to support multiple command line options. New - test to induce all self test errors in sequence and check expected - failures. - [Steve Henson] - - *) Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and - sign or verify all in one operation. - [Steve Henson] - - *) Add fips_algvs: a multicall fips utility incorporating all the algorithm - test programs and fips_test_suite. Includes functionality to parse - the minimal script output of fipsalgest.pl directly. - [Steve Henson] - - *) Add authorisation parameter to FIPS_module_mode_set(). - [Steve Henson] - - *) Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves. - [Steve Henson] - - *) Use separate DRBG fields for internal and external flags. New function - FIPS_drbg_health_check() to perform on demand health checking. Add - generation tests to fips_test_suite with reduced health check interval to - demonstrate periodic health checking. Add "nodh" option to - fips_test_suite to skip very slow DH test. - [Steve Henson] - - *) New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers - based on NID. - [Steve Henson] - - *) More extensive health check for DRBG checking many more failure modes. - New function FIPS_selftest_drbg_all() to handle every possible DRBG - combination: call this in fips_test_suite. - [Steve Henson] - - *) Add support for canonical generation of DSA parameter 'g'. See - FIPS 186-3 A.2.3. - - *) Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and - POST to handle HMAC cases. - [Steve Henson] - - *) Add functions FIPS_module_version() and FIPS_module_version_text() - to return numerical and string versions of the FIPS module number. - [Steve Henson] - - *) Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and - FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented - outside the validated module in the FIPS capable OpenSSL. - [Steve Henson] - - *) Minor change to DRBG entropy callback semantics. In some cases - there is no multiple of the block length between min_len and - max_len. Allow the callback to return more than max_len bytes - of entropy but discard any extra: it is the callback's responsibility - to ensure that the extra data discarded does not impact the - requested amount of entropy. - [Steve Henson] - - *) Add PRNG security strength checks to RSA, DSA and ECDSA using - information in FIPS186-3, SP800-57 and SP800-131A. - [Steve Henson] - - *) CCM support via EVP. Interface is very similar to GCM case except we - must supply all data in one chunk (i.e. no update, final) and the - message length must be supplied if AAD is used. Add algorithm test - support. - [Steve Henson] - - *) Initial version of POST overhaul. Add POST callback to allow the status - of POST to be monitored and/or failures induced. Modify fips_test_suite - to use callback. Always run all selftests even if one fails. - [Steve Henson] - - *) XTS support including algorithm test driver in the fips_gcmtest program. - Note: this does increase the maximum key length from 32 to 64 bytes but - there should be no binary compatibility issues as existing applications - will never use XTS mode. - [Steve Henson] - - *) Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies - to OpenSSL RAND code and replace with a tiny FIPS RAND API which also - performs algorithm blocking for unapproved PRNG types. Also do not - set PRNG type in FIPS_mode_set(): leave this to the application. - Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with - the standard OpenSSL PRNG: set additional data to a date time vector. - [Steve Henson] - - *) Rename old X9.31 PRNG functions of the form FIPS_rand* to FIPS_x931*. - This shouldn't present any incompatibility problems because applications - shouldn't be using these directly and any that are will need to rethink - anyway as the X9.31 PRNG is now deprecated by FIPS 140-2 - [Steve Henson] - - *) Extensive self tests and health checking required by SP800-90 DRBG. - Remove strength parameter from FIPS_drbg_instantiate and always - instantiate at maximum supported strength. - [Steve Henson] - - *) Add ECDH code to fips module and fips_ecdhvs for primitives only testing. - [Steve Henson] - - *) New algorithm test program fips_dhvs to handle DH primitives only testing. - [Steve Henson] - - *) New function DH_compute_key_padded() to compute a DH key and pad with - leading zeroes if needed: this complies with SP800-56A et al. - [Steve Henson] - - *) Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by - anything, incomplete, subject to change and largely untested at present. - [Steve Henson] - - *) Modify fipscanisteronly build option to only build the necessary object - files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile. - [Steve Henson] - - *) Add experimental option FIPSSYMS to give all symbols in - fipscanister.o and FIPS or fips prefix. This will avoid - conflicts with future versions of OpenSSL. Add perl script - util/fipsas.pl to preprocess assembly language source files - and rename any affected symbols. - [Steve Henson] - - *) Add selftest checks and algorithm block of non-fips algorithms in - FIPS mode. Remove DES2 from selftests. - [Steve Henson] - - *) Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just - return internal method without any ENGINE dependencies. Add new - tiny fips sign and verify functions. - [Steve Henson] - - *) New build option no-ec2m to disable characteristic 2 code. - [Steve Henson] - - *) New build option "fipscanisteronly". This only builds fipscanister.o - and (currently) associated fips utilities. Uses the file Makefile.fips - instead of Makefile.org as the prototype. - [Steve Henson] - - *) Add some FIPS mode restrictions to GCM. Add internal IV generator. - Update fips_gcmtest to use IV generator. - [Steve Henson] - - *) Initial, experimental EVP support for AES-GCM. AAD can be input by - setting output buffer to NULL. The *Final function must be - called although it will not retrieve any additional data. The tag - can be set or retrieved with a ctrl. The IV length is by default 12 - bytes (96 bits) but can be set to an alternative value. If the IV - length exceeds the maximum IV length (currently 16 bytes) it cannot be - set before the key. - [Steve Henson] - - *) New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the - underlying do_cipher function handles all cipher semantics itself - including padding and finalisation. This is useful if (for example) - an ENGINE cipher handles block padding itself. The behaviour of - do_cipher is subtly changed if this flag is set: the return value - is the number of characters written to the output buffer (zero is - no longer an error code) or a negative error code. Also if the - input buffer is NULL and length 0 finalisation should be performed. - [Steve Henson] - - *) If a candidate issuer certificate is already part of the constructed - path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case. - [Steve Henson] - - *) Improve forward-security support: add functions - - void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure)) - void SSL_set_not_resumable_session_callback(SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure)) - - for use by SSL/TLS servers; the callback function will be called whenever a - new session is created, and gets to decide whether the session may be - cached to make it resumable (return 0) or not (return 1). (As by the - SSL/TLS protocol specifications, the session_id sent by the server will be - empty to indicate that the session is not resumable; also, the server will - not generate RFC 4507 (RFC 5077) session tickets.) - - A simple reasonable callback implementation is to return is_forward_secure. - This parameter will be set to 1 or 0 depending on the ciphersuite selected - by the SSL/TLS server library, indicating whether it can provide forward - security. - [Emilia Käsper (Google)] - - *) New -verify_name option in command line utilities to set verification - parameters by name. - [Steve Henson] - - *) Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE. - Add CMAC pkey methods. - [Steve Henson] - - *) Experimental renegotiation in s_server -www mode. If the client - browses /reneg connection is renegotiated. If /renegcert it is - renegotiated requesting a certificate. - [Steve Henson] - - *) Add an "external" session cache for debugging purposes to s_server. This - should help trace issues which normally are only apparent in deployed - multi-process servers. - [Steve Henson] - - *) Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where - return value is ignored. NB. The functions RAND_add(), RAND_seed(), - BIO_set_cipher() and some obscure PEM functions were changed so they - can now return an error. The RAND changes required a change to the - RAND_METHOD structure. - [Steve Henson] - - *) New macro __owur for "OpenSSL Warn Unused Result". This makes use of - a gcc attribute to warn if the result of a function is ignored. This - is enable if DEBUG_UNUSED is set. Add to several functions in evp.h - whose return value is often ignored. - [Steve Henson] - - *) New -noct, -requestct, -requirect and -ctlogfile options for s_client. - These allow SCTs (signed certificate timestamps) to be requested and - validated when establishing a connection. - [Rob Percival ] - - Changes between 1.0.2g and 1.0.2h [3 May 2016] - - *) Prevent padding oracle in AES-NI CBC MAC check - - A MITM attacker can use a padding oracle attack to decrypt traffic - when the connection uses an AES CBC cipher and the server support - AES-NI. - - This issue was introduced as part of the fix for Lucky 13 padding - attack (CVE-2013-0169). The padding check was rewritten to be in - constant time by making sure that always the same bytes are read and - compared against either the MAC or padding bytes. But it no longer - checked that there was enough data to have both the MAC and padding - bytes. - - This issue was reported by Juraj Somorovsky using TLS-Attacker. - (CVE-2016-2107) - [Kurt Roeckx] - - *) Fix EVP_EncodeUpdate overflow - - An overflow can occur in the EVP_EncodeUpdate() function which is used for - Base64 encoding of binary data. If an attacker is able to supply very large - amounts of input data then a length check can overflow resulting in a heap - corruption. - - Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by - the PEM_write_bio* family of functions. These are mainly used within the - OpenSSL command line applications, so any application which processes data - from an untrusted source and outputs it as a PEM file should be considered - vulnerable to this issue. User applications that call these APIs directly - with large amounts of untrusted data may also be vulnerable. - - This issue was reported by Guido Vranken. - (CVE-2016-2105) - [Matt Caswell] - - *) Fix EVP_EncryptUpdate overflow - - An overflow can occur in the EVP_EncryptUpdate() function. If an attacker - is able to supply very large amounts of input data after a previous call to - EVP_EncryptUpdate() with a partial block then a length check can overflow - resulting in a heap corruption. Following an analysis of all OpenSSL - internal usage of the EVP_EncryptUpdate() function all usage is one of two - forms. The first form is where the EVP_EncryptUpdate() call is known to be - the first called function after an EVP_EncryptInit(), and therefore that - specific call must be safe. The second form is where the length passed to - EVP_EncryptUpdate() can be seen from the code to be some small value and - therefore there is no possibility of an overflow. Since all instances are - one of these two forms, it is believed that there can be no overflows in - internal code due to this problem. It should be noted that - EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths. - Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances - of these calls have also been analysed too and it is believed there are no - instances in internal usage where an overflow could occur. - - This issue was reported by Guido Vranken. - (CVE-2016-2106) - [Matt Caswell] - - *) Prevent ASN.1 BIO excessive memory allocation - - When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio() - a short invalid encoding can cause allocation of large amounts of memory - potentially consuming excessive resources or exhausting memory. - - Any application parsing untrusted data through d2i BIO functions is - affected. The memory based functions such as d2i_X509() are *not* affected. - Since the memory based functions are used by the TLS library, TLS - applications are not affected. - - This issue was reported by Brian Carpenter. - (CVE-2016-2109) - [Stephen Henson] - - *) EBCDIC overread - - ASN1 Strings that are over 1024 bytes can cause an overread in applications - using the X509_NAME_oneline() function on EBCDIC systems. This could result - in arbitrary stack data being returned in the buffer. - - This issue was reported by Guido Vranken. - (CVE-2016-2176) - [Matt Caswell] - - *) Modify behavior of ALPN to invoke callback after SNI/servername - callback, such that updates to the SSL_CTX affect ALPN. - [Todd Short] - - *) Remove LOW from the DEFAULT cipher list. This removes singles DES from the - default. - [Kurt Roeckx] - - *) Only remove the SSLv2 methods with the no-ssl2-method option. When the - methods are enabled and ssl2 is disabled the methods return NULL. - [Kurt Roeckx] - - Changes between 1.0.2f and 1.0.2g [1 Mar 2016] - - * Disable weak ciphers in SSLv3 and up in default builds of OpenSSL. - Builds that are not configured with "enable-weak-ssl-ciphers" will not - provide any "EXPORT" or "LOW" strength ciphers. - [Viktor Dukhovni] - - * Disable SSLv2 default build, default negotiation and weak ciphers. SSLv2 - is by default disabled at build-time. Builds that are not configured with - "enable-ssl2" will not support SSLv2. Even if "enable-ssl2" is used, - users who want to negotiate SSLv2 via the version-flexible SSLv23_method() - will need to explicitly call either of: - - SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2); - or - SSL_clear_options(ssl, SSL_OP_NO_SSLv2); - - as appropriate. Even if either of those is used, or the application - explicitly uses the version-specific SSLv2_method() or its client and - server variants, SSLv2 ciphers vulnerable to exhaustive search key - recovery have been removed. Specifically, the SSLv2 40-bit EXPORT - ciphers, and SSLv2 56-bit DES are no longer available. - (CVE-2016-0800) - [Viktor Dukhovni] - - *) Fix a double-free in DSA code - - A double free bug was discovered when OpenSSL parses malformed DSA private - keys and could lead to a DoS attack or memory corruption for applications - that receive DSA private keys from untrusted sources. This scenario is - considered rare. - - This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using - libFuzzer. - (CVE-2016-0705) - [Stephen Henson] - - *) Disable SRP fake user seed to address a server memory leak. - - Add a new method SRP_VBASE_get1_by_user that handles the seed properly. - - SRP_VBASE_get_by_user had inconsistent memory management behaviour. - In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user - was changed to ignore the "fake user" SRP seed, even if the seed - is configured. - - Users should use SRP_VBASE_get1_by_user instead. Note that in - SRP_VBASE_get1_by_user, caller must free the returned value. Note - also that even though configuring the SRP seed attempts to hide - invalid usernames by continuing the handshake with fake - credentials, this behaviour is not constant time and no strong - guarantees are made that the handshake is indistinguishable from - that of a valid user. - (CVE-2016-0798) - [Emilia Käsper] - - *) Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption - - In the BN_hex2bn function the number of hex digits is calculated using an - int value |i|. Later |bn_expand| is called with a value of |i * 4|. For - large values of |i| this can result in |bn_expand| not allocating any - memory because |i * 4| is negative. This can leave the internal BIGNUM data - field as NULL leading to a subsequent NULL ptr deref. For very large values - of |i|, the calculation |i * 4| could be a positive value smaller than |i|. - In this case memory is allocated to the internal BIGNUM data field, but it - is insufficiently sized leading to heap corruption. A similar issue exists - in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn - is ever called by user applications with very large untrusted hex/dec data. - This is anticipated to be a rare occurrence. - - All OpenSSL internal usage of these functions use data that is not expected - to be untrusted, e.g. config file data or application command line - arguments. If user developed applications generate config file data based - on untrusted data then it is possible that this could also lead to security - consequences. This is also anticipated to be rare. - - This issue was reported to OpenSSL by Guido Vranken. - (CVE-2016-0797) - [Matt Caswell] - - *) Fix memory issues in BIO_*printf functions - - The internal |fmtstr| function used in processing a "%s" format string in - the BIO_*printf functions could overflow while calculating the length of a - string and cause an OOB read when printing very long strings. - - Additionally the internal |doapr_outch| function can attempt to write to an - OOB memory location (at an offset from the NULL pointer) in the event of a - memory allocation failure. In 1.0.2 and below this could be caused where - the size of a buffer to be allocated is greater than INT_MAX. E.g. this - could be in processing a very long "%s" format string. Memory leaks can - also occur. - - The first issue may mask the second issue dependent on compiler behaviour. - These problems could enable attacks where large amounts of untrusted data - is passed to the BIO_*printf functions. If applications use these functions - in this way then they could be vulnerable. OpenSSL itself uses these - functions when printing out human-readable dumps of ASN.1 data. Therefore - applications that print this data could be vulnerable if the data is from - untrusted sources. OpenSSL command line applications could also be - vulnerable where they print out ASN.1 data, or if untrusted data is passed - as command line arguments. - - Libssl is not considered directly vulnerable. Additionally certificates etc - received via remote connections via libssl are also unlikely to be able to - trigger these issues because of message size limits enforced within libssl. - - This issue was reported to OpenSSL Guido Vranken. - (CVE-2016-0799) - [Matt Caswell] - - *) Side channel attack on modular exponentiation - - A side-channel attack was found which makes use of cache-bank conflicts on - the Intel Sandy-Bridge microarchitecture which could lead to the recovery - of RSA keys. The ability to exploit this issue is limited as it relies on - an attacker who has control of code in a thread running on the same - hyper-threaded core as the victim thread which is performing decryptions. - - This issue was reported to OpenSSL by Yuval Yarom, The University of - Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and - Nadia Heninger, University of Pennsylvania with more information at - http://cachebleed.info. - (CVE-2016-0702) - [Andy Polyakov] - - *) Change the req app to generate a 2048-bit RSA/DSA key by default, - if no keysize is specified with default_bits. This fixes an - omission in an earlier change that changed all RSA/DSA key generation - apps to use 2048 bits by default. - [Emilia Käsper] - - Changes between 1.0.2e and 1.0.2f [28 Jan 2016] - *) DH small subgroups - - Historically OpenSSL only ever generated DH parameters based on "safe" - primes. More recently (in version 1.0.2) support was provided for - generating X9.42 style parameter files such as those required for RFC 5114 - support. The primes used in such files may not be "safe". Where an - application is using DH configured with parameters based on primes that are - not "safe" then an attacker could use this fact to find a peer's private - DH exponent. This attack requires that the attacker complete multiple - handshakes in which the peer uses the same private DH exponent. For example - this could be used to discover a TLS server's private DH exponent if it's - reusing the private DH exponent or it's using a static DH ciphersuite. - - OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in - TLS. It is not on by default. If the option is not set then the server - reuses the same private DH exponent for the life of the server process and - would be vulnerable to this attack. It is believed that many popular - applications do set this option and would therefore not be at risk. - - The fix for this issue adds an additional check where a "q" parameter is - available (as is the case in X9.42 based parameters). This detects the - only known attack, and is the only possible defense for static DH - ciphersuites. This could have some performance impact. - - Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by - default and cannot be disabled. This could have some performance impact. - - This issue was reported to OpenSSL by Antonio Sanso (Adobe). - (CVE-2016-0701) - [Matt Caswell] - - *) SSLv2 doesn't block disabled ciphers - - A malicious client can negotiate SSLv2 ciphers that have been disabled on - the server and complete SSLv2 handshakes even if all SSLv2 ciphers have - been disabled, provided that the SSLv2 protocol was not also disabled via - SSL_OP_NO_SSLv2. - - This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram - and Sebastian Schinzel. - (CVE-2015-3197) - [Viktor Dukhovni] - - Changes between 1.0.2d and 1.0.2e [3 Dec 2015] - - *) BN_mod_exp may produce incorrect results on x86_64 - - There is a carry propagating bug in the x86_64 Montgomery squaring - procedure. No EC algorithms are affected. Analysis suggests that attacks - against RSA and DSA as a result of this defect would be very difficult to - perform and are not believed likely. Attacks against DH are considered just - feasible (although very difficult) because most of the work necessary to - deduce information about a private key may be performed offline. The amount - of resources required for such an attack would be very significant and - likely only accessible to a limited number of attackers. An attacker would - additionally need online access to an unpatched system using the target - private key in a scenario with persistent DH parameters and a private - key that is shared between multiple clients. For example this can occur by - default in OpenSSL DHE based SSL/TLS ciphersuites. - - This issue was reported to OpenSSL by Hanno Böck. - (CVE-2015-3193) - [Andy Polyakov] - - *) Certificate verify crash with missing PSS parameter - - The signature verification routines will crash with a NULL pointer - dereference if presented with an ASN.1 signature using the RSA PSS - algorithm and absent mask generation function parameter. Since these - routines are used to verify certificate signature algorithms this can be - used to crash any certificate verification operation and exploited in a - DoS attack. Any application which performs certificate verification is - vulnerable including OpenSSL clients and servers which enable client - authentication. - - This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG). - (CVE-2015-3194) - [Stephen Henson] - - *) X509_ATTRIBUTE memory leak - - When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak - memory. This structure is used by the PKCS#7 and CMS routines so any - application which reads PKCS#7 or CMS data from untrusted sources is - affected. SSL/TLS is not affected. - - This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using - libFuzzer. - (CVE-2015-3195) - [Stephen Henson] - - *) Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs. - This changes the decoding behaviour for some invalid messages, - though the change is mostly in the more lenient direction, and - legacy behaviour is preserved as much as possible. - [Emilia Käsper] - - *) In DSA_generate_parameters_ex, if the provided seed is too short, - return an error - [Rich Salz and Ismo Puustinen ] - - Changes between 1.0.2c and 1.0.2d [9 Jul 2015] - - *) Alternate chains certificate forgery - - During certificate verification, OpenSSL will attempt to find an - alternative certificate chain if the first attempt to build such a chain - fails. An error in the implementation of this logic can mean that an - attacker could cause certain checks on untrusted certificates to be - bypassed, such as the CA flag, enabling them to use a valid leaf - certificate to act as a CA and "issue" an invalid certificate. - - This issue was reported to OpenSSL by Adam Langley/David Benjamin - (Google/BoringSSL). - [Matt Caswell] - - Changes between 1.0.2b and 1.0.2c [12 Jun 2015] - - *) Fix HMAC ABI incompatibility. The previous version introduced an ABI - incompatibility in the handling of HMAC. The previous ABI has now been - restored. - [Matt Caswell] - - Changes between 1.0.2a and 1.0.2b [11 Jun 2015] - - *) Malformed ECParameters causes infinite loop - - When processing an ECParameters structure OpenSSL enters an infinite loop - if the curve specified is over a specially malformed binary polynomial - field. - - This can be used to perform denial of service against any - system which processes public keys, certificate requests or - certificates. This includes TLS clients and TLS servers with - client authentication enabled. - - This issue was reported to OpenSSL by Joseph Barr-Pixton. - (CVE-2015-1788) - [Andy Polyakov] - - *) Exploitable out-of-bounds read in X509_cmp_time - - X509_cmp_time does not properly check the length of the ASN1_TIME - string and can read a few bytes out of bounds. In addition, - X509_cmp_time accepts an arbitrary number of fractional seconds in the - time string. - - An attacker can use this to craft malformed certificates and CRLs of - various sizes and potentially cause a segmentation fault, resulting in - a DoS on applications that verify certificates or CRLs. TLS clients - that verify CRLs are affected. TLS clients and servers with client - authentication enabled may be affected if they use custom verification - callbacks. - - This issue was reported to OpenSSL by Robert Swiecki (Google), and - independently by Hanno Böck. - (CVE-2015-1789) - [Emilia Käsper] - - *) PKCS7 crash with missing EnvelopedContent - - The PKCS#7 parsing code does not handle missing inner EncryptedContent - correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs - with missing content and trigger a NULL pointer dereference on parsing. - - Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 - structures from untrusted sources are affected. OpenSSL clients and - servers are not affected. - - This issue was reported to OpenSSL by Michal Zalewski (Google). - (CVE-2015-1790) - [Emilia Käsper] - - *) CMS verify infinite loop with unknown hash function - - When verifying a signedData message the CMS code can enter an infinite loop - if presented with an unknown hash function OID. This can be used to perform - denial of service against any system which verifies signedData messages using - the CMS code. - This issue was reported to OpenSSL by Johannes Bauer. - (CVE-2015-1792) - [Stephen Henson] - - *) Race condition handling NewSessionTicket - - If a NewSessionTicket is received by a multi-threaded client when attempting to - reuse a previous ticket then a race condition can occur potentially leading to - a double free of the ticket data. - (CVE-2015-1791) - [Matt Caswell] - - *) Only support 256-bit or stronger elliptic curves with the - 'ecdh_auto' setting (server) or by default (client). Of supported - curves, prefer P-256 (both). - [Emilia Kasper] - - Changes between 1.0.2 and 1.0.2a [19 Mar 2015] - - *) ClientHello sigalgs DoS fix - - If a client connects to an OpenSSL 1.0.2 server and renegotiates with an - invalid signature algorithms extension a NULL pointer dereference will - occur. This can be exploited in a DoS attack against the server. - - This issue was was reported to OpenSSL by David Ramos of Stanford - University. - (CVE-2015-0291) - [Stephen Henson and Matt Caswell] - - *) Multiblock corrupted pointer fix - - OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This - feature only applies on 64 bit x86 architecture platforms that support AES - NI instructions. A defect in the implementation of "multiblock" can cause - OpenSSL's internal write buffer to become incorrectly set to NULL when - using non-blocking IO. Typically, when the user application is using a - socket BIO for writing, this will only result in a failed connection. - However if some other BIO is used then it is likely that a segmentation - fault will be triggered, thus enabling a potential DoS attack. - - This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller. - (CVE-2015-0290) - [Matt Caswell] - - *) Segmentation fault in DTLSv1_listen fix - - The DTLSv1_listen function is intended to be stateless and processes the - initial ClientHello from many peers. It is common for user code to loop - over the call to DTLSv1_listen until a valid ClientHello is received with - an associated cookie. A defect in the implementation of DTLSv1_listen means - that state is preserved in the SSL object from one invocation to the next - that can lead to a segmentation fault. Errors processing the initial - ClientHello can trigger this scenario. An example of such an error could be - that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only - server. - - This issue was reported to OpenSSL by Per Allansson. - (CVE-2015-0207) - [Matt Caswell] - - *) Segmentation fault in ASN1_TYPE_cmp fix - - The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is - made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check - certificate signature algorithm consistency this can be used to crash any - certificate verification operation and exploited in a DoS attack. Any - application which performs certificate verification is vulnerable including - OpenSSL clients and servers which enable client authentication. - (CVE-2015-0286) - [Stephen Henson] - - *) Segmentation fault for invalid PSS parameters fix - - The signature verification routines will crash with a NULL pointer - dereference if presented with an ASN.1 signature using the RSA PSS - algorithm and invalid parameters. Since these routines are used to verify - certificate signature algorithms this can be used to crash any - certificate verification operation and exploited in a DoS attack. Any - application which performs certificate verification is vulnerable including - OpenSSL clients and servers which enable client authentication. - - This issue was was reported to OpenSSL by Brian Carpenter. - (CVE-2015-0208) - [Stephen Henson] - - *) ASN.1 structure reuse memory corruption fix - - Reusing a structure in ASN.1 parsing may allow an attacker to cause - memory corruption via an invalid write. Such reuse is and has been - strongly discouraged and is believed to be rare. - - Applications that parse structures containing CHOICE or ANY DEFINED BY - components may be affected. Certificate parsing (d2i_X509 and related - functions) are however not affected. OpenSSL clients and servers are - not affected. - (CVE-2015-0287) - [Stephen Henson] - - *) PKCS7 NULL pointer dereferences fix - - The PKCS#7 parsing code does not handle missing outer ContentInfo - correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with - missing content and trigger a NULL pointer dereference on parsing. - - Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or - otherwise parse PKCS#7 structures from untrusted sources are - affected. OpenSSL clients and servers are not affected. - - This issue was reported to OpenSSL by Michal Zalewski (Google). - (CVE-2015-0289) - [Emilia Käsper] - - *) DoS via reachable assert in SSLv2 servers fix - - A malicious client can trigger an OPENSSL_assert (i.e., an abort) in - servers that both support SSLv2 and enable export cipher suites by sending - a specially crafted SSLv2 CLIENT-MASTER-KEY message. - - This issue was discovered by Sean Burford (Google) and Emilia Käsper - (OpenSSL development team). - (CVE-2015-0293) - [Emilia Käsper] - - *) Empty CKE with client auth and DHE fix - - If client auth is used then a server can seg fault in the event of a DHE - ciphersuite being selected and a zero length ClientKeyExchange message - being sent by the client. This could be exploited in a DoS attack. - (CVE-2015-1787) - [Matt Caswell] - - *) Handshake with unseeded PRNG fix - - Under certain conditions an OpenSSL 1.0.2 client can complete a handshake - with an unseeded PRNG. The conditions are: - - The client is on a platform where the PRNG has not been seeded - automatically, and the user has not seeded manually - - A protocol specific client method version has been used (i.e. not - SSL_client_methodv23) - - A ciphersuite is used that does not require additional random data from - the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA). - - If the handshake succeeds then the client random that has been used will - have been generated from a PRNG with insufficient entropy and therefore the - output may be predictable. - - For example using the following command with an unseeded openssl will - succeed on an unpatched platform: - - openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA - (CVE-2015-0285) - [Matt Caswell] - - *) Use After Free following d2i_ECPrivatekey error fix - - A malformed EC private key file consumed via the d2i_ECPrivateKey function - could cause a use after free condition. This, in turn, could cause a double - free in several private key parsing functions (such as d2i_PrivateKey - or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption - for applications that receive EC private keys from untrusted - sources. This scenario is considered rare. - - This issue was discovered by the BoringSSL project and fixed in their - commit 517073cd4b. - (CVE-2015-0209) - [Matt Caswell] - - *) X509_to_X509_REQ NULL pointer deref fix - - The function X509_to_X509_REQ will crash with a NULL pointer dereference if - the certificate key is invalid. This function is rarely used in practice. - - This issue was discovered by Brian Carpenter. - (CVE-2015-0288) - [Stephen Henson] - - *) Removed the export ciphers from the DEFAULT ciphers - [Kurt Roeckx] - - Changes between 1.0.1l and 1.0.2 [22 Jan 2015] - - *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g. - ARMv5 through ARMv8, as opposite to "locking" it to single one. - So far those who have to target multiple platforms would compromise - and argue that binary targeting say ARMv5 would still execute on - ARMv8. "Universal" build resolves this compromise by providing - near-optimal performance even on newer platforms. - [Andy Polyakov] - - *) Accelerated NIST P-256 elliptic curve implementation for x86_64 - (other platforms pending). - [Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov] - - *) Add support for the SignedCertificateTimestampList certificate and - OCSP response extensions from RFC6962. - [Rob Stradling] - - *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.) - for corner cases. (Certain input points at infinity could lead to - bogus results, with non-infinity inputs mapped to infinity too.) - [Bodo Moeller] - - *) Initial support for PowerISA 2.0.7, first implemented in POWER8. - This covers AES, SHA256/512 and GHASH. "Initial" means that most - common cases are optimized and there still is room for further - improvements. Vector Permutation AES for Altivec is also added. - [Andy Polyakov] - - *) Add support for little-endian ppc64 Linux target. - [Marcelo Cerri (IBM)] - - *) Initial support for AMRv8 ISA crypto extensions. This covers AES, - SHA1, SHA256 and GHASH. "Initial" means that most common cases - are optimized and there still is room for further improvements. - Both 32- and 64-bit modes are supported. - [Andy Polyakov, Ard Biesheuvel (Linaro)] - - *) Improved ARMv7 NEON support. - [Andy Polyakov] - - *) Support for SPARC Architecture 2011 crypto extensions, first - implemented in SPARC T4. This covers AES, DES, Camellia, SHA1, - SHA256/512, MD5, GHASH and modular exponentiation. - [Andy Polyakov, David Miller] - - *) Accelerated modular exponentiation for Intel processors, a.k.a. - RSAZ. - [Shay Gueron & Vlad Krasnov (Intel Corp)] - - *) Support for new and upcoming Intel processors, including AVX2, - BMI and SHA ISA extensions. This includes additional "stitched" - implementations, AESNI-SHA256 and GCM, and multi-buffer support - for TLS encrypt. - - This work was sponsored by Intel Corp. - [Andy Polyakov] - - *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method() - supports both DTLS 1.2 and 1.0 and should use whatever version the peer - supports and DTLSv1_2_*_method() which supports DTLS 1.2 only. - [Steve Henson] - - *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file(): - this fixes a limitation in previous versions of OpenSSL. - [Steve Henson] - - *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest, - MGF1 digest and OAEP label. - [Steve Henson] - - *) Add EVP support for key wrapping algorithms, to avoid problems with - existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in - the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap - algorithms and include tests cases. - [Steve Henson] - - *) Add functions to allocate and set the fields of an ECDSA_METHOD - structure. - [Douglas E. Engert, Steve Henson] - - *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the - difference in days and seconds between two tm or ASN1_TIME structures. - [Steve Henson] - - *) Add -rev test option to s_server to just reverse order of characters - received by client and send back to server. Also prints an abbreviated - summary of the connection parameters. - [Steve Henson] - - *) New option -brief for s_client and s_server to print out a brief summary - of connection parameters. - [Steve Henson] - - *) Add callbacks for arbitrary TLS extensions. - [Trevor Perrin and Ben Laurie] - - *) New option -crl_download in several openssl utilities to download CRLs - from CRLDP extension in certificates. - [Steve Henson] - - *) New options -CRL and -CRLform for s_client and s_server for CRLs. - [Steve Henson] - - *) New function X509_CRL_diff to generate a delta CRL from the difference - of two full CRLs. Add support to "crl" utility. - [Steve Henson] - - *) New functions to set lookup_crls function and to retrieve - X509_STORE from X509_STORE_CTX. - [Steve Henson] - - *) Print out deprecated issuer and subject unique ID fields in - certificates. - [Steve Henson] - - *) Extend OCSP I/O functions so they can be used for simple general purpose - HTTP as well as OCSP. New wrapper function which can be used to download - CRLs using the OCSP API. - [Steve Henson] - - *) Delegate command line handling in s_client/s_server to SSL_CONF APIs. - [Steve Henson] - - *) SSL_CONF* functions. These provide a common framework for application - configuration using configuration files or command lines. - [Steve Henson] - - *) SSL/TLS tracing code. This parses out SSL/TLS records using the - message callback and prints the results. Needs compile time option - "enable-ssl-trace". New options to s_client and s_server to enable - tracing. - [Steve Henson] - - *) New ctrl and macro to retrieve supported points extensions. - Print out extension in s_server and s_client. - [Steve Henson] - - *) New functions to retrieve certificate signature and signature - OID NID. - [Steve Henson] - - *) Add functions to retrieve and manipulate the raw cipherlist sent by a - client to OpenSSL. - [Steve Henson] - - *) New Suite B modes for TLS code. These use and enforce the requirements - of RFC6460: restrict ciphersuites, only permit Suite B algorithms and - only use Suite B curves. The Suite B modes can be set by using the - strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring. - [Steve Henson] - - *) New chain verification flags for Suite B levels of security. Check - algorithms are acceptable when flags are set in X509_verify_cert. - [Steve Henson] - - *) Make tls1_check_chain return a set of flags indicating checks passed - by a certificate chain. Add additional tests to handle client - certificates: checks for matching certificate type and issuer name - comparison. - [Steve Henson] - - *) If an attempt is made to use a signature algorithm not in the peer - preference list abort the handshake. If client has no suitable - signature algorithms in response to a certificate request do not - use the certificate. - [Steve Henson] - - *) If server EC tmp key is not in client preference list abort handshake. - [Steve Henson] - - *) Add support for certificate stores in CERT structure. This makes it - possible to have different stores per SSL structure or one store in - the parent SSL_CTX. Include distinct stores for certificate chain - verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN - to build and store a certificate chain in CERT structure: returning - an error if the chain cannot be built: this will allow applications - to test if a chain is correctly configured. - - Note: if the CERT based stores are not set then the parent SSL_CTX - store is used to retain compatibility with existing behaviour. - - [Steve Henson] - - *) New function ssl_set_client_disabled to set a ciphersuite disabled - mask based on the current session, check mask when sending client - hello and checking the requested ciphersuite. - [Steve Henson] - - *) New ctrls to retrieve and set certificate types in a certificate - request message. Print out received values in s_client. If certificate - types is not set with custom values set sensible values based on - supported signature algorithms. - [Steve Henson] - - *) Support for distinct client and server supported signature algorithms. - [Steve Henson] - - *) Add certificate callback. If set this is called whenever a certificate - is required by client or server. An application can decide which - certificate chain to present based on arbitrary criteria: for example - supported signature algorithms. Add very simple example to s_server. - This fixes many of the problems and restrictions of the existing client - certificate callback: for example you can now clear an existing - certificate and specify the whole chain. - [Steve Henson] - - *) Add new "valid_flags" field to CERT_PKEY structure which determines what - the certificate can be used for (if anything). Set valid_flags field - in new tls1_check_chain function. Simplify ssl_set_cert_masks which used - to have similar checks in it. - - Add new "cert_flags" field to CERT structure and include a "strict mode". - This enforces some TLS certificate requirements (such as only permitting - certificate signature algorithms contained in the supported algorithms - extension) which some implementations ignore: this option should be used - with caution as it could cause interoperability issues. - [Steve Henson] - - *) Update and tidy signature algorithm extension processing. Work out - shared signature algorithms based on preferences and peer algorithms - and print them out in s_client and s_server. Abort handshake if no - shared signature algorithms. - [Steve Henson] - - *) Add new functions to allow customised supported signature algorithms - for SSL and SSL_CTX structures. Add options to s_client and s_server - to support them. - [Steve Henson] - - *) New function SSL_certs_clear() to delete all references to certificates - from an SSL structure. Before this once a certificate had been added - it couldn't be removed. - [Steve Henson] - - *) Integrate hostname, email address and IP address checking with certificate - verification. New verify options supporting checking in openssl utility. - [Steve Henson] - - *) Fixes and wildcard matching support to hostname and email checking - functions. Add manual page. - [Florian Weimer (Red Hat Product Security Team)] - - *) New functions to check a hostname email or IP address against a - certificate. Add options x509 utility to print results of checks against - a certificate. - [Steve Henson] - - *) Fix OCSP checking. - [Rob Stradling and Ben Laurie] - - *) Initial experimental support for explicitly trusted non-root CAs. - OpenSSL still tries to build a complete chain to a root but if an - intermediate CA has a trust setting included that is used. The first - setting is used: whether to trust (e.g., -addtrust option to the x509 - utility) or reject. - [Steve Henson] - - *) Add -trusted_first option which attempts to find certificates in the - trusted store even if an untrusted chain is also supplied. - [Steve Henson] - - *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE, - platform support for Linux and Android. - [Andy Polyakov] - - *) Support for linux-x32, ILP32 environment in x86_64 framework. - [Andy Polyakov] - - *) Experimental multi-implementation support for FIPS capable OpenSSL. - When in FIPS mode the approved implementations are used as normal, - when not in FIPS mode the internal unapproved versions are used instead. - This means that the FIPS capable OpenSSL isn't forced to use the - (often lower performance) FIPS implementations outside FIPS mode. - [Steve Henson] - - *) Transparently support X9.42 DH parameters when calling - PEM_read_bio_DHparameters. This means existing applications can handle - the new parameter format automatically. - [Steve Henson] - - *) Initial experimental support for X9.42 DH parameter format: mainly - to support use of 'q' parameter for RFC5114 parameters. - [Steve Henson] - - *) Add DH parameters from RFC5114 including test data to dhtest. - [Steve Henson] - - *) Support for automatic EC temporary key parameter selection. If enabled - the most preferred EC parameters are automatically used instead of - hardcoded fixed parameters. Now a server just has to call: - SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically - support ECDH and use the most appropriate parameters. - [Steve Henson] - - *) Enhance and tidy EC curve and point format TLS extension code. Use - static structures instead of allocation if default values are used. - New ctrls to set curves we wish to support and to retrieve shared curves. - Print out shared curves in s_server. New options to s_server and s_client - to set list of supported curves. - [Steve Henson] - - *) New ctrls to retrieve supported signature algorithms and - supported curve values as an array of NIDs. Extend openssl utility - to print out received values. - [Steve Henson] - - *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert - between NIDs and the more common NIST names such as "P-256". Enhance - ecparam utility and ECC method to recognise the NIST names for curves. - [Steve Henson] - - *) Enhance SSL/TLS certificate chain handling to support different - chains for each certificate instead of one chain in the parent SSL_CTX. - [Steve Henson] - - *) Support for fixed DH ciphersuite client authentication: where both - server and client use DH certificates with common parameters. - [Steve Henson] - - *) Support for fixed DH ciphersuites: those requiring DH server - certificates. - [Steve Henson] - - *) New function i2d_re_X509_tbs for re-encoding the TBS portion of - the certificate. - Note: Related 1.0.2-beta specific macros X509_get_cert_info, - X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and - X509_CINF_get_signature were reverted post internal team review. - - Changes between 1.0.1k and 1.0.1l [15 Jan 2015] - - *) Build fixes for the Windows and OpenVMS platforms - [Matt Caswell and Richard Levitte] - - Changes between 1.0.1j and 1.0.1k [8 Jan 2015] - - *) Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS - message can cause a segmentation fault in OpenSSL due to a NULL pointer - dereference. This could lead to a Denial Of Service attack. Thanks to - Markus Stenberg of Cisco Systems, Inc. for reporting this issue. - (CVE-2014-3571) - [Steve Henson] - - *) Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the - dtls1_buffer_record function under certain conditions. In particular this - could occur if an attacker sent repeated DTLS records with the same - sequence number but for the next epoch. The memory leak could be exploited - by an attacker in a Denial of Service attack through memory exhaustion. - Thanks to Chris Mueller for reporting this issue. - (CVE-2015-0206) - [Matt Caswell] - - *) Fix issue where no-ssl3 configuration sets method to NULL. When openssl is - built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl - method would be set to NULL which could later result in a NULL pointer - dereference. Thanks to Frank Schmirler for reporting this issue. - (CVE-2014-3569) - [Kurt Roeckx] - - *) Abort handshake if server key exchange message is omitted for ephemeral - ECDH ciphersuites. - - Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for - reporting this issue. - (CVE-2014-3572) - [Steve Henson] - - *) Remove non-export ephemeral RSA code on client and server. This code - violated the TLS standard by allowing the use of temporary RSA keys in - non-export ciphersuites and could be used by a server to effectively - downgrade the RSA key length used to a value smaller than the server - certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at - INRIA or reporting this issue. - (CVE-2015-0204) - [Steve Henson] - - *) Fixed issue where DH client certificates are accepted without verification. - An OpenSSL server will accept a DH certificate for client authentication - without the certificate verify message. This effectively allows a client to - authenticate without the use of a private key. This only affects servers - which trust a client certificate authority which issues certificates - containing DH keys: these are extremely rare and hardly ever encountered. - Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting - this issue. - (CVE-2015-0205) - [Steve Henson] - - *) Ensure that the session ID context of an SSL is updated when its - SSL_CTX is updated via SSL_set_SSL_CTX. - - The session ID context is typically set from the parent SSL_CTX, - and can vary with the CTX. - [Adam Langley] - - *) Fix various certificate fingerprint issues. - - By using non-DER or invalid encodings outside the signed portion of a - certificate the fingerprint can be changed without breaking the signature. - Although no details of the signed portion of the certificate can be changed - this can cause problems with some applications: e.g. those using the - certificate fingerprint for blacklists. - - 1. Reject signatures with non zero unused bits. - - If the BIT STRING containing the signature has non zero unused bits reject - the signature. All current signature algorithms require zero unused bits. - - 2. Check certificate algorithm consistency. - - Check the AlgorithmIdentifier inside TBS matches the one in the - certificate signature. NB: this will result in signature failure - errors for some broken certificates. - - Thanks to Konrad Kraszewski from Google for reporting this issue. - - 3. Check DSA/ECDSA signatures use DER. - - Re-encode DSA/ECDSA signatures and compare with the original received - signature. Return an error if there is a mismatch. - - This will reject various cases including garbage after signature - (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS - program for discovering this case) and use of BER or invalid ASN.1 INTEGERs - (negative or with leading zeroes). - - Further analysis was conducted and fixes were developed by Stephen Henson - of the OpenSSL core team. - - (CVE-2014-8275) - [Steve Henson] - - *) Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect - results on some platforms, including x86_64. This bug occurs at random - with a very low probability, and is not known to be exploitable in any - way, though its exact impact is difficult to determine. Thanks to Pieter - Wuille (Blockstream) who reported this issue and also suggested an initial - fix. Further analysis was conducted by the OpenSSL development team and - Adam Langley of Google. The final fix was developed by Andy Polyakov of - the OpenSSL core team. - (CVE-2014-3570) - [Andy Polyakov] - - *) Do not resume sessions on the server if the negotiated protocol - version does not match the session's version. Resuming with a different - version, while not strictly forbidden by the RFC, is of questionable - sanity and breaks all known clients. - [David Benjamin, Emilia Käsper] - - *) Tighten handling of the ChangeCipherSpec (CCS) message: reject - early CCS messages during renegotiation. (Note that because - renegotiation is encrypted, this early CCS was not exploitable.) - [Emilia Käsper] - - *) Tighten client-side session ticket handling during renegotiation: - ensure that the client only accepts a session ticket if the server sends - the extension anew in the ServerHello. Previously, a TLS client would - reuse the old extension state and thus accept a session ticket if one was - announced in the initial ServerHello. - - Similarly, ensure that the client requires a session ticket if one - was advertised in the ServerHello. Previously, a TLS client would - ignore a missing NewSessionTicket message. - [Emilia Käsper] - - Changes between 1.0.1i and 1.0.1j [15 Oct 2014] - - *) SRTP Memory Leak. - - A flaw in the DTLS SRTP extension parsing code allows an attacker, who - sends a carefully crafted handshake message, to cause OpenSSL to fail - to free up to 64k of memory causing a memory leak. This could be - exploited in a Denial Of Service attack. This issue affects OpenSSL - 1.0.1 server implementations for both SSL/TLS and DTLS regardless of - whether SRTP is used or configured. Implementations of OpenSSL that - have been compiled with OPENSSL_NO_SRTP defined are not affected. - - The fix was developed by the OpenSSL team. - (CVE-2014-3513) - [OpenSSL team] - - *) Session Ticket Memory Leak. - - When an OpenSSL SSL/TLS/DTLS server receives a session ticket the - integrity of that ticket is first verified. In the event of a session - ticket integrity check failing, OpenSSL will fail to free memory - causing a memory leak. By sending a large number of invalid session - tickets an attacker could exploit this issue in a Denial Of Service - attack. - (CVE-2014-3567) - [Steve Henson] - - *) Build option no-ssl3 is incomplete. - - When OpenSSL is configured with "no-ssl3" as a build option, servers - could accept and complete a SSL 3.0 handshake, and clients could be - configured to send them. - (CVE-2014-3568) - [Akamai and the OpenSSL team] - - *) Add support for TLS_FALLBACK_SCSV. - Client applications doing fallback retries should call - SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV). - (CVE-2014-3566) - [Adam Langley, Bodo Moeller] - - *) Add additional DigestInfo checks. - - Re-encode DigestInto in DER and check against the original when - verifying RSA signature: this will reject any improperly encoded - DigestInfo structures. - - Note: this is a precautionary measure and no attacks are currently known. - - [Steve Henson] - - Changes between 1.0.1h and 1.0.1i [6 Aug 2014] - - *) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the - SRP code can be overrun an internal buffer. Add sanity check that - g, A, B < N to SRP code. - - Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC - Group for discovering this issue. - (CVE-2014-3512) - [Steve Henson] - - *) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate - TLS 1.0 instead of higher protocol versions when the ClientHello message - is badly fragmented. This allows a man-in-the-middle attacker to force a - downgrade to TLS 1.0 even if both the server and the client support a - higher protocol version, by modifying the client's TLS records. - - Thanks to David Benjamin and Adam Langley (Google) for discovering and - researching this issue. - (CVE-2014-3511) - [David Benjamin] - - *) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject - to a denial of service attack. A malicious server can crash the client - with a null pointer dereference (read) by specifying an anonymous (EC)DH - ciphersuite and sending carefully crafted handshake messages. - - Thanks to Felix Gröbert (Google) for discovering and researching this - issue. - (CVE-2014-3510) - [Emilia Käsper] - - *) By sending carefully crafted DTLS packets an attacker could cause openssl - to leak memory. This can be exploited through a Denial of Service attack. - Thanks to Adam Langley for discovering and researching this issue. - (CVE-2014-3507) - [Adam Langley] - - *) An attacker can force openssl to consume large amounts of memory whilst - processing DTLS handshake messages. This can be exploited through a - Denial of Service attack. - Thanks to Adam Langley for discovering and researching this issue. - (CVE-2014-3506) - [Adam Langley] - - *) An attacker can force an error condition which causes openssl to crash - whilst processing DTLS packets due to memory being freed twice. This - can be exploited through a Denial of Service attack. - Thanks to Adam Langley and Wan-Teh Chang for discovering and researching - this issue. - (CVE-2014-3505) - [Adam Langley] - - *) If a multithreaded client connects to a malicious server using a resumed - session and the server sends an ec point format extension it could write - up to 255 bytes to freed memory. - - Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this - issue. - (CVE-2014-3509) - [Gabor Tyukasz] - - *) A malicious server can crash an OpenSSL client with a null pointer - dereference (read) by specifying an SRP ciphersuite even though it was not - properly negotiated with the client. This can be exploited through a - Denial of Service attack. - - Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for - discovering and researching this issue. - (CVE-2014-5139) - [Steve Henson] - - *) A flaw in OBJ_obj2txt may cause pretty printing functions such as - X509_name_oneline, X509_name_print_ex et al. to leak some information - from the stack. Applications may be affected if they echo pretty printing - output to the attacker. - - Thanks to Ivan Fratric (Google) for discovering this issue. - (CVE-2014-3508) - [Emilia Käsper, and Steve Henson] - - *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.) - for corner cases. (Certain input points at infinity could lead to - bogus results, with non-infinity inputs mapped to infinity too.) - [Bodo Moeller] - - Changes between 1.0.1g and 1.0.1h [5 Jun 2014] - - *) Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted - handshake can force the use of weak keying material in OpenSSL - SSL/TLS clients and servers. - - Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and - researching this issue. (CVE-2014-0224) - [KIKUCHI Masashi, Steve Henson] - - *) Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an - OpenSSL DTLS client the code can be made to recurse eventually crashing - in a DoS attack. - - Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue. - (CVE-2014-0221) - [Imre Rad, Steve Henson] - - *) Fix DTLS invalid fragment vulnerability. A buffer overrun attack can - be triggered by sending invalid DTLS fragments to an OpenSSL DTLS - client or server. This is potentially exploitable to run arbitrary - code on a vulnerable client or server. - - Thanks to Jüri Aedla for reporting this issue. (CVE-2014-0195) - [Jüri Aedla, Steve Henson] - - *) Fix bug in TLS code where clients enable anonymous ECDH ciphersuites - are subject to a denial of service attack. - - Thanks to Felix Gröbert and Ivan Fratric at Google for discovering - this issue. (CVE-2014-3470) - [Felix Gröbert, Ivan Fratric, Steve Henson] - - *) Harmonize version and its documentation. -f flag is used to display - compilation flags. - [mancha ] - - *) Fix eckey_priv_encode so it immediately returns an error upon a failure - in i2d_ECPrivateKey. - [mancha ] - - *) Fix some double frees. These are not thought to be exploitable. - [mancha ] - - Changes between 1.0.1f and 1.0.1g [7 Apr 2014] - - *) A missing bounds check in the handling of the TLS heartbeat extension - can be used to reveal up to 64k of memory to a connected client or - server. - - Thanks for Neel Mehta of Google Security for discovering this bug and to - Adam Langley and Bodo Moeller for - preparing the fix (CVE-2014-0160) - [Adam Langley, Bodo Moeller] - - *) Fix for the attack described in the paper "Recovering OpenSSL - ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" - by Yuval Yarom and Naomi Benger. Details can be obtained from: - http://eprint.iacr.org/2014/140 - - Thanks to Yuval Yarom and Naomi Benger for discovering this - flaw and to Yuval Yarom for supplying a fix (CVE-2014-0076) - [Yuval Yarom and Naomi Benger] - - *) TLS pad extension: draft-agl-tls-padding-03 - - Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the - TLS client Hello record length value would otherwise be > 255 and - less that 512 pad with a dummy extension containing zeroes so it - is at least 512 bytes long. - - [Adam Langley, Steve Henson] - - Changes between 1.0.1e and 1.0.1f [6 Jan 2014] - - *) Fix for TLS record tampering bug. A carefully crafted invalid - handshake could crash OpenSSL with a NULL pointer exception. - Thanks to Anton Johansson for reporting this issues. - (CVE-2013-4353) - - *) Keep original DTLS digest and encryption contexts in retransmission - structures so we can use the previous session parameters if they need - to be resent. (CVE-2013-6450) - [Steve Henson] - - *) Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which - avoids preferring ECDHE-ECDSA ciphers when the client appears to be - Safari on OS X. Safari on OS X 10.8..10.8.3 advertises support for - several ECDHE-ECDSA ciphers, but fails to negotiate them. The bug - is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing - 10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer. - [Rob Stradling, Adam Langley] - - Changes between 1.0.1d and 1.0.1e [11 Feb 2013] - - *) Correct fix for CVE-2013-0169. The original didn't work on AES-NI - supporting platforms or when small records were transferred. - [Andy Polyakov, Steve Henson] - - Changes between 1.0.1c and 1.0.1d [5 Feb 2013] - - *) Make the decoding of SSLv3, TLS and DTLS CBC records constant time. - - This addresses the flaw in CBC record processing discovered by - Nadhem Alfardan and Kenny Paterson. Details of this attack can be found - at: http://www.isg.rhul.ac.uk/tls/ - - Thanks go to Nadhem Alfardan and Kenny Paterson of the Information - Security Group at Royal Holloway, University of London - (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and - Emilia Käsper for the initial patch. - (CVE-2013-0169) - [Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson] - - *) Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode - ciphersuites which can be exploited in a denial of service attack. - Thanks go to and to Adam Langley for discovering - and detecting this bug and to Wolfgang Ettlinger - for independently discovering this issue. - (CVE-2012-2686) - [Adam Langley] - - *) Return an error when checking OCSP signatures when key is NULL. - This fixes a DoS attack. (CVE-2013-0166) - [Steve Henson] - - *) Make openssl verify return errors. - [Chris Palmer and Ben Laurie] - - *) Call OCSP Stapling callback after ciphersuite has been chosen, so - the right response is stapled. Also change SSL_get_certificate() - so it returns the certificate actually sent. - See http://rt.openssl.org/Ticket/Display.html?id=2836. - [Rob Stradling ] - - *) Fix possible deadlock when decoding public keys. - [Steve Henson] - - *) Don't use TLS 1.0 record version number in initial client hello - if renegotiating. - [Steve Henson] - - Changes between 1.0.1b and 1.0.1c [10 May 2012] - - *) Sanity check record length before skipping explicit IV in TLS - 1.2, 1.1 and DTLS to fix DoS attack. - - Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic - fuzzing as a service testing platform. - (CVE-2012-2333) - [Steve Henson] - - *) Initialise tkeylen properly when encrypting CMS messages. - Thanks to Solar Designer of Openwall for reporting this issue. - [Steve Henson] - - *) In FIPS mode don't try to use composite ciphers as they are not - approved. - [Steve Henson] - - Changes between 1.0.1a and 1.0.1b [26 Apr 2012] - - *) OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and - 1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately - mean any application compiled against OpenSSL 1.0.0 headers setting - SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disablng - TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to - 0x10000000L Any application which was previously compiled against - OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1 - will need to be recompiled as a result. Letting be results in - inability to disable specifically TLS 1.1 and in client context, - in unlike event, limit maximum offered version to TLS 1.0 [see below]. - [Steve Henson] - - *) In order to ensure interoperabilty SSL_OP_NO_protocolX does not - disable just protocol X, but all protocols above X *if* there are - protocols *below* X still enabled. In more practical terms it means - that if application wants to disable TLS1.0 in favor of TLS1.1 and - above, it's not sufficient to pass SSL_OP_NO_TLSv1, one has to pass - SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2. This applies to - client side. - [Andy Polyakov] - - Changes between 1.0.1 and 1.0.1a [19 Apr 2012] - - *) Check for potentially exploitable overflows in asn1_d2i_read_bio - BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer - in CRYPTO_realloc_clean. - - Thanks to Tavis Ormandy, Google Security Team, for discovering this - issue and to Adam Langley for fixing it. - (CVE-2012-2110) - [Adam Langley (Google), Tavis Ormandy, Google Security Team] - - *) Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections. - [Adam Langley] - - *) Workarounds for some broken servers that "hang" if a client hello - record length exceeds 255 bytes. - - 1. Do not use record version number > TLS 1.0 in initial client - hello: some (but not all) hanging servers will now work. - 2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate - the number of ciphers sent in the client hello. This should be - set to an even number, such as 50, for example by passing: - -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure. - Most broken servers should now work. - 3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable - TLS 1.2 client support entirely. - [Steve Henson] - - *) Fix SEGV in Vector Permutation AES module observed in OpenSSH. - [Andy Polyakov] - - Changes between 1.0.0h and 1.0.1 [14 Mar 2012] - - *) Add compatibility with old MDC2 signatures which use an ASN1 OCTET - STRING form instead of a DigestInfo. - [Steve Henson] - - *) The format used for MDC2 RSA signatures is inconsistent between EVP - and the RSA_sign/RSA_verify functions. This was made more apparent when - OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular - those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect - the correct format in RSA_verify so both forms transparently work. - [Steve Henson] - - *) Some servers which support TLS 1.0 can choke if we initially indicate - support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA - encrypted premaster secret. As a workaround use the maximum permitted - client version in client hello, this should keep such servers happy - and still work with previous versions of OpenSSL. - [Steve Henson] - - *) Add support for TLS/DTLS heartbeats. - [Robin Seggelmann ] - - *) Add support for SCTP. - [Robin Seggelmann ] - - *) Improved PRNG seeding for VOS. - [Paul Green ] - - *) Extensive assembler packs updates, most notably: - - - x86[_64]: AES-NI, PCLMULQDQ, RDRAND support; - - x86[_64]: SSSE3 support (SHA1, vector-permutation AES); - - x86_64: bit-sliced AES implementation; - - ARM: NEON support, contemporary platforms optimizations; - - s390x: z196 support; - - *: GHASH and GF(2^m) multiplication implementations; - - [Andy Polyakov] - - *) Make TLS-SRP code conformant with RFC 5054 API cleanup - (removal of unnecessary code) - [Peter Sylvester ] - - *) Add TLS key material exporter from RFC 5705. - [Eric Rescorla] - - *) Add DTLS-SRTP negotiation from RFC 5764. - [Eric Rescorla] - - *) Add Next Protocol Negotiation, - http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00. Can be - disabled with a no-npn flag to config or Configure. Code donated - by Google. - [Adam Langley and Ben Laurie] - - *) Add optional 64-bit optimized implementations of elliptic curves NIST-P224, - NIST-P256, NIST-P521, with constant-time single point multiplication on - typical inputs. Compiler support for the nonstandard type __uint128_t is - required to use this (present in gcc 4.4 and later, for 64-bit builds). - Code made available under Apache License version 2.0. - - Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command - line to include this in your build of OpenSSL, and run "make depend" (or - "make update"). This enables the following EC_METHODs: - - EC_GFp_nistp224_method() - EC_GFp_nistp256_method() - EC_GFp_nistp521_method() - - EC_GROUP_new_by_curve_name() will automatically use these (while - EC_GROUP_new_curve_GFp() currently prefers the more flexible - implementations). - [Emilia Käsper, Adam Langley, Bodo Moeller (Google)] - - *) Use type ossl_ssize_t instad of ssize_t which isn't available on - all platforms. Move ssize_t definition from e_os.h to the public - header file e_os2.h as it now appears in public header file cms.h - [Steve Henson] - - *) New -sigopt option to the ca, req and x509 utilities. Additional - signature parameters can be passed using this option and in - particular PSS. - [Steve Henson] - - *) Add RSA PSS signing function. This will generate and set the - appropriate AlgorithmIdentifiers for PSS based on those in the - corresponding EVP_MD_CTX structure. No application support yet. - [Steve Henson] - - *) Support for companion algorithm specific ASN1 signing routines. - New function ASN1_item_sign_ctx() signs a pre-initialised - EVP_MD_CTX structure and sets AlgorithmIdentifiers based on - the appropriate parameters. - [Steve Henson] - - *) Add new algorithm specific ASN1 verification initialisation function - to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1 - handling will be the same no matter what EVP_PKEY_METHOD is used. - Add a PSS handler to support verification of PSS signatures: checked - against a number of sample certificates. - [Steve Henson] - - *) Add signature printing for PSS. Add PSS OIDs. - [Steve Henson, Martin Kaiser ] - - *) Add algorithm specific signature printing. An individual ASN1 method - can now print out signatures instead of the standard hex dump. - - More complex signatures (e.g. PSS) can print out more meaningful - information. Include DSA version that prints out the signature - parameters r, s. - [Steve Henson] - - *) Password based recipient info support for CMS library: implementing - RFC3211. - [Steve Henson] - - *) Split password based encryption into PBES2 and PBKDF2 functions. This - neatly separates the code into cipher and PBE sections and is required - for some algorithms that split PBES2 into separate pieces (such as - password based CMS). - [Steve Henson] - - *) Session-handling fixes: - - Fix handling of connections that are resuming with a session ID, - but also support Session Tickets. - - Fix a bug that suppressed issuing of a new ticket if the client - presented a ticket with an expired session. - - Try to set the ticket lifetime hint to something reasonable. - - Make tickets shorter by excluding irrelevant information. - - On the client side, don't ignore renewed tickets. - [Adam Langley, Bodo Moeller (Google)] - - *) Fix PSK session representation. - [Bodo Moeller] - - *) Add RC4-MD5 and AESNI-SHA1 "stitched" implementations. - - This work was sponsored by Intel. - [Andy Polyakov] - - *) Add GCM support to TLS library. Some custom code is needed to split - the IV between the fixed (from PRF) and explicit (from TLS record) - portions. This adds all GCM ciphersuites supported by RFC5288 and - RFC5289. Generalise some AES* cipherstrings to include GCM and - add a special AESGCM string for GCM only. - [Steve Henson] - - *) Expand range of ctrls for AES GCM. Permit setting invocation - field on decrypt and retrieval of invocation field only on encrypt. - [Steve Henson] - - *) Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support. - As required by RFC5289 these ciphersuites cannot be used if for - versions of TLS earlier than 1.2. - [Steve Henson] - - *) For FIPS capable OpenSSL interpret a NULL default public key method - as unset and return the appropriate default but do *not* set the default. - This means we can return the appropriate method in applications that - switch between FIPS and non-FIPS modes. - [Steve Henson] - - *) Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an - ENGINE is used then we cannot handle that in the FIPS module so we - keep original code iff non-FIPS operations are allowed. - [Steve Henson] - - *) Add -attime option to openssl utilities. - [Peter Eckersley , Ben Laurie and Steve Henson] - - *) Redirect DSA and DH operations to FIPS module in FIPS mode. - [Steve Henson] - - *) Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use - FIPS EC methods unconditionally for now. - [Steve Henson] - - *) New build option no-ec2m to disable characteristic 2 code. - [Steve Henson] - - *) Backport libcrypto audit of return value checking from 1.1.0-dev; not - all cases can be covered as some introduce binary incompatibilities. - [Steve Henson] - - *) Redirect RSA operations to FIPS module including keygen, - encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods. - [Steve Henson] - - *) Add similar low level API blocking to ciphers. - [Steve Henson] - - *) Low level digest APIs are not approved in FIPS mode: any attempt - to use these will cause a fatal error. Applications that *really* want - to use them can use the private_* version instead. - [Steve Henson] - - *) Redirect cipher operations to FIPS module for FIPS builds. - [Steve Henson] - - *) Redirect digest operations to FIPS module for FIPS builds. - [Steve Henson] - - *) Update build system to add "fips" flag which will link in fipscanister.o - for static and shared library builds embedding a signature if needed. - [Steve Henson] - - *) Output TLS supported curves in preference order instead of numerical - order. This is currently hardcoded for the highest order curves first. - This should be configurable so applications can judge speed vs strength. - [Steve Henson] - - *) Add TLS v1.2 server support for client authentication. - [Steve Henson] - - *) Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers - and enable MD5. - [Steve Henson] - - *) Functions FIPS_mode_set() and FIPS_mode() which call the underlying - FIPS modules versions. - [Steve Henson] - - *) Add TLS v1.2 client side support for client authentication. Keep cache - of handshake records longer as we don't know the hash algorithm to use - until after the certificate request message is received. - [Steve Henson] - - *) Initial TLS v1.2 client support. Add a default signature algorithms - extension including all the algorithms we support. Parse new signature - format in client key exchange. Relax some ECC signing restrictions for - TLS v1.2 as indicated in RFC5246. - [Steve Henson] - - *) Add server support for TLS v1.2 signature algorithms extension. Switch - to new signature format when needed using client digest preference. - All server ciphersuites should now work correctly in TLS v1.2. No client - support yet and no support for client certificates. - [Steve Henson] - - *) Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch - to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based - ciphersuites. At present only RSA key exchange ciphersuites work with - TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete - SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods - and version checking. - [Steve Henson] - - *) New option OPENSSL_NO_SSL_INTERN. If an application can be compiled - with this defined it will not be affected by any changes to ssl internal - structures. Add several utility functions to allow openssl application - to work with OPENSSL_NO_SSL_INTERN defined. - [Steve Henson] - - *) Add SRP support. - [Tom Wu and Ben Laurie] - - *) Add functions to copy EVP_PKEY_METHOD and retrieve flags and id. - [Steve Henson] - - *) Permit abbreviated handshakes when renegotiating using the function - SSL_renegotiate_abbreviated(). - [Robin Seggelmann ] - - *) Add call to ENGINE_register_all_complete() to - ENGINE_load_builtin_engines(), so some implementations get used - automatically instead of needing explicit application support. - [Steve Henson] - - *) Add support for TLS key exporter as described in RFC5705. - [Robin Seggelmann , Steve Henson] - - *) Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only - a few changes are required: - - Add SSL_OP_NO_TLSv1_1 flag. - Add TLSv1_1 methods. - Update version checking logic to handle version 1.1. - Add explicit IV handling (ported from DTLS code). - Add command line options to s_client/s_server. - [Steve Henson] - - Changes between 1.0.0g and 1.0.0h [12 Mar 2012] - - *) Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness - in CMS and PKCS7 code. When RSA decryption fails use a random key for - content decryption and always return the same error. Note: this attack - needs on average 2^20 messages so it only affects automated senders. The - old behaviour can be re-enabled in the CMS code by setting the - CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where - an MMA defence is not necessary. - Thanks to Ivan Nestlerode for discovering - this issue. (CVE-2012-0884) - [Steve Henson] - - *) Fix CVE-2011-4619: make sure we really are receiving a - client hello before rejecting multiple SGC restarts. Thanks to - Ivan Nestlerode for discovering this bug. - [Steve Henson] - - Changes between 1.0.0f and 1.0.0g [18 Jan 2012] - - *) Fix for DTLS DoS issue introduced by fix for CVE-2011-4109. - Thanks to Antonio Martin, Enterprise Secure Access Research and - Development, Cisco Systems, Inc. for discovering this bug and - preparing a fix. (CVE-2012-0050) - [Antonio Martin] - - Changes between 1.0.0e and 1.0.0f [4 Jan 2012] - - *) Nadhem Alfardan and Kenny Paterson have discovered an extension - of the Vaudenay padding oracle attack on CBC mode encryption - which enables an efficient plaintext recovery attack against - the OpenSSL implementation of DTLS. Their attack exploits timing - differences arising during decryption processing. A research - paper describing this attack can be found at: - http://www.isg.rhul.ac.uk/~kp/dtls.pdf - Thanks go to Nadhem Alfardan and Kenny Paterson of the Information - Security Group at Royal Holloway, University of London - (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann - and Michael Tuexen - for preparing the fix. (CVE-2011-4108) - [Robin Seggelmann, Michael Tuexen] - - *) Clear bytes used for block padding of SSL 3.0 records. - (CVE-2011-4576) - [Adam Langley (Google)] - - *) Only allow one SGC handshake restart for SSL/TLS. Thanks to George - Kadianakis for discovering this issue and - Adam Langley for preparing the fix. (CVE-2011-4619) - [Adam Langley (Google)] - - *) Check parameters are not NULL in GOST ENGINE. (CVE-2012-0027) - [Andrey Kulikov ] - - *) Prevent malformed RFC3779 data triggering an assertion failure. - Thanks to Andrew Chi, BBN Technologies, for discovering the flaw - and Rob Austein for fixing it. (CVE-2011-4577) - [Rob Austein ] - - *) Improved PRNG seeding for VOS. - [Paul Green ] - - *) Fix ssl_ciph.c set-up race. - [Adam Langley (Google)] - - *) Fix spurious failures in ecdsatest.c. - [Emilia Käsper (Google)] - - *) Fix the BIO_f_buffer() implementation (which was mixing different - interpretations of the '..._len' fields). - [Adam Langley (Google)] - - *) Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than - BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent - threads won't reuse the same blinding coefficients. - - This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING - lock to call BN_BLINDING_invert_ex, and avoids one use of - BN_BLINDING_update for each BN_BLINDING structure (previously, - the last update always remained unused). - [Emilia Käsper (Google)] - - *) In ssl3_clear, preserve s3->init_extra along with s3->rbuf. - [Bob Buckholz (Google)] - - Changes between 1.0.0d and 1.0.0e [6 Sep 2011] - - *) Fix bug where CRLs with nextUpdate in the past are sometimes accepted - by initialising X509_STORE_CTX properly. (CVE-2011-3207) - [Kaspar Brand ] - - *) Fix SSL memory handling for (EC)DH ciphersuites, in particular - for multi-threaded use of ECDH. (CVE-2011-3210) - [Adam Langley (Google)] - - *) Fix x509_name_ex_d2i memory leak on bad inputs. - [Bodo Moeller] - - *) Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check - signature public key algorithm by using OID xref utilities instead. - Before this you could only use some ECC ciphersuites with SHA1 only. - [Steve Henson] - - *) Add protection against ECDSA timing attacks as mentioned in the paper - by Billy Bob Brumley and Nicola Tuveri, see: - - http://eprint.iacr.org/2011/232.pdf - - [Billy Bob Brumley and Nicola Tuveri] - - Changes between 1.0.0c and 1.0.0d [8 Feb 2011] - - *) Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014 - [Neel Mehta, Adam Langley, Bodo Moeller (Google)] - - *) Fix bug in string printing code: if *any* escaping is enabled we must - escape the escape character (backslash) or the resulting string is - ambiguous. - [Steve Henson] - - Changes between 1.0.0b and 1.0.0c [2 Dec 2010] - - *) Disable code workaround for ancient and obsolete Netscape browsers - and servers: an attacker can use it in a ciphersuite downgrade attack. - Thanks to Martin Rex for discovering this bug. CVE-2010-4180 - [Steve Henson] - - *) Fixed J-PAKE implementation error, originally discovered by - Sebastien Martini, further info and confirmation from Stefan - Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252 - [Ben Laurie] - - Changes between 1.0.0a and 1.0.0b [16 Nov 2010] - - *) Fix extension code to avoid race conditions which can result in a buffer - overrun vulnerability: resumed sessions must not be modified as they can - be shared by multiple threads. CVE-2010-3864 - [Steve Henson] - - *) Fix WIN32 build system to correctly link an ENGINE directory into - a DLL. - [Steve Henson] - - Changes between 1.0.0 and 1.0.0a [01 Jun 2010] - - *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover - (CVE-2010-1633) - [Steve Henson, Peter-Michael Hager ] - - Changes between 0.9.8n and 1.0.0 [29 Mar 2010] - - *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher - context. The operation can be customised via the ctrl mechanism in - case ENGINEs want to include additional functionality. - [Steve Henson] - - *) Tolerate yet another broken PKCS#8 key format: private key value negative. - [Steve Henson] - - *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to - output hashes compatible with older versions of OpenSSL. - [Willy Weisz ] - - *) Fix compression algorithm handling: if resuming a session use the - compression algorithm of the resumed session instead of determining - it from client hello again. Don't allow server to change algorithm. - [Steve Henson] - - *) Add load_crls() function to apps tidying load_certs() too. Add option - to verify utility to allow additional CRLs to be included. - [Steve Henson] - - *) Update OCSP request code to permit adding custom headers to the request: - some responders need this. - [Steve Henson] - - *) The function EVP_PKEY_sign() returns <=0 on error: check return code - correctly. - [Julia Lawall ] - - *) Update verify callback code in apps/s_cb.c and apps/verify.c, it - needlessly dereferenced structures, used obsolete functions and - didn't handle all updated verify codes correctly. - [Steve Henson] - - *) Disable MD2 in the default configuration. - [Steve Henson] - - *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to - indicate the initial BIO being pushed or popped. This makes it possible - to determine whether the BIO is the one explicitly called or as a result - of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so - it handles reference counts correctly and doesn't zero out the I/O bio - when it is not being explicitly popped. WARNING: applications which - included workarounds for the old buggy behaviour will need to be modified - or they could free up already freed BIOs. - [Steve Henson] - - *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni - renaming to all platforms (within the 0.9.8 branch, this was - done conditionally on Netware platforms to avoid a name clash). - [Guenter ] - - *) Add ECDHE and PSK support to DTLS. - [Michael Tuexen ] - - *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't - be used on C++. - [Steve Henson] - - *) Add "missing" function EVP_MD_flags() (without this the only way to - retrieve a digest flags is by accessing the structure directly. Update - EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest - or cipher is registered as in the "from" argument. Print out all - registered digests in the dgst usage message instead of manually - attempting to work them out. - [Steve Henson] - - *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello: - this allows the use of compression and extensions. Change default cipher - string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2 - by default unless an application cipher string requests it. - [Steve Henson] - - *) Alter match criteria in PKCS12_parse(). It used to try to use local - key ids to find matching certificates and keys but some PKCS#12 files - don't follow the (somewhat unwritten) rules and this strategy fails. - Now just gather all certificates together and the first private key - then look for the first certificate that matches the key. - [Steve Henson] - - *) Support use of registered digest and cipher names for dgst and cipher - commands instead of having to add each one as a special case. So now - you can do: - - openssl sha256 foo - - as well as: - - openssl dgst -sha256 foo - - and this works for ENGINE based algorithms too. - - [Steve Henson] - - *) Update Gost ENGINE to support parameter files. - [Victor B. Wagner ] - - *) Support GeneralizedTime in ca utility. - [Oliver Martin , Steve Henson] - - *) Enhance the hash format used for certificate directory links. The new - form uses the canonical encoding (meaning equivalent names will work - even if they aren't identical) and uses SHA1 instead of MD5. This form - is incompatible with the older format and as a result c_rehash should - be used to rebuild symbolic links. - [Steve Henson] - - *) Make PKCS#8 the default write format for private keys, replacing the - traditional format. This form is standardised, more secure and doesn't - include an implicit MD5 dependency. - [Steve Henson] - - *) Add a $gcc_devteam_warn option to Configure. The idea is that any code - committed to OpenSSL should pass this lot as a minimum. - [Steve Henson] - - *) Add session ticket override functionality for use by EAP-FAST. - [Jouni Malinen ] - - *) Modify HMAC functions to return a value. Since these can be implemented - in an ENGINE errors can occur. - [Steve Henson] - - *) Type-checked OBJ_bsearch_ex. - [Ben Laurie] - - *) Type-checked OBJ_bsearch. Also some constification necessitated - by type-checking. Still to come: TXT_DB, bsearch(?), - OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING, - CONF_VALUE. - [Ben Laurie] - - *) New function OPENSSL_gmtime_adj() to add a specific number of days and - seconds to a tm structure directly, instead of going through OS - specific date routines. This avoids any issues with OS routines such - as the year 2038 bug. New *_adj() functions for ASN1 time structures - and X509_time_adj_ex() to cover the extended range. The existing - X509_time_adj() is still usable and will no longer have any date issues. - [Steve Henson] - - *) Delta CRL support. New use deltas option which will attempt to locate - and search any appropriate delta CRLs available. - - This work was sponsored by Google. - [Steve Henson] - - *) Support for CRLs partitioned by reason code. Reorganise CRL processing - code and add additional score elements. Validate alternate CRL paths - as part of the CRL checking and indicate a new error "CRL path validation - error" in this case. Applications wanting additional details can use - the verify callback and check the new "parent" field. If this is not - NULL CRL path validation is taking place. Existing applications won't - see this because it requires extended CRL support which is off by - default. - - This work was sponsored by Google. - [Steve Henson] - - *) Support for freshest CRL extension. - - This work was sponsored by Google. - [Steve Henson] - - *) Initial indirect CRL support. Currently only supported in the CRLs - passed directly and not via lookup. Process certificate issuer - CRL entry extension and lookup CRL entries by bother issuer name - and serial number. Check and process CRL issuer entry in IDP extension. - - This work was sponsored by Google. - [Steve Henson] - - *) Add support for distinct certificate and CRL paths. The CRL issuer - certificate is validated separately in this case. Only enabled if - an extended CRL support flag is set: this flag will enable additional - CRL functionality in future. - - This work was sponsored by Google. - [Steve Henson] - - *) Add support for policy mappings extension. - - This work was sponsored by Google. - [Steve Henson] - - *) Fixes to pathlength constraint, self issued certificate handling, - policy processing to align with RFC3280 and PKITS tests. - - This work was sponsored by Google. - [Steve Henson] - - *) Support for name constraints certificate extension. DN, email, DNS - and URI types are currently supported. - - This work was sponsored by Google. - [Steve Henson] - - *) To cater for systems that provide a pointer-based thread ID rather - than numeric, deprecate the current numeric thread ID mechanism and - replace it with a structure and associated callback type. This - mechanism allows a numeric "hash" to be extracted from a thread ID in - either case, and on platforms where pointers are larger than 'long', - mixing is done to help ensure the numeric 'hash' is usable even if it - can't be guaranteed unique. The default mechanism is to use "&errno" - as a pointer-based thread ID to distinguish between threads. - - Applications that want to provide their own thread IDs should now use - CRYPTO_THREADID_set_callback() to register a callback that will call - either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer(). - - Note that ERR_remove_state() is now deprecated, because it is tied - to the assumption that thread IDs are numeric. ERR_remove_state(0) - to free the current thread's error state should be replaced by - ERR_remove_thread_state(NULL). - - (This new approach replaces the functions CRYPTO_set_idptr_callback(), - CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in - OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an - application was previously providing a numeric thread callback that - was inappropriate for distinguishing threads, then uniqueness might - have been obtained with &errno that happened immediately in the - intermediate development versions of OpenSSL; this is no longer the - case, the numeric thread callback will now override the automatic use - of &errno.) - [Geoff Thorpe, with help from Bodo Moeller] - - *) Initial support for different CRL issuing certificates. This covers a - simple case where the self issued certificates in the chain exist and - the real CRL issuer is higher in the existing chain. - - This work was sponsored by Google. - [Steve Henson] - - *) Removed effectively defunct crypto/store from the build. - [Ben Laurie] - - *) Revamp of STACK to provide stronger type-checking. Still to come: - TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE, - ASN1_STRING, CONF_VALUE. - [Ben Laurie] - - *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer - RAM on SSL connections. This option can save about 34k per idle SSL. - [Nick Mathewson] - - *) Revamp of LHASH to provide stronger type-checking. Still to come: - STACK, TXT_DB, bsearch, qsort. - [Ben Laurie] - - *) Initial support for Cryptographic Message Syntax (aka CMS) based - on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility, - support for data, signedData, compressedData, digestedData and - encryptedData, envelopedData types included. Scripts to check against - RFC4134 examples draft and interop and consistency checks of many - content types and variants. - [Steve Henson] - - *) Add options to enc utility to support use of zlib compression BIO. - [Steve Henson] - - *) Extend mk1mf to support importing of options and assembly language - files from Configure script, currently only included in VC-WIN32. - The assembly language rules can now optionally generate the source - files from the associated perl scripts. - [Steve Henson] - - *) Implement remaining functionality needed to support GOST ciphersuites. - Interop testing has been performed using CryptoPro implementations. - [Victor B. Wagner ] - - *) s390x assembler pack. - [Andy Polyakov] - - *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU - "family." - [Andy Polyakov] - - *) Implement Opaque PRF Input TLS extension as specified in - draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an - official specification yet and no extension type assignment by - IANA exists, this extension (for now) will have to be explicitly - enabled when building OpenSSL by providing the extension number - to use. For example, specify an option - - -DTLSEXT_TYPE_opaque_prf_input=0x9527 - - to the "config" or "Configure" script to enable the extension, - assuming extension number 0x9527 (which is a completely arbitrary - and unofficial assignment based on the MD5 hash of the Internet - Draft). Note that by doing so, you potentially lose - interoperability with other TLS implementations since these might - be using the same extension number for other purposes. - - SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the - opaque PRF input value to use in the handshake. This will create - an interal copy of the length-'len' string at 'src', and will - return non-zero for success. - - To get more control and flexibility, provide a callback function - by using - - SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) - SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) - - where - - int (*cb)(SSL *, void *peerinput, size_t len, void *arg); - void *arg; - - Callback function 'cb' will be called in handshakes, and is - expected to use SSL_set_tlsext_opaque_prf_input() as appropriate. - Argument 'arg' is for application purposes (the value as given to - SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly - be provided to the callback function). The callback function - has to return non-zero to report success: usually 1 to use opaque - PRF input just if possible, or 2 to enforce use of the opaque PRF - input. In the latter case, the library will abort the handshake - if opaque PRF input is not successfully negotiated. - - Arguments 'peerinput' and 'len' given to the callback function - will always be NULL and 0 in the case of a client. A server will - see the client's opaque PRF input through these variables if - available (NULL and 0 otherwise). Note that if the server - provides an opaque PRF input, the length must be the same as the - length of the client's opaque PRF input. - - Note that the callback function will only be called when creating - a new session (session resumption can resume whatever was - previously negotiated), and will not be called in SSL 2.0 - handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or - SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended - for applications that need to enforce opaque PRF input. - - [Bodo Moeller] - - *) Update ssl code to support digests other than SHA1+MD5 for handshake - MAC. - - [Victor B. Wagner ] - - *) Add RFC4507 support to OpenSSL. This includes the corrections in - RFC4507bis. The encrypted ticket format is an encrypted encoded - SSL_SESSION structure, that way new session features are automatically - supported. - - If a client application caches session in an SSL_SESSION structure - support is transparent because tickets are now stored in the encoded - SSL_SESSION. - - The SSL_CTX structure automatically generates keys for ticket - protection in servers so again support should be possible - with no application modification. - - If a client or server wishes to disable RFC4507 support then the option - SSL_OP_NO_TICKET can be set. - - Add a TLS extension debugging callback to allow the contents of any client - or server extensions to be examined. - - This work was sponsored by Google. - [Steve Henson] - - *) Final changes to avoid use of pointer pointer casts in OpenSSL. - OpenSSL should now compile cleanly on gcc 4.2 - [Peter Hartley , Steve Henson] - - *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC - support including streaming MAC support: this is required for GOST - ciphersuite support. - [Victor B. Wagner , Steve Henson] - - *) Add option -stream to use PKCS#7 streaming in smime utility. New - function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream() - to output in BER and PEM format. - [Steve Henson] - - *) Experimental support for use of HMAC via EVP_PKEY interface. This - allows HMAC to be handled via the EVP_DigestSign*() interface. The - EVP_PKEY "key" in this case is the HMAC key, potentially allowing - ENGINE support for HMAC keys which are unextractable. New -mac and - -macopt options to dgst utility. - [Steve Henson] - - *) New option -sigopt to dgst utility. Update dgst to use - EVP_Digest{Sign,Verify}*. These two changes make it possible to use - alternative signing parameters such as X9.31 or PSS in the dgst - utility. - [Steve Henson] - - *) Change ssl_cipher_apply_rule(), the internal function that does - the work each time a ciphersuite string requests enabling - ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or - removing ("!foo+bar") a class of ciphersuites: Now it maintains - the order of disabled ciphersuites such that those ciphersuites - that most recently went from enabled to disabled not only stay - in order with respect to each other, but also have higher priority - than other disabled ciphersuites the next time ciphersuites are - enabled again. - - This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable - the same ciphersuites as with "HIGH" alone, but in a specific - order where the PSK ciphersuites come first (since they are the - most recently disabled ciphersuites when "HIGH" is parsed). - - Also, change ssl_create_cipher_list() (using this new - funcionality) such that between otherwise identical - cihpersuites, ephemeral ECDH is preferred over ephemeral DH in - the default order. - [Bodo Moeller] - - *) Change ssl_create_cipher_list() so that it automatically - arranges the ciphersuites in reasonable order before starting - to process the rule string. Thus, the definition for "DEFAULT" - (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but - remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH". - This makes it much easier to arrive at a reasonable default order - in applications for which anonymous ciphers are OK (meaning - that you can't actually use DEFAULT). - [Bodo Moeller; suggested by Victor Duchovni] - - *) Split the SSL/TLS algorithm mask (as used for ciphersuite string - processing) into multiple integers instead of setting - "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK", - "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer. - (These masks as well as the individual bit definitions are hidden - away into the non-exported interface ssl/ssl_locl.h, so this - change to the definition of the SSL_CIPHER structure shouldn't - affect applications.) This give us more bits for each of these - categories, so there is no longer a need to coagulate AES128 and - AES256 into a single algorithm bit, and to coagulate Camellia128 - and Camellia256 into a single algorithm bit, which has led to all - kinds of kludges. - - Thus, among other things, the kludge introduced in 0.9.7m and - 0.9.8e for masking out AES256 independently of AES128 or masking - out Camellia256 independently of AES256 is not needed here in 0.9.9. - - With the change, we also introduce new ciphersuite aliases that - so far were missing: "AES128", "AES256", "CAMELLIA128", and - "CAMELLIA256". - [Bodo Moeller] - - *) Add support for dsa-with-SHA224 and dsa-with-SHA256. - Use the leftmost N bytes of the signature input if the input is - larger than the prime q (with N being the size in bytes of q). - [Nils Larsch] - - *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses - it yet and it is largely untested. - [Steve Henson] - - *) Add support for the ecdsa-with-SHA224/256/384/512 signature types. - [Nils Larsch] - - *) Initial incomplete changes to avoid need for function casts in OpenSSL - some compilers (gcc 4.2 and later) reject their use. Safestack is - reimplemented. Update ASN1 to avoid use of legacy functions. - [Steve Henson] - - *) Win32/64 targets are linked with Winsock2. - [Andy Polyakov] - - *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected - to external functions. This can be used to increase CRL handling - efficiency especially when CRLs are very large by (for example) storing - the CRL revoked certificates in a database. - [Steve Henson] - - *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so - new CRLs added to a directory can be used. New command line option - -verify_return_error to s_client and s_server. This causes real errors - to be returned by the verify callback instead of carrying on no matter - what. This reflects the way a "real world" verify callback would behave. - [Steve Henson] - - *) GOST engine, supporting several GOST algorithms and public key formats. - Kindly donated by Cryptocom. - [Cryptocom] - - *) Partial support for Issuing Distribution Point CRL extension. CRLs - partitioned by DP are handled but no indirect CRL or reason partitioning - (yet). Complete overhaul of CRL handling: now the most suitable CRL is - selected via a scoring technique which handles IDP and AKID in CRLs. - [Steve Henson] - - *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which - will ultimately be used for all verify operations: this will remove the - X509_STORE dependency on certificate verification and allow alternative - lookup methods. X509_STORE based implementations of these two callbacks. - [Steve Henson] - - *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names. - Modify get_crl() to find a valid (unexpired) CRL if possible. - [Steve Henson] - - *) New function X509_CRL_match() to check if two CRLs are identical. Normally - this would be called X509_CRL_cmp() but that name is already used by - a function that just compares CRL issuer names. Cache several CRL - extensions in X509_CRL structure and cache CRLDP in X509. - [Steve Henson] - - *) Store a "canonical" representation of X509_NAME structure (ASN1 Name) - this maps equivalent X509_NAME structures into a consistent structure. - Name comparison can then be performed rapidly using memcmp(). - [Steve Henson] - - *) Non-blocking OCSP request processing. Add -timeout option to ocsp - utility. - [Steve Henson] - - *) Allow digests to supply their own micalg string for S/MIME type using - the ctrl EVP_MD_CTRL_MICALG. - [Steve Henson] - - *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the - EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN - ctrl. It can then customise the structure before and/or after signing - if necessary. - [Steve Henson] - - *) New function OBJ_add_sigid() to allow application defined signature OIDs - to be added to OpenSSLs internal tables. New function OBJ_sigid_free() - to free up any added signature OIDs. - [Steve Henson] - - *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(), - EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal - digest and cipher tables. New options added to openssl utility: - list-message-digest-algorithms and list-cipher-algorithms. - [Steve Henson] - - *) Change the array representation of binary polynomials: the list - of degrees of non-zero coefficients is now terminated with -1. - Previously it was terminated with 0, which was also part of the - value; thus, the array representation was not applicable to - polynomials where t^0 has coefficient zero. This change makes - the array representation useful in a more general context. - [Douglas Stebila] - - *) Various modifications and fixes to SSL/TLS cipher string - handling. For ECC, the code now distinguishes between fixed ECDH - with RSA certificates on the one hand and with ECDSA certificates - on the other hand, since these are separate ciphersuites. The - unused code for Fortezza ciphersuites has been removed. - - For consistency with EDH, ephemeral ECDH is now called "EECDH" - (not "ECDHE"). For consistency with the code for DH - certificates, use of ECDH certificates is now considered ECDH - authentication, not RSA or ECDSA authentication (the latter is - merely the CA's signing algorithm and not actively used in the - protocol). - - The temporary ciphersuite alias "ECCdraft" is no longer - available, and ECC ciphersuites are no longer excluded from "ALL" - and "DEFAULT". The following aliases now exist for RFC 4492 - ciphersuites, most of these by analogy with the DH case: - - kECDHr - ECDH cert, signed with RSA - kECDHe - ECDH cert, signed with ECDSA - kECDH - ECDH cert (signed with either RSA or ECDSA) - kEECDH - ephemeral ECDH - ECDH - ECDH cert or ephemeral ECDH - - aECDH - ECDH cert - aECDSA - ECDSA cert - ECDSA - ECDSA cert - - AECDH - anonymous ECDH - EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH") - - [Bodo Moeller] - - *) Add additional S/MIME capabilities for AES and GOST ciphers if supported. - Use correct micalg parameters depending on digest(s) in signed message. - [Steve Henson] - - *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process - an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code. - [Steve Henson] - - *) Initial engine support for EVP_PKEY_METHOD. New functions to permit - an engine to register a method. Add ENGINE lookups for methods and - functional reference processing. - [Steve Henson] - - *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of - EVP_{Sign,Verify}* which allow an application to customise the signature - process. - [Steve Henson] - - *) New -resign option to smime utility. This adds one or more signers - to an existing PKCS#7 signedData structure. Also -md option to use an - alternative message digest algorithm for signing. - [Steve Henson] - - *) Tidy up PKCS#7 routines and add new functions to make it easier to - create PKCS7 structures containing multiple signers. Update smime - application to support multiple signers. - [Steve Henson] - - *) New -macalg option to pkcs12 utility to allow setting of an alternative - digest MAC. - [Steve Henson] - - *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC. - Reorganize PBE internals to lookup from a static table using NIDs, - add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl: - EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative - PRF which will be automatically used with PBES2. - [Steve Henson] - - *) Replace the algorithm specific calls to generate keys in "req" with the - new API. - [Steve Henson] - - *) Update PKCS#7 enveloped data routines to use new API. This is now - supported by any public key method supporting the encrypt operation. A - ctrl is added to allow the public key algorithm to examine or modify - the PKCS#7 RecipientInfo structure if it needs to: for RSA this is - a no op. - [Steve Henson] - - *) Add a ctrl to asn1 method to allow a public key algorithm to express - a default digest type to use. In most cases this will be SHA1 but some - algorithms (such as GOST) need to specify an alternative digest. The - return value indicates how strong the preference is 1 means optional and - 2 is mandatory (that is it is the only supported type). Modify - ASN1_item_sign() to accept a NULL digest argument to indicate it should - use the default md. Update openssl utilities to use the default digest - type for signing if it is not explicitly indicated. - [Steve Henson] - - *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New - EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant - signing method from the key type. This effectively removes the link - between digests and public key types. - [Steve Henson] - - *) Add an OID cross reference table and utility functions. Its purpose is to - translate between signature OIDs such as SHA1WithrsaEncryption and SHA1, - rsaEncryption. This will allow some of the algorithm specific hackery - needed to use the correct OID to be removed. - [Steve Henson] - - *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO - structures for PKCS7_sign(). They are now set up by the relevant public - key ASN1 method. - [Steve Henson] - - *) Add provisional EC pkey method with support for ECDSA and ECDH. - [Steve Henson] - - *) Add support for key derivation (agreement) in the API, DH method and - pkeyutl. - [Steve Henson] - - *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support - public and private key formats. As a side effect these add additional - command line functionality not previously available: DSA signatures can be - generated and verified using pkeyutl and DH key support and generation in - pkey, genpkey. - [Steve Henson] - - *) BeOS support. - [Oliver Tappe ] - - *) New make target "install_html_docs" installs HTML renditions of the - manual pages. - [Oliver Tappe ] - - *) New utility "genpkey" this is analogous to "genrsa" etc except it can - generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to - support key and parameter generation and add initial key generation - functionality for RSA. - [Steve Henson] - - *) Add functions for main EVP_PKEY_method operations. The undocumented - functions EVP_PKEY_{encrypt,decrypt} have been renamed to - EVP_PKEY_{encrypt,decrypt}_old. - [Steve Henson] - - *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public - key API, doesn't do much yet. - [Steve Henson] - - *) New function EVP_PKEY_asn1_get0_info() to retrieve information about - public key algorithms. New option to openssl utility: - "list-public-key-algorithms" to print out info. - [Steve Henson] - - *) Implement the Supported Elliptic Curves Extension for - ECC ciphersuites from draft-ietf-tls-ecc-12.txt. - [Douglas Stebila] - - *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or - EVP_CIPHER structures to avoid later problems in EVP_cleanup(). - [Steve Henson] - - *) New utilities pkey and pkeyparam. These are similar to algorithm specific - utilities such as rsa, dsa, dsaparam etc except they process any key - type. - [Steve Henson] - - *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New - functions EVP_PKEY_print_public(), EVP_PKEY_print_private(), - EVP_PKEY_print_param() to print public key data from an EVP_PKEY - structure. - [Steve Henson] - - *) Initial support for pluggable public key ASN1. - De-spaghettify the public key ASN1 handling. Move public and private - key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate - algorithm specific handling to a single module within the relevant - algorithm directory. Add functions to allow (near) opaque processing - of public and private key structures. - [Steve Henson] - - *) Implement the Supported Point Formats Extension for - ECC ciphersuites from draft-ietf-tls-ecc-12.txt. - [Douglas Stebila] - - *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members - for the psk identity [hint] and the psk callback functions to the - SSL_SESSION, SSL and SSL_CTX structure. - - New ciphersuites: - PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA, - PSK-AES256-CBC-SHA - - New functions: - SSL_CTX_use_psk_identity_hint - SSL_get_psk_identity_hint - SSL_get_psk_identity - SSL_use_psk_identity_hint - - [Mika Kousa and Pasi Eronen of Nokia Corporation] - - *) Add RFC 3161 compliant time stamp request creation, response generation - and response verification functionality. - [Zoltán Glózik , The OpenTSA Project] - - *) Add initial support for TLS extensions, specifically for the server_name - extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now - have new members for a host name. The SSL data structure has an - additional member SSL_CTX *initial_ctx so that new sessions can be - stored in that context to allow for session resumption, even after the - SSL has been switched to a new SSL_CTX in reaction to a client's - server_name extension. - - New functions (subject to change): - - SSL_get_servername() - SSL_get_servername_type() - SSL_set_SSL_CTX() - - New CTRL codes and macros (subject to change): - - SSL_CTRL_SET_TLSEXT_SERVERNAME_CB - - SSL_CTX_set_tlsext_servername_callback() - SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG - - SSL_CTX_set_tlsext_servername_arg() - SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name() - - openssl s_client has a new '-servername ...' option. - - openssl s_server has new options '-servername_host ...', '-cert2 ...', - '-key2 ...', '-servername_fatal' (subject to change). This allows - testing the HostName extension for a specific single host name ('-cert' - and '-key' remain fallbacks for handshakes without HostName - negotiation). If the unrecognized_name alert has to be sent, this by - default is a warning; it becomes fatal with the '-servername_fatal' - option. - - [Peter Sylvester, Remy Allais, Christophe Renou] - - *) Whirlpool hash implementation is added. - [Andy Polyakov] - - *) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to - bn(64,32). Because of instruction set limitations it doesn't have - any negative impact on performance. This was done mostly in order - to make it possible to share assembler modules, such as bn_mul_mont - implementations, between 32- and 64-bit builds without hassle. - [Andy Polyakov] - - *) Move code previously exiled into file crypto/ec/ec2_smpt.c - to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP - macro. - [Bodo Moeller] - - *) New candidate for BIGNUM assembler implementation, bn_mul_mont, - dedicated Montgomery multiplication procedure, is introduced. - BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher - "64-bit" performance on certain 32-bit targets. - [Andy Polyakov] - - *) New option SSL_OP_NO_COMP to disable use of compression selectively - in SSL structures. New SSL ctrl to set maximum send fragment size. - Save memory by seeting the I/O buffer sizes dynamically instead of - using the maximum available value. - [Steve Henson] - - *) New option -V for 'openssl ciphers'. This prints the ciphersuite code - in addition to the text details. - [Bodo Moeller] - - *) Very, very preliminary EXPERIMENTAL support for printing of general - ASN1 structures. This currently produces rather ugly output and doesn't - handle several customised structures at all. - [Steve Henson] - - *) Integrated support for PVK file format and some related formats such - as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support - these in the 'rsa' and 'dsa' utilities. - [Steve Henson] - - *) Support for PKCS#1 RSAPublicKey format on rsa utility command line. - [Steve Henson] - - *) Remove the ancient ASN1_METHOD code. This was only ever used in one - place for the (very old) "NETSCAPE" format certificates which are now - handled using new ASN1 code equivalents. - [Steve Henson] - - *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD - pointer and make the SSL_METHOD parameter in SSL_CTX_new, - SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'. - [Nils Larsch] - - *) Modify CRL distribution points extension code to print out previously - unsupported fields. Enhance extension setting code to allow setting of - all fields. - [Steve Henson] - - *) Add print and set support for Issuing Distribution Point CRL extension. - [Steve Henson] - - *) Change 'Configure' script to enable Camellia by default. - [NTT] - - Changes between 0.9.8m and 0.9.8n [24 Mar 2010] - - *) When rejecting SSL/TLS records due to an incorrect version number, never - update s->server with a new major version number. As of - - OpenSSL 0.9.8m if 'short' is a 16-bit type, - - OpenSSL 0.9.8f if 'short' is longer than 16 bits, - the previous behavior could result in a read attempt at NULL when - receiving specific incorrect SSL/TLS records once record payload - protection is active. (CVE-2010-0740) - [Bodo Moeller, Adam Langley ] - - *) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL - could be crashed if the relevant tables were not present (e.g. chrooted). - [Tomas Hoger ] - - Changes between 0.9.8l and 0.9.8m [25 Feb 2010] - - *) Always check bn_wexpend() return values for failure. (CVE-2009-3245) - [Martin Olsson, Neel Mehta] - - *) Fix X509_STORE locking: Every 'objs' access requires a lock (to - accommodate for stack sorting, always a write lock!). - [Bodo Moeller] - - *) On some versions of WIN32 Heap32Next is very slow. This can cause - excessive delays in the RAND_poll(): over a minute. As a workaround - include a time check in the inner Heap32Next loop too. - [Steve Henson] - - *) The code that handled flushing of data in SSL/TLS originally used the - BIO_CTRL_INFO ctrl to see if any data was pending first. This caused - the problem outlined in PR#1949. The fix suggested there however can - trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions - of Apache). So instead simplify the code to flush unconditionally. - This should be fine since flushing with no data to flush is a no op. - [Steve Henson] - - *) Handle TLS versions 2.0 and later properly and correctly use the - highest version of TLS/SSL supported. Although TLS >= 2.0 is some way - off ancient servers have a habit of sticking around for a while... - [Steve Henson] - - *) Modify compression code so it frees up structures without using the - ex_data callbacks. This works around a problem where some applications - call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when - restarting) then use compression (e.g. SSL with compression) later. - This results in significant per-connection memory leaks and - has caused some security issues including CVE-2008-1678 and - CVE-2009-4355. - [Steve Henson] - - *) Constify crypto/cast (i.e., ): a CAST_KEY doesn't - change when encrypting or decrypting. - [Bodo Moeller] - - *) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to - connect and renegotiate with servers which do not support RI. - Until RI is more widely deployed this option is enabled by default. - [Steve Henson] - - *) Add "missing" ssl ctrls to clear options and mode. - [Steve Henson] - - *) If client attempts to renegotiate and doesn't support RI respond with - a no_renegotiation alert as required by RFC5746. Some renegotiating - TLS clients will continue a connection gracefully when they receive - the alert. Unfortunately OpenSSL mishandled this alert and would hang - waiting for a server hello which it will never receive. Now we treat a - received no_renegotiation alert as a fatal error. This is because - applications requesting a renegotiation might well expect it to succeed - and would have no code in place to handle the server denying it so the - only safe thing to do is to terminate the connection. - [Steve Henson] - - *) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if - peer supports secure renegotiation and 0 otherwise. Print out peer - renegotiation support in s_client/s_server. - [Steve Henson] - - *) Replace the highly broken and deprecated SPKAC certification method with - the updated NID creation version. This should correctly handle UTF8. - [Steve Henson] - - *) Implement RFC5746. Re-enable renegotiation but require the extension - as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION - turns out to be a bad idea. It has been replaced by - SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with - SSL_CTX_set_options(). This is really not recommended unless you - know what you are doing. - [Eric Rescorla , Ben Laurie, Steve Henson] - - *) Fixes to stateless session resumption handling. Use initial_ctx when - issuing and attempting to decrypt tickets in case it has changed during - servername handling. Use a non-zero length session ID when attempting - stateless session resumption: this makes it possible to determine if - a resumption has occurred immediately after receiving server hello - (several places in OpenSSL subtly assume this) instead of later in - the handshake. - [Steve Henson] - - *) The functions ENGINE_ctrl(), OPENSSL_isservice(), - CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error - fixes for a few places where the return code is not checked - correctly. - [Julia Lawall ] - - *) Add --strict-warnings option to Configure script to include devteam - warnings in other configurations. - [Steve Henson] - - *) Add support for --libdir option and LIBDIR variable in makefiles. This - makes it possible to install openssl libraries in locations which - have names other than "lib", for example "/usr/lib64" which some - systems need. - [Steve Henson, based on patch from Jeremy Utley] - - *) Don't allow the use of leading 0x80 in OIDs. This is a violation of - X690 8.9.12 and can produce some misleading textual output of OIDs. - [Steve Henson, reported by Dan Kaminsky] - - *) Delete MD2 from algorithm tables. This follows the recommendation in - several standards that it is not used in new applications due to - several cryptographic weaknesses. For binary compatibility reasons - the MD2 API is still compiled in by default. - [Steve Henson] - - *) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved - and restored. - [Steve Henson] - - *) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and - OPENSSL_asc2uni conditionally on Netware platforms to avoid a name - clash. - [Guenter ] - - *) Fix the server certificate chain building code to use X509_verify_cert(), - it used to have an ad-hoc builder which was unable to cope with anything - other than a simple chain. - [David Woodhouse , Steve Henson] - - *) Don't check self signed certificate signatures in X509_verify_cert() - by default (a flag can override this): it just wastes time without - adding any security. As a useful side effect self signed root CAs - with non-FIPS digests are now usable in FIPS mode. - [Steve Henson] - - *) In dtls1_process_out_of_seq_message() the check if the current message - is already buffered was missing. For every new message was memory - allocated, allowing an attacker to perform an denial of service attack - with sending out of seq handshake messages until there is no memory - left. Additionally every future messege was buffered, even if the - sequence number made no sense and would be part of another handshake. - So only messages with sequence numbers less than 10 in advance will be - buffered. (CVE-2009-1378) - [Robin Seggelmann, discovered by Daniel Mentz] - - *) Records are buffered if they arrive with a future epoch to be - processed after finishing the corresponding handshake. There is - currently no limitation to this buffer allowing an attacker to perform - a DOS attack with sending records with future epochs until there is no - memory left. This patch adds the pqueue_size() function to determine - the size of a buffer and limits the record buffer to 100 entries. - (CVE-2009-1377) - [Robin Seggelmann, discovered by Daniel Mentz] - - *) Keep a copy of frag->msg_header.frag_len so it can be used after the - parent structure is freed. (CVE-2009-1379) - [Daniel Mentz] - - *) Handle non-blocking I/O properly in SSL_shutdown() call. - [Darryl Miles ] - - *) Add 2.5.4.* OIDs - [Ilya O. ] - - Changes between 0.9.8k and 0.9.8l [5 Nov 2009] - - *) Disable renegotiation completely - this fixes a severe security - problem (CVE-2009-3555) at the cost of breaking all - renegotiation. Renegotiation can be re-enabled by setting - SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at - run-time. This is really not recommended unless you know what - you're doing. - [Ben Laurie] - - Changes between 0.9.8j and 0.9.8k [25 Mar 2009] - - *) Don't set val to NULL when freeing up structures, it is freed up by - underlying code. If sizeof(void *) > sizeof(long) this can result in - zeroing past the valid field. (CVE-2009-0789) - [Paolo Ganci ] - - *) Fix bug where return value of CMS_SignerInfo_verify_content() was not - checked correctly. This would allow some invalid signed attributes to - appear to verify correctly. (CVE-2009-0591) - [Ivan Nestlerode ] - - *) Reject UniversalString and BMPString types with invalid lengths. This - prevents a crash in ASN1_STRING_print_ex() which assumes the strings have - a legal length. (CVE-2009-0590) - [Steve Henson] - - *) Set S/MIME signing as the default purpose rather than setting it - unconditionally. This allows applications to override it at the store - level. - [Steve Henson] - - *) Permit restricted recursion of ASN1 strings. This is needed in practice - to handle some structures. - [Steve Henson] - - *) Improve efficiency of mem_gets: don't search whole buffer each time - for a '\n' - [Jeremy Shapiro ] - - *) New -hex option for openssl rand. - [Matthieu Herrb] - - *) Print out UTF8String and NumericString when parsing ASN1. - [Steve Henson] - - *) Support NumericString type for name components. - [Steve Henson] - - *) Allow CC in the environment to override the automatically chosen - compiler. Note that nothing is done to ensure flags work with the - chosen compiler. - [Ben Laurie] - - Changes between 0.9.8i and 0.9.8j [07 Jan 2009] - - *) Properly check EVP_VerifyFinal() and similar return values - (CVE-2008-5077). - [Ben Laurie, Bodo Moeller, Google Security Team] - - *) Enable TLS extensions by default. - [Ben Laurie] - - *) Allow the CHIL engine to be loaded, whether the application is - multithreaded or not. (This does not release the developer from the - obligation to set up the dynamic locking callbacks.) - [Sander Temme ] - - *) Use correct exit code if there is an error in dgst command. - [Steve Henson; problem pointed out by Roland Dirlewanger] - - *) Tweak Configure so that you need to say "experimental-jpake" to enable - JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications. - [Bodo Moeller] - - *) Add experimental JPAKE support, including demo authentication in - s_client and s_server. - [Ben Laurie] - - *) Set the comparison function in v3_addr_canonize(). - [Rob Austein ] - - *) Add support for XMPP STARTTLS in s_client. - [Philip Paeps ] - - *) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior - to ensure that even with this option, only ciphersuites in the - server's preference list will be accepted. (Note that the option - applies only when resuming a session, so the earlier behavior was - just about the algorithm choice for symmetric cryptography.) - [Bodo Moeller] - - Changes between 0.9.8h and 0.9.8i [15 Sep 2008] - - *) Fix NULL pointer dereference if a DTLS server received - ChangeCipherSpec as first record (CVE-2009-1386). - [PR #1679] - - *) Fix a state transition in s3_srvr.c and d1_srvr.c - (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...). - [Nagendra Modadugu] - - *) The fix in 0.9.8c that supposedly got rid of unsafe - double-checked locking was incomplete for RSA blinding, - addressing just one layer of what turns out to have been - doubly unsafe triple-checked locking. - - So now fix this for real by retiring the MONT_HELPER macro - in crypto/rsa/rsa_eay.c. - - [Bodo Moeller; problem pointed out by Marius Schilder] - - *) Various precautionary measures: - - - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h). - - - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c). - (NB: This would require knowledge of the secret session ticket key - to exploit, in which case you'd be SOL either way.) - - - Change bn_nist.c so that it will properly handle input BIGNUMs - outside the expected range. - - - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG - builds. - - [Neel Mehta, Bodo Moeller] - - *) Allow engines to be "soft loaded" - i.e. optionally don't die if - the load fails. Useful for distros. - [Ben Laurie and the FreeBSD team] - - *) Add support for Local Machine Keyset attribute in PKCS#12 files. - [Steve Henson] - - *) Fix BN_GF2m_mod_arr() top-bit cleanup code. - [Huang Ying] - - *) Expand ENGINE to support engine supplied SSL client certificate functions. - - This work was sponsored by Logica. - [Steve Henson] - - *) Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows - keystores. Support for SSL/TLS client authentication too. - Not compiled unless enable-capieng specified to Configure. - - This work was sponsored by Logica. - [Steve Henson] - - *) Fix bug in X509_ATTRIBUTE creation: don't set attribute using - ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain - attribute creation routines such as certificate requests and PKCS#12 - files. - [Steve Henson] - - Changes between 0.9.8g and 0.9.8h [28 May 2008] - - *) Fix flaw if 'Server Key exchange message' is omitted from a TLS - handshake which could lead to a cilent crash as found using the - Codenomicon TLS test suite (CVE-2008-1672) - [Steve Henson, Mark Cox] - - *) Fix double free in TLS server name extensions which could lead to - a remote crash found by Codenomicon TLS test suite (CVE-2008-0891) - [Joe Orton] - - *) Clear error queue in SSL_CTX_use_certificate_chain_file() - - Clear the error queue to ensure that error entries left from - older function calls do not interfere with the correct operation. - [Lutz Jaenicke, Erik de Castro Lopo] - - *) Remove root CA certificates of commercial CAs: - - The OpenSSL project does not recommend any specific CA and does not - have any policy with respect to including or excluding any CA. - Therefore it does not make any sense to ship an arbitrary selection - of root CA certificates with the OpenSSL software. - [Lutz Jaenicke] - - *) RSA OAEP patches to fix two separate invalid memory reads. - The first one involves inputs when 'lzero' is greater than - 'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes - before the beginning of from). The second one involves inputs where - the 'db' section contains nothing but zeroes (there is a one-byte - invalid read after the end of 'db'). - [Ivan Nestlerode ] - - *) Partial backport from 0.9.9-dev: - - Introduce bn_mul_mont (dedicated Montgomery multiplication - procedure) as a candidate for BIGNUM assembler implementation. - While 0.9.9-dev uses assembler for various architectures, only - x86_64 is available by default here in the 0.9.8 branch, and - 32-bit x86 is available through a compile-time setting. - - To try the 32-bit x86 assembler implementation, use Configure - option "enable-montasm" (which exists only for this backport). - - As "enable-montasm" for 32-bit x86 disclaims code stability - anyway, in this constellation we activate additional code - backported from 0.9.9-dev for further performance improvements, - namely BN_from_montgomery_word. (To enable this otherwise, - e.g. x86_64, try "-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD".) - - [Andy Polyakov (backport partially by Bodo Moeller)] - - *) Add TLS session ticket callback. This allows an application to set - TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed - values. This is useful for key rollover for example where several key - sets may exist with different names. - [Steve Henson] - - *) Reverse ENGINE-internal logic for caching default ENGINE handles. - This was broken until now in 0.9.8 releases, such that the only way - a registered ENGINE could be used (assuming it initialises - successfully on the host) was to explicitly set it as the default - for the relevant algorithms. This is in contradiction with 0.9.7 - behaviour and the documentation. With this fix, when an ENGINE is - registered into a given algorithm's table of implementations, the - 'uptodate' flag is reset so that auto-discovery will be used next - time a new context for that algorithm attempts to select an - implementation. - [Ian Lister (tweaked by Geoff Thorpe)] - - *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9 - implementation in the following ways: - - Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be - hard coded. - - Lack of BER streaming support means one pass streaming processing is - only supported if data is detached: setting the streaming flag is - ignored for embedded content. - - CMS support is disabled by default and must be explicitly enabled - with the enable-cms configuration option. - [Steve Henson] - - *) Update the GMP engine glue to do direct copies between BIGNUM and - mpz_t when openssl and GMP use the same limb size. Otherwise the - existing "conversion via a text string export" trick is still used. - [Paul Sheer ] - - *) Zlib compression BIO. This is a filter BIO which compressed and - uncompresses any data passed through it. - [Steve Henson] - - *) Add AES_wrap_key() and AES_unwrap_key() functions to implement - RFC3394 compatible AES key wrapping. - [Steve Henson] - - *) Add utility functions to handle ASN1 structures. ASN1_STRING_set0(): - sets string data without copying. X509_ALGOR_set0() and - X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier) - data. Attribute function X509at_get0_data_by_OBJ(): retrieves data - from an X509_ATTRIBUTE structure optionally checking it occurs only - once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied - data. - [Steve Henson] - - *) Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set() - to get the expected BN_FLG_CONSTTIME behavior. - [Bodo Moeller (Google)] - - *) Netware support: - - - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets - - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT) - - added some more tests to do_tests.pl - - fixed RunningProcess usage so that it works with newer LIBC NDKs too - - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency - - added new Configure targets netware-clib-bsdsock, netware-clib-gcc, - netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc - - various changes to netware.pl to enable gcc-cross builds on Win32 - platform - - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD) - - various changes to fix missing prototype warnings - - fixed x86nasm.pl to create correct asm files for NASM COFF output - - added AES, WHIRLPOOL and CPUID assembler code to build files - - added missing AES assembler make rules to mk1mf.pl - - fixed order of includes in apps/ocsp.c so that e_os.h settings apply - [Guenter Knauf ] - - *) Implement certificate status request TLS extension defined in RFC3546. - A client can set the appropriate parameters and receive the encoded - OCSP response via a callback. A server can query the supplied parameters - and set the encoded OCSP response in the callback. Add simplified examples - to s_client and s_server. - [Steve Henson] - - Changes between 0.9.8f and 0.9.8g [19 Oct 2007] - - *) Fix various bugs: - + Binary incompatibility of ssl_ctx_st structure - + DTLS interoperation with non-compliant servers - + Don't call get_session_cb() without proposed session - + Fix ia64 assembler code - [Andy Polyakov, Steve Henson] - - Changes between 0.9.8e and 0.9.8f [11 Oct 2007] - - *) DTLS Handshake overhaul. There were longstanding issues with - OpenSSL DTLS implementation, which were making it impossible for - RFC 4347 compliant client to communicate with OpenSSL server. - Unfortunately just fixing these incompatibilities would "cut off" - pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e - server keeps tolerating non RFC compliant syntax. The opposite is - not true, 0.9.8f client can not communicate with earlier server. - This update even addresses CVE-2007-4995. - [Andy Polyakov] - - *) Changes to avoid need for function casts in OpenSSL: some compilers - (gcc 4.2 and later) reject their use. - [Kurt Roeckx , Peter Hartley , - Steve Henson] - - *) Add RFC4507 support to OpenSSL. This includes the corrections in - RFC4507bis. The encrypted ticket format is an encrypted encoded - SSL_SESSION structure, that way new session features are automatically - supported. - - If a client application caches session in an SSL_SESSION structure - support is transparent because tickets are now stored in the encoded - SSL_SESSION. - - The SSL_CTX structure automatically generates keys for ticket - protection in servers so again support should be possible - with no application modification. - - If a client or server wishes to disable RFC4507 support then the option - SSL_OP_NO_TICKET can be set. - - Add a TLS extension debugging callback to allow the contents of any client - or server extensions to be examined. - - This work was sponsored by Google. - [Steve Henson] - - *) Add initial support for TLS extensions, specifically for the server_name - extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now - have new members for a host name. The SSL data structure has an - additional member SSL_CTX *initial_ctx so that new sessions can be - stored in that context to allow for session resumption, even after the - SSL has been switched to a new SSL_CTX in reaction to a client's - server_name extension. - - New functions (subject to change): - - SSL_get_servername() - SSL_get_servername_type() - SSL_set_SSL_CTX() - - New CTRL codes and macros (subject to change): - - SSL_CTRL_SET_TLSEXT_SERVERNAME_CB - - SSL_CTX_set_tlsext_servername_callback() - SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG - - SSL_CTX_set_tlsext_servername_arg() - SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name() - - openssl s_client has a new '-servername ...' option. - - openssl s_server has new options '-servername_host ...', '-cert2 ...', - '-key2 ...', '-servername_fatal' (subject to change). This allows - testing the HostName extension for a specific single host name ('-cert' - and '-key' remain fallbacks for handshakes without HostName - negotiation). If the unrecognized_name alert has to be sent, this by - default is a warning; it becomes fatal with the '-servername_fatal' - option. - - [Peter Sylvester, Remy Allais, Christophe Renou, Steve Henson] - - *) Add AES and SSE2 assembly language support to VC++ build. - [Steve Henson] - - *) Mitigate attack on final subtraction in Montgomery reduction. - [Andy Polyakov] - - *) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0 - (which previously caused an internal error). - [Bodo Moeller] - - *) Squeeze another 10% out of IGE mode when in != out. - [Ben Laurie] - - *) AES IGE mode speedup. - [Dean Gaudet (Google)] - - *) Add the Korean symmetric 128-bit cipher SEED (see - http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp) and - add SEED ciphersuites from RFC 4162: - - TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA" - TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA" - TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA" - TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA" - - To minimize changes between patchlevels in the OpenSSL 0.9.8 - series, SEED remains excluded from compilation unless OpenSSL - is configured with 'enable-seed'. - [KISA, Bodo Moeller] - - *) Mitigate branch prediction attacks, which can be practical if a - single processor is shared, allowing a spy process to extract - information. For detailed background information, see - http://eprint.iacr.org/2007/039 (O. Aciicmez, S. Gueron, - J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL - and Necessary Software Countermeasures"). The core of the change - are new versions BN_div_no_branch() and - BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(), - respectively, which are slower, but avoid the security-relevant - conditional branches. These are automatically called by BN_div() - and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one - of the input BIGNUMs. Also, BN_is_bit_set() has been changed to - remove a conditional branch. - - BN_FLG_CONSTTIME is the new name for the previous - BN_FLG_EXP_CONSTTIME flag, since it now affects more than just - modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag - in the exponent causes BN_mod_exp_mont() to use the alternative - implementation in BN_mod_exp_mont_consttime().) The old name - remains as a deprecated alias. - - Similarly, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general - RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses - constant-time implementations for more than just exponentiation. - Here too the old name is kept as a deprecated alias. - - BN_BLINDING_new() will now use BN_dup() for the modulus so that - the BN_BLINDING structure gets an independent copy of the - modulus. This means that the previous "BIGNUM *m" argument to - BN_BLINDING_new() and to BN_BLINDING_create_param() now - essentially becomes "const BIGNUM *m", although we can't actually - change this in the header file before 0.9.9. It allows - RSA_setup_blinding() to use BN_with_flags() on the modulus to - enable BN_FLG_CONSTTIME. - - [Matthew D Wood (Intel Corp)] - - *) In the SSL/TLS server implementation, be strict about session ID - context matching (which matters if an application uses a single - external cache for different purposes). Previously, - out-of-context reuse was forbidden only if SSL_VERIFY_PEER was - set. This did ensure strict client verification, but meant that, - with applications using a single external cache for quite - different requirements, clients could circumvent ciphersuite - restrictions for a given session ID context by starting a session - in a different context. - [Bodo Moeller] - - *) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that - a ciphersuite string such as "DEFAULT:RSA" cannot enable - authentication-only ciphersuites. - [Bodo Moeller] - - *) Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was - not complete and could lead to a possible single byte overflow - (CVE-2007-5135) [Ben Laurie] - - Changes between 0.9.8d and 0.9.8e [23 Feb 2007] - - *) Since AES128 and AES256 (and similarly Camellia128 and - Camellia256) share a single mask bit in the logic of - ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a - kludge to work properly if AES128 is available and AES256 isn't - (or if Camellia128 is available and Camellia256 isn't). - [Victor Duchovni] - - *) Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c - (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters): - When a point or a seed is encoded in a BIT STRING, we need to - prevent the removal of trailing zero bits to get the proper DER - encoding. (By default, crypto/asn1/a_bitstr.c assumes the case - of a NamedBitList, for which trailing 0 bits need to be removed.) - [Bodo Moeller] - - *) Have SSL/TLS server implementation tolerate "mismatched" record - protocol version while receiving ClientHello even if the - ClientHello is fragmented. (The server can't insist on the - particular protocol version it has chosen before the ServerHello - message has informed the client about his choice.) - [Bodo Moeller] - - *) Add RFC 3779 support. - [Rob Austein for ARIN, Ben Laurie] - - *) Load error codes if they are not already present instead of using a - static variable. This allows them to be cleanly unloaded and reloaded. - Improve header file function name parsing. - [Steve Henson] - - *) extend SMTP and IMAP protocol emulation in s_client to use EHLO - or CAPABILITY handshake as required by RFCs. - [Goetz Babin-Ebell] - - Changes between 0.9.8c and 0.9.8d [28 Sep 2006] - - *) Introduce limits to prevent malicious keys being able to - cause a denial of service. (CVE-2006-2940) - [Steve Henson, Bodo Moeller] - - *) Fix ASN.1 parsing of certain invalid structures that can result - in a denial of service. (CVE-2006-2937) [Steve Henson] - - *) Fix buffer overflow in SSL_get_shared_ciphers() function. - (CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team] - - *) Fix SSL client code which could crash if connecting to a - malicious SSLv2 server. (CVE-2006-4343) - [Tavis Ormandy and Will Drewry, Google Security Team] - - *) Since 0.9.8b, ciphersuite strings naming explicit ciphersuites - match only those. Before that, "AES256-SHA" would be interpreted - as a pattern and match "AES128-SHA" too (since AES128-SHA got - the same strength classification in 0.9.7h) as we currently only - have a single AES bit in the ciphersuite description bitmap. - That change, however, also applied to ciphersuite strings such as - "RC4-MD5" that intentionally matched multiple ciphersuites -- - namely, SSL 2.0 ciphersuites in addition to the more common ones - from SSL 3.0/TLS 1.0. - - So we change the selection algorithm again: Naming an explicit - ciphersuite selects this one ciphersuite, and any other similar - ciphersuite (same bitmap) from *other* protocol versions. - Thus, "RC4-MD5" again will properly select both the SSL 2.0 - ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite. - - Since SSL 2.0 does not have any ciphersuites for which the - 128/256 bit distinction would be relevant, this works for now. - The proper fix will be to use different bits for AES128 and - AES256, which would have avoided the problems from the beginning; - however, bits are scarce, so we can only do this in a new release - (not just a patchlevel) when we can change the SSL_CIPHER - definition to split the single 'unsigned long mask' bitmap into - multiple values to extend the available space. - - [Bodo Moeller] - - Changes between 0.9.8b and 0.9.8c [05 Sep 2006] - - *) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher - (CVE-2006-4339) [Ben Laurie and Google Security Team] - - *) Add AES IGE and biIGE modes. - [Ben Laurie] - - *) Change the Unix randomness entropy gathering to use poll() when - possible instead of select(), since the latter has some - undesirable limitations. - [Darryl Miles via Richard Levitte and Bodo Moeller] - - *) Disable "ECCdraft" ciphersuites more thoroughly. Now special - treatment in ssl/ssl_ciph.s makes sure that these ciphersuites - cannot be implicitly activated as part of, e.g., the "AES" alias. - However, please upgrade to OpenSSL 0.9.9[-dev] for - non-experimental use of the ECC ciphersuites to get TLS extension - support, which is required for curve and point format negotiation - to avoid potential handshake problems. - [Bodo Moeller] - - *) Disable rogue ciphersuites: - - - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5") - - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5") - - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5") - - The latter two were purportedly from - draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really - appear there. - - Also deactivate the remaining ciphersuites from - draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as - unofficial, and the ID has long expired. - [Bodo Moeller] - - *) Fix RSA blinding Heisenbug (problems sometimes occurred on - dual-core machines) and other potential thread-safety issues. - [Bodo Moeller] - - *) Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key - versions), which is now available for royalty-free use - (see http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html). - Also, add Camellia TLS ciphersuites from RFC 4132. - - To minimize changes between patchlevels in the OpenSSL 0.9.8 - series, Camellia remains excluded from compilation unless OpenSSL - is configured with 'enable-camellia'. - [NTT] - - *) Disable the padding bug check when compression is in use. The padding - bug check assumes the first packet is of even length, this is not - necessarily true if compresssion is enabled and can result in false - positives causing handshake failure. The actual bug test is ancient - code so it is hoped that implementations will either have fixed it by - now or any which still have the bug do not support compression. - [Steve Henson] - - Changes between 0.9.8a and 0.9.8b [04 May 2006] - - *) When applying a cipher rule check to see if string match is an explicit - cipher suite and only match that one cipher suite if it is. - [Steve Henson] - - *) Link in manifests for VC++ if needed. - [Austin Ziegler ] - - *) Update support for ECC-based TLS ciphersuites according to - draft-ietf-tls-ecc-12.txt with proposed changes (but without - TLS extensions, which are supported starting with the 0.9.9 - branch, not in the OpenSSL 0.9.8 branch). - [Douglas Stebila] - - *) New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support - opaque EVP_CIPHER_CTX handling. - [Steve Henson] - - *) Fixes and enhancements to zlib compression code. We now only use - "zlib1.dll" and use the default __cdecl calling convention on Win32 - to conform with the standards mentioned here: - http://www.zlib.net/DLL_FAQ.txt - Static zlib linking now works on Windows and the new --with-zlib-include - --with-zlib-lib options to Configure can be used to supply the location - of the headers and library. Gracefully handle case where zlib library - can't be loaded. - [Steve Henson] - - *) Several fixes and enhancements to the OID generation code. The old code - sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't - handle numbers larger than ULONG_MAX, truncated printing and had a - non standard OBJ_obj2txt() behaviour. - [Steve Henson] - - *) Add support for building of engines under engine/ as shared libraries - under VC++ build system. - [Steve Henson] - - *) Corrected the numerous bugs in the Win32 path splitter in DSO. - Hopefully, we will not see any false combination of paths any more. - [Richard Levitte] - - Changes between 0.9.8 and 0.9.8a [11 Oct 2005] - - *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING - (part of SSL_OP_ALL). This option used to disable the - countermeasure against man-in-the-middle protocol-version - rollback in the SSL 2.0 server implementation, which is a bad - idea. (CVE-2005-2969) - - [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center - for Information Security, National Institute of Advanced Industrial - Science and Technology [AIST], Japan)] - - *) Add two function to clear and return the verify parameter flags. - [Steve Henson] - - *) Keep cipherlists sorted in the source instead of sorting them at - runtime, thus removing the need for a lock. - [Nils Larsch] - - *) Avoid some small subgroup attacks in Diffie-Hellman. - [Nick Mathewson and Ben Laurie] - - *) Add functions for well-known primes. - [Nick Mathewson] - - *) Extended Windows CE support. - [Satoshi Nakamura and Andy Polyakov] - - *) Initialize SSL_METHOD structures at compile time instead of during - runtime, thus removing the need for a lock. - [Steve Henson] - - *) Make PKCS7_decrypt() work even if no certificate is supplied by - attempting to decrypt each encrypted key in turn. Add support to - smime utility. - [Steve Henson] - - Changes between 0.9.7h and 0.9.8 [05 Jul 2005] - - [NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after - OpenSSL 0.9.8.] - - *) Add libcrypto.pc and libssl.pc for those who feel they need them. - [Richard Levitte] - - *) Change CA.sh and CA.pl so they don't bundle the CSR and the private - key into the same file any more. - [Richard Levitte] - - *) Add initial support for Win64, both IA64 and AMD64/x64 flavors. - [Andy Polyakov] - - *) Add -utf8 command line and config file option to 'ca'. - [Stefan and Geoff Thorpe] - - *) Add attribute functions to EVP_PKEY structure. Modify - PKCS12_create() to recognize a CSP name attribute and - use it. Make -CSP option work again in pkcs12 utility. - [Steve Henson] - - *) Add new functionality to the bn blinding code: - - automatic re-creation of the BN_BLINDING parameters after - a fixed number of uses (currently 32) - - add new function for parameter creation - - introduce flags to control the update behaviour of the - BN_BLINDING parameters - - hide BN_BLINDING structure - Add a second BN_BLINDING slot to the RSA structure to improve - performance when a single RSA object is shared among several - threads. - [Nils Larsch] - - *) Add support for DTLS. - [Nagendra Modadugu and Ben Laurie] - - *) Add support for DER encoded private keys (SSL_FILETYPE_ASN1) - to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file() - [Walter Goulet] - - *) Remove buggy and incomplete DH cert support from - ssl/ssl_rsa.c and ssl/s3_both.c - [Nils Larsch] - - *) Use SHA-1 instead of MD5 as the default digest algorithm for - the apps/openssl applications. - [Nils Larsch] - - *) Compile clean with "-Wall -Wmissing-prototypes - -Wstrict-prototypes -Wmissing-declarations -Werror". Currently - DEBUG_SAFESTACK must also be set. - [Ben Laurie] - - *) Change ./Configure so that certain algorithms can be disabled by default. - The new counterpiece to "no-xxx" is "enable-xxx". - - The patented RC5 and MDC2 algorithms will now be disabled unless - "enable-rc5" and "enable-mdc2", respectively, are specified. - - (IDEA remains enabled despite being patented. This is because IDEA - is frequently required for interoperability, and there is no license - fee for non-commercial use. As before, "no-idea" can be used to - avoid this algorithm.) - - [Bodo Moeller] - - *) Add processing of proxy certificates (see RFC 3820). This work was - sponsored by KTH (The Royal Institute of Technology in Stockholm) and - EGEE (Enabling Grids for E-science in Europe). - [Richard Levitte] - - *) RC4 performance overhaul on modern architectures/implementations, such - as Intel P4, IA-64 and AMD64. - [Andy Polyakov] - - *) New utility extract-section.pl. This can be used specify an alternative - section number in a pod file instead of having to treat each file as - a separate case in Makefile. This can be done by adding two lines to the - pod file: - - =for comment openssl_section:XXX - - The blank line is mandatory. - - [Steve Henson] - - *) New arguments -certform, -keyform and -pass for s_client and s_server - to allow alternative format key and certificate files and passphrase - sources. - [Steve Henson] - - *) New structure X509_VERIFY_PARAM which combines current verify parameters, - update associated structures and add various utility functions. - - Add new policy related verify parameters, include policy checking in - standard verify code. Enhance 'smime' application with extra parameters - to support policy checking and print out. - [Steve Henson] - - *) Add a new engine to support VIA PadLock ACE extensions in the VIA C3 - Nehemiah processors. These extensions support AES encryption in hardware - as well as RNG (though RNG support is currently disabled). - [Michal Ludvig , with help from Andy Polyakov] - - *) Deprecate BN_[get|set]_params() functions (they were ignored internally). - [Geoff Thorpe] - - *) New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented. - [Andy Polyakov and a number of other people] - - *) Improved PowerPC platform support. Most notably BIGNUM assembler - implementation contributed by IBM. - [Suresh Chari, Peter Waltenberg, Andy Polyakov] - - *) The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public - exponent rather than 'unsigned long'. There is a corresponding change to - the new 'rsa_keygen' element of the RSA_METHOD structure. - [Jelte Jansen, Geoff Thorpe] - - *) Functionality for creating the initial serial number file is now - moved from CA.pl to the 'ca' utility with a new option -create_serial. - - (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial - number file to 1, which is bound to cause problems. To avoid - the problems while respecting compatibility between different 0.9.7 - patchlevels, 0.9.7e employed 'openssl x509 -next_serial' in - CA.pl for serial number initialization. With the new release 0.9.8, - we can fix the problem directly in the 'ca' utility.) - [Steve Henson] - - *) Reduced header interdepencies by declaring more opaque objects in - ossl_typ.h. As a consequence, including some headers (eg. engine.h) will - give fewer recursive includes, which could break lazy source code - so - this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always, - developers should define this symbol when building and using openssl to - ensure they track the recommended behaviour, interfaces, [etc], but - backwards-compatible behaviour prevails when this isn't defined. - [Geoff Thorpe] - - *) New function X509_POLICY_NODE_print() which prints out policy nodes. - [Steve Henson] - - *) Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality. - This will generate a random key of the appropriate length based on the - cipher context. The EVP_CIPHER can provide its own random key generation - routine to support keys of a specific form. This is used in the des and - 3des routines to generate a key of the correct parity. Update S/MIME - code to use new functions and hence generate correct parity DES keys. - Add EVP_CHECK_DES_KEY #define to return an error if the key is not - valid (weak or incorrect parity). - [Steve Henson] - - *) Add a local set of CRLs that can be used by X509_verify_cert() as well - as looking them up. This is useful when the verified structure may contain - CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs - present unless the new PKCS7_NO_CRL flag is asserted. - [Steve Henson] - - *) Extend ASN1 oid configuration module. It now additionally accepts the - syntax: - - shortName = some long name, 1.2.3.4 - [Steve Henson] - - *) Reimplemented the BN_CTX implementation. There is now no more static - limitation on the number of variables it can handle nor the depth of the - "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack - information can now expand as required, and rather than having a single - static array of bignums, BN_CTX now uses a linked-list of such arrays - allowing it to expand on demand whilst maintaining the usefulness of - BN_CTX's "bundling". - [Geoff Thorpe] - - *) Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD - to allow all RSA operations to function using a single BN_CTX. - [Geoff Thorpe] - - *) Preliminary support for certificate policy evaluation and checking. This - is initially intended to pass the tests outlined in "Conformance Testing - of Relying Party Client Certificate Path Processing Logic" v1.07. - [Steve Henson] - - *) bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and - remained unused and not that useful. A variety of other little bignum - tweaks and fixes have also been made continuing on from the audit (see - below). - [Geoff Thorpe] - - *) Constify all or almost all d2i, c2i, s2i and r2i functions, along with - associated ASN1, EVP and SSL functions and old ASN1 macros. - [Richard Levitte] - - *) BN_zero() only needs to set 'top' and 'neg' to zero for correct results, - and this should never fail. So the return value from the use of - BN_set_word() (which can fail due to needless expansion) is now deprecated; - if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro. - [Geoff Thorpe] - - *) BN_CTX_get() should return zero-valued bignums, providing the same - initialised value as BN_new(). - [Geoff Thorpe, suggested by Ulf Möller] - - *) Support for inhibitAnyPolicy certificate extension. - [Steve Henson] - - *) An audit of the BIGNUM code is underway, for which debugging code is - enabled when BN_DEBUG is defined. This makes stricter enforcements on what - is considered valid when processing BIGNUMs, and causes execution to - assert() when a problem is discovered. If BN_DEBUG_RAND is defined, - further steps are taken to deliberately pollute unused data in BIGNUM - structures to try and expose faulty code further on. For now, openssl will - (in its default mode of operation) continue to tolerate the inconsistent - forms that it has tolerated in the past, but authors and packagers should - consider trying openssl and their own applications when compiled with - these debugging symbols defined. It will help highlight potential bugs in - their own code, and will improve the test coverage for OpenSSL itself. At - some point, these tighter rules will become openssl's default to improve - maintainability, though the assert()s and other overheads will remain only - in debugging configurations. See bn.h for more details. - [Geoff Thorpe, Nils Larsch, Ulf Möller] - - *) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure - that can only be obtained through BN_CTX_new() (which implicitly - initialises it). The presence of this function only made it possible - to overwrite an existing structure (and cause memory leaks). - [Geoff Thorpe] - - *) Because of the callback-based approach for implementing LHASH as a - template type, lh_insert() adds opaque objects to hash-tables and - lh_doall() or lh_doall_arg() are typically used with a destructor callback - to clean up those corresponding objects before destroying the hash table - (and losing the object pointers). So some over-zealous constifications in - LHASH have been relaxed so that lh_insert() does not take (nor store) the - objects as "const" and the lh_doall[_arg] callback wrappers are not - prototyped to have "const" restrictions on the object pointers they are - given (and so aren't required to cast them away any more). - [Geoff Thorpe] - - *) The tmdiff.h API was so ugly and minimal that our own timing utility - (speed) prefers to use its own implementation. The two implementations - haven't been consolidated as yet (volunteers?) but the tmdiff API has had - its object type properly exposed (MS_TM) instead of casting to/from "char - *". This may still change yet if someone realises MS_TM and "ms_time_***" - aren't necessarily the greatest nomenclatures - but this is what was used - internally to the implementation so I've used that for now. - [Geoff Thorpe] - - *) Ensure that deprecated functions do not get compiled when - OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of - the self-tests were still using deprecated key-generation functions so - these have been updated also. - [Geoff Thorpe] - - *) Reorganise PKCS#7 code to separate the digest location functionality - into PKCS7_find_digest(), digest addition into PKCS7_bio_add_digest(). - New function PKCS7_set_digest() to set the digest type for PKCS#7 - digestedData type. Add additional code to correctly generate the - digestedData type and add support for this type in PKCS7 initialization - functions. - [Steve Henson] - - *) New function PKCS7_set0_type_other() this initializes a PKCS7 - structure of type "other". - [Steve Henson] - - *) Fix prime generation loop in crypto/bn/bn_prime.pl by making - sure the loop does correctly stop and breaking ("division by zero") - modulus operations are not performed. The (pre-generated) prime - table crypto/bn/bn_prime.h was already correct, but it could not be - re-generated on some platforms because of the "division by zero" - situation in the script. - [Ralf S. Engelschall] - - *) Update support for ECC-based TLS ciphersuites according to - draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with - SHA-1 now is only used for "small" curves (where the - representation of a field element takes up to 24 bytes); for - larger curves, the field element resulting from ECDH is directly - used as premaster secret. - [Douglas Stebila (Sun Microsystems Laboratories)] - - *) Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2 - curve secp160r1 to the tests. - [Douglas Stebila (Sun Microsystems Laboratories)] - - *) Add the possibility to load symbols globally with DSO. - [Götz Babin-Ebell via Richard Levitte] - - *) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better - control of the error stack. - [Richard Levitte] - - *) Add support for STORE in ENGINE. - [Richard Levitte] - - *) Add the STORE type. The intention is to provide a common interface - to certificate and key stores, be they simple file-based stores, or - HSM-type store, or LDAP stores, or... - NOTE: The code is currently UNTESTED and isn't really used anywhere. - [Richard Levitte] - - *) Add a generic structure called OPENSSL_ITEM. This can be used to - pass a list of arguments to any function as well as provide a way - for a function to pass data back to the caller. - [Richard Levitte] - - *) Add the functions BUF_strndup() and BUF_memdup(). BUF_strndup() - works like BUF_strdup() but can be used to duplicate a portion of - a string. The copy gets NUL-terminated. BUF_memdup() duplicates - a memory area. - [Richard Levitte] - - *) Add the function sk_find_ex() which works like sk_find(), but will - return an index to an element even if an exact match couldn't be - found. The index is guaranteed to point at the element where the - searched-for key would be inserted to preserve sorting order. - [Richard Levitte] - - *) Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but - takes an extra flags argument for optional functionality. Currently, - the following flags are defined: - - OBJ_BSEARCH_VALUE_ON_NOMATCH - This one gets OBJ_bsearch_ex() to return a pointer to the first - element where the comparing function returns a negative or zero - number. - - OBJ_BSEARCH_FIRST_VALUE_ON_MATCH - This one gets OBJ_bsearch_ex() to return a pointer to the first - element where the comparing function returns zero. This is useful - if there are more than one element where the comparing function - returns zero. - [Richard Levitte] - - *) Make it possible to create self-signed certificates with 'openssl ca' - in such a way that the self-signed certificate becomes part of the - CA database and uses the same mechanisms for serial number generation - as all other certificate signing. The new flag '-selfsign' enables - this functionality. Adapt CA.sh and CA.pl.in. - [Richard Levitte] - - *) Add functionality to check the public key of a certificate request - against a given private. This is useful to check that a certificate - request can be signed by that key (self-signing). - [Richard Levitte] - - *) Make it possible to have multiple active certificates with the same - subject in the CA index file. This is done only if the keyword - 'unique_subject' is set to 'no' in the main CA section (default - if 'CA_default') of the configuration file. The value is saved - with the database itself in a separate index attribute file, - named like the index file with '.attr' appended to the name. - [Richard Levitte] - - *) Generate muti valued AVAs using '+' notation in config files for - req and dirName. - [Steve Henson] - - *) Support for nameConstraints certificate extension. - [Steve Henson] - - *) Support for policyConstraints certificate extension. - [Steve Henson] - - *) Support for policyMappings certificate extension. - [Steve Henson] - - *) Make sure the default DSA_METHOD implementation only uses its - dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL, - and change its own handlers to be NULL so as to remove unnecessary - indirection. This lets alternative implementations fallback to the - default implementation more easily. - [Geoff Thorpe] - - *) Support for directoryName in GeneralName related extensions - in config files. - [Steve Henson] - - *) Make it possible to link applications using Makefile.shared. - Make that possible even when linking against static libraries! - [Richard Levitte] - - *) Support for single pass processing for S/MIME signing. This now - means that S/MIME signing can be done from a pipe, in addition - cleartext signing (multipart/signed type) is effectively streaming - and the signed data does not need to be all held in memory. - - This is done with a new flag PKCS7_STREAM. When this flag is set - PKCS7_sign() only initializes the PKCS7 structure and the actual signing - is done after the data is output (and digests calculated) in - SMIME_write_PKCS7(). - [Steve Henson] - - *) Add full support for -rpath/-R, both in shared libraries and - applications, at least on the platforms where it's known how - to do it. - [Richard Levitte] - - *) In crypto/ec/ec_mult.c, implement fast point multiplication with - precomputation, based on wNAF splitting: EC_GROUP_precompute_mult() - will now compute a table of multiples of the generator that - makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul() - faster (notably in the case of a single point multiplication, - scalar * generator). - [Nils Larsch, Bodo Moeller] - - *) IPv6 support for certificate extensions. The various extensions - which use the IP:a.b.c.d can now take IPv6 addresses using the - formats of RFC1884 2.2 . IPv6 addresses are now also displayed - correctly. - [Steve Henson] - - *) Added an ENGINE that implements RSA by performing private key - exponentiations with the GMP library. The conversions to and from - GMP's mpz_t format aren't optimised nor are any montgomery forms - cached, and on x86 it appears OpenSSL's own performance has caught up. - However there are likely to be other architectures where GMP could - provide a boost. This ENGINE is not built in by default, but it can be - specified at Configure time and should be accompanied by the necessary - linker additions, eg; - ./config -DOPENSSL_USE_GMP -lgmp - [Geoff Thorpe] - - *) "openssl engine" will not display ENGINE/DSO load failure errors when - testing availability of engines with "-t" - the old behaviour is - produced by increasing the feature's verbosity with "-tt". - [Geoff Thorpe] - - *) ECDSA routines: under certain error conditions uninitialized BN objects - could be freed. Solution: make sure initialization is performed early - enough. (Reported and fix supplied by Nils Larsch - via PR#459) - [Lutz Jaenicke] - - *) Key-generation can now be implemented in RSA_METHOD, DSA_METHOD - and DH_METHOD (eg. by ENGINE implementations) to override the normal - software implementations. For DSA and DH, parameter generation can - also be overridden by providing the appropriate method callbacks. - [Geoff Thorpe] - - *) Change the "progress" mechanism used in key-generation and - primality testing to functions that take a new BN_GENCB pointer in - place of callback/argument pairs. The new API functions have "_ex" - postfixes and the older functions are reimplemented as wrappers for - the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide - declarations of the old functions to help (graceful) attempts to - migrate to the new functions. Also, the new key-generation API - functions operate on a caller-supplied key-structure and return - success/failure rather than returning a key or NULL - this is to - help make "keygen" another member function of RSA_METHOD etc. - - Example for using the new callback interface: - - int (*my_callback)(int a, int b, BN_GENCB *cb) = ...; - void *my_arg = ...; - BN_GENCB my_cb; - - BN_GENCB_set(&my_cb, my_callback, my_arg); - - return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb); - /* For the meaning of a, b in calls to my_callback(), see the - * documentation of the function that calls the callback. - * cb will point to my_cb; my_arg can be retrieved as cb->arg. - * my_callback should return 1 if it wants BN_is_prime_ex() - * to continue, or 0 to stop. - */ - - [Geoff Thorpe] - - *) Change the ZLIB compression method to be stateful, and make it - available to TLS with the number defined in - draft-ietf-tls-compression-04.txt. - [Richard Levitte] - - *) Add the ASN.1 structures and functions for CertificatePair, which - is defined as follows (according to X.509_4thEditionDraftV6.pdf): - - CertificatePair ::= SEQUENCE { - forward [0] Certificate OPTIONAL, - reverse [1] Certificate OPTIONAL, - -- at least one of the pair shall be present -- } - - Also implement the PEM functions to read and write certificate - pairs, and defined the PEM tag as "CERTIFICATE PAIR". - - This needed to be defined, mostly for the sake of the LDAP - attribute crossCertificatePair, but may prove useful elsewhere as - well. - [Richard Levitte] - - *) Make it possible to inhibit symlinking of shared libraries in - Makefile.shared, for Cygwin's sake. - [Richard Levitte] - - *) Extend the BIGNUM API by creating a function - void BN_set_negative(BIGNUM *a, int neg); - and a macro that behave like - int BN_is_negative(const BIGNUM *a); - - to avoid the need to access 'a->neg' directly in applications. - [Nils Larsch] - - *) Implement fast modular reduction for pseudo-Mersenne primes - used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c). - EC_GROUP_new_curve_GFp() will now automatically use this - if applicable. - [Nils Larsch ] - - *) Add new lock type (CRYPTO_LOCK_BN). - [Bodo Moeller] - - *) Change the ENGINE framework to automatically load engines - dynamically from specific directories unless they could be - found to already be built in or loaded. Move all the - current engines except for the cryptodev one to a new - directory engines/. - The engines in engines/ are built as shared libraries if - the "shared" options was given to ./Configure or ./config. - Otherwise, they are inserted in libcrypto.a. - /usr/local/ssl/engines is the default directory for dynamic - engines, but that can be overridden at configure time through - the usual use of --prefix and/or --openssldir, and at run - time with the environment variable OPENSSL_ENGINES. - [Geoff Thorpe and Richard Levitte] - - *) Add Makefile.shared, a helper makefile to build shared - libraries. Adapt Makefile.org. - [Richard Levitte] - - *) Add version info to Win32 DLLs. - [Peter 'Luna' Runestig" ] - - *) Add new 'medium level' PKCS#12 API. Certificates and keys - can be added using this API to created arbitrary PKCS#12 - files while avoiding the low level API. - - New options to PKCS12_create(), key or cert can be NULL and - will then be omitted from the output file. The encryption - algorithm NIDs can be set to -1 for no encryption, the mac - iteration count can be set to 0 to omit the mac. - - Enhance pkcs12 utility by making the -nokeys and -nocerts - options work when creating a PKCS#12 file. New option -nomac - to omit the mac, NONE can be set for an encryption algorithm. - New code is modified to use the enhanced PKCS12_create() - instead of the low level API. - [Steve Henson] - - *) Extend ASN1 encoder to support indefinite length constructed - encoding. This can output sequences tags and octet strings in - this form. Modify pk7_asn1.c to support indefinite length - encoding. This is experimental and needs additional code to - be useful, such as an ASN1 bio and some enhanced streaming - PKCS#7 code. - - Extend template encode functionality so that tagging is passed - down to the template encoder. - [Steve Henson] - - *) Let 'openssl req' fail if an argument to '-newkey' is not - recognized instead of using RSA as a default. - [Bodo Moeller] - - *) Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt. - As these are not official, they are not included in "ALL"; - the "ECCdraft" ciphersuite group alias can be used to select them. - [Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)] - - *) Add ECDH engine support. - [Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)] - - *) Add ECDH in new directory crypto/ecdh/. - [Douglas Stebila (Sun Microsystems Laboratories)] - - *) Let BN_rand_range() abort with an error after 100 iterations - without success (which indicates a broken PRNG). - [Bodo Moeller] - - *) Change BN_mod_sqrt() so that it verifies that the input value - is really the square of the return value. (Previously, - BN_mod_sqrt would show GIGO behaviour.) - [Bodo Moeller] - - *) Add named elliptic curves over binary fields from X9.62, SECG, - and WAP/WTLS; add OIDs that were still missing. - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) Extend the EC library for elliptic curves over binary fields - (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/). - New EC_METHOD: - - EC_GF2m_simple_method - - New API functions: - - EC_GROUP_new_curve_GF2m - EC_GROUP_set_curve_GF2m - EC_GROUP_get_curve_GF2m - EC_POINT_set_affine_coordinates_GF2m - EC_POINT_get_affine_coordinates_GF2m - EC_POINT_set_compressed_coordinates_GF2m - - Point compression for binary fields is disabled by default for - patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to - enable it). - - As binary polynomials are represented as BIGNUMs, various members - of the EC_GROUP and EC_POINT data structures can be shared - between the implementations for prime fields and binary fields; - the above ..._GF2m functions (except for EX_GROUP_new_curve_GF2m) - are essentially identical to their ..._GFp counterparts. - (For simplicity, the '..._GFp' prefix has been dropped from - various internal method names.) - - An internal 'field_div' method (similar to 'field_mul' and - 'field_sqr') has been added; this is used only for binary fields. - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult() - through methods ('mul', 'precompute_mult'). - - The generic implementations (now internally called 'ec_wNAF_mul' - and 'ec_wNAF_precomputed_mult') remain the default if these - methods are undefined. - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) New function EC_GROUP_get_degree, which is defined through - EC_METHOD. For curves over prime fields, this returns the bit - length of the modulus. - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) New functions EC_GROUP_dup, EC_POINT_dup. - (These simply call ..._new and ..._copy). - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c. - Polynomials are represented as BIGNUMs (where the sign bit is not - used) in the following functions [macros]: - - BN_GF2m_add - BN_GF2m_sub [= BN_GF2m_add] - BN_GF2m_mod [wrapper for BN_GF2m_mod_arr] - BN_GF2m_mod_mul [wrapper for BN_GF2m_mod_mul_arr] - BN_GF2m_mod_sqr [wrapper for BN_GF2m_mod_sqr_arr] - BN_GF2m_mod_inv - BN_GF2m_mod_exp [wrapper for BN_GF2m_mod_exp_arr] - BN_GF2m_mod_sqrt [wrapper for BN_GF2m_mod_sqrt_arr] - BN_GF2m_mod_solve_quad [wrapper for BN_GF2m_mod_solve_quad_arr] - BN_GF2m_cmp [= BN_ucmp] - - (Note that only the 'mod' functions are actually for fields GF(2^m). - BN_GF2m_add() is misnomer, but this is for the sake of consistency.) - - For some functions, an the irreducible polynomial defining a - field can be given as an 'unsigned int[]' with strictly - decreasing elements giving the indices of those bits that are set; - i.e., p[] represents the polynomial - f(t) = t^p[0] + t^p[1] + ... + t^p[k] - where - p[0] > p[1] > ... > p[k] = 0. - This applies to the following functions: - - BN_GF2m_mod_arr - BN_GF2m_mod_mul_arr - BN_GF2m_mod_sqr_arr - BN_GF2m_mod_inv_arr [wrapper for BN_GF2m_mod_inv] - BN_GF2m_mod_div_arr [wrapper for BN_GF2m_mod_div] - BN_GF2m_mod_exp_arr - BN_GF2m_mod_sqrt_arr - BN_GF2m_mod_solve_quad_arr - BN_GF2m_poly2arr - BN_GF2m_arr2poly - - Conversion can be performed by the following functions: - - BN_GF2m_poly2arr - BN_GF2m_arr2poly - - bntest.c has additional tests for binary polynomial arithmetic. - - Two implementations for BN_GF2m_mod_div() are available. - The default algorithm simply uses BN_GF2m_mod_inv() and - BN_GF2m_mod_mul(). The alternative algorithm is compiled in only - if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the - copyright notice in crypto/bn/bn_gf2m.c before enabling it). - - [Sheueling Chang Shantz and Douglas Stebila - (Sun Microsystems Laboratories)] - - *) Add new error code 'ERR_R_DISABLED' that can be used when some - functionality is disabled at compile-time. - [Douglas Stebila ] - - *) Change default behaviour of 'openssl asn1parse' so that more - information is visible when viewing, e.g., a certificate: - - Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump' - mode the content of non-printable OCTET STRINGs is output in a - style similar to INTEGERs, but with '[HEX DUMP]' prepended to - avoid the appearance of a printable string. - [Nils Larsch ] - - *) Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access - functions - EC_GROUP_set_asn1_flag() - EC_GROUP_get_asn1_flag() - EC_GROUP_set_point_conversion_form() - EC_GROUP_get_point_conversion_form() - These control ASN1 encoding details: - - Curves (i.e., groups) are encoded explicitly unless asn1_flag - has been set to OPENSSL_EC_NAMED_CURVE. - - Points are encoded in uncompressed form by default; options for - asn1_for are as for point2oct, namely - POINT_CONVERSION_COMPRESSED - POINT_CONVERSION_UNCOMPRESSED - POINT_CONVERSION_HYBRID - - Also add 'seed' and 'seed_len' members to EC_GROUP with access - functions - EC_GROUP_set_seed() - EC_GROUP_get0_seed() - EC_GROUP_get_seed_len() - This is used only for ASN1 purposes (so far). - [Nils Larsch ] - - *) Add 'field_type' member to EC_METHOD, which holds the NID - of the appropriate field type OID. The new function - EC_METHOD_get_field_type() returns this value. - [Nils Larsch ] - - *) Add functions - EC_POINT_point2bn() - EC_POINT_bn2point() - EC_POINT_point2hex() - EC_POINT_hex2point() - providing useful interfaces to EC_POINT_point2oct() and - EC_POINT_oct2point(). - [Nils Larsch ] - - *) Change internals of the EC library so that the functions - EC_GROUP_set_generator() - EC_GROUP_get_generator() - EC_GROUP_get_order() - EC_GROUP_get_cofactor() - are implemented directly in crypto/ec/ec_lib.c and not dispatched - to methods, which would lead to unnecessary code duplication when - adding different types of curves. - [Nils Larsch with input by Bodo Moeller] - - *) Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM - arithmetic, and such that modified wNAFs are generated - (which avoid length expansion in many cases). - [Bodo Moeller] - - *) Add a function EC_GROUP_check_discriminant() (defined via - EC_METHOD) that verifies that the curve discriminant is non-zero. - - Add a function EC_GROUP_check() that makes some sanity tests - on a EC_GROUP, its generator and order. This includes - EC_GROUP_check_discriminant(). - [Nils Larsch ] - - *) Add ECDSA in new directory crypto/ecdsa/. - - Add applications 'openssl ecparam' and 'openssl ecdsa' - (these are based on 'openssl dsaparam' and 'openssl dsa'). - - ECDSA support is also included in various other files across the - library. Most notably, - - 'openssl req' now has a '-newkey ecdsa:file' option; - - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA; - - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and - d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make - them suitable for ECDSA where domain parameters must be - extracted before the specific public key; - - ECDSA engine support has been added. - [Nils Larsch ] - - *) Include some named elliptic curves, and add OIDs from X9.62, - SECG, and WAP/WTLS. Each curve can be obtained from the new - function - EC_GROUP_new_by_curve_name(), - and the list of available named curves can be obtained with - EC_get_builtin_curves(). - Also add a 'curve_name' member to EC_GROUP objects, which can be - accessed via - EC_GROUP_set_curve_name() - EC_GROUP_get_curve_name() - [Nils Larsch ] - - *) Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that - a ciphersuite string such as "DEFAULT:RSA" cannot enable - authentication-only ciphersuites. - [Bodo Moeller] - - *) Since AES128 and AES256 share a single mask bit in the logic of - ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a - kludge to work properly if AES128 is available and AES256 isn't. - [Victor Duchovni] - - *) Expand security boundary to match 1.1.1 module. - [Steve Henson] - - *) Remove redundant features: hash file source, editing of test vectors - modify fipsld to use external fips_premain.c signature. - [Steve Henson] - - *) New perl script mkfipsscr.pl to create shell scripts or batch files to - run algorithm test programs. - [Steve Henson] - - *) Make algorithm test programs more tolerant of whitespace. - [Steve Henson] - - *) Have SSL/TLS server implementation tolerate "mismatched" record - protocol version while receiving ClientHello even if the - ClientHello is fragmented. (The server can't insist on the - particular protocol version it has chosen before the ServerHello - message has informed the client about his choice.) - [Bodo Moeller] - - *) Load error codes if they are not already present instead of using a - static variable. This allows them to be cleanly unloaded and reloaded. - [Steve Henson] - - Changes between 0.9.7k and 0.9.7l [28 Sep 2006] - - *) Introduce limits to prevent malicious keys being able to - cause a denial of service. (CVE-2006-2940) - [Steve Henson, Bodo Moeller] - - *) Fix ASN.1 parsing of certain invalid structures that can result - in a denial of service. (CVE-2006-2937) [Steve Henson] - - *) Fix buffer overflow in SSL_get_shared_ciphers() function. - (CVE-2006-3738) [Tavis Ormandy and Will Drewry, Google Security Team] - - *) Fix SSL client code which could crash if connecting to a - malicious SSLv2 server. (CVE-2006-4343) - [Tavis Ormandy and Will Drewry, Google Security Team] - - *) Change ciphersuite string processing so that an explicit - ciphersuite selects this one ciphersuite (so that "AES256-SHA" - will no longer include "AES128-SHA"), and any other similar - ciphersuite (same bitmap) from *other* protocol versions (so that - "RC4-MD5" will still include both the SSL 2.0 ciphersuite and the - SSL 3.0/TLS 1.0 ciphersuite). This is a backport combining - changes from 0.9.8b and 0.9.8d. - [Bodo Moeller] - - Changes between 0.9.7j and 0.9.7k [05 Sep 2006] - - *) Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher - (CVE-2006-4339) [Ben Laurie and Google Security Team] - - *) Change the Unix randomness entropy gathering to use poll() when - possible instead of select(), since the latter has some - undesirable limitations. - [Darryl Miles via Richard Levitte and Bodo Moeller] - - *) Disable rogue ciphersuites: - - - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5") - - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5") - - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5") - - The latter two were purportedly from - draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really - appear there. - - Also deactive the remaining ciphersuites from - draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as - unofficial, and the ID has long expired. - [Bodo Moeller] - - *) Fix RSA blinding Heisenbug (problems sometimes occurred on - dual-core machines) and other potential thread-safety issues. - [Bodo Moeller] - - Changes between 0.9.7i and 0.9.7j [04 May 2006] - - *) Adapt fipsld and the build system to link against the validated FIPS - module in FIPS mode. - [Steve Henson] - - *) Fixes for VC++ 2005 build under Windows. - [Steve Henson] - - *) Add new Windows build target VC-32-GMAKE for VC++. This uses GNU make - from a Windows bash shell such as MSYS. It is autodetected from the - "config" script when run from a VC++ environment. Modify standard VC++ - build to use fipscanister.o from the GNU make build. - [Steve Henson] - - Changes between 0.9.7h and 0.9.7i [14 Oct 2005] - - *) Wrapped the definition of EVP_MAX_MD_SIZE in a #ifdef OPENSSL_FIPS. - The value now differs depending on if you build for FIPS or not. - BEWARE! A program linked with a shared FIPSed libcrypto can't be - safely run with a non-FIPSed libcrypto, as it may crash because of - the difference induced by this change. - [Andy Polyakov] - - Changes between 0.9.7g and 0.9.7h [11 Oct 2005] - - *) Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING - (part of SSL_OP_ALL). This option used to disable the - countermeasure against man-in-the-middle protocol-version - rollback in the SSL 2.0 server implementation, which is a bad - idea. (CVE-2005-2969) - - [Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center - for Information Security, National Institute of Advanced Industrial - Science and Technology [AIST], Japan)] - - *) Minimal support for X9.31 signatures and PSS padding modes. This is - mainly for FIPS compliance and not fully integrated at this stage. - [Steve Henson] - - *) For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform - the exponentiation using a fixed-length exponent. (Otherwise, - the information leaked through timing could expose the secret key - after many signatures; cf. Bleichenbacher's attack on DSA with - biased k.) - [Bodo Moeller] - - *) Make a new fixed-window mod_exp implementation the default for - RSA, DSA, and DH private-key operations so that the sequence of - squares and multiplies and the memory access pattern are - independent of the particular secret key. This will mitigate - cache-timing and potential related attacks. - - BN_mod_exp_mont_consttime() is the new exponentiation implementation, - and this is automatically used by BN_mod_exp_mont() if the new flag - BN_FLG_EXP_CONSTTIME is set for the exponent. RSA, DSA, and DH - will use this BN flag for private exponents unless the flag - RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or - DH_FLAG_NO_EXP_CONSTTIME, respectively, is set. - - [Matthew D Wood (Intel Corp), with some changes by Bodo Moeller] - - *) Change the client implementation for SSLv23_method() and - SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0 - Client Hello message format if the SSL_OP_NO_SSLv2 option is set. - (Previously, the SSL 2.0 backwards compatible Client Hello - message format would be used even with SSL_OP_NO_SSLv2.) - [Bodo Moeller] - - *) Add support for smime-type MIME parameter in S/MIME messages which some - clients need. - [Steve Henson] - - *) New function BN_MONT_CTX_set_locked() to set montgomery parameters in - a threadsafe manner. Modify rsa code to use new function and add calls - to dsa and dh code (which had race conditions before). - [Steve Henson] - - *) Include the fixed error library code in the C error file definitions - instead of fixing them up at runtime. This keeps the error code - structures constant. - [Steve Henson] - - Changes between 0.9.7f and 0.9.7g [11 Apr 2005] - - [NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after - OpenSSL 0.9.8.] - - *) Fixes for newer kerberos headers. NB: the casts are needed because - the 'length' field is signed on one version and unsigned on another - with no (?) obvious way to tell the difference, without these VC++ - complains. Also the "definition" of FAR (blank) is no longer included - nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up - some needed definitions. - [Steve Henson] - - *) Undo Cygwin change. - [Ulf Möller] - - *) Added support for proxy certificates according to RFC 3820. - Because they may be a security thread to unaware applications, - they must be explicitly allowed in run-time. See - docs/HOWTO/proxy_certificates.txt for further information. - [Richard Levitte] - - Changes between 0.9.7e and 0.9.7f [22 Mar 2005] - - *) Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating - server and client random values. Previously - (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in - less random data when sizeof(time_t) > 4 (some 64 bit platforms). - - This change has negligible security impact because: - - 1. Server and client random values still have 24 bytes of pseudo random - data. - - 2. Server and client random values are sent in the clear in the initial - handshake. - - 3. The master secret is derived using the premaster secret (48 bytes in - size for static RSA ciphersuites) as well as client server and random - values. - - The OpenSSL team would like to thank the UK NISCC for bringing this issue - to our attention. - - [Stephen Henson, reported by UK NISCC] - - *) Use Windows randomness collection on Cygwin. - [Ulf Möller] - - *) Fix hang in EGD/PRNGD query when communication socket is closed - prematurely by EGD/PRNGD. - [Darren Tucker via Lutz Jänicke, resolves #1014] - - *) Prompt for pass phrases when appropriate for PKCS12 input format. - [Steve Henson] - - *) Back-port of selected performance improvements from development - branch, as well as improved support for PowerPC platforms. - [Andy Polyakov] - - *) Add lots of checks for memory allocation failure, error codes to indicate - failure and freeing up memory if a failure occurs. - [Nauticus Networks SSL Team , Steve Henson] - - *) Add new -passin argument to dgst. - [Steve Henson] - - *) Perform some character comparisons of different types in X509_NAME_cmp: - this is needed for some certificates that re-encode DNs into UTF8Strings - (in violation of RFC3280) and can't or won't issue name rollover - certificates. - [Steve Henson] - - *) Make an explicit check during certificate validation to see that - the CA setting in each certificate on the chain is correct. As a - side effect always do the following basic checks on extensions, - not just when there's an associated purpose to the check: - - - if there is an unhandled critical extension (unless the user - has chosen to ignore this fault) - - if the path length has been exceeded (if one is set at all) - - that certain extensions fit the associated purpose (if one has - been given) - [Richard Levitte] - - Changes between 0.9.7d and 0.9.7e [25 Oct 2004] - - *) Avoid a race condition when CRLs are checked in a multi threaded - environment. This would happen due to the reordering of the revoked - entries during signature checking and serial number lookup. Now the - encoding is cached and the serial number sort performed under a lock. - Add new STACK function sk_is_sorted(). - [Steve Henson] - - *) Add Delta CRL to the extension code. - [Steve Henson] - - *) Various fixes to s3_pkt.c so alerts are sent properly. - [David Holmes ] - - *) Reduce the chances of duplicate issuer name and serial numbers (in - violation of RFC3280) using the OpenSSL certificate creation utilities. - This is done by creating a random 64 bit value for the initial serial - number when a serial number file is created or when a self signed - certificate is created using 'openssl req -x509'. The initial serial - number file is created using 'openssl x509 -next_serial' in CA.pl - rather than being initialized to 1. - [Steve Henson] - - Changes between 0.9.7c and 0.9.7d [17 Mar 2004] - - *) Fix null-pointer assignment in do_change_cipher_spec() revealed - by using the Codenomicon TLS Test Tool (CVE-2004-0079) - [Joe Orton, Steve Henson] - - *) Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites - (CVE-2004-0112) - [Joe Orton, Steve Henson] - - *) Make it possible to have multiple active certificates with the same - subject in the CA index file. This is done only if the keyword - 'unique_subject' is set to 'no' in the main CA section (default - if 'CA_default') of the configuration file. The value is saved - with the database itself in a separate index attribute file, - named like the index file with '.attr' appended to the name. - [Richard Levitte] - - *) X509 verify fixes. Disable broken certificate workarounds when - X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if - keyUsage extension present. Don't accept CRLs with unhandled critical - extensions: since verify currently doesn't process CRL extensions this - rejects a CRL with *any* critical extensions. Add new verify error codes - for these cases. - [Steve Henson] - - *) When creating an OCSP nonce use an OCTET STRING inside the extnValue. - A clarification of RFC2560 will require the use of OCTET STRINGs and - some implementations cannot handle the current raw format. Since OpenSSL - copies and compares OCSP nonces as opaque blobs without any attempt at - parsing them this should not create any compatibility issues. - [Steve Henson] - - *) New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when - calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without - this HMAC (and other) operations are several times slower than OpenSSL - < 0.9.7. - [Steve Henson] - - *) Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex(). - [Peter Sylvester ] - - *) Use the correct content when signing type "other". - [Steve Henson] - - Changes between 0.9.7b and 0.9.7c [30 Sep 2003] - - *) Fix various bugs revealed by running the NISCC test suite: - - Stop out of bounds reads in the ASN1 code when presented with - invalid tags (CVE-2003-0543 and CVE-2003-0544). - - Free up ASN1_TYPE correctly if ANY type is invalid (CVE-2003-0545). - - If verify callback ignores invalid public key errors don't try to check - certificate signature with the NULL public key. - - [Steve Henson] - - *) New -ignore_err option in ocsp application to stop the server - exiting on the first error in a request. - [Steve Henson] - - *) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate - if the server requested one: as stated in TLS 1.0 and SSL 3.0 - specifications. - [Steve Henson] - - *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional - extra data after the compression methods not only for TLS 1.0 - but also for SSL 3.0 (as required by the specification). - [Bodo Moeller; problem pointed out by Matthias Loepfe] - - *) Change X509_certificate_type() to mark the key as exported/exportable - when it's 512 *bits* long, not 512 bytes. - [Richard Levitte] - - *) Change AES_cbc_encrypt() so it outputs exact multiple of - blocks during encryption. - [Richard Levitte] - - *) Various fixes to base64 BIO and non blocking I/O. On write - flushes were not handled properly if the BIO retried. On read - data was not being buffered properly and had various logic bugs. - This also affects blocking I/O when the data being decoded is a - certain size. - [Steve Henson] - - *) Various S/MIME bugfixes and compatibility changes: - output correct application/pkcs7 MIME type if - PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures. - Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening - of files as .eml work). Correctly handle very long lines in MIME - parser. - [Steve Henson] - - Changes between 0.9.7a and 0.9.7b [10 Apr 2003] - - *) Countermeasure against the Klima-Pokorny-Rosa extension of - Bleichbacher's attack on PKCS #1 v1.5 padding: treat - a protocol version number mismatch like a decryption error - in ssl3_get_client_key_exchange (ssl/s3_srvr.c). - [Bodo Moeller] - - *) Turn on RSA blinding by default in the default implementation - to avoid a timing attack. Applications that don't want it can call - RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING. - They would be ill-advised to do so in most cases. - [Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller] - - *) Change RSA blinding code so that it works when the PRNG is not - seeded (in this case, the secret RSA exponent is abused as - an unpredictable seed -- if it is not unpredictable, there - is no point in blinding anyway). Make RSA blinding thread-safe - by remembering the creator's thread ID in rsa->blinding and - having all other threads use local one-time blinding factors - (this requires more computation than sharing rsa->blinding, but - avoids excessive locking; and if an RSA object is not shared - between threads, blinding will still be very fast). - [Bodo Moeller] - - *) Fixed a typo bug that would cause ENGINE_set_default() to set an - ENGINE as defaults for all supported algorithms irrespective of - the 'flags' parameter. 'flags' is now honoured, so applications - should make sure they are passing it correctly. - [Geoff Thorpe] - - *) Target "mingw" now allows native Windows code to be generated in - the Cygwin environment as well as with the MinGW compiler. - [Ulf Moeller] - - Changes between 0.9.7 and 0.9.7a [19 Feb 2003] - - *) In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked - via timing by performing a MAC computation even if incorrect - block cipher padding has been found. This is a countermeasure - against active attacks where the attacker has to distinguish - between bad padding and a MAC verification error. (CVE-2003-0078) - - [Bodo Moeller; problem pointed out by Brice Canvel (EPFL), - Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and - Martin Vuagnoux (EPFL, Ilion)] - - *) Make the no-err option work as intended. The intention with no-err - is not to have the whole error stack handling routines removed from - libcrypto, it's only intended to remove all the function name and - reason texts, thereby removing some of the footprint that may not - be interesting if those errors aren't displayed anyway. - - NOTE: it's still possible for any application or module to have it's - own set of error texts inserted. The routines are there, just not - used by default when no-err is given. - [Richard Levitte] - - *) Add support for FreeBSD on IA64. - [dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454] - - *) Adjust DES_cbc_cksum() so it returns the same value as the MIT - Kerberos function mit_des_cbc_cksum(). Before this change, - the value returned by DES_cbc_cksum() was like the one from - mit_des_cbc_cksum(), except the bytes were swapped. - [Kevin Greaney and Richard Levitte] - - *) Allow an application to disable the automatic SSL chain building. - Before this a rather primitive chain build was always performed in - ssl3_output_cert_chain(): an application had no way to send the - correct chain if the automatic operation produced an incorrect result. - - Now the chain builder is disabled if either: - - 1. Extra certificates are added via SSL_CTX_add_extra_chain_cert(). - - 2. The mode flag SSL_MODE_NO_AUTO_CHAIN is set. - - The reasoning behind this is that an application would not want the - auto chain building to take place if extra chain certificates are - present and it might also want a means of sending no additional - certificates (for example the chain has two certificates and the - root is omitted). - [Steve Henson] - - *) Add the possibility to build without the ENGINE framework. - [Steven Reddie via Richard Levitte] - - *) Under Win32 gmtime() can return NULL: check return value in - OPENSSL_gmtime(). Add error code for case where gmtime() fails. - [Steve Henson] - - *) DSA routines: under certain error conditions uninitialized BN objects - could be freed. Solution: make sure initialization is performed early - enough. (Reported and fix supplied by Ivan D Nestlerode , - Nils Larsch via PR#459) - [Lutz Jaenicke] - - *) Another fix for SSLv2 session ID handling: the session ID was incorrectly - checked on reconnect on the client side, therefore session resumption - could still fail with a "ssl session id is different" error. This - behaviour is masked when SSL_OP_ALL is used due to - SSL_OP_MICROSOFT_SESS_ID_BUG being set. - Behaviour observed by Crispin Flowerday as - followup to PR #377. - [Lutz Jaenicke] - - *) IA-32 assembler support enhancements: unified ELF targets, support - for SCO/Caldera platforms, fix for Cygwin shared build. - [Andy Polyakov] - - *) Add support for FreeBSD on sparc64. As a consequence, support for - FreeBSD on non-x86 processors is separate from x86 processors on - the config script, much like the NetBSD support. - [Richard Levitte & Kris Kennaway ] - - Changes between 0.9.6h and 0.9.7 [31 Dec 2002] - - [NB: OpenSSL 0.9.6i and later 0.9.6 patch levels were released after - OpenSSL 0.9.7.] - - *) Fix session ID handling in SSLv2 client code: the SERVER FINISHED - code (06) was taken as the first octet of the session ID and the last - octet was ignored consequently. As a result SSLv2 client side session - caching could not have worked due to the session ID mismatch between - client and server. - Behaviour observed by Crispin Flowerday as - PR #377. - [Lutz Jaenicke] - - *) Change the declaration of needed Kerberos libraries to use EX_LIBS - instead of the special (and badly supported) LIBKRB5. LIBKRB5 is - removed entirely. - [Richard Levitte] - - *) The hw_ncipher.c engine requires dynamic locks. Unfortunately, it - seems that in spite of existing for more than a year, many application - author have done nothing to provide the necessary callbacks, which - means that this particular engine will not work properly anywhere. - This is a very unfortunate situation which forces us, in the name - of usability, to give the hw_ncipher.c a static lock, which is part - of libcrypto. - NOTE: This is for the 0.9.7 series ONLY. This hack will never - appear in 0.9.8 or later. We EXPECT application authors to have - dealt properly with this when 0.9.8 is released (unless we actually - make such changes in the libcrypto locking code that changes will - have to be made anyway). - [Richard Levitte] - - *) In asn1_d2i_read_bio() repeatedly call BIO_read() until all content - octets have been read, EOF or an error occurs. Without this change - some truncated ASN1 structures will not produce an error. - [Steve Henson] - - *) Disable Heimdal support, since it hasn't been fully implemented. - Still give the possibility to force the use of Heimdal, but with - warnings and a request that patches get sent to openssl-dev. - [Richard Levitte] - - *) Add the VC-CE target, introduce the WINCE sysname, and add - INSTALL.WCE and appropriate conditionals to make it build. - [Steven Reddie via Richard Levitte] - - *) Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and - cygssl-x.y.z.dll, where x, y and z are the major, minor and - edit numbers of the version. - [Corinna Vinschen and Richard Levitte] - - *) Introduce safe string copy and catenation functions - (BUF_strlcpy() and BUF_strlcat()). - [Ben Laurie (CHATS) and Richard Levitte] - - *) Avoid using fixed-size buffers for one-line DNs. - [Ben Laurie (CHATS)] - - *) Add BUF_MEM_grow_clean() to avoid information leakage when - resizing buffers containing secrets, and use where appropriate. - [Ben Laurie (CHATS)] - - *) Avoid using fixed size buffers for configuration file location. - [Ben Laurie (CHATS)] - - *) Avoid filename truncation for various CA files. - [Ben Laurie (CHATS)] - - *) Use sizeof in preference to magic numbers. - [Ben Laurie (CHATS)] - - *) Avoid filename truncation in cert requests. - [Ben Laurie (CHATS)] - - *) Add assertions to check for (supposedly impossible) buffer - overflows. - [Ben Laurie (CHATS)] - - *) Don't cache truncated DNS entries in the local cache (this could - potentially lead to a spoofing attack). - [Ben Laurie (CHATS)] - - *) Fix various buffers to be large enough for hex/decimal - representations in a platform independent manner. - [Ben Laurie (CHATS)] - - *) Add CRYPTO_realloc_clean() to avoid information leakage when - resizing buffers containing secrets, and use where appropriate. - [Ben Laurie (CHATS)] - - *) Add BIO_indent() to avoid much slightly worrying code to do - indents. - [Ben Laurie (CHATS)] - - *) Convert sprintf()/BIO_puts() to BIO_printf(). - [Ben Laurie (CHATS)] - - *) buffer_gets() could terminate with the buffer only half - full. Fixed. - [Ben Laurie (CHATS)] - - *) Add assertions to prevent user-supplied crypto functions from - overflowing internal buffers by having large block sizes, etc. - [Ben Laurie (CHATS)] - - *) New OPENSSL_assert() macro (similar to assert(), but enabled - unconditionally). - [Ben Laurie (CHATS)] - - *) Eliminate unused copy of key in RC4. - [Ben Laurie (CHATS)] - - *) Eliminate unused and incorrectly sized buffers for IV in pem.h. - [Ben Laurie (CHATS)] - - *) Fix off-by-one error in EGD path. - [Ben Laurie (CHATS)] - - *) If RANDFILE path is too long, ignore instead of truncating. - [Ben Laurie (CHATS)] - - *) Eliminate unused and incorrectly sized X.509 structure - CBCParameter. - [Ben Laurie (CHATS)] - - *) Eliminate unused and dangerous function knumber(). - [Ben Laurie (CHATS)] - - *) Eliminate unused and dangerous structure, KSSL_ERR. - [Ben Laurie (CHATS)] - - *) Protect against overlong session ID context length in an encoded - session object. Since these are local, this does not appear to be - exploitable. - [Ben Laurie (CHATS)] - - *) Change from security patch (see 0.9.6e below) that did not affect - the 0.9.6 release series: - - Remote buffer overflow in SSL3 protocol - an attacker could - supply an oversized master key in Kerberos-enabled versions. - (CVE-2002-0657) - [Ben Laurie (CHATS)] - - *) Change the SSL kerb5 codes to match RFC 2712. - [Richard Levitte] - - *) Make -nameopt work fully for req and add -reqopt switch. - [Michael Bell , Steve Henson] - - *) The "block size" for block ciphers in CFB and OFB mode should be 1. - [Steve Henson, reported by Yngve Nysaeter Pettersen ] - - *) Make sure tests can be performed even if the corresponding algorithms - have been removed entirely. This was also the last step to make - OpenSSL compilable with DJGPP under all reasonable conditions. - [Richard Levitte, Doug Kaufman ] - - *) Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT - to allow version independent disabling of normally unselected ciphers, - which may be activated as a side-effect of selecting a single cipher. - - (E.g., cipher list string "RSA" enables ciphersuites that are left - out of "ALL" because they do not provide symmetric encryption. - "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.) - [Lutz Jaenicke, Bodo Moeller] - - *) Add appropriate support for separate platform-dependent build - directories. The recommended way to make a platform-dependent - build directory is the following (tested on Linux), maybe with - some local tweaks: - - # Place yourself outside of the OpenSSL source tree. In - # this example, the environment variable OPENSSL_SOURCE - # is assumed to contain the absolute OpenSSL source directory. - mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`" - cd objtree/"`uname -s`-`uname -r`-`uname -m`" - (cd $OPENSSL_SOURCE; find . -type f) | while read F; do - mkdir -p `dirname $F` - ln -s $OPENSSL_SOURCE/$F $F - done - - To be absolutely sure not to disturb the source tree, a "make clean" - is a good thing. If it isn't successful, don't worry about it, - it probably means the source directory is very clean. - [Richard Levitte] - - *) Make sure any ENGINE control commands make local copies of string - pointers passed to them whenever necessary. Otherwise it is possible - the caller may have overwritten (or deallocated) the original string - data when a later ENGINE operation tries to use the stored values. - [Götz Babin-Ebell ] - - *) Improve diagnostics in file reading and command-line digests. - [Ben Laurie aided and abetted by Solar Designer ] - - *) Add AES modes CFB and OFB to the object database. Correct an - error in AES-CFB decryption. - [Richard Levitte] - - *) Remove most calls to EVP_CIPHER_CTX_cleanup() in evp_enc.c, this - allows existing EVP_CIPHER_CTX structures to be reused after - calling EVP_*Final(). This behaviour is used by encryption - BIOs and some applications. This has the side effect that - applications must explicitly clean up cipher contexts with - EVP_CIPHER_CTX_cleanup() or they will leak memory. - [Steve Henson] - - *) Check the values of dna and dnb in bn_mul_recursive before calling - bn_mul_comba (a non zero value means the a or b arrays do not contain - n2 elements) and fallback to bn_mul_normal if either is not zero. - [Steve Henson] - - *) Fix escaping of non-ASCII characters when using the -subj option - of the "openssl req" command line tool. (Robert Joop ) - [Lutz Jaenicke] - - *) Make object definitions compliant to LDAP (RFC2256): SN is the short - form for "surname", serialNumber has no short form. - Use "mail" as the short name for "rfc822Mailbox" according to RFC2798; - therefore remove "mail" short name for "internet 7". - The OID for unique identifiers in X509 certificates is - x500UniqueIdentifier, not uniqueIdentifier. - Some more OID additions. (Michael Bell ) - [Lutz Jaenicke] - - *) Add an "init" command to the ENGINE config module and auto initialize - ENGINEs. Without any "init" command the ENGINE will be initialized - after all ctrl commands have been executed on it. If init=1 the - ENGINE is initailized at that point (ctrls before that point are run - on the uninitialized ENGINE and after on the initialized one). If - init=0 then the ENGINE will not be iniatialized at all. - [Steve Henson] - - *) Fix the 'app_verify_callback' interface so that the user-defined - argument is actually passed to the callback: In the - SSL_CTX_set_cert_verify_callback() prototype, the callback - declaration has been changed from - int (*cb)() - into - int (*cb)(X509_STORE_CTX *,void *); - in ssl_verify_cert_chain (ssl/ssl_cert.c), the call - i=s->ctx->app_verify_callback(&ctx) - has been changed into - i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg). - - To update applications using SSL_CTX_set_cert_verify_callback(), - a dummy argument can be added to their callback functions. - [D. K. Smetters ] - - *) Added the '4758cca' ENGINE to support IBM 4758 cards. - [Maurice Gittens , touchups by Geoff Thorpe] - - *) Add and OPENSSL_LOAD_CONF define which will cause - OpenSSL_add_all_algorithms() to load the openssl.cnf config file. - This allows older applications to transparently support certain - OpenSSL features: such as crypto acceleration and dynamic ENGINE loading. - Two new functions OPENSSL_add_all_algorithms_noconf() which will never - load the config file and OPENSSL_add_all_algorithms_conf() which will - always load it have also been added. - [Steve Henson] - - *) Add the OFB, CFB and CTR (all with 128 bit feedback) to AES. - Adjust NIDs and EVP layer. - [Stephen Sprunk and Richard Levitte] - - *) Config modules support in openssl utility. - - Most commands now load modules from the config file, - though in a few (such as version) this isn't done - because it couldn't be used for anything. - - In the case of ca and req the config file used is - the same as the utility itself: that is the -config - command line option can be used to specify an - alternative file. - [Steve Henson] - - *) Move default behaviour from OPENSSL_config(). If appname is NULL - use "openssl_conf" if filename is NULL use default openssl config file. - [Steve Henson] - - *) Add an argument to OPENSSL_config() to allow the use of an alternative - config section name. Add a new flag to tolerate a missing config file - and move code to CONF_modules_load_file(). - [Steve Henson] - - *) Support for crypto accelerator cards from Accelerated Encryption - Processing, www.aep.ie. (Use engine 'aep') - The support was copied from 0.9.6c [engine] and adapted/corrected - to work with the new engine framework. - [AEP Inc. and Richard Levitte] - - *) Support for SureWare crypto accelerator cards from Baltimore - Technologies. (Use engine 'sureware') - The support was copied from 0.9.6c [engine] and adapted - to work with the new engine framework. - [Richard Levitte] - - *) Have the CHIL engine fork-safe (as defined by nCipher) and actually - make the newer ENGINE framework commands for the CHIL engine work. - [Toomas Kiisk and Richard Levitte] - - *) Make it possible to produce shared libraries on ReliantUNIX. - [Robert Dahlem via Richard Levitte] - - *) Add the configuration target debug-linux-ppro. - Make 'openssl rsa' use the general key loading routines - implemented in apps.c, and make those routines able to - handle the key format FORMAT_NETSCAPE and the variant - FORMAT_IISSGC. - [Toomas Kiisk via Richard Levitte] - - *) Fix a crashbug and a logic bug in hwcrhk_load_pubkey(). - [Toomas Kiisk via Richard Levitte] - - *) Add -keyform to rsautl, and document -engine. - [Richard Levitte, inspired by Toomas Kiisk ] - - *) Change BIO_new_file (crypto/bio/bss_file.c) to use new - BIO_R_NO_SUCH_FILE error code rather than the generic - ERR_R_SYS_LIB error code if fopen() fails with ENOENT. - [Ben Laurie] - - *) Add new functions - ERR_peek_last_error - ERR_peek_last_error_line - ERR_peek_last_error_line_data. - These are similar to - ERR_peek_error - ERR_peek_error_line - ERR_peek_error_line_data, - but report on the latest error recorded rather than the first one - still in the error queue. - [Ben Laurie, Bodo Moeller] - - *) default_algorithms option in ENGINE config module. This allows things - like: - default_algorithms = ALL - default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS - [Steve Henson] - - *) Preliminary ENGINE config module. - [Steve Henson] - - *) New experimental application configuration code. - [Steve Henson] - - *) Change the AES code to follow the same name structure as all other - symmetric ciphers, and behave the same way. Move everything to - the directory crypto/aes, thereby obsoleting crypto/rijndael. - [Stephen Sprunk and Richard Levitte] - - *) SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c. - [Ben Laurie and Theo de Raadt] - - *) Add option to output public keys in req command. - [Massimiliano Pala madwolf@openca.org] - - *) Use wNAFs in EC_POINTs_mul() for improved efficiency - (up to about 10% better than before for P-192 and P-224). - [Bodo Moeller] - - *) New functions/macros - - SSL_CTX_set_msg_callback(ctx, cb) - SSL_CTX_set_msg_callback_arg(ctx, arg) - SSL_set_msg_callback(ssl, cb) - SSL_set_msg_callback_arg(ssl, arg) - - to request calling a callback function - - void cb(int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, void *arg) - - whenever a protocol message has been completely received - (write_p == 0) or sent (write_p == 1). Here 'version' is the - protocol version according to which the SSL library interprets - the current protocol message (SSL2_VERSION, SSL3_VERSION, or - TLS1_VERSION). 'content_type' is 0 in the case of SSL 2.0, or - the content type as defined in the SSL 3.0/TLS 1.0 protocol - specification (change_cipher_spec(20), alert(21), handshake(22)). - 'buf' and 'len' point to the actual message, 'ssl' to the - SSL object, and 'arg' is the application-defined value set by - SSL[_CTX]_set_msg_callback_arg(). - - 'openssl s_client' and 'openssl s_server' have new '-msg' options - to enable a callback that displays all protocol messages. - [Bodo Moeller] - - *) Change the shared library support so shared libraries are built as - soon as the corresponding static library is finished, and thereby get - openssl and the test programs linked against the shared library. - This still only happens when the keyword "shard" has been given to - the configuration scripts. - - NOTE: shared library support is still an experimental thing, and - backward binary compatibility is still not guaranteed. - ["Maciej W. Rozycki" and Richard Levitte] - - *) Add support for Subject Information Access extension. - [Peter Sylvester ] - - *) Make BUF_MEM_grow() behaviour more consistent: Initialise to zero - additional bytes when new memory had to be allocated, not just - when reusing an existing buffer. - [Bodo Moeller] - - *) New command line and configuration option 'utf8' for the req command. - This allows field values to be specified as UTF8 strings. - [Steve Henson] - - *) Add -multi and -mr options to "openssl speed" - giving multiple parallel - runs for the former and machine-readable output for the latter. - [Ben Laurie] - - *) Add '-noemailDN' option to 'openssl ca'. This prevents inclusion - of the e-mail address in the DN (i.e., it will go into a certificate - extension only). The new configuration file option 'email_in_dn = no' - has the same effect. - [Massimiliano Pala madwolf@openca.org] - - *) Change all functions with names starting with des_ to be starting - with DES_ instead. Add wrappers that are compatible with libdes, - but are named _ossl_old_des_*. Finally, add macros that map the - des_* symbols to the corresponding _ossl_old_des_* if libdes - compatibility is desired. If OpenSSL 0.9.6c compatibility is - desired, the des_* symbols will be mapped to DES_*, with one - exception. - - Since we provide two compatibility mappings, the user needs to - define the macro OPENSSL_DES_LIBDES_COMPATIBILITY if libdes - compatibility is desired. The default (i.e., when that macro - isn't defined) is OpenSSL 0.9.6c compatibility. - - There are also macros that enable and disable the support of old - des functions altogether. Those are OPENSSL_ENABLE_OLD_DES_SUPPORT - and OPENSSL_DISABLE_OLD_DES_SUPPORT. If none or both of those - are defined, the default will apply: to support the old des routines. - - In either case, one must include openssl/des.h to get the correct - definitions. Do not try to just include openssl/des_old.h, that - won't work. - - NOTE: This is a major break of an old API into a new one. Software - authors are encouraged to switch to the DES_ style functions. Some - time in the future, des_old.h and the libdes compatibility functions - will be disable (i.e. OPENSSL_DISABLE_OLD_DES_SUPPORT will be the - default), and then completely removed. - [Richard Levitte] - - *) Test for certificates which contain unsupported critical extensions. - If such a certificate is found during a verify operation it is - rejected by default: this behaviour can be overridden by either - handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or - by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function - X509_supported_extension() has also been added which returns 1 if a - particular extension is supported. - [Steve Henson] - - *) Modify the behaviour of EVP cipher functions in similar way to digests - to retain compatibility with existing code. - [Steve Henson] - - *) Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain - compatibility with existing code. In particular the 'ctx' parameter does - not have to be to be initialized before the call to EVP_DigestInit() and - it is tidied up after a call to EVP_DigestFinal(). New function - EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function - EVP_MD_CTX_copy() changed to not require the destination to be - initialized valid and new function EVP_MD_CTX_copy_ex() added which - requires the destination to be valid. - - Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(), - EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex(). - [Steve Henson] - - *) Change ssl3_get_message (ssl/s3_both.c) and the functions using it - so that complete 'Handshake' protocol structures are kept in memory - instead of overwriting 'msg_type' and 'length' with 'body' data. - [Bodo Moeller] - - *) Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32. - [Massimo Santin via Richard Levitte] - - *) Major restructuring to the underlying ENGINE code. This includes - reduction of linker bloat, separation of pure "ENGINE" manipulation - (initialisation, etc) from functionality dealing with implementations - of specific crypto iterfaces. This change also introduces integrated - support for symmetric ciphers and digest implementations - so ENGINEs - can now accelerate these by providing EVP_CIPHER and EVP_MD - implementations of their own. This is detailed in crypto/engine/README - as it couldn't be adequately described here. However, there are a few - API changes worth noting - some RSA, DSA, DH, and RAND functions that - were changed in the original introduction of ENGINE code have now - reverted back - the hooking from this code to ENGINE is now a good - deal more passive and at run-time, operations deal directly with - RSA_METHODs, DSA_METHODs (etc) as they did before, rather than - dereferencing through an ENGINE pointer any more. Also, the ENGINE - functions dealing with BN_MOD_EXP[_CRT] handlers have been removed - - they were not being used by the framework as there is no concept of a - BIGNUM_METHOD and they could not be generalised to the new - 'ENGINE_TABLE' mechanism that underlies the new code. Similarly, - ENGINE_cpy() has been removed as it cannot be consistently defined in - the new code. - [Geoff Thorpe] - - *) Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds. - [Steve Henson] - - *) Change mkdef.pl to sort symbols that get the same entry number, - and make sure the automatically generated functions ERR_load_* - become part of libeay.num as well. - [Richard Levitte] - - *) New function SSL_renegotiate_pending(). This returns true once - renegotiation has been requested (either SSL_renegotiate() call - or HelloRequest/ClientHello received from the peer) and becomes - false once a handshake has been completed. - (For servers, SSL_renegotiate() followed by SSL_do_handshake() - sends a HelloRequest, but does not ensure that a handshake takes - place. SSL_renegotiate_pending() is useful for checking if the - client has followed the request.) - [Bodo Moeller] - - *) New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION. - By default, clients may request session resumption even during - renegotiation (if session ID contexts permit); with this option, - session resumption is possible only in the first handshake. - - SSL_OP_ALL is now 0x00000FFFL instead of 0x000FFFFFL. This makes - more bits available for options that should not be part of - SSL_OP_ALL (such as SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION). - [Bodo Moeller] - - *) Add some demos for certificate and certificate request creation. - [Steve Henson] - - *) Make maximum certificate chain size accepted from the peer application - settable (SSL*_get/set_max_cert_list()), as proposed by - "Douglas E. Engert" . - [Lutz Jaenicke] - - *) Add support for shared libraries for Unixware-7 - (Boyd Lynn Gerber ). - [Lutz Jaenicke] - - *) Add a "destroy" handler to ENGINEs that allows structural cleanup to - be done prior to destruction. Use this to unload error strings from - ENGINEs that load their own error strings. NB: This adds two new API - functions to "get" and "set" this destroy handler in an ENGINE. - [Geoff Thorpe] - - *) Alter all existing ENGINE implementations (except "openssl" and - "openbsd") to dynamically instantiate their own error strings. This - makes them more flexible to be built both as statically-linked ENGINEs - and self-contained shared-libraries loadable via the "dynamic" ENGINE. - Also, add stub code to each that makes building them as self-contained - shared-libraries easier (see README.ENGINE). - [Geoff Thorpe] - - *) Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE - implementations into applications that are completely implemented in - self-contained shared-libraries. The "dynamic" ENGINE exposes control - commands that can be used to configure what shared-library to load and - to control aspects of the way it is handled. Also, made an update to - the README.ENGINE file that brings its information up-to-date and - provides some information and instructions on the "dynamic" ENGINE - (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc). - [Geoff Thorpe] - - *) Make it possible to unload ranges of ERR strings with a new - "ERR_unload_strings" function. - [Geoff Thorpe] - - *) Add a copy() function to EVP_MD. - [Ben Laurie] - - *) Make EVP_MD routines take a context pointer instead of just the - md_data void pointer. - [Ben Laurie] - - *) Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates - that the digest can only process a single chunk of data - (typically because it is provided by a piece of - hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application - is only going to provide a single chunk of data, and hence the - framework needn't accumulate the data for oneshot drivers. - [Ben Laurie] - - *) As with "ERR", make it possible to replace the underlying "ex_data" - functions. This change also alters the storage and management of global - ex_data state - it's now all inside ex_data.c and all "class" code (eg. - RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class - index counters. The API functions that use this state have been changed - to take a "class_index" rather than pointers to the class's local STACK - and counter, and there is now an API function to dynamically create new - classes. This centralisation allows us to (a) plug a lot of the - thread-safety problems that existed, and (b) makes it possible to clean - up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b) - such data would previously have always leaked in application code and - workarounds were in place to make the memory debugging turn a blind eye - to it. Application code that doesn't use this new function will still - leak as before, but their memory debugging output will announce it now - rather than letting it slide. - - Besides the addition of CRYPTO_cleanup_all_ex_data(), another API change - induced by the "ex_data" overhaul is that X509_STORE_CTX_init() now - has a return value to indicate success or failure. - [Geoff Thorpe] - - *) Make it possible to replace the underlying "ERR" functions such that the - global state (2 LHASH tables and 2 locks) is only used by the "default" - implementation. This change also adds two functions to "get" and "set" - the implementation prior to it being automatically set the first time - any other ERR function takes place. Ie. an application can call "get", - pass the return value to a module it has just loaded, and that module - can call its own "set" function using that value. This means the - module's "ERR" operations will use (and modify) the error state in the - application and not in its own statically linked copy of OpenSSL code. - [Geoff Thorpe] - - *) Give DH, DSA, and RSA types their own "**_up_ref()" function to increment - reference counts. This performs normal REF_PRINT/REF_CHECK macros on - the operation, and provides a more encapsulated way for external code - (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code - to use these functions rather than manually incrementing the counts. - - Also rename "DSO_up()" function to more descriptive "DSO_up_ref()". - [Geoff Thorpe] - - *) Add EVP test program. - [Ben Laurie] - - *) Add symmetric cipher support to ENGINE. Expect the API to change! - [Ben Laurie] - - *) New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name() - X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(), - X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate(). - These allow a CRL to be built without having to access X509_CRL fields - directly. Modify 'ca' application to use new functions. - [Steve Henson] - - *) Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended - bug workarounds. Rollback attack detection is a security feature. - The problem will only arise on OpenSSL servers when TLSv1 is not - available (sslv3_server_method() or SSL_OP_NO_TLSv1). - Software authors not wanting to support TLSv1 will have special reasons - for their choice and can explicitly enable this option. - [Bodo Moeller, Lutz Jaenicke] - - *) Rationalise EVP so it can be extended: don't include a union of - cipher/digest structures, add init/cleanup functions for EVP_MD_CTX - (similar to those existing for EVP_CIPHER_CTX). - Usage example: - - EVP_MD_CTX md; - - EVP_MD_CTX_init(&md); /* new function call */ - EVP_DigestInit(&md, EVP_sha1()); - EVP_DigestUpdate(&md, in, len); - EVP_DigestFinal(&md, out, NULL); - EVP_MD_CTX_cleanup(&md); /* new function call */ - - [Ben Laurie] - - *) Make DES key schedule conform to the usual scheme, as well as - correcting its structure. This means that calls to DES functions - now have to pass a pointer to a des_key_schedule instead of a - plain des_key_schedule (which was actually always a pointer - anyway): E.g., - - des_key_schedule ks; - - des_set_key_checked(..., &ks); - des_ncbc_encrypt(..., &ks, ...); - - (Note that a later change renames 'des_...' into 'DES_...'.) - [Ben Laurie] - - *) Initial reduction of linker bloat: the use of some functions, such as - PEM causes large amounts of unused functions to be linked in due to - poor organisation. For example pem_all.c contains every PEM function - which has a knock on effect of linking in large amounts of (unused) - ASN1 code. Grouping together similar functions and splitting unrelated - functions prevents this. - [Steve Henson] - - *) Cleanup of EVP macros. - [Ben Laurie] - - *) Change historical references to {NID,SN,LN}_des_ede and ede3 to add the - correct _ecb suffix. - [Ben Laurie] - - *) Add initial OCSP responder support to ocsp application. The - revocation information is handled using the text based index - use by the ca application. The responder can either handle - requests generated internally, supplied in files (for example - via a CGI script) or using an internal minimal server. - [Steve Henson] - - *) Add configuration choices to get zlib compression for TLS. - [Richard Levitte] - - *) Changes to Kerberos SSL for RFC 2712 compliance: - 1. Implemented real KerberosWrapper, instead of just using - KRB5 AP_REQ message. [Thanks to Simon Wilkinson ] - 2. Implemented optional authenticator field of KerberosWrapper. - - Added openssl-style ASN.1 macros for Kerberos ticket, ap_req, - and authenticator structs; see crypto/krb5/. - - Generalized Kerberos calls to support multiple Kerberos libraries. - [Vern Staats , - Jeffrey Altman - via Richard Levitte] - - *) Cause 'openssl speed' to use fully hard-coded DSA keys as it - already does with RSA. testdsa.h now has 'priv_key/pub_key' - values for each of the key sizes rather than having just - parameters (and 'speed' generating keys each time). - [Geoff Thorpe] - - *) Speed up EVP routines. - Before: -encrypt -type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes -des-cbc 4408.85k 5560.51k 5778.46k 5862.20k 5825.16k -des-cbc 4389.55k 5571.17k 5792.23k 5846.91k 5832.11k -des-cbc 4394.32k 5575.92k 5807.44k 5848.37k 5841.30k -decrypt -des-cbc 3482.66k 5069.49k 5496.39k 5614.16k 5639.28k -des-cbc 3480.74k 5068.76k 5510.34k 5609.87k 5635.52k -des-cbc 3483.72k 5067.62k 5504.60k 5708.01k 5724.80k - After: -encrypt -des-cbc 4660.16k 5650.19k 5807.19k 5827.13k 5783.32k -decrypt -des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k - [Ben Laurie] - - *) Added the OS2-EMX target. - ["Brian Havard" and Richard Levitte] - - *) Rewrite apps to use NCONF routines instead of the old CONF. New functions - to support NCONF routines in extension code. New function CONF_set_nconf() - to allow functions which take an NCONF to also handle the old LHASH - structure: this means that the old CONF compatible routines can be - retained (in particular wrt extensions) without having to duplicate the - code. New function X509V3_add_ext_nconf_sk to add extensions to a stack. - [Steve Henson] - - *) Enhance the general user interface with mechanisms for inner control - and with possibilities to have yes/no kind of prompts. - [Richard Levitte] - - *) Change all calls to low level digest routines in the library and - applications to use EVP. Add missing calls to HMAC_cleanup() and - don't assume HMAC_CTX can be copied using memcpy(). - [Verdon Walker , Steve Henson] - - *) Add the possibility to control engines through control names but with - arbitrary arguments instead of just a string. - Change the key loaders to take a UI_METHOD instead of a callback - function pointer. NOTE: this breaks binary compatibility with earlier - versions of OpenSSL [engine]. - Adapt the nCipher code for these new conditions and add a card insertion - callback. - [Richard Levitte] - - *) Enhance the general user interface with mechanisms to better support - dialog box interfaces, application-defined prompts, the possibility - to use defaults (for example default passwords from somewhere else) - and interrupts/cancellations. - [Richard Levitte] - - *) Tidy up PKCS#12 attribute handling. Add support for the CSP name - attribute in PKCS#12 files, add new -CSP option to pkcs12 utility. - [Steve Henson] - - *) Fix a memory leak in 'sk_dup()' in the case reallocation fails. (Also - tidy up some unnecessarily weird code in 'sk_new()'). - [Geoff, reported by Diego Tartara ] - - *) Change the key loading routines for ENGINEs to use the same kind - callback (pem_password_cb) as all other routines that need this - kind of callback. - [Richard Levitte] - - *) Increase ENTROPY_NEEDED to 32 bytes, as Rijndael can operate with - 256 bit (=32 byte) keys. Of course seeding with more entropy bytes - than this minimum value is recommended. - [Lutz Jaenicke] - - *) New random seeder for OpenVMS, using the system process statistics - that are easily reachable. - [Richard Levitte] - - *) Windows apparently can't transparently handle global - variables defined in DLLs. Initialisations such as: - - const ASN1_ITEM *it = &ASN1_INTEGER_it; - - won't compile. This is used by the any applications that need to - declare their own ASN1 modules. This was fixed by adding the option - EXPORT_VAR_AS_FN to all Win32 platforms, although this isn't strictly - needed for static libraries under Win32. - [Steve Henson] - - *) New functions X509_PURPOSE_set() and X509_TRUST_set() to handle - setting of purpose and trust fields. New X509_STORE trust and - purpose functions and tidy up setting in other SSL functions. - [Steve Henson] - - *) Add copies of X509_STORE_CTX fields and callbacks to X509_STORE - structure. These are inherited by X509_STORE_CTX when it is - initialised. This allows various defaults to be set in the - X509_STORE structure (such as flags for CRL checking and custom - purpose or trust settings) for functions which only use X509_STORE_CTX - internally such as S/MIME. - - Modify X509_STORE_CTX_purpose_inherit() so it only sets purposes and - trust settings if they are not set in X509_STORE. This allows X509_STORE - purposes and trust (in S/MIME for example) to override any set by default. - - Add command line options for CRL checking to smime, s_client and s_server - applications. - [Steve Henson] - - *) Initial CRL based revocation checking. If the CRL checking flag(s) - are set then the CRL is looked up in the X509_STORE structure and - its validity and signature checked, then if the certificate is found - in the CRL the verify fails with a revoked error. - - Various new CRL related callbacks added to X509_STORE_CTX structure. - - Command line options added to 'verify' application to support this. - - This needs some additional work, such as being able to handle multiple - CRLs with different times, extension based lookup (rather than just - by subject name) and ultimately more complete V2 CRL extension - handling. - [Steve Henson] - - *) Add a general user interface API (crypto/ui/). This is designed - to replace things like des_read_password and friends (backward - compatibility functions using this new API are provided). - The purpose is to remove prompting functions from the DES code - section as well as provide for prompting through dialog boxes in - a window system and the like. - [Richard Levitte] - - *) Add "ex_data" support to ENGINE so implementations can add state at a - per-structure level rather than having to store it globally. - [Geoff] - - *) Make it possible for ENGINE structures to be copied when retrieved by - ENGINE_by_id() if the ENGINE specifies a new flag: ENGINE_FLAGS_BY_ID_COPY. - This causes the "original" ENGINE structure to act like a template, - analogous to the RSA vs. RSA_METHOD type of separation. Because of this - operational state can be localised to each ENGINE structure, despite the - fact they all share the same "methods". New ENGINE structures returned in - this case have no functional references and the return value is the single - structural reference. This matches the single structural reference returned - by ENGINE_by_id() normally, when it is incremented on the pre-existing - ENGINE structure. - [Geoff] - - *) Fix ASN1 decoder when decoding type ANY and V_ASN1_OTHER: since this - needs to match any other type at all we need to manually clear the - tag cache. - [Steve Henson] - - *) Changes to the "openssl engine" utility to include; - - verbosity levels ('-v', '-vv', and '-vvv') that provide information - about an ENGINE's available control commands. - - executing control commands from command line arguments using the - '-pre' and '-post' switches. '-post' is only used if '-t' is - specified and the ENGINE is successfully initialised. The syntax for - the individual commands are colon-separated, for example; - openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so - [Geoff] - - *) New dynamic control command support for ENGINEs. ENGINEs can now - declare their own commands (numbers), names (strings), descriptions, - and input types for run-time discovery by calling applications. A - subset of these commands are implicitly classed as "executable" - depending on their input type, and only these can be invoked through - the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this - can be based on user input, config files, etc). The distinction is - that "executable" commands cannot return anything other than a boolean - result and can only support numeric or string input, whereas some - discoverable commands may only be for direct use through - ENGINE_ctrl(), eg. supporting the exchange of binary data, function - pointers, or other custom uses. The "executable" commands are to - support parameterisations of ENGINE behaviour that can be - unambiguously defined by ENGINEs and used consistently across any - OpenSSL-based application. Commands have been added to all the - existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow - control over shared-library paths without source code alterations. - [Geoff] - - *) Changed all ENGINE implementations to dynamically allocate their - ENGINEs rather than declaring them statically. Apart from this being - necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction, - this also allows the implementations to compile without using the - internal engine_int.h header. - [Geoff] - - *) Minor adjustment to "rand" code. RAND_get_rand_method() now returns a - 'const' value. Any code that should be able to modify a RAND_METHOD - should already have non-const pointers to it (ie. they should only - modify their own ones). - [Geoff] - - *) Made a variety of little tweaks to the ENGINE code. - - "atalla" and "ubsec" string definitions were moved from header files - to C code. "nuron" string definitions were placed in variables - rather than hard-coded - allowing parameterisation of these values - later on via ctrl() commands. - - Removed unused "#if 0"'d code. - - Fixed engine list iteration code so it uses ENGINE_free() to release - structural references. - - Constified the RAND_METHOD element of ENGINE structures. - - Constified various get/set functions as appropriate and added - missing functions (including a catch-all ENGINE_cpy that duplicates - all ENGINE values onto a new ENGINE except reference counts/state). - - Removed NULL parameter checks in get/set functions. Setting a method - or function to NULL is a way of cancelling out a previously set - value. Passing a NULL ENGINE parameter is just plain stupid anyway - and doesn't justify the extra error symbols and code. - - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for - flags from engine_int.h to engine.h. - - Changed prototypes for ENGINE handler functions (init(), finish(), - ctrl(), key-load functions, etc) to take an (ENGINE*) parameter. - [Geoff] - - *) Implement binary inversion algorithm for BN_mod_inverse in addition - to the algorithm using long division. The binary algorithm can be - used only if the modulus is odd. On 32-bit systems, it is faster - only for relatively small moduli (roughly 20-30% for 128-bit moduli, - roughly 5-15% for 256-bit moduli), so we use it only for moduli - up to 450 bits. In 64-bit environments, the binary algorithm - appears to be advantageous for much longer moduli; here we use it - for moduli up to 2048 bits. - [Bodo Moeller] - - *) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code - could not support the combine flag in choice fields. - [Steve Henson] - - *) Add a 'copy_extensions' option to the 'ca' utility. This copies - extensions from a certificate request to the certificate. - [Steve Henson] - - *) Allow multiple 'certopt' and 'nameopt' options to be separated - by commas. Add 'namopt' and 'certopt' options to the 'ca' config - file: this allows the display of the certificate about to be - signed to be customised, to allow certain fields to be included - or excluded and extension details. The old system didn't display - multicharacter strings properly, omitted fields not in the policy - and couldn't display additional details such as extensions. - [Steve Henson] - - *) Function EC_POINTs_mul for multiple scalar multiplication - of an arbitrary number of elliptic curve points - \sum scalars[i]*points[i], - optionally including the generator defined for the EC_GROUP: - scalar*generator + \sum scalars[i]*points[i]. - - EC_POINT_mul is a simple wrapper function for the typical case - that the point list has just one item (besides the optional - generator). - [Bodo Moeller] - - *) First EC_METHODs for curves over GF(p): - - EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr - operations and provides various method functions that can also - operate with faster implementations of modular arithmetic. - - EC_GFp_mont_method() reuses most functions that are part of - EC_GFp_simple_method, but uses Montgomery arithmetic. - - [Bodo Moeller; point addition and point doubling - implementation directly derived from source code provided by - Lenka Fibikova ] - - *) Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h, - crypto/ec/ec_lib.c): - - Curves are EC_GROUP objects (with an optional group generator) - based on EC_METHODs that are built into the library. - - Points are EC_POINT objects based on EC_GROUP objects. - - Most of the framework would be able to handle curves over arbitrary - finite fields, but as there are no obvious types for fields other - than GF(p), some functions are limited to that for now. - [Bodo Moeller] - - *) Add the -HTTP option to s_server. It is similar to -WWW, but requires - that the file contains a complete HTTP response. - [Richard Levitte] - - *) Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl - change the def and num file printf format specifier from "%-40sXXX" - to "%-39s XXX". The latter will always guarantee a space after the - field while the former will cause them to run together if the field - is 40 of more characters long. - [Steve Henson] - - *) Constify the cipher and digest 'method' functions and structures - and modify related functions to take constant EVP_MD and EVP_CIPHER - pointers. - [Steve Henson] - - *) Hide BN_CTX structure details in bn_lcl.h instead of publishing them - in . Also further increase BN_CTX_NUM to 32. - [Bodo Moeller] - - *) Modify EVP_Digest*() routines so they now return values. Although the - internal software routines can never fail additional hardware versions - might. - [Steve Henson] - - *) Clean up crypto/err/err.h and change some error codes to avoid conflicts: - - Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7 - (= ERR_R_PKCS7_LIB); it is now 64 instead of 32. - - ASN1 error codes - ERR_R_NESTED_ASN1_ERROR - ... - ERR_R_MISSING_ASN1_EOS - were 4 .. 9, conflicting with - ERR_LIB_RSA (= ERR_R_RSA_LIB) - ... - ERR_LIB_PEM (= ERR_R_PEM_LIB). - They are now 58 .. 63 (i.e., just below ERR_R_FATAL). - - Add new error code 'ERR_R_INTERNAL_ERROR'. - [Bodo Moeller] - - *) Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock - suffices. - [Bodo Moeller] - - *) New option '-subj arg' for 'openssl req' and 'openssl ca'. This - sets the subject name for a new request or supersedes the - subject name in a given request. Formats that can be parsed are - 'CN=Some Name, OU=myOU, C=IT' - and - 'CN=Some Name/OU=myOU/C=IT'. - - Add options '-batch' and '-verbose' to 'openssl req'. - [Massimiliano Pala ] - - *) Introduce the possibility to access global variables through - functions on platform were that's the best way to handle exporting - global variables in shared libraries. To enable this functionality, - one must configure with "EXPORT_VAR_AS_FN" or defined the C macro - "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter - is normally done by Configure or something similar). - - To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL - in the source file (foo.c) like this: - - OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1; - OPENSSL_IMPLEMENT_GLOBAL(double,bar); - - To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL - and OPENSSL_GLOBAL_REF in the header file (foo.h) like this: - - OPENSSL_DECLARE_GLOBAL(int,foo); - #define foo OPENSSL_GLOBAL_REF(foo) - OPENSSL_DECLARE_GLOBAL(double,bar); - #define bar OPENSSL_GLOBAL_REF(bar) - - The #defines are very important, and therefore so is including the - header file everywhere where the defined globals are used. - - The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition - of ASN.1 items, but that structure is a bit different. - - The largest change is in util/mkdef.pl which has been enhanced with - better and easier to understand logic to choose which symbols should - go into the Windows .def files as well as a number of fixes and code - cleanup (among others, algorithm keywords are now sorted - lexicographically to avoid constant rewrites). - [Richard Levitte] - - *) In BN_div() keep a copy of the sign of 'num' before writing the - result to 'rm' because if rm==num the value will be overwritten - and produce the wrong result if 'num' is negative: this caused - problems with BN_mod() and BN_nnmod(). - [Steve Henson] - - *) Function OCSP_request_verify(). This checks the signature on an - OCSP request and verifies the signer certificate. The signer - certificate is just checked for a generic purpose and OCSP request - trust settings. - [Steve Henson] - - *) Add OCSP_check_validity() function to check the validity of OCSP - responses. OCSP responses are prepared in real time and may only - be a few seconds old. Simply checking that the current time lies - between thisUpdate and nextUpdate max reject otherwise valid responses - caused by either OCSP responder or client clock inaccuracy. Instead - we allow thisUpdate and nextUpdate to fall within a certain period of - the current time. The age of the response can also optionally be - checked. Two new options -validity_period and -status_age added to - ocsp utility. - [Steve Henson] - - *) If signature or public key algorithm is unrecognized print out its - OID rather that just UNKNOWN. - [Steve Henson] - - *) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and - OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate - ID to be generated from the issuer certificate alone which can then be - passed to OCSP_id_issuer_cmp(). - [Steve Henson] - - *) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new - ASN1 modules to export functions returning ASN1_ITEM pointers - instead of the ASN1_ITEM structures themselves. This adds several - new macros which allow the underlying ASN1 function/structure to - be accessed transparently. As a result code should not use ASN1_ITEM - references directly (such as &X509_it) but instead use the relevant - macros (such as ASN1_ITEM_rptr(X509)). This option is to allow - use of the new ASN1 code on platforms where exporting structures - is problematical (for example in shared libraries) but exporting - functions returning pointers to structures is not. - [Steve Henson] - - *) Add support for overriding the generation of SSL/TLS session IDs. - These callbacks can be registered either in an SSL_CTX or per SSL. - The purpose of this is to allow applications to control, if they wish, - the arbitrary values chosen for use as session IDs, particularly as it - can be useful for session caching in multiple-server environments. A - command-line switch for testing this (and any client code that wishes - to use such a feature) has been added to "s_server". - [Geoff Thorpe, Lutz Jaenicke] - - *) Modify mkdef.pl to recognise and parse preprocessor conditionals - of the form '#if defined(...) || defined(...) || ...' and - '#if !defined(...) && !defined(...) && ...'. This also avoids - the growing number of special cases it was previously handling. - [Richard Levitte] - - *) Make all configuration macros available for application by making - sure they are available in opensslconf.h, by giving them names starting - with "OPENSSL_" to avoid conflicts with other packages and by making - sure e_os2.h will cover all platform-specific cases together with - opensslconf.h. - Additionally, it is now possible to define configuration/platform- - specific names (called "system identities"). In the C code, these - are prefixed with "OPENSSL_SYSNAME_". e_os2.h will create another - macro with the name beginning with "OPENSSL_SYS_", which is determined - from "OPENSSL_SYSNAME_*" or compiler-specific macros depending on - what is available. - [Richard Levitte] - - *) New option -set_serial to 'req' and 'x509' this allows the serial - number to use to be specified on the command line. Previously self - signed certificates were hard coded with serial number 0 and the - CA options of 'x509' had to use a serial number in a file which was - auto incremented. - [Steve Henson] - - *) New options to 'ca' utility to support V2 CRL entry extensions. - Currently CRL reason, invalidity date and hold instruction are - supported. Add new CRL extensions to V3 code and some new objects. - [Steve Henson] - - *) New function EVP_CIPHER_CTX_set_padding() this is used to - disable standard block padding (aka PKCS#5 padding) in the EVP - API, which was previously mandatory. This means that the data is - not padded in any way and so the total length much be a multiple - of the block size, otherwise an error occurs. - [Steve Henson] - - *) Initial (incomplete) OCSP SSL support. - [Steve Henson] - - *) New function OCSP_parse_url(). This splits up a URL into its host, - port and path components: primarily to parse OCSP URLs. New -url - option to ocsp utility. - [Steve Henson] - - *) New nonce behavior. The return value of OCSP_check_nonce() now - reflects the various checks performed. Applications can decide - whether to tolerate certain situations such as an absent nonce - in a response when one was present in a request: the ocsp application - just prints out a warning. New function OCSP_add1_basic_nonce() - this is to allow responders to include a nonce in a response even if - the request is nonce-less. - [Steve Henson] - - *) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are - skipped when using openssl x509 multiple times on a single input file, - e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) ] - - *) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates - passed by the function are trusted implicitly. If any of them signed the - response then it is assumed to be valid and is not verified. - [Steve Henson] - - *) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT - to data. This was previously part of the PKCS7 ASN1 code. This - was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures. - [Steve Henson, reported by Kenneth R. Robinette - ] - - *) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1 - routines: without these tracing memory leaks is very painful. - Fix leaks in PKCS12 and PKCS7 routines. - [Steve Henson] - - *) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new(). - Previously it initialised the 'type' argument to V_ASN1_UTCTIME which - effectively meant GeneralizedTime would never be used. Now it - is initialised to -1 but X509_time_adj() now has to check the value - and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or - V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime. - [Steve Henson, reported by Kenneth R. Robinette - ] - - *) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously - result in a zero length in the ASN1_INTEGER structure which was - not consistent with the structure when d2i_ASN1_INTEGER() was used - and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER() - to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER() - where it did not print out a minus for negative ASN1_INTEGER. - [Steve Henson] - - *) Add summary printout to ocsp utility. The various functions which - convert status values to strings have been renamed to: - OCSP_response_status_str(), OCSP_cert_status_str() and - OCSP_crl_reason_str() and are no longer static. New options - to verify nonce values and to disable verification. OCSP response - printout format cleaned up. - [Steve Henson] - - *) Add additional OCSP certificate checks. These are those specified - in RFC2560. This consists of two separate checks: the CA of the - certificate being checked must either be the OCSP signer certificate - or the issuer of the OCSP signer certificate. In the latter case the - OCSP signer certificate must contain the OCSP signing extended key - usage. This check is performed by attempting to match the OCSP - signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash - in the OCSP_CERTID structures of the response. - [Steve Henson] - - *) Initial OCSP certificate verification added to OCSP_basic_verify() - and related routines. This uses the standard OpenSSL certificate - verify routines to perform initial checks (just CA validity) and - to obtain the certificate chain. Then additional checks will be - performed on the chain. Currently the root CA is checked to see - if it is explicitly trusted for OCSP signing. This is used to set - a root CA as a global signing root: that is any certificate that - chains to that CA is an acceptable OCSP signing certificate. - [Steve Henson] - - *) New '-extfile ...' option to 'openssl ca' for reading X.509v3 - extensions from a separate configuration file. - As when reading extensions from the main configuration file, - the '-extensions ...' option may be used for specifying the - section to use. - [Massimiliano Pala ] - - *) New OCSP utility. Allows OCSP requests to be generated or - read. The request can be sent to a responder and the output - parsed, outputed or printed in text form. Not complete yet: - still needs to check the OCSP response validity. - [Steve Henson] - - *) New subcommands for 'openssl ca': - 'openssl ca -status ' prints the status of the cert with - the given serial number (according to the index file). - 'openssl ca -updatedb' updates the expiry status of certificates - in the index file. - [Massimiliano Pala ] - - *) New '-newreq-nodes' command option to CA.pl. This is like - '-newreq', but calls 'openssl req' with the '-nodes' option - so that the resulting key is not encrypted. - [Damien Miller ] - - *) New configuration for the GNU Hurd. - [Jonathan Bartlett via Richard Levitte] - - *) Initial code to implement OCSP basic response verify. This - is currently incomplete. Currently just finds the signer's - certificate and verifies the signature on the response. - [Steve Henson] - - *) New SSLeay_version code SSLEAY_DIR to determine the compiled-in - value of OPENSSLDIR. This is available via the new '-d' option - to 'openssl version', and is also included in 'openssl version -a'. - [Bodo Moeller] - - *) Allowing defining memory allocation callbacks that will be given - file name and line number information in additional arguments - (a const char* and an int). The basic functionality remains, as - well as the original possibility to just replace malloc(), - realloc() and free() by functions that do not know about these - additional arguments. To register and find out the current - settings for extended allocation functions, the following - functions are provided: - - CRYPTO_set_mem_ex_functions - CRYPTO_set_locked_mem_ex_functions - CRYPTO_get_mem_ex_functions - CRYPTO_get_locked_mem_ex_functions - - These work the same way as CRYPTO_set_mem_functions and friends. - CRYPTO_get_[locked_]mem_functions now writes 0 where such an - extended allocation function is enabled. - Similarly, CRYPTO_get_[locked_]mem_ex_functions writes 0 where - a conventional allocation function is enabled. - [Richard Levitte, Bodo Moeller] - - *) Finish off removing the remaining LHASH function pointer casts. - There should no longer be any prototype-casting required when using - the LHASH abstraction, and any casts that remain are "bugs". See - the callback types and macros at the head of lhash.h for details - (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example). - [Geoff Thorpe] - - *) Add automatic query of EGD sockets in RAND_poll() for the unix variant. - If /dev/[u]random devices are not available or do not return enough - entropy, EGD style sockets (served by EGD or PRNGD) will automatically - be queried. - The locations /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, and - /etc/entropy will be queried once each in this sequence, querying stops - when enough entropy was collected without querying more sockets. - [Lutz Jaenicke] - - *) Change the Unix RAND_poll() variant to be able to poll several - random devices, as specified by DEVRANDOM, until a sufficient amount - of data has been collected. We spend at most 10 ms on each file - (select timeout) and read in non-blocking mode. DEVRANDOM now - defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom" - (previously it was just the string "/dev/urandom"), so on typical - platforms the 10 ms delay will never occur. - Also separate out the Unix variant to its own file, rand_unix.c. - For VMS, there's a currently-empty rand_vms.c. - [Richard Levitte] - - *) Move OCSP client related routines to ocsp_cl.c. These - provide utility functions which an application needing - to issue a request to an OCSP responder and analyse the - response will typically need: as opposed to those which an - OCSP responder itself would need which will be added later. - - OCSP_request_sign() signs an OCSP request with an API similar - to PKCS7_sign(). OCSP_response_status() returns status of OCSP - response. OCSP_response_get1_basic() extracts basic response - from response. OCSP_resp_find_status(): finds and extracts status - information from an OCSP_CERTID structure (which will be created - when the request structure is built). These are built from lower - level functions which work on OCSP_SINGLERESP structures but - won't normally be used unless the application wishes to examine - extensions in the OCSP response for example. - - Replace nonce routines with a pair of functions. - OCSP_request_add1_nonce() adds a nonce value and optionally - generates a random value. OCSP_check_nonce() checks the - validity of the nonce in an OCSP response. - [Steve Henson] - - *) Change function OCSP_request_add() to OCSP_request_add0_id(). - This doesn't copy the supplied OCSP_CERTID and avoids the - need to free up the newly created id. Change return type - to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure. - This can then be used to add extensions to the request. - Deleted OCSP_request_new(), since most of its functionality - is now in OCSP_REQUEST_new() (and the case insensitive name - clash) apart from the ability to set the request name which - will be added elsewhere. - [Steve Henson] - - *) Update OCSP API. Remove obsolete extensions argument from - various functions. Extensions are now handled using the new - OCSP extension code. New simple OCSP HTTP function which - can be used to send requests and parse the response. - [Steve Henson] - - *) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new - ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN - uses the special reorder version of SET OF to sort the attributes - and reorder them to match the encoded order. This resolves a long - standing problem: a verify on a PKCS7 structure just after signing - it used to fail because the attribute order did not match the - encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes: - it uses the received order. This is necessary to tolerate some broken - software that does not order SET OF. This is handled by encoding - as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class) - to produce the required SET OF. - [Steve Henson] - - *) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and - OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header - files to get correct declarations of the ASN.1 item variables. - [Richard Levitte] - - *) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many - PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs: - asn1_check_tlen() would sometimes attempt to use 'ctx' when it was - NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i(). - New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant - ASN1_ITEM and no wrapper functions. - [Steve Henson] - - *) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These - replace the old function pointer based I/O routines. Change most of - the *_d2i_bio() and *_d2i_fp() functions to use these. - [Steve Henson] - - *) Enhance mkdef.pl to be more accepting about spacing in C preprocessor - lines, recognice more "algorithms" that can be deselected, and make - it complain about algorithm deselection that isn't recognised. - [Richard Levitte] - - *) New ASN1 functions to handle dup, sign, verify, digest, pack and - unpack operations in terms of ASN1_ITEM. Modify existing wrappers - to use new functions. Add NO_ASN1_OLD which can be set to remove - some old style ASN1 functions: this can be used to determine if old - code will still work when these eventually go away. - [Steve Henson] - - *) New extension functions for OCSP structures, these follow the - same conventions as certificates and CRLs. - [Steve Henson] - - *) New function X509V3_add1_i2d(). This automatically encodes and - adds an extension. Its behaviour can be customised with various - flags to append, replace or delete. Various wrappers added for - certificates and CRLs. - [Steve Henson] - - *) Fix to avoid calling the underlying ASN1 print routine when - an extension cannot be parsed. Correct a typo in the - OCSP_SERVICELOC extension. Tidy up print OCSP format. - [Steve Henson] - - *) Make mkdef.pl parse some of the ASN1 macros and add appropriate - entries for variables. - [Steve Henson] - - *) Add functionality to apps/openssl.c for detecting locking - problems: As the program is single-threaded, all we have - to do is register a locking callback using an array for - storing which locks are currently held by the program. - [Bodo Moeller] - - *) Use a lock around the call to CRYPTO_get_ex_new_index() in - SSL_get_ex_data_X509_STORE_idx(), which is used in - ssl_verify_cert_chain() and thus can be called at any time - during TLS/SSL handshakes so that thread-safety is essential. - Unfortunately, the ex_data design is not at all suited - for multi-threaded use, so it probably should be abolished. - [Bodo Moeller] - - *) Added Broadcom "ubsec" ENGINE to OpenSSL. - [Broadcom, tweaked and integrated by Geoff Thorpe] - - *) Move common extension printing code to new function - X509V3_print_extensions(). Reorganise OCSP print routines and - implement some needed OCSP ASN1 functions. Add OCSP extensions. - [Steve Henson] - - *) New function X509_signature_print() to remove duplication in some - print routines. - [Steve Henson] - - *) Add a special meaning when SET OF and SEQUENCE OF flags are both - set (this was treated exactly the same as SET OF previously). This - is used to reorder the STACK representing the structure to match the - encoding. This will be used to get round a problem where a PKCS7 - structure which was signed could not be verified because the STACK - order did not reflect the encoded order. - [Steve Henson] - - *) Reimplement the OCSP ASN1 module using the new code. - [Steve Henson] - - *) Update the X509V3 code to permit the use of an ASN1_ITEM structure - for its ASN1 operations. The old style function pointers still exist - for now but they will eventually go away. - [Steve Henson] - - *) Merge in replacement ASN1 code from the ASN1 branch. This almost - completely replaces the old ASN1 functionality with a table driven - encoder and decoder which interprets an ASN1_ITEM structure describing - the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is - largely maintained. Almost all of the old asn1_mac.h macro based ASN1 - has also been converted to the new form. - [Steve Henson] - - *) Change BN_mod_exp_recp so that negative moduli are tolerated - (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set - so that BN_mod_exp_mont and BN_mod_exp_mont_word work - for negative moduli. - [Bodo Moeller] - - *) Fix BN_uadd and BN_usub: Always return non-negative results instead - of not touching the result's sign bit. - [Bodo Moeller] - - *) BN_div bugfix: If the result is 0, the sign (res->neg) must not be - set. - [Bodo Moeller] - - *) Changed the LHASH code to use prototypes for callbacks, and created - macros to declare and implement thin (optionally static) functions - that provide type-safety and avoid function pointer casting for the - type-specific callbacks. - [Geoff Thorpe] - - *) Added Kerberos Cipher Suites to be used with TLS, as written in - RFC 2712. - [Veers Staats , - Jeffrey Altman , via Richard Levitte] - - *) Reformat the FAQ so the different questions and answers can be divided - in sections depending on the subject. - [Richard Levitte] - - *) Have the zlib compression code load ZLIB.DLL dynamically under - Windows. - [Richard Levitte] - - *) New function BN_mod_sqrt for computing square roots modulo a prime - (using the probabilistic Tonelli-Shanks algorithm unless - p == 3 (mod 4) or p == 5 (mod 8), which are cases that can - be handled deterministically). - [Lenka Fibikova , Bodo Moeller] - - *) Make BN_mod_inverse faster by explicitly handling small quotients - in the Euclid loop. (Speed gain about 20% for small moduli [256 or - 512 bits], about 30% for larger ones [1024 or 2048 bits].) - [Bodo Moeller] - - *) New function BN_kronecker. - [Bodo Moeller] - - *) Fix BN_gcd so that it works on negative inputs; the result is - positive unless both parameters are zero. - Previously something reasonably close to an infinite loop was - possible because numbers could be growing instead of shrinking - in the implementation of Euclid's algorithm. - [Bodo Moeller] - - *) Fix BN_is_word() and BN_is_one() macros to take into account the - sign of the number in question. - - Fix BN_is_word(a,w) to work correctly for w == 0. - - The old BN_is_word(a,w) macro is now called BN_abs_is_word(a,w) - because its test if the absolute value of 'a' equals 'w'. - Note that BN_abs_is_word does *not* handle w == 0 reliably; - it exists mostly for use in the implementations of BN_is_zero(), - BN_is_one(), and BN_is_word(). - [Bodo Moeller] - - *) New function BN_swap. - [Bodo Moeller] - - *) Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that - the exponentiation functions are more likely to produce reasonable - results on negative inputs. - [Bodo Moeller] - - *) Change BN_mod_mul so that the result is always non-negative. - Previously, it could be negative if one of the factors was negative; - I don't think anyone really wanted that behaviour. - [Bodo Moeller] - - *) Move BN_mod_... functions into new file crypto/bn/bn_mod.c - (except for exponentiation, which stays in crypto/bn/bn_exp.c, - and BN_mod_mul_reciprocal, which stays in crypto/bn/bn_recp.c) - and add new functions: - - BN_nnmod - BN_mod_sqr - BN_mod_add - BN_mod_add_quick - BN_mod_sub - BN_mod_sub_quick - BN_mod_lshift1 - BN_mod_lshift1_quick - BN_mod_lshift - BN_mod_lshift_quick - - These functions always generate non-negative results. - - BN_nnmod otherwise is like BN_mod (if BN_mod computes a remainder r - such that |m| < r < 0, BN_nnmod will output rem + |m| instead). - - BN_mod_XXX_quick(r, a, [b,] m) generates the same result as - BN_mod_XXX(r, a, [b,] m, ctx), but requires that a [and b] - be reduced modulo m. - [Lenka Fibikova , Bodo Moeller] - -#if 0 - The following entry accidentally appeared in the CHANGES file - distributed with OpenSSL 0.9.7. The modifications described in - it do *not* apply to OpenSSL 0.9.7. - - *) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there - was actually never needed) and in BN_mul(). The removal in BN_mul() - required a small change in bn_mul_part_recursive() and the addition - of the functions bn_cmp_part_words(), bn_sub_part_words() and - bn_add_part_words(), which do the same thing as bn_cmp_words(), - bn_sub_words() and bn_add_words() except they take arrays with - differing sizes. - [Richard Levitte] -#endif - - *) In 'openssl passwd', verify passwords read from the terminal - unless the '-salt' option is used (which usually means that - verification would just waste user's time since the resulting - hash is going to be compared with some given password hash) - or the new '-noverify' option is used. - - This is an incompatible change, but it does not affect - non-interactive use of 'openssl passwd' (passwords on the command - line, '-stdin' option, '-in ...' option) and thus should not - cause any problems. - [Bodo Moeller] - - *) Remove all references to RSAref, since there's no more need for it. - [Richard Levitte] - - *) Make DSO load along a path given through an environment variable - (SHLIB_PATH) with shl_load(). - [Richard Levitte] - - *) Constify the ENGINE code as a result of BIGNUM constification. - Also constify the RSA code and most things related to it. In a - few places, most notable in the depth of the ASN.1 code, ugly - casts back to non-const were required (to be solved at a later - time) - [Richard Levitte] - - *) Make it so the openssl application has all engines loaded by default. - [Richard Levitte] - - *) Constify the BIGNUM routines a little more. - [Richard Levitte] - - *) Add the following functions: - - ENGINE_load_cswift() - ENGINE_load_chil() - ENGINE_load_atalla() - ENGINE_load_nuron() - ENGINE_load_builtin_engines() - - That way, an application can itself choose if external engines that - are built-in in OpenSSL shall ever be used or not. The benefit is - that applications won't have to be linked with libdl or other dso - libraries unless it's really needed. - - Changed 'openssl engine' to load all engines on demand. - Changed the engine header files to avoid the duplication of some - declarations (they differed!). - [Richard Levitte] - - *) 'openssl engine' can now list capabilities. - [Richard Levitte] - - *) Better error reporting in 'openssl engine'. - [Richard Levitte] - - *) Never call load_dh_param(NULL) in s_server. - [Bodo Moeller] - - *) Add engine application. It can currently list engines by name and - identity, and test if they are actually available. - [Richard Levitte] - - *) Improve RPM specification file by forcing symbolic linking and making - sure the installed documentation is also owned by root.root. - [Damien Miller ] - - *) Give the OpenSSL applications more possibilities to make use of - keys (public as well as private) handled by engines. - [Richard Levitte] - - *) Add OCSP code that comes from CertCo. - [Richard Levitte] - - *) Add VMS support for the Rijndael code. - [Richard Levitte] - - *) Added untested support for Nuron crypto accelerator. - [Ben Laurie] - - *) Add support for external cryptographic devices. This code was - previously distributed separately as the "engine" branch. - [Geoff Thorpe, Richard Levitte] - - *) Rework the filename-translation in the DSO code. It is now possible to - have far greater control over how a "name" is turned into a filename - depending on the operating environment and any oddities about the - different shared library filenames on each system. - [Geoff Thorpe] - - *) Support threads on FreeBSD-elf in Configure. - [Richard Levitte] - - *) Fix for SHA1 assembly problem with MASM: it produces - warnings about corrupt line number information when assembling - with debugging information. This is caused by the overlapping - of two sections. - [Bernd Matthes , Steve Henson] - - *) NCONF changes. - NCONF_get_number() has no error checking at all. As a replacement, - NCONF_get_number_e() is defined (_e for "error checking") and is - promoted strongly. The old NCONF_get_number is kept around for - binary backward compatibility. - Make it possible for methods to load from something other than a BIO, - by providing a function pointer that is given a name instead of a BIO. - For example, this could be used to load configuration data from an - LDAP server. - [Richard Levitte] - - *) Fix for non blocking accept BIOs. Added new I/O special reason - BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs - with non blocking I/O was not possible because no retry code was - implemented. Also added new SSL code SSL_WANT_ACCEPT to cover - this case. - [Steve Henson] - - *) Added the beginnings of Rijndael support. - [Ben Laurie] - - *) Fix for bug in DirectoryString mask setting. Add support for - X509_NAME_print_ex() in 'req' and X509_print_ex() function - to allow certificate printing to more controllable, additional - 'certopt' option to 'x509' to allow new printing options to be - set. - [Steve Henson] - - *) Clean old EAY MD5 hack from e_os.h. - [Richard Levitte] - - Changes between 0.9.6l and 0.9.6m [17 Mar 2004] - - *) Fix null-pointer assignment in do_change_cipher_spec() revealed - by using the Codenomicon TLS Test Tool (CVE-2004-0079) - [Joe Orton, Steve Henson] - - Changes between 0.9.6k and 0.9.6l [04 Nov 2003] - - *) Fix additional bug revealed by the NISCC test suite: - - Stop bug triggering large recursion when presented with - certain ASN.1 tags (CVE-2003-0851) - [Steve Henson] - - Changes between 0.9.6j and 0.9.6k [30 Sep 2003] - - *) Fix various bugs revealed by running the NISCC test suite: - - Stop out of bounds reads in the ASN1 code when presented with - invalid tags (CVE-2003-0543 and CVE-2003-0544). - - If verify callback ignores invalid public key errors don't try to check - certificate signature with the NULL public key. - - [Steve Henson] - - *) In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate - if the server requested one: as stated in TLS 1.0 and SSL 3.0 - specifications. - [Steve Henson] - - *) In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional - extra data after the compression methods not only for TLS 1.0 - but also for SSL 3.0 (as required by the specification). - [Bodo Moeller; problem pointed out by Matthias Loepfe] - - *) Change X509_certificate_type() to mark the key as exported/exportable - when it's 512 *bits* long, not 512 bytes. - [Richard Levitte] - - Changes between 0.9.6i and 0.9.6j [10 Apr 2003] - - *) Countermeasure against the Klima-Pokorny-Rosa extension of - Bleichbacher's attack on PKCS #1 v1.5 padding: treat - a protocol version number mismatch like a decryption error - in ssl3_get_client_key_exchange (ssl/s3_srvr.c). - [Bodo Moeller] - - *) Turn on RSA blinding by default in the default implementation - to avoid a timing attack. Applications that don't want it can call - RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING. - They would be ill-advised to do so in most cases. - [Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller] - - *) Change RSA blinding code so that it works when the PRNG is not - seeded (in this case, the secret RSA exponent is abused as - an unpredictable seed -- if it is not unpredictable, there - is no point in blinding anyway). Make RSA blinding thread-safe - by remembering the creator's thread ID in rsa->blinding and - having all other threads use local one-time blinding factors - (this requires more computation than sharing rsa->blinding, but - avoids excessive locking; and if an RSA object is not shared - between threads, blinding will still be very fast). - [Bodo Moeller] - - Changes between 0.9.6h and 0.9.6i [19 Feb 2003] - - *) In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked - via timing by performing a MAC computation even if incorrrect - block cipher padding has been found. This is a countermeasure - against active attacks where the attacker has to distinguish - between bad padding and a MAC verification error. (CVE-2003-0078) - - [Bodo Moeller; problem pointed out by Brice Canvel (EPFL), - Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and - Martin Vuagnoux (EPFL, Ilion)] - - Changes between 0.9.6g and 0.9.6h [5 Dec 2002] - - *) New function OPENSSL_cleanse(), which is used to cleanse a section of - memory from it's contents. This is done with a counter that will - place alternating values in each byte. This can be used to solve - two issues: 1) the removal of calls to memset() by highly optimizing - compilers, and 2) cleansing with other values than 0, since those can - be read through on certain media, for example a swap space on disk. - [Geoff Thorpe] - - *) Bugfix: client side session caching did not work with external caching, - because the session->cipher setting was not restored when reloading - from the external cache. This problem was masked, when - SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set. - (Found by Steve Haslam .) - [Lutz Jaenicke] - - *) Fix client_certificate (ssl/s2_clnt.c): The permissible total - length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33. - [Zeev Lieber ] - - *) Undo an undocumented change introduced in 0.9.6e which caused - repeated calls to OpenSSL_add_all_ciphers() and - OpenSSL_add_all_digests() to be ignored, even after calling - EVP_cleanup(). - [Richard Levitte] - - *) Change the default configuration reader to deal with last line not - being properly terminated. - [Richard Levitte] - - *) Change X509_NAME_cmp() so it applies the special rules on handling - DN values that are of type PrintableString, as well as RDNs of type - emailAddress where the value has the type ia5String. - [stefank@valicert.com via Richard Levitte] - - *) Add a SSL_SESS_CACHE_NO_INTERNAL_STORE flag to take over half - the job SSL_SESS_CACHE_NO_INTERNAL_LOOKUP was inconsistently - doing, define a new flag (SSL_SESS_CACHE_NO_INTERNAL) to be - the bitwise-OR of the two for use by the majority of applications - wanting this behaviour, and update the docs. The documented - behaviour and actual behaviour were inconsistent and had been - changing anyway, so this is more a bug-fix than a behavioural - change. - [Geoff Thorpe, diagnosed by Nadav Har'El] - - *) Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c - (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes). - [Bodo Moeller] - - *) Fix initialization code race conditions in - SSLv23_method(), SSLv23_client_method(), SSLv23_server_method(), - SSLv2_method(), SSLv2_client_method(), SSLv2_server_method(), - SSLv3_method(), SSLv3_client_method(), SSLv3_server_method(), - TLSv1_method(), TLSv1_client_method(), TLSv1_server_method(), - ssl2_get_cipher_by_char(), - ssl3_get_cipher_by_char(). - [Patrick McCormick , Bodo Moeller] - - *) Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after - the cached sessions are flushed, as the remove_cb() might use ex_data - contents. Bug found by Sam Varshavchik - (see [openssl.org #212]). - [Geoff Thorpe, Lutz Jaenicke] - - *) Fix typo in OBJ_txt2obj which incorrectly passed the content - length, instead of the encoding length to d2i_ASN1_OBJECT. - [Steve Henson] - - Changes between 0.9.6f and 0.9.6g [9 Aug 2002] - - *) [In 0.9.6g-engine release:] - Fix crypto/engine/vendor_defns/cswift.h for WIN32 (use '_stdcall'). - [Lynn Gazis ] - - Changes between 0.9.6e and 0.9.6f [8 Aug 2002] - - *) Fix ASN1 checks. Check for overflow by comparing with LONG_MAX - and get fix the header length calculation. - [Florian Weimer , - Alon Kantor (and others), - Steve Henson] - - *) Use proper error handling instead of 'assertions' in buffer - overflow checks added in 0.9.6e. This prevents DoS (the - assertions could call abort()). - [Arne Ansper , Bodo Moeller] - - Changes between 0.9.6d and 0.9.6e [30 Jul 2002] - - *) Add various sanity checks to asn1_get_length() to reject - the ASN1 length bytes if they exceed sizeof(long), will appear - negative or the content length exceeds the length of the - supplied buffer. - [Steve Henson, Adi Stav , James Yonan ] - - *) Fix cipher selection routines: ciphers without encryption had no flags - for the cipher strength set and where therefore not handled correctly - by the selection routines (PR #130). - [Lutz Jaenicke] - - *) Fix EVP_dsa_sha macro. - [Nils Larsch] - - *) New option - SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS - for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure - that was added in OpenSSL 0.9.6d. - - As the countermeasure turned out to be incompatible with some - broken SSL implementations, the new option is part of SSL_OP_ALL. - SSL_OP_ALL is usually employed when compatibility with weird SSL - implementations is desired (e.g. '-bugs' option to 's_client' and - 's_server'), so the new option is automatically set in many - applications. - [Bodo Moeller] - - *) Changes in security patch: - - Changes marked "(CHATS)" were sponsored by the Defense Advanced - Research Projects Agency (DARPA) and Air Force Research Laboratory, - Air Force Materiel Command, USAF, under agreement number - F30602-01-2-0537. - - *) Add various sanity checks to asn1_get_length() to reject - the ASN1 length bytes if they exceed sizeof(long), will appear - negative or the content length exceeds the length of the - supplied buffer. (CVE-2002-0659) - [Steve Henson, Adi Stav , James Yonan ] - - *) Assertions for various potential buffer overflows, not known to - happen in practice. - [Ben Laurie (CHATS)] - - *) Various temporary buffers to hold ASCII versions of integers were - too small for 64 bit platforms. (CVE-2002-0655) - [Matthew Byng-Maddick and Ben Laurie (CHATS)> - - *) Remote buffer overflow in SSL3 protocol - an attacker could - supply an oversized session ID to a client. (CVE-2002-0656) - [Ben Laurie (CHATS)] - - *) Remote buffer overflow in SSL2 protocol - an attacker could - supply an oversized client master key. (CVE-2002-0656) - [Ben Laurie (CHATS)] - - Changes between 0.9.6c and 0.9.6d [9 May 2002] - - *) Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not - encoded as NULL) with id-dsa-with-sha1. - [Nils Larsch ; problem pointed out by Bodo Moeller] - - *) Check various X509_...() return values in apps/req.c. - [Nils Larsch ] - - *) Fix BASE64 decode (EVP_DecodeUpdate) for data with CR/LF ended lines: - an end-of-file condition would erroneously be flagged, when the CRLF - was just at the end of a processed block. The bug was discovered when - processing data through a buffering memory BIO handing the data to a - BASE64-decoding BIO. Bug fund and patch submitted by Pavel Tsekov - and Nedelcho Stanev. - [Lutz Jaenicke] - - *) Implement a countermeasure against a vulnerability recently found - in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment - before application data chunks to avoid the use of known IVs - with data potentially chosen by the attacker. - [Bodo Moeller] - - *) Fix length checks in ssl3_get_client_hello(). - [Bodo Moeller] - - *) TLS/SSL library bugfix: use s->s3->in_read_app_data differently - to prevent ssl3_read_internal() from incorrectly assuming that - ssl3_read_bytes() found application data while handshake - processing was enabled when in fact s->s3->in_read_app_data was - merely automatically cleared during the initial handshake. - [Bodo Moeller; problem pointed out by Arne Ansper ] - - *) Fix object definitions for Private and Enterprise: they were not - recognized in their shortname (=lowercase) representation. Extend - obj_dat.pl to issue an error when using undefined keywords instead - of silently ignoring the problem (Svenning Sorensen - ). - [Lutz Jaenicke] - - *) Fix DH_generate_parameters() so that it works for 'non-standard' - generators, i.e. generators other than 2 and 5. (Previously, the - code did not properly initialise the 'add' and 'rem' values to - BN_generate_prime().) - - In the new general case, we do not insist that 'generator' is - actually a primitive root: This requirement is rather pointless; - a generator of the order-q subgroup is just as good, if not - better. - [Bodo Moeller] - - *) Map new X509 verification errors to alerts. Discovered and submitted by - Tom Wu . - [Lutz Jaenicke] - - *) Fix ssl3_pending() (ssl/s3_lib.c) to prevent SSL_pending() from - returning non-zero before the data has been completely received - when using non-blocking I/O. - [Bodo Moeller; problem pointed out by John Hughes] - - *) Some of the ciphers missed the strength entry (SSL_LOW etc). - [Ben Laurie, Lutz Jaenicke] - - *) Fix bug in SSL_clear(): bad sessions were not removed (found by - Yoram Zahavi ). - [Lutz Jaenicke] - - *) Add information about CygWin 1.3 and on, and preserve proper - configuration for the versions before that. - [Corinna Vinschen and Richard Levitte] - - *) Make removal from session cache (SSL_CTX_remove_session()) more robust: - check whether we deal with a copy of a session and do not delete from - the cache in this case. Problem reported by "Izhar Shoshani Levi" - . - [Lutz Jaenicke] - - *) Do not store session data into the internal session cache, if it - is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP - flag is set). Proposed by Aslam . - [Lutz Jaenicke] - - *) Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested - value is 0. - [Richard Levitte] - - *) [In 0.9.6d-engine release:] - Fix a crashbug and a logic bug in hwcrhk_load_pubkey(). - [Toomas Kiisk via Richard Levitte] - - *) Add the configuration target linux-s390x. - [Neale Ferguson via Richard Levitte] - - *) The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of - ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag - variable as an indication that a ClientHello message has been - received. As the flag value will be lost between multiple - invocations of ssl3_accept when using non-blocking I/O, the - function may not be aware that a handshake has actually taken - place, thus preventing a new session from being added to the - session cache. - - To avoid this problem, we now set s->new_session to 2 instead of - using a local variable. - [Lutz Jaenicke, Bodo Moeller] - - *) Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c) - if the SSL_R_LENGTH_MISMATCH error is detected. - [Geoff Thorpe, Bodo Moeller] - - *) New 'shared_ldflag' column in Configure platform table. - [Richard Levitte] - - *) Fix EVP_CIPHER_mode macro. - ["Dan S. Camper" ] - - *) Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown - type, we must throw them away by setting rr->length to 0. - [D P Chang ] - - Changes between 0.9.6b and 0.9.6c [21 dec 2001] - - *) Fix BN_rand_range bug pointed out by Dominikus Scherkl - . (The previous implementation - worked incorrectly for those cases where range = 10..._2 and - 3*range is two bits longer than range.) - [Bodo Moeller] - - *) Only add signing time to PKCS7 structures if it is not already - present. - [Steve Henson] - - *) Fix crypto/objects/objects.h: "ld-ce" should be "id-ce", - OBJ_ld_ce should be OBJ_id_ce. - Also some ip-pda OIDs in crypto/objects/objects.txt were - incorrect (cf. RFC 3039). - [Matt Cooper, Frederic Giudicelli, Bodo Moeller] - - *) Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid() - returns early because it has nothing to do. - [Andy Schneider ] - - *) [In 0.9.6c-engine release:] - Fix mutex callback return values in crypto/engine/hw_ncipher.c. - [Andy Schneider ] - - *) [In 0.9.6c-engine release:] - Add support for Cryptographic Appliance's keyserver technology. - (Use engine 'keyclient') - [Cryptographic Appliances and Geoff Thorpe] - - *) Add a configuration entry for OS/390 Unix. The C compiler 'c89' - is called via tools/c89.sh because arguments have to be - rearranged (all '-L' options must appear before the first object - modules). - [Richard Shapiro ] - - *) [In 0.9.6c-engine release:] - Add support for Broadcom crypto accelerator cards, backported - from 0.9.7. - [Broadcom, Nalin Dahyabhai , Mark Cox] - - *) [In 0.9.6c-engine release:] - Add support for SureWare crypto accelerator cards from - Baltimore Technologies. (Use engine 'sureware') - [Baltimore Technologies and Mark Cox] - - *) [In 0.9.6c-engine release:] - Add support for crypto accelerator cards from Accelerated - Encryption Processing, www.aep.ie. (Use engine 'aep') - [AEP Inc. and Mark Cox] - - *) Add a configuration entry for gcc on UnixWare. - [Gary Benson ] - - *) Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake - messages are stored in a single piece (fixed-length part and - variable-length part combined) and fix various bugs found on the way. - [Bodo Moeller] - - *) Disable caching in BIO_gethostbyname(), directly use gethostbyname() - instead. BIO_gethostbyname() does not know what timeouts are - appropriate, so entries would stay in cache even when they have - become invalid. - [Bodo Moeller; problem pointed out by Rich Salz - - *) Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when - faced with a pathologically small ClientHello fragment that does - not contain client_version: Instead of aborting with an error, - simply choose the highest available protocol version (i.e., - TLS 1.0 unless it is disabled). In practice, ClientHello - messages are never sent like this, but this change gives us - strictly correct behaviour at least for TLS. - [Bodo Moeller] - - *) Fix SSL handshake functions and SSL_clear() such that SSL_clear() - never resets s->method to s->ctx->method when called from within - one of the SSL handshake functions. - [Bodo Moeller; problem pointed out by Niko Baric] - - *) In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert - (sent using the client's version number) if client_version is - smaller than the protocol version in use. Also change - ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if - the client demanded SSL 3.0 but only TLS 1.0 is enabled; then - the client will at least see that alert. - [Bodo Moeller] - - *) Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation - correctly. - [Bodo Moeller] - - *) Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a - client receives HelloRequest while in a handshake. - [Bodo Moeller; bug noticed by Andy Schneider ] - - *) Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C - should end in 'break', not 'goto end' which circumvents various - cleanups done in state SSL_ST_OK. But session related stuff - must be disabled for SSL_ST_OK in the case that we just sent a - HelloRequest. - - Also avoid some overhead by not calling ssl_init_wbio_buffer() - before just sending a HelloRequest. - [Bodo Moeller, Eric Rescorla ] - - *) Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't - reveal whether illegal block cipher padding was found or a MAC - verification error occurred. (Neither SSLerr() codes nor alerts - are directly visible to potential attackers, but the information - may leak via logfiles.) - - Similar changes are not required for the SSL 2.0 implementation - because the number of padding bytes is sent in clear for SSL 2.0, - and the extra bytes are just ignored. However ssl/s2_pkt.c - failed to verify that the purported number of padding bytes is in - the legal range. - [Bodo Moeller] - - *) Add OpenUNIX-8 support including shared libraries - (Boyd Lynn Gerber ). - [Lutz Jaenicke] - - *) Improve RSA_padding_check_PKCS1_OAEP() check again to avoid - 'wristwatch attack' using huge encoding parameters (cf. - James H. Manger's CRYPTO 2001 paper). Note that the - RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use - encoding parameters and hence was not vulnerable. - [Bodo Moeller] - - *) BN_sqr() bug fix. - [Ulf Möller, reported by Jim Ellis ] - - *) Rabin-Miller test analyses assume uniformly distributed witnesses, - so use BN_pseudo_rand_range() instead of using BN_pseudo_rand() - followed by modular reduction. - [Bodo Moeller; pointed out by Adam Young ] - - *) Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range() - equivalent based on BN_pseudo_rand() instead of BN_rand(). - [Bodo Moeller] - - *) s3_srvr.c: allow sending of large client certificate lists (> 16 kB). - This function was broken, as the check for a new client hello message - to handle SGC did not allow these large messages. - (Tracked down by "Douglas E. Engert" .) - [Lutz Jaenicke] - - *) Add alert descriptions for TLSv1 to SSL_alert_desc_string[_long](). - [Lutz Jaenicke] - - *) Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl() - for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" ). - [Lutz Jaenicke] - - *) Rework the configuration and shared library support for Tru64 Unix. - The configuration part makes use of modern compiler features and - still retains old compiler behavior for those that run older versions - of the OS. The shared library support part includes a variant that - uses the RPATH feature, and is available through the special - configuration target "alpha-cc-rpath", which will never be selected - automatically. - [Tim Mooney via Richard Levitte] - - *) In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message() - with the same message size as in ssl3_get_certificate_request(). - Otherwise, if no ServerKeyExchange message occurs, CertificateRequest - messages might inadvertently be reject as too long. - [Petr Lampa ] - - *) Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX). - [Andy Polyakov] - - *) Modified SSL library such that the verify_callback that has been set - specificly for an SSL object with SSL_set_verify() is actually being - used. Before the change, a verify_callback set with this function was - ignored and the verify_callback() set in the SSL_CTX at the time of - the call was used. New function X509_STORE_CTX_set_verify_cb() introduced - to allow the necessary settings. - [Lutz Jaenicke] - - *) Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c - explicitly to NULL, as at least on Solaris 8 this seems not always to be - done automatically (in contradiction to the requirements of the C - standard). This made problems when used from OpenSSH. - [Lutz Jaenicke] - - *) In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored - dh->length and always used - - BN_rand_range(priv_key, dh->p). - - BN_rand_range() is not necessary for Diffie-Hellman, and this - specific range makes Diffie-Hellman unnecessarily inefficient if - dh->length (recommended exponent length) is much smaller than the - length of dh->p. We could use BN_rand_range() if the order of - the subgroup was stored in the DH structure, but we only have - dh->length. - - So switch back to - - BN_rand(priv_key, l, ...) - - where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1 - otherwise. - [Bodo Moeller] - - *) In - - RSA_eay_public_encrypt - RSA_eay_private_decrypt - RSA_eay_private_encrypt (signing) - RSA_eay_public_decrypt (signature verification) - - (default implementations for RSA_public_encrypt, - RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt), - always reject numbers >= n. - [Bodo Moeller] - - *) In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2 - to synchronize access to 'locking_thread'. This is necessary on - systems where access to 'locking_thread' (an 'unsigned long' - variable) is not atomic. - [Bodo Moeller] - - *) In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID - *before* setting the 'crypto_lock_rand' flag. The previous code had - a race condition if 0 is a valid thread ID. - [Travis Vitek ] - - *) Add support for shared libraries under Irix. - [Albert Chin-A-Young ] - - *) Add configuration option to build on Linux on both big-endian and - little-endian MIPS. - [Ralf Baechle ] - - *) Add the possibility to create shared libraries on HP-UX. - [Richard Levitte] - - Changes between 0.9.6a and 0.9.6b [9 Jul 2001] - - *) Change ssleay_rand_bytes (crypto/rand/md_rand.c) - to avoid a SSLeay/OpenSSL PRNG weakness pointed out by - Markku-Juhani O. Saarinen : - PRNG state recovery was possible based on the output of - one PRNG request appropriately sized to gain knowledge on - 'md' followed by enough consecutive 1-byte PRNG requests - to traverse all of 'state'. - - 1. When updating 'md_local' (the current thread's copy of 'md') - during PRNG output generation, hash all of the previous - 'md_local' value, not just the half used for PRNG output. - - 2. Make the number of bytes from 'state' included into the hash - independent from the number of PRNG bytes requested. - - The first measure alone would be sufficient to avoid - Markku-Juhani's attack. (Actually it had never occurred - to me that the half of 'md_local' used for chaining was the - half from which PRNG output bytes were taken -- I had always - assumed that the secret half would be used.) The second - measure makes sure that additional data from 'state' is never - mixed into 'md_local' in small portions; this heuristically - further strengthens the PRNG. - [Bodo Moeller] - - *) Fix crypto/bn/asm/mips3.s. - [Andy Polyakov] - - *) When only the key is given to "enc", the IV is undefined. Print out - an error message in this case. - [Lutz Jaenicke] - - *) Handle special case when X509_NAME is empty in X509 printing routines. - [Steve Henson] - - *) In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are - positive and less than q. - [Bodo Moeller] - - *) Don't change *pointer in CRYPTO_add_lock() is add_lock_callback is - used: it isn't thread safe and the add_lock_callback should handle - that itself. - [Paul Rose ] - - *) Verify that incoming data obeys the block size in - ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c). - [Bodo Moeller] - - *) Fix OAEP check. - [Ulf Möller, Bodo Möller] - - *) The countermeasure against Bleichbacher's attack on PKCS #1 v1.5 - RSA encryption was accidentally removed in s3_srvr.c in OpenSSL 0.9.5 - when fixing the server behaviour for backwards-compatible 'client - hello' messages. (Note that the attack is impractical against - SSL 3.0 and TLS 1.0 anyway because length and version checking - means that the probability of guessing a valid ciphertext is - around 2^-40; see section 5 in Bleichenbacher's CRYPTO '98 - paper.) - - Before 0.9.5, the countermeasure (hide the error by generating a - random 'decryption result') did not work properly because - ERR_clear_error() was missing, meaning that SSL_get_error() would - detect the supposedly ignored error. - - Both problems are now fixed. - [Bodo Moeller] - - *) In crypto/bio/bf_buff.c, increase DEFAULT_BUFFER_SIZE to 4096 - (previously it was 1024). - [Bodo Moeller] - - *) Fix for compatibility mode trust settings: ignore trust settings - unless some valid trust or reject settings are present. - [Steve Henson] - - *) Fix for blowfish EVP: its a variable length cipher. - [Steve Henson] - - *) Fix various bugs related to DSA S/MIME verification. Handle missing - parameters in DSA public key structures and return an error in the - DSA routines if parameters are absent. - [Steve Henson] - - *) In versions up to 0.9.6, RAND_file_name() resorted to file ".rnd" - in the current directory if neither $RANDFILE nor $HOME was set. - RAND_file_name() in 0.9.6a returned NULL in this case. This has - caused some confusion to Windows users who haven't defined $HOME. - Thus RAND_file_name() is changed again: e_os.h can define a - DEFAULT_HOME, which will be used if $HOME is not set. - For Windows, we use "C:"; on other platforms, we still require - environment variables. - - *) Move 'if (!initialized) RAND_poll()' into regions protected by - CRYPTO_LOCK_RAND. This is not strictly necessary, but avoids - having multiple threads call RAND_poll() concurrently. - [Bodo Moeller] - - *) In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a - combination of a flag and a thread ID variable. - Otherwise while one thread is in ssleay_rand_bytes (which sets the - flag), *other* threads can enter ssleay_add_bytes without obeying - the CRYPTO_LOCK_RAND lock (and may even illegally release the lock - that they do not hold after the first thread unsets add_do_not_lock). - [Bodo Moeller] - - *) Change bctest again: '-x' expressions are not available in all - versions of 'test'. - [Bodo Moeller] - - Changes between 0.9.6 and 0.9.6a [5 Apr 2001] - - *) Fix a couple of memory leaks in PKCS7_dataDecode() - [Steve Henson, reported by Heyun Zheng ] - - *) Change Configure and Makefiles to provide EXE_EXT, which will contain - the default extension for executables, if any. Also, make the perl - scripts that use symlink() to test if it really exists and use "cp" - if it doesn't. All this made OpenSSL compilable and installable in - CygWin. - [Richard Levitte] - - *) Fix for asn1_GetSequence() for indefinite length constructed data. - If SEQUENCE is length is indefinite just set c->slen to the total - amount of data available. - [Steve Henson, reported by shige@FreeBSD.org] - [This change does not apply to 0.9.7.] - - *) Change bctest to avoid here-documents inside command substitution - (workaround for FreeBSD /bin/sh bug). - For compatibility with Ultrix, avoid shell functions (introduced - in the bctest version that searches along $PATH). - [Bodo Moeller] - - *) Rename 'des_encrypt' to 'des_encrypt1'. This avoids the clashes - with des_encrypt() defined on some operating systems, like Solaris - and UnixWare. - [Richard Levitte] - - *) Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton: - On the Importance of Eliminating Errors in Cryptographic - Computations, J. Cryptology 14 (2001) 2, 101-119, - http://theory.stanford.edu/~dabo/papers/faults.ps.gz). - [Ulf Moeller] - - *) MIPS assembler BIGNUM division bug fix. - [Andy Polyakov] - - *) Disabled incorrect Alpha assembler code. - [Richard Levitte] - - *) Fix PKCS#7 decode routines so they correctly update the length - after reading an EOC for the EXPLICIT tag. - [Steve Henson] - [This change does not apply to 0.9.7.] - - *) Fix bug in PKCS#12 key generation routines. This was triggered - if a 3DES key was generated with a 0 initial byte. Include - PKCS12_BROKEN_KEYGEN compilation option to retain the old - (but broken) behaviour. - [Steve Henson] - - *) Enhance bctest to search for a working bc along $PATH and print - it when found. - [Tim Rice via Richard Levitte] - - *) Fix memory leaks in err.c: free err_data string if necessary; - don't write to the wrong index in ERR_set_error_data. - [Bodo Moeller] - - *) Implement ssl23_peek (analogous to ssl23_read), which previously - did not exist. - [Bodo Moeller] - - *) Replace rdtsc with _emit statements for VC++ version 5. - [Jeremy Cooper ] - - *) Make it possible to reuse SSLv2 sessions. - [Richard Levitte] - - *) In copy_email() check for >= 0 as a return value for - X509_NAME_get_index_by_NID() since 0 is a valid index. - [Steve Henson reported by Massimiliano Pala ] - - *) Avoid coredump with unsupported or invalid public keys by checking if - X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when - PKCS7_verify() fails with non detached data. - [Steve Henson] - - *) Don't use getenv in library functions when run as setuid/setgid. - New function OPENSSL_issetugid(). - [Ulf Moeller] - - *) Avoid false positives in memory leak detection code (crypto/mem_dbg.c) - due to incorrect handling of multi-threading: - - 1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl(). - - 2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on(). - - 3. Count how many times MemCheck_off() has been called so that - nested use can be treated correctly. This also avoids - inband-signalling in the previous code (which relied on the - assumption that thread ID 0 is impossible). - [Bodo Moeller] - - *) Add "-rand" option also to s_client and s_server. - [Lutz Jaenicke] - - *) Fix CPU detection on Irix 6.x. - [Kurt Hockenbury and - "Bruce W. Forsberg" ] - - *) Fix X509_NAME bug which produced incorrect encoding if X509_NAME - was empty. - [Steve Henson] - [This change does not apply to 0.9.7.] - - *) Use the cached encoding of an X509_NAME structure rather than - copying it. This is apparently the reason for the libsafe "errors" - but the code is actually correct. - [Steve Henson] - - *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent - Bleichenbacher's DSA attack. - Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits - to be set and top=0 forces the highest bit to be set; top=-1 is new - and leaves the highest bit random. - [Ulf Moeller, Bodo Moeller] - - *) In the NCONF_...-based implementations for CONF_... queries - (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using - a temporary CONF structure with the data component set to NULL - (which gives segmentation faults in lh_retrieve). - Instead, use NULL for the CONF pointer in CONF_get_string and - CONF_get_number (which may use environment variables) and directly - return NULL from CONF_get_section. - [Bodo Moeller] - - *) Fix potential buffer overrun for EBCDIC. - [Ulf Moeller] - - *) Tolerate nonRepudiation as being valid for S/MIME signing and certSign - keyUsage if basicConstraints absent for a CA. - [Steve Henson] - - *) Make SMIME_write_PKCS7() write mail header values with a format that - is more generally accepted (no spaces before the semicolon), since - some programs can't parse those values properly otherwise. Also make - sure BIO's that break lines after each write do not create invalid - headers. - [Richard Levitte] - - *) Make the CRL encoding routines work with empty SEQUENCE OF. The - macros previously used would not encode an empty SEQUENCE OF - and break the signature. - [Steve Henson] - [This change does not apply to 0.9.7.] - - *) Zero the premaster secret after deriving the master secret in - DH ciphersuites. - [Steve Henson] - - *) Add some EVP_add_digest_alias registrations (as found in - OpenSSL_add_all_digests()) to SSL_library_init() - aka OpenSSL_add_ssl_algorithms(). This provides improved - compatibility with peers using X.509 certificates - with unconventional AlgorithmIdentifier OIDs. - [Bodo Moeller] - - *) Fix for Irix with NO_ASM. - ["Bruce W. Forsberg" ] - - *) ./config script fixes. - [Ulf Moeller, Richard Levitte] - - *) Fix 'openssl passwd -1'. - [Bodo Moeller] - - *) Change PKCS12_key_gen_asc() so it can cope with non null - terminated strings whose length is passed in the passlen - parameter, for example from PEM callbacks. This was done - by adding an extra length parameter to asc2uni(). - [Steve Henson, reported by ] - - *) Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn - call failed, free the DSA structure. - [Bodo Moeller] - - *) Fix to uni2asc() to cope with zero length Unicode strings. - These are present in some PKCS#12 files. - [Steve Henson] - - *) Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c). - Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits - when writing a 32767 byte record. - [Bodo Moeller; problem reported by Eric Day ] - - *) In RSA_eay_public_{en,ed}crypt and RSA_eay_mod_exp (rsa_eay.c), - obtain lock CRYPTO_LOCK_RSA before setting rsa->_method_mod_{n,p,q}. - - (RSA objects have a reference count access to which is protected - by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c], - so they are meant to be shared between threads.) - [Bodo Moeller, Geoff Thorpe; original patch submitted by - "Reddie, Steven" ] - - *) Fix a deadlock in CRYPTO_mem_leaks(). - [Bodo Moeller] - - *) Use better test patterns in bntest. - [Ulf Möller] - - *) rand_win.c fix for Borland C. - [Ulf Möller] - - *) BN_rshift bugfix for n == 0. - [Bodo Moeller] - - *) Add a 'bctest' script that checks for some known 'bc' bugs - so that 'make test' does not abort just because 'bc' is broken. - [Bodo Moeller] - - *) Store verify_result within SSL_SESSION also for client side to - avoid potential security hole. (Re-used sessions on the client side - always resulted in verify_result==X509_V_OK, not using the original - result of the server certificate verification.) - [Lutz Jaenicke] - - *) Fix ssl3_pending: If the record in s->s3->rrec is not of type - SSL3_RT_APPLICATION_DATA, return 0. - Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true. - [Bodo Moeller] - - *) Fix SSL_peek: - Both ssl2_peek and ssl3_peek, which were totally broken in earlier - releases, have been re-implemented by renaming the previous - implementations of ssl2_read and ssl3_read to ssl2_read_internal - and ssl3_read_internal, respectively, and adding 'peek' parameters - to them. The new ssl[23]_{read,peek} functions are calls to - ssl[23]_read_internal with the 'peek' flag set appropriately. - A 'peek' parameter has also been added to ssl3_read_bytes, which - does the actual work for ssl3_read_internal. - [Bodo Moeller] - - *) Initialise "ex_data" member of RSA/DSA/DH structures prior to calling - the method-specific "init()" handler. Also clean up ex_data after - calling the method-specific "finish()" handler. Previously, this was - happening the other way round. - [Geoff Thorpe] - - *) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16. - The previous value, 12, was not always sufficient for BN_mod_exp(). - [Bodo Moeller] - - *) Make sure that shared libraries get the internal name engine with - the full version number and not just 0. This should mark the - shared libraries as not backward compatible. Of course, this should - be changed again when we can guarantee backward binary compatibility. - [Richard Levitte] - - *) Fix typo in get_cert_by_subject() in by_dir.c - [Jean-Marc Desperrier ] - - *) Rework the system to generate shared libraries: - - - Make note of the expected extension for the shared libraries and - if there is a need for symbolic links from for example libcrypto.so.0 - to libcrypto.so.0.9.7. There is extended info in Configure for - that. - - - Make as few rebuilds of the shared libraries as possible. - - - Still avoid linking the OpenSSL programs with the shared libraries. - - - When installing, install the shared libraries separately from the - static ones. - [Richard Levitte] - - *) Fix SSL_CTX_set_read_ahead macro to actually use its argument. - - Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new - and not in SSL_clear because the latter is also used by the - accept/connect functions; previously, the settings made by - SSL_set_read_ahead would be lost during the handshake. - [Bodo Moeller; problems reported by Anders Gertz ] - - *) Correct util/mkdef.pl to be selective about disabled algorithms. - Previously, it would create entries for disabled algorithms no - matter what. - [Richard Levitte] - - *) Added several new manual pages for SSL_* function. - [Lutz Jaenicke] - - Changes between 0.9.5a and 0.9.6 [24 Sep 2000] - - *) In ssl23_get_client_hello, generate an error message when faced - with an initial SSL 3.0/TLS record that is too small to contain the - first two bytes of the ClientHello message, i.e. client_version. - (Note that this is a pathologic case that probably has never happened - in real life.) The previous approach was to use the version number - from the record header as a substitute; but our protocol choice - should not depend on that one because it is not authenticated - by the Finished messages. - [Bodo Moeller] - - *) More robust randomness gathering functions for Windows. - [Jeffrey Altman ] - - *) For compatibility reasons if the flag X509_V_FLAG_ISSUER_CHECK is - not set then we don't setup the error code for issuer check errors - to avoid possibly overwriting other errors which the callback does - handle. If an application does set the flag then we assume it knows - what it is doing and can handle the new informational codes - appropriately. - [Steve Henson] - - *) Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for - a general "ANY" type, as such it should be able to decode anything - including tagged types. However it didn't check the class so it would - wrongly interpret tagged types in the same way as their universal - counterpart and unknown types were just rejected. Changed so that the - tagged and unknown types are handled in the same way as a SEQUENCE: - that is the encoding is stored intact. There is also a new type - "V_ASN1_OTHER" which is used when the class is not universal, in this - case we have no idea what the actual type is so we just lump them all - together. - [Steve Henson] - - *) On VMS, stdout may very well lead to a file that is written to - in a record-oriented fashion. That means that every write() will - write a separate record, which will be read separately by the - programs trying to read from it. This can be very confusing. - - The solution is to put a BIO filter in the way that will buffer - text until a linefeed is reached, and then write everything a - line at a time, so every record written will be an actual line, - not chunks of lines and not (usually doesn't happen, but I've - seen it once) several lines in one record. BIO_f_linebuffer() is - the answer. - - Currently, it's a VMS-only method, because that's where it has - been tested well enough. - [Richard Levitte] - - *) Remove 'optimized' squaring variant in BN_mod_mul_montgomery, - it can return incorrect results. - (Note: The buggy variant was not enabled in OpenSSL 0.9.5a, - but it was in 0.9.6-beta[12].) - [Bodo Moeller] - - *) Disable the check for content being present when verifying detached - signatures in pk7_smime.c. Some versions of Netscape (wrongly) - include zero length content when signing messages. - [Steve Henson] - - *) New BIO_shutdown_wr macro, which invokes the BIO_C_SHUTDOWN_WR - BIO_ctrl (for BIO pairs). - [Bodo Möller] - - *) Add DSO method for VMS. - [Richard Levitte] - - *) Bug fix: Montgomery multiplication could produce results with the - wrong sign. - [Ulf Möller] - - *) Add RPM specification openssl.spec and modify it to build three - packages. The default package contains applications, application - documentation and run-time libraries. The devel package contains - include files, static libraries and function documentation. The - doc package contains the contents of the doc directory. The original - openssl.spec was provided by Damien Miller . - [Richard Levitte] - - *) Add a large number of documentation files for many SSL routines. - [Lutz Jaenicke ] - - *) Add a configuration entry for Sony News 4. - [NAKAJI Hiroyuki ] - - *) Don't set the two most significant bits to one when generating a - random number < q in the DSA library. - [Ulf Möller] - - *) New SSL API mode 'SSL_MODE_AUTO_RETRY'. This disables the default - behaviour that SSL_read may result in SSL_ERROR_WANT_READ (even if - the underlying transport is blocking) if a handshake took place. - (The default behaviour is needed by applications such as s_client - and s_server that use select() to determine when to use SSL_read; - but for applications that know in advance when to expect data, it - just makes things more complicated.) - [Bodo Moeller] - - *) Add RAND_egd_bytes(), which gives control over the number of bytes read - from EGD. - [Ben Laurie] - - *) Add a few more EBCDIC conditionals that make `req' and `x509' - work better on such systems. - [Martin Kraemer ] - - *) Add two demo programs for PKCS12_parse() and PKCS12_create(). - Update PKCS12_parse() so it copies the friendlyName and the - keyid to the certificates aux info. - [Steve Henson] - - *) Fix bug in PKCS7_verify() which caused an infinite loop - if there was more than one signature. - [Sven Uszpelkat ] - - *) Major change in util/mkdef.pl to include extra information - about each symbol, as well as presenting variables as well - as functions. This change means that there's n more need - to rebuild the .num files when some algorithms are excluded. - [Richard Levitte] - - *) Allow the verify time to be set by an application, - rather than always using the current time. - [Steve Henson] - - *) Phase 2 verify code reorganisation. The certificate - verify code now looks up an issuer certificate by a - number of criteria: subject name, authority key id - and key usage. It also verifies self signed certificates - by the same criteria. The main comparison function is - X509_check_issued() which performs these checks. - - Lot of changes were necessary in order to support this - without completely rewriting the lookup code. - - Authority and subject key identifier are now cached. - - The LHASH 'certs' is X509_STORE has now been replaced - by a STACK_OF(X509_OBJECT). This is mainly because an - LHASH can't store or retrieve multiple objects with - the same hash value. - - As a result various functions (which were all internal - use only) have changed to handle the new X509_STORE - structure. This will break anything that messed round - with X509_STORE internally. - - The functions X509_STORE_add_cert() now checks for an - exact match, rather than just subject name. - - The X509_STORE API doesn't directly support the retrieval - of multiple certificates matching a given criteria, however - this can be worked round by performing a lookup first - (which will fill the cache with candidate certificates) - and then examining the cache for matches. This is probably - the best we can do without throwing out X509_LOOKUP - entirely (maybe later...). - - The X509_VERIFY_CTX structure has been enhanced considerably. - - All certificate lookup operations now go via a get_issuer() - callback. Although this currently uses an X509_STORE it - can be replaced by custom lookups. This is a simple way - to bypass the X509_STORE hackery necessary to make this - work and makes it possible to use more efficient techniques - in future. A very simple version which uses a simple - STACK for its trusted certificate store is also provided - using X509_STORE_CTX_trusted_stack(). - - The verify_cb() and verify() callbacks now have equivalents - in the X509_STORE_CTX structure. - - X509_STORE_CTX also has a 'flags' field which can be used - to customise the verify behaviour. - [Steve Henson] - - *) Add new PKCS#7 signing option PKCS7_NOSMIMECAP which - excludes S/MIME capabilities. - [Steve Henson] - - *) When a certificate request is read in keep a copy of the - original encoding of the signed data and use it when outputting - again. Signatures then use the original encoding rather than - a decoded, encoded version which may cause problems if the - request is improperly encoded. - [Steve Henson] - - *) For consistency with other BIO_puts implementations, call - buffer_write(b, ...) directly in buffer_puts instead of calling - BIO_write(b, ...). - - In BIO_puts, increment b->num_write as in BIO_write. - [Peter.Sylvester@EdelWeb.fr] - - *) Fix BN_mul_word for the case where the word is 0. (We have to use - BN_zero, we may not return a BIGNUM with an array consisting of - words set to zero.) - [Bodo Moeller] - - *) Avoid calling abort() from within the library when problems are - detected, except if preprocessor symbols have been defined - (such as REF_CHECK, BN_DEBUG etc.). - [Bodo Moeller] - - *) New openssl application 'rsautl'. This utility can be - used for low level RSA operations. DER public key - BIO/fp routines also added. - [Steve Henson] - - *) New Configure entry and patches for compiling on QNX 4. - [Andreas Schneider ] - - *) A demo state-machine implementation was sponsored by - Nuron (http://www.nuron.com/) and is now available in - demos/state_machine. - [Ben Laurie] - - *) New options added to the 'dgst' utility for signature - generation and verification. - [Steve Henson] - - *) Unrecognized PKCS#7 content types are now handled via a - catch all ASN1_TYPE structure. This allows unsupported - types to be stored as a "blob" and an application can - encode and decode it manually. - [Steve Henson] - - *) Fix various signed/unsigned issues to make a_strex.c - compile under VC++. - [Oscar Jacobsson ] - - *) ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct - length if passed a buffer. ASN1_INTEGER_to_BN failed - if passed a NULL BN and its argument was negative. - [Steve Henson, pointed out by Sven Heiberg ] - - *) Modification to PKCS#7 encoding routines to output definite - length encoding. Since currently the whole structures are in - memory there's not real point in using indefinite length - constructed encoding. However if OpenSSL is compiled with - the flag PKCS7_INDEFINITE_ENCODING the old form is used. - [Steve Henson] - - *) Added BIO_vprintf() and BIO_vsnprintf(). - [Richard Levitte] - - *) Added more prefixes to parse for in the the strings written - through a logging bio, to cover all the levels that are available - through syslog. The prefixes are now: - - PANIC, EMERG, EMR => LOG_EMERG - ALERT, ALR => LOG_ALERT - CRIT, CRI => LOG_CRIT - ERROR, ERR => LOG_ERR - WARNING, WARN, WAR => LOG_WARNING - NOTICE, NOTE, NOT => LOG_NOTICE - INFO, INF => LOG_INFO - DEBUG, DBG => LOG_DEBUG - - and as before, if none of those prefixes are present at the - beginning of the string, LOG_ERR is chosen. - - On Win32, the LOG_* levels are mapped according to this: - - LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR => EVENTLOG_ERROR_TYPE - LOG_WARNING => EVENTLOG_WARNING_TYPE - LOG_NOTICE, LOG_INFO, LOG_DEBUG => EVENTLOG_INFORMATION_TYPE - - [Richard Levitte] - - *) Made it possible to reconfigure with just the configuration - argument "reconf" or "reconfigure". The command line arguments - are stored in Makefile.ssl in the variable CONFIGURE_ARGS, - and are retrieved from there when reconfiguring. - [Richard Levitte] - - *) MD4 implemented. - [Assar Westerlund , Richard Levitte] - - *) Add the arguments -CAfile and -CApath to the pkcs12 utility. - [Richard Levitte] - - *) The obj_dat.pl script was messing up the sorting of object - names. The reason was that it compared the quoted version - of strings as a result "OCSP" > "OCSP Signing" because - " > SPACE. Changed script to store unquoted versions of - names and add quotes on output. It was also omitting some - names from the lookup table if they were given a default - value (that is if SN is missing it is given the same - value as LN and vice versa), these are now added on the - grounds that if an object has a name we should be able to - look it up. Finally added warning output when duplicate - short or long names are found. - [Steve Henson] - - *) Changes needed for Tandem NSK. - [Scott Uroff ] - - *) Fix SSL 2.0 rollback checking: Due to an off-by-one error in - RSA_padding_check_SSLv23(), special padding was never detected - and thus the SSL 3.0/TLS 1.0 countermeasure against protocol - version rollback attacks was not effective. - - In s23_clnt.c, don't use special rollback-attack detection padding - (RSA_SSLV23_PADDING) if SSL 2.0 is the only protocol enabled in the - client; similarly, in s23_srvr.c, don't do the rollback check if - SSL 2.0 is the only protocol enabled in the server. - [Bodo Moeller] - - *) Make it possible to get hexdumps of unprintable data with 'openssl - asn1parse'. By implication, the functions ASN1_parse_dump() and - BIO_dump_indent() are added. - [Richard Levitte] - - *) New functions ASN1_STRING_print_ex() and X509_NAME_print_ex() - these print out strings and name structures based on various - flags including RFC2253 support and proper handling of - multibyte characters. Added options to the 'x509' utility - to allow the various flags to be set. - [Steve Henson] - - *) Various fixes to use ASN1_TIME instead of ASN1_UTCTIME. - Also change the functions X509_cmp_current_time() and - X509_gmtime_adj() work with an ASN1_TIME structure, - this will enable certificates using GeneralizedTime in validity - dates to be checked. - [Steve Henson] - - *) Make the NEG_PUBKEY_BUG code (which tolerates invalid - negative public key encodings) on by default, - NO_NEG_PUBKEY_BUG can be set to disable it. - [Steve Henson] - - *) New function c2i_ASN1_OBJECT() which acts on ASN1_OBJECT - content octets. An i2c_ASN1_OBJECT is unnecessary because - the encoding can be trivially obtained from the structure. - [Steve Henson] - - *) crypto/err.c locking bugfix: Use write locks (CRYPTO_w_[un]lock), - not read locks (CRYPTO_r_[un]lock). - [Bodo Moeller] - - *) A first attempt at creating official support for shared - libraries through configuration. I've kept it so the - default is static libraries only, and the OpenSSL programs - are always statically linked for now, but there are - preparations for dynamic linking in place. - This has been tested on Linux and Tru64. - [Richard Levitte] - - *) Randomness polling function for Win9x, as described in: - Peter Gutmann, Software Generation of Practically Strong - Random Numbers. - [Ulf Möller] - - *) Fix so PRNG is seeded in req if using an already existing - DSA key. - [Steve Henson] - - *) New options to smime application. -inform and -outform - allow alternative formats for the S/MIME message including - PEM and DER. The -content option allows the content to be - specified separately. This should allow things like Netscape - form signing output easier to verify. - [Steve Henson] - - *) Fix the ASN1 encoding of tags using the 'long form'. - [Steve Henson] - - *) New ASN1 functions, i2c_* and c2i_* for INTEGER and BIT - STRING types. These convert content octets to and from the - underlying type. The actual tag and length octets are - already assumed to have been read in and checked. These - are needed because all other string types have virtually - identical handling apart from the tag. By having versions - of the ASN1 functions that just operate on content octets - IMPLICIT tagging can be handled properly. It also allows - the ASN1_ENUMERATED code to be cut down because ASN1_ENUMERATED - and ASN1_INTEGER are identical apart from the tag. - [Steve Henson] - - *) Change the handling of OID objects as follows: - - - New object identifiers are inserted in objects.txt, following - the syntax given in objects.README. - - objects.pl is used to process obj_mac.num and create a new - obj_mac.h. - - obj_dat.pl is used to create a new obj_dat.h, using the data in - obj_mac.h. - - This is currently kind of a hack, and the perl code in objects.pl - isn't very elegant, but it works as I intended. The simplest way - to check that it worked correctly is to look in obj_dat.h and - check the array nid_objs and make sure the objects haven't moved - around (this is important!). Additions are OK, as well as - consistent name changes. - [Richard Levitte] - - *) Add BSD-style MD5-based passwords to 'openssl passwd' (option '-1'). - [Bodo Moeller] - - *) Addition of the command line parameter '-rand file' to 'openssl req'. - The given file adds to whatever has already been seeded into the - random pool through the RANDFILE configuration file option or - environment variable, or the default random state file. - [Richard Levitte] - - *) mkstack.pl now sorts each macro group into lexical order. - Previously the output order depended on the order the files - appeared in the directory, resulting in needless rewriting - of safestack.h . - [Steve Henson] - - *) Patches to make OpenSSL compile under Win32 again. Mostly - work arounds for the VC++ problem that it treats func() as - func(void). Also stripped out the parts of mkdef.pl that - added extra typesafe functions: these no longer exist. - [Steve Henson] - - *) Reorganisation of the stack code. The macros are now all - collected in safestack.h . Each macro is defined in terms of - a "stack macro" of the form SKM_(type, a, b). The - DEBUG_SAFESTACK is now handled in terms of function casts, - this has the advantage of retaining type safety without the - use of additional functions. If DEBUG_SAFESTACK is not defined - then the non typesafe macros are used instead. Also modified the - mkstack.pl script to handle the new form. Needs testing to see - if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK - the default if no major problems. Similar behaviour for ASN1_SET_OF - and PKCS12_STACK_OF. - [Steve Henson] - - *) When some versions of IIS use the 'NET' form of private key the - key derivation algorithm is different. Normally MD5(password) is - used as a 128 bit RC4 key. In the modified case - MD5(MD5(password) + "SGCKEYSALT") is used instead. Added some - new functions i2d_RSA_NET(), d2i_RSA_NET() etc which are the same - as the old Netscape_RSA functions except they have an additional - 'sgckey' parameter which uses the modified algorithm. Also added - an -sgckey command line option to the rsa utility. Thanks to - Adrian Peck for posting details of the modified - algorithm to openssl-dev. - [Steve Henson] - - *) The evp_local.h macros were using 'c.##kname' which resulted in - invalid expansion on some systems (SCO 5.0.5 for example). - Corrected to 'c.kname'. - [Phillip Porch ] - - *) New X509_get1_email() and X509_REQ_get1_email() functions that return - a STACK of email addresses from a certificate or request, these look - in the subject name and the subject alternative name extensions and - omit any duplicate addresses. - [Steve Henson] - - *) Re-implement BN_mod_exp2_mont using independent (and larger) windows. - This makes DSA verification about 2 % faster. - [Bodo Moeller] - - *) Increase maximum window size in BN_mod_exp_... to 6 bits instead of 5 - (meaning that now 2^5 values will be precomputed, which is only 4 KB - plus overhead for 1024 bit moduli). - This makes exponentiations about 0.5 % faster for 1024 bit - exponents (as measured by "openssl speed rsa2048"). - [Bodo Moeller] - - *) Rename memory handling macros to avoid conflicts with other - software: - Malloc => OPENSSL_malloc - Malloc_locked => OPENSSL_malloc_locked - Realloc => OPENSSL_realloc - Free => OPENSSL_free - [Richard Levitte] - - *) New function BN_mod_exp_mont_word for small bases (roughly 15% - faster than BN_mod_exp_mont, i.e. 7% for a full DH exchange). - [Bodo Moeller] - - *) CygWin32 support. - [John Jarvie ] - - *) The type-safe stack code has been rejigged. It is now only compiled - in when OpenSSL is configured with the DEBUG_SAFESTACK option and - by default all type-specific stack functions are "#define"d back to - standard stack functions. This results in more streamlined output - but retains the type-safety checking possibilities of the original - approach. - [Geoff Thorpe] - - *) The STACK code has been cleaned up, and certain type declarations - that didn't make a lot of sense have been brought in line. This has - also involved a cleanup of sorts in safestack.h to more correctly - map type-safe stack functions onto their plain stack counterparts. - This work has also resulted in a variety of "const"ifications of - lots of the code, especially "_cmp" operations which should normally - be prototyped with "const" parameters anyway. - [Geoff Thorpe] - - *) When generating bytes for the first time in md_rand.c, 'stir the pool' - by seeding with STATE_SIZE dummy bytes (with zero entropy count). - (The PRNG state consists of two parts, the large pool 'state' and 'md', - where all of 'md' is used each time the PRNG is used, but 'state' - is used only indexed by a cyclic counter. As entropy may not be - well distributed from the beginning, 'md' is important as a - chaining variable. However, the output function chains only half - of 'md', i.e. 80 bits. ssleay_rand_add, on the other hand, chains - all of 'md', and seeding with STATE_SIZE dummy bytes will result - in all of 'state' being rewritten, with the new values depending - on virtually all of 'md'. This overcomes the 80 bit limitation.) - [Bodo Moeller] - - *) In ssl/s2_clnt.c and ssl/s3_clnt.c, call ERR_clear_error() when - the handshake is continued after ssl_verify_cert_chain(); - otherwise, if SSL_VERIFY_NONE is set, remaining error codes - can lead to 'unexplainable' connection aborts later. - [Bodo Moeller; problem tracked down by Lutz Jaenicke] - - *) Major EVP API cipher revision. - Add hooks for extra EVP features. This allows various cipher - parameters to be set in the EVP interface. Support added for variable - key length ciphers via the EVP_CIPHER_CTX_set_key_length() function and - setting of RC2 and RC5 parameters. - - Modify EVP_OpenInit() and EVP_SealInit() to cope with variable key length - ciphers. - - Remove lots of duplicated code from the EVP library. For example *every* - cipher init() function handles the 'iv' in the same way according to the - cipher mode. They also all do nothing if the 'key' parameter is NULL and - for CFB and OFB modes they zero ctx->num. - - New functionality allows removal of S/MIME code RC2 hack. - - Most of the routines have the same form and so can be declared in terms - of macros. - - By shifting this to the top level EVP_CipherInit() it can be removed from - all individual ciphers. If the cipher wants to handle IVs or keys - differently it can set the EVP_CIPH_CUSTOM_IV or EVP_CIPH_ALWAYS_CALL_INIT - flags. - - Change lots of functions like EVP_EncryptUpdate() to now return a - value: although software versions of the algorithms cannot fail - any installed hardware versions can. - [Steve Henson] - - *) Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if - this option is set, tolerate broken clients that send the negotiated - protocol version number instead of the requested protocol version - number. - [Bodo Moeller] - - *) Call dh_tmp_cb (set by ..._TMP_DH_CB) with correct 'is_export' flag; - i.e. non-zero for export ciphersuites, zero otherwise. - Previous versions had this flag inverted, inconsistent with - rsa_tmp_cb (..._TMP_RSA_CB). - [Bodo Moeller; problem reported by Amit Chopra] - - *) Add missing DSA library text string. Work around for some IIS - key files with invalid SEQUENCE encoding. - [Steve Henson] - - *) Add a document (doc/standards.txt) that list all kinds of standards - and so on that are implemented in OpenSSL. - [Richard Levitte] - - *) Enhance c_rehash script. Old version would mishandle certificates - with the same subject name hash and wouldn't handle CRLs at all. - Added -fingerprint option to crl utility, to support new c_rehash - features. - [Steve Henson] - - *) Eliminate non-ANSI declarations in crypto.h and stack.h. - [Ulf Möller] - - *) Fix for SSL server purpose checking. Server checking was - rejecting certificates which had extended key usage present - but no ssl client purpose. - [Steve Henson, reported by Rene Grosser ] - - *) Make PKCS#12 code work with no password. The PKCS#12 spec - is a little unclear about how a blank password is handled. - Since the password in encoded as a BMPString with terminating - double NULL a zero length password would end up as just the - double NULL. However no password at all is different and is - handled differently in the PKCS#12 key generation code. NS - treats a blank password as zero length. MSIE treats it as no - password on export: but it will try both on import. We now do - the same: PKCS12_parse() tries zero length and no password if - the password is set to "" or NULL (NULL is now a valid password: - it wasn't before) as does the pkcs12 application. - [Steve Henson] - - *) Bugfixes in apps/x509.c: Avoid a memory leak; and don't use - perror when PEM_read_bio_X509_REQ fails, the error message must - be obtained from the error queue. - [Bodo Moeller] - - *) Avoid 'thread_hash' memory leak in crypto/err/err.c by freeing - it in ERR_remove_state if appropriate, and change ERR_get_state - accordingly to avoid race conditions (this is necessary because - thread_hash is no longer constant once set). - [Bodo Moeller] - - *) Bugfix for linux-elf makefile.one. - [Ulf Möller] - - *) RSA_get_default_method() will now cause a default - RSA_METHOD to be chosen if one doesn't exist already. - Previously this was only set during a call to RSA_new() - or RSA_new_method(NULL) meaning it was possible for - RSA_get_default_method() to return NULL. - [Geoff Thorpe] - - *) Added native name translation to the existing DSO code - that will convert (if the flag to do so is set) filenames - that are sufficiently small and have no path information - into a canonical native form. Eg. "blah" converted to - "libblah.so" or "blah.dll" etc. - [Geoff Thorpe] - - *) New function ERR_error_string_n(e, buf, len) which is like - ERR_error_string(e, buf), but writes at most 'len' bytes - including the 0 terminator. For ERR_error_string_n, 'buf' - may not be NULL. - [Damien Miller , Bodo Moeller] - - *) CONF library reworked to become more general. A new CONF - configuration file reader "class" is implemented as well as a - new functions (NCONF_*, for "New CONF") to handle it. The now - old CONF_* functions are still there, but are reimplemented to - work in terms of the new functions. Also, a set of functions - to handle the internal storage of the configuration data is - provided to make it easier to write new configuration file - reader "classes" (I can definitely see something reading a - configuration file in XML format, for example), called _CONF_*, - or "the configuration storage API"... - - The new configuration file reading functions are: - - NCONF_new, NCONF_free, NCONF_load, NCONF_load_fp, NCONF_load_bio, - NCONF_get_section, NCONF_get_string, NCONF_get_numbre - - NCONF_default, NCONF_WIN32 - - NCONF_dump_fp, NCONF_dump_bio - - NCONF_default and NCONF_WIN32 are method (or "class") choosers, - NCONF_new creates a new CONF object. This works in the same way - as other interfaces in OpenSSL, like the BIO interface. - NCONF_dump_* dump the internal storage of the configuration file, - which is useful for debugging. All other functions take the same - arguments as the old CONF_* functions wth the exception of the - first that must be a `CONF *' instead of a `LHASH *'. - - To make it easer to use the new classes with the old CONF_* functions, - the function CONF_set_default_method is provided. - [Richard Levitte] - - *) Add '-tls1' option to 'openssl ciphers', which was already - mentioned in the documentation but had not been implemented. - (This option is not yet really useful because even the additional - experimental TLS 1.0 ciphers are currently treated as SSL 3.0 ciphers.) - [Bodo Moeller] - - *) Initial DSO code added into libcrypto for letting OpenSSL (and - OpenSSL-based applications) load shared libraries and bind to - them in a portable way. - [Geoff Thorpe, with contributions from Richard Levitte] - - Changes between 0.9.5 and 0.9.5a [1 Apr 2000] - - *) Make sure _lrotl and _lrotr are only used with MSVC. - - *) Use lock CRYPTO_LOCK_RAND correctly in ssleay_rand_status - (the default implementation of RAND_status). - - *) Rename openssl x509 option '-crlext', which was added in 0.9.5, - to '-clrext' (= clear extensions), as intended and documented. - [Bodo Moeller; inconsistency pointed out by Michael Attili - ] - - *) Fix for HMAC. It wasn't zeroing the rest of the block if the key length - was larger than the MD block size. - [Steve Henson, pointed out by Yost William ] - - *) Modernise PKCS12_parse() so it uses STACK_OF(X509) for its ca argument - fix a leak when the ca argument was passed as NULL. Stop X509_PUBKEY_set() - using the passed key: if the passed key was a private key the result - of X509_print(), for example, would be to print out all the private key - components. - [Steve Henson] - - *) des_quad_cksum() byte order bug fix. - [Ulf Möller, using the problem description in krb4-0.9.7, where - the solution is attributed to Derrick J Brashear ] - - *) Fix so V_ASN1_APP_CHOOSE works again: however its use is strongly - discouraged. - [Steve Henson, pointed out by Brian Korver ] - - *) For easily testing in shell scripts whether some command - 'openssl XXX' exists, the new pseudo-command 'openssl no-XXX' - returns with exit code 0 iff no command of the given name is available. - 'no-XXX' is printed in this case, 'XXX' otherwise. In both cases, - the output goes to stdout and nothing is printed to stderr. - Additional arguments are always ignored. - - Since for each cipher there is a command of the same name, - the 'no-cipher' compilation switches can be tested this way. - - ('openssl no-XXX' is not able to detect pseudo-commands such - as 'quit', 'list-XXX-commands', or 'no-XXX' itself.) - [Bodo Moeller] - - *) Update test suite so that 'make test' succeeds in 'no-rsa' configuration. - [Bodo Moeller] - - *) For SSL_[CTX_]set_tmp_dh, don't create a DH key if SSL_OP_SINGLE_DH_USE - is set; it will be thrown away anyway because each handshake creates - its own key. - ssl_cert_dup, which is used by SSL_new, now copies DH keys in addition - to parameters -- in previous versions (since OpenSSL 0.9.3) the - 'default key' from SSL_CTX_set_tmp_dh would always be lost, meaning - you effectivly got SSL_OP_SINGLE_DH_USE when using this macro. - [Bodo Moeller] - - *) New s_client option -ign_eof: EOF at stdin is ignored, and - 'Q' and 'R' lose their special meanings (quit/renegotiate). - This is part of what -quiet does; unlike -quiet, -ign_eof - does not suppress any output. - [Richard Levitte] - - *) Add compatibility options to the purpose and trust code. The - purpose X509_PURPOSE_ANY is "any purpose" which automatically - accepts a certificate or CA, this was the previous behaviour, - with all the associated security issues. - - X509_TRUST_COMPAT is the old trust behaviour: only and - automatically trust self signed roots in certificate store. A - new trust setting X509_TRUST_DEFAULT is used to specify that - a purpose has no associated trust setting and it should instead - use the value in the default purpose. - [Steve Henson] - - *) Fix the PKCS#8 DSA private key code so it decodes keys again - and fix a memory leak. - [Steve Henson] - - *) In util/mkerr.pl (which implements 'make errors'), preserve - reason strings from the previous version of the .c file, as - the default to have only downcase letters (and digits) in - automatically generated reasons codes is not always appropriate. - [Bodo Moeller] - - *) In ERR_load_ERR_strings(), build an ERR_LIB_SYS error reason table - using strerror. Previously, ERR_reason_error_string() returned - library names as reason strings for SYSerr; but SYSerr is a special - case where small numbers are errno values, not library numbers. - [Bodo Moeller] - - *) Add '-dsaparam' option to 'openssl dhparam' application. This - converts DSA parameters into DH parameters. (When creating parameters, - DSA_generate_parameters is used.) - [Bodo Moeller] - - *) Include 'length' (recommended exponent length) in C code generated - by 'openssl dhparam -C'. - [Bodo Moeller] - - *) The second argument to set_label in perlasm was already being used - so couldn't be used as a "file scope" flag. Moved to third argument - which was free. - [Steve Henson] - - *) In PEM_ASN1_write_bio and some other functions, use RAND_pseudo_bytes - instead of RAND_bytes for encryption IVs and salts. - [Bodo Moeller] - - *) Include RAND_status() into RAND_METHOD instead of implementing - it only for md_rand.c Otherwise replacing the PRNG by calling - RAND_set_rand_method would be impossible. - [Bodo Moeller] - - *) Don't let DSA_generate_key() enter an infinite loop if the random - number generation fails. - [Bodo Moeller] - - *) New 'rand' application for creating pseudo-random output. - [Bodo Moeller] - - *) Added configuration support for Linux/IA64 - [Rolf Haberrecker ] - - *) Assembler module support for Mingw32. - [Ulf Möller] - - *) Shared library support for HPUX (in shlib/). - [Lutz Jaenicke and Anonymous] - - *) Shared library support for Solaris gcc. - [Lutz Behnke ] - - Changes between 0.9.4 and 0.9.5 [28 Feb 2000] - - *) PKCS7_encrypt() was adding text MIME headers twice because they - were added manually and by SMIME_crlf_copy(). - [Steve Henson] - - *) In bntest.c don't call BN_rand with zero bits argument. - [Steve Henson, pointed out by Andrew W. Gray ] - - *) BN_mul bugfix: In bn_mul_part_recursion() only the a>a[n] && b>b[n] - case was implemented. This caused BN_div_recp() to fail occasionally. - [Ulf Möller] - - *) Add an optional second argument to the set_label() in the perl - assembly language builder. If this argument exists and is set - to 1 it signals that the assembler should use a symbol whose - scope is the entire file, not just the current function. This - is needed with MASM which uses the format label:: for this scope. - [Steve Henson, pointed out by Peter Runestig ] - - *) Change the ASN1 types so they are typedefs by default. Before - almost all types were #define'd to ASN1_STRING which was causing - STACK_OF() problems: you couldn't declare STACK_OF(ASN1_UTF8STRING) - for example. - [Steve Henson] - - *) Change names of new functions to the new get1/get0 naming - convention: After 'get1', the caller owns a reference count - and has to call ..._free; 'get0' returns a pointer to some - data structure without incrementing reference counters. - (Some of the existing 'get' functions increment a reference - counter, some don't.) - Similarly, 'set1' and 'add1' functions increase reference - counters or duplicate objects. - [Steve Henson] - - *) Allow for the possibility of temp RSA key generation failure: - the code used to assume it always worked and crashed on failure. - [Steve Henson] - - *) Fix potential buffer overrun problem in BIO_printf(). - [Ulf Möller, using public domain code by Patrick Powell; problem - pointed out by David Sacerdote ] - - *) Support EGD . New functions - RAND_egd() and RAND_status(). In the command line application, - the EGD socket can be specified like a seed file using RANDFILE - or -rand. - [Ulf Möller] - - *) Allow the string CERTIFICATE to be tolerated in PKCS#7 structures. - Some CAs (e.g. Verisign) distribute certificates in this form. - [Steve Henson] - - *) Remove the SSL_ALLOW_ADH compile option and set the default cipher - list to exclude them. This means that no special compilation option - is needed to use anonymous DH: it just needs to be included in the - cipher list. - [Steve Henson] - - *) Change the EVP_MD_CTX_type macro so its meaning consistent with - EVP_MD_type. The old functionality is available in a new macro called - EVP_MD_md(). Change code that uses it and update docs. - [Steve Henson] - - *) ..._ctrl functions now have corresponding ..._callback_ctrl functions - where the 'void *' argument is replaced by a function pointer argument. - Previously 'void *' was abused to point to functions, which works on - many platforms, but is not correct. As these functions are usually - called by macros defined in OpenSSL header files, most source code - should work without changes. - [Richard Levitte] - - *) (which is created by Configure) now contains - sections with information on -D... compiler switches used for - compiling the library so that applications can see them. To enable - one of these sections, a pre-processor symbol OPENSSL_..._DEFINES - must be defined. E.g., - #define OPENSSL_ALGORITHM_DEFINES - #include - defines all pertinent NO_ symbols, such as NO_IDEA, NO_RSA, etc. - [Richard Levitte, Ulf and Bodo Möller] - - *) Bugfix: Tolerate fragmentation and interleaving in the SSL 3/TLS - record layer. - [Bodo Moeller] - - *) Change the 'other' type in certificate aux info to a STACK_OF - X509_ALGOR. Although not an AlgorithmIdentifier as such it has - the required ASN1 format: arbitrary types determined by an OID. - [Steve Henson] - - *) Add some PEM_write_X509_REQ_NEW() functions and a command line - argument to 'req'. This is not because the function is newer or - better than others it just uses the work 'NEW' in the certificate - request header lines. Some software needs this. - [Steve Henson] - - *) Reorganise password command line arguments: now passwords can be - obtained from various sources. Delete the PEM_cb function and make - it the default behaviour: i.e. if the callback is NULL and the - usrdata argument is not NULL interpret it as a null terminated pass - phrase. If usrdata and the callback are NULL then the pass phrase - is prompted for as usual. - [Steve Henson] - - *) Add support for the Compaq Atalla crypto accelerator. If it is installed, - the support is automatically enabled. The resulting binaries will - autodetect the card and use it if present. - [Ben Laurie and Compaq Inc.] - - *) Work around for Netscape hang bug. This sends certificate request - and server done in one record. Since this is perfectly legal in the - SSL/TLS protocol it isn't a "bug" option and is on by default. See - the bugs/SSLv3 entry for more info. - [Steve Henson] - - *) HP-UX tune-up: new unified configs, HP C compiler bug workaround. - [Andy Polyakov] - - *) Add -rand argument to smime and pkcs12 applications and read/write - of seed file. - [Steve Henson] - - *) New 'passwd' tool for crypt(3) and apr1 password hashes. - [Bodo Moeller] - - *) Add command line password options to the remaining applications. - [Steve Henson] - - *) Bug fix for BN_div_recp() for numerators with an even number of - bits. - [Ulf Möller] - - *) More tests in bntest.c, and changed test_bn output. - [Ulf Möller] - - *) ./config recognizes MacOS X now. - [Andy Polyakov] - - *) Bug fix for BN_div() when the first words of num and divsor are - equal (it gave wrong results if (rem=(n1-q*d0)&BN_MASK2) < d0). - [Ulf Möller] - - *) Add support for various broken PKCS#8 formats, and command line - options to produce them. - [Steve Henson] - - *) New functions BN_CTX_start(), BN_CTX_get() and BT_CTX_end() to - get temporary BIGNUMs from a BN_CTX. - [Ulf Möller] - - *) Correct return values in BN_mod_exp_mont() and BN_mod_exp2_mont() - for p == 0. - [Ulf Möller] - - *) Change the SSLeay_add_all_*() functions to OpenSSL_add_all_*() and - include a #define from the old name to the new. The original intent - was that statically linked binaries could for example just call - SSLeay_add_all_ciphers() to just add ciphers to the table and not - link with digests. This never worked because SSLeay_add_all_digests() - and SSLeay_add_all_ciphers() were in the same source file so calling - one would link with the other. They are now in separate source files. - [Steve Henson] - - *) Add a new -notext option to 'ca' and a -pubkey option to 'spkac'. - [Steve Henson] - - *) Use a less unusual form of the Miller-Rabin primality test (it used - a binary algorithm for exponentiation integrated into the Miller-Rabin - loop, our standard modexp algorithms are faster). - [Bodo Moeller] - - *) Support for the EBCDIC character set completed. - [Martin Kraemer ] - - *) Source code cleanups: use const where appropriate, eliminate casts, - use void * instead of char * in lhash. - [Ulf Möller] - - *) Bugfix: ssl3_send_server_key_exchange was not restartable - (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of - this the server could overwrite ephemeral keys that the client - has already seen). - [Bodo Moeller] - - *) Turn DSA_is_prime into a macro that calls BN_is_prime, - using 50 iterations of the Rabin-Miller test. - - DSA_generate_parameters now uses BN_is_prime_fasttest (with 50 - iterations of the Rabin-Miller test as required by the appendix - to FIPS PUB 186[-1]) instead of DSA_is_prime. - As BN_is_prime_fasttest includes trial division, DSA parameter - generation becomes much faster. - - This implies a change for the callback functions in DSA_is_prime - and DSA_generate_parameters: The callback function is called once - for each positive witness in the Rabin-Miller test, not just - occasionally in the inner loop; and the parameters to the - callback function now provide an iteration count for the outer - loop rather than for the current invocation of the inner loop. - DSA_generate_parameters additionally can call the callback - function with an 'iteration count' of -1, meaning that a - candidate has passed the trial division test (when q is generated - from an application-provided seed, trial division is skipped). - [Bodo Moeller] - - *) New function BN_is_prime_fasttest that optionally does trial - division before starting the Rabin-Miller test and has - an additional BN_CTX * argument (whereas BN_is_prime always - has to allocate at least one BN_CTX). - 'callback(1, -1, cb_arg)' is called when a number has passed the - trial division stage. - [Bodo Moeller] - - *) Fix for bug in CRL encoding. The validity dates weren't being handled - as ASN1_TIME. - [Steve Henson] - - *) New -pkcs12 option to CA.pl script to write out a PKCS#12 file. - [Steve Henson] - - *) New function BN_pseudo_rand(). - [Ulf Möller] - - *) Clean up BN_mod_mul_montgomery(): replace the broken (and unreadable) - bignum version of BN_from_montgomery() with the working code from - SSLeay 0.9.0 (the word based version is faster anyway), and clean up - the comments. - [Ulf Möller] - - *) Avoid a race condition in s2_clnt.c (function get_server_hello) that - made it impossible to use the same SSL_SESSION data structure in - SSL2 clients in multiple threads. - [Bodo Moeller] - - *) The return value of RAND_load_file() no longer counts bytes obtained - by stat(). RAND_load_file(..., -1) is new and uses the complete file - to seed the PRNG (previously an explicit byte count was required). - [Ulf Möller, Bodo Möller] - - *) Clean up CRYPTO_EX_DATA functions, some of these didn't have prototypes - used (char *) instead of (void *) and had casts all over the place. - [Steve Henson] - - *) Make BN_generate_prime() return NULL on error if ret!=NULL. - [Ulf Möller] - - *) Retain source code compatibility for BN_prime_checks macro: - BN_is_prime(..., BN_prime_checks, ...) now uses - BN_prime_checks_for_size to determine the appropriate number of - Rabin-Miller iterations. - [Ulf Möller] - - *) Diffie-Hellman uses "safe" primes: DH_check() return code renamed to - DH_CHECK_P_NOT_SAFE_PRIME. - (Check if this is true? OpenPGP calls them "strong".) - [Ulf Möller] - - *) Merge the functionality of "dh" and "gendh" programs into a new program - "dhparam". The old programs are retained for now but will handle DH keys - (instead of parameters) in future. - [Steve Henson] - - *) Make the ciphers, s_server and s_client programs check the return values - when a new cipher list is set. - [Steve Henson] - - *) Enhance the SSL/TLS cipher mechanism to correctly handle the TLS 56bit - ciphers. Before when the 56bit ciphers were enabled the sorting was - wrong. - - The syntax for the cipher sorting has been extended to support sorting by - cipher-strength (using the strength_bits hard coded in the tables). - The new command is "@STRENGTH" (see also doc/apps/ciphers.pod). - - Fix a bug in the cipher-command parser: when supplying a cipher command - string with an "undefined" symbol (neither command nor alphanumeric - [A-Za-z0-9], ssl_set_cipher_list used to hang in an endless loop. Now - an error is flagged. - - Due to the strength-sorting extension, the code of the - ssl_create_cipher_list() function was completely rearranged. I hope that - the readability was also increased :-) - [Lutz Jaenicke ] - - *) Minor change to 'x509' utility. The -CAcreateserial option now uses 1 - for the first serial number and places 2 in the serial number file. This - avoids problems when the root CA is created with serial number zero and - the first user certificate has the same issuer name and serial number - as the root CA. - [Steve Henson] - - *) Fixes to X509_ATTRIBUTE utilities, change the 'req' program so it uses - the new code. Add documentation for this stuff. - [Steve Henson] - - *) Changes to X509_ATTRIBUTE utilities. These have been renamed from - X509_*() to X509at_*() on the grounds that they don't handle X509 - structures and behave in an analogous way to the X509v3 functions: - they shouldn't be called directly but wrapper functions should be used - instead. - - So we also now have some wrapper functions that call the X509at functions - when passed certificate requests. (TO DO: similar things can be done with - PKCS#7 signed and unsigned attributes, PKCS#12 attributes and a few other - things. Some of these need some d2i or i2d and print functionality - because they handle more complex structures.) - [Steve Henson] - - *) Add missing #ifndefs that caused missing symbols when building libssl - as a shared library without RSA. Use #ifndef NO_SSL2 instead of - NO_RSA in ssl/s2*.c. - [Kris Kennaway , modified by Ulf Möller] - - *) Precautions against using the PRNG uninitialized: RAND_bytes() now - has a return value which indicates the quality of the random data - (1 = ok, 0 = not seeded). Also an error is recorded on the thread's - error queue. New function RAND_pseudo_bytes() generates output that is - guaranteed to be unique but not unpredictable. RAND_add is like - RAND_seed, but takes an extra argument for an entropy estimate - (RAND_seed always assumes full entropy). - [Ulf Möller] - - *) Do more iterations of Rabin-Miller probable prime test (specifically, - 3 for 1024-bit primes, 6 for 512-bit primes, 12 for 256-bit primes - instead of only 2 for all lengths; see BN_prime_checks_for_size definition - in crypto/bn/bn_prime.c for the complete table). This guarantees a - false-positive rate of at most 2^-80 for random input. - [Bodo Moeller] - - *) Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs. - [Bodo Moeller] - - *) New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain - in the 0.9.5 release), this returns the chain - from an X509_CTX structure with a dup of the stack and all - the X509 reference counts upped: so the stack will exist - after X509_CTX_cleanup() has been called. Modify pkcs12.c - to use this. - - Also make SSL_SESSION_print() print out the verify return - code. - [Steve Henson] - - *) Add manpage for the pkcs12 command. Also change the default - behaviour so MAC iteration counts are used unless the new - -nomaciter option is used. This improves file security and - only older versions of MSIE (4.0 for example) need it. - [Steve Henson] - - *) Honor the no-xxx Configure options when creating .DEF files. - [Ulf Möller] - - *) Add PKCS#10 attributes to field table: challengePassword, - unstructuredName and unstructuredAddress. These are taken from - draft PKCS#9 v2.0 but are compatible with v1.2 provided no - international characters are used. - - More changes to X509_ATTRIBUTE code: allow the setting of types - based on strings. Remove the 'loc' parameter when adding - attributes because these will be a SET OF encoding which is sorted - in ASN1 order. - [Steve Henson] - - *) Initial changes to the 'req' utility to allow request generation - automation. This will allow an application to just generate a template - file containing all the field values and have req construct the - request. - - Initial support for X509_ATTRIBUTE handling. Stacks of these are - used all over the place including certificate requests and PKCS#7 - structures. They are currently handled manually where necessary with - some primitive wrappers for PKCS#7. The new functions behave in a - manner analogous to the X509 extension functions: they allow - attributes to be looked up by NID and added. - - Later something similar to the X509V3 code would be desirable to - automatically handle the encoding, decoding and printing of the - more complex types. The string types like challengePassword can - be handled by the string table functions. - - Also modified the multi byte string table handling. Now there is - a 'global mask' which masks out certain types. The table itself - can use the flag STABLE_NO_MASK to ignore the mask setting: this - is useful when for example there is only one permissible type - (as in countryName) and using the mask might result in no valid - types at all. - [Steve Henson] - - *) Clean up 'Finished' handling, and add functions SSL_get_finished and - SSL_get_peer_finished to allow applications to obtain the latest - Finished messages sent to the peer or expected from the peer, - respectively. (SSL_get_peer_finished is usually the Finished message - actually received from the peer, otherwise the protocol will be aborted.) - - As the Finished message are message digests of the complete handshake - (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can - be used for external authentication procedures when the authentication - provided by SSL/TLS is not desired or is not enough. - [Bodo Moeller] - - *) Enhanced support for Alpha Linux is added. Now ./config checks if - the host supports BWX extension and if Compaq C is present on the - $PATH. Just exploiting of the BWX extension results in 20-30% - performance kick for some algorithms, e.g. DES and RC4 to mention - a couple. Compaq C in turn generates ~20% faster code for MD5 and - SHA1. - [Andy Polyakov] - - *) Add support for MS "fast SGC". This is arguably a violation of the - SSL3/TLS protocol. Netscape SGC does two handshakes: the first with - weak crypto and after checking the certificate is SGC a second one - with strong crypto. MS SGC stops the first handshake after receiving - the server certificate message and sends a second client hello. Since - a server will typically do all the time consuming operations before - expecting any further messages from the client (server key exchange - is the most expensive) there is little difference between the two. - - To get OpenSSL to support MS SGC we have to permit a second client - hello message after we have sent server done. In addition we have to - reset the MAC if we do get this second client hello. - [Steve Henson] - - *) Add a function 'd2i_AutoPrivateKey()' this will automatically decide - if a DER encoded private key is RSA or DSA traditional format. Changed - d2i_PrivateKey_bio() to use it. This is only needed for the "traditional" - format DER encoded private key. Newer code should use PKCS#8 format which - has the key type encoded in the ASN1 structure. Added DER private key - support to pkcs8 application. - [Steve Henson] - - *) SSL 3/TLS 1 servers now don't request certificates when an anonymous - ciphersuites has been selected (as required by the SSL 3/TLS 1 - specifications). Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT - is set, we interpret this as a request to violate the specification - (the worst that can happen is a handshake failure, and 'correct' - behaviour would result in a handshake failure anyway). - [Bodo Moeller] - - *) In SSL_CTX_add_session, take into account that there might be multiple - SSL_SESSION structures with the same session ID (e.g. when two threads - concurrently obtain them from an external cache). - The internal cache can handle only one SSL_SESSION with a given ID, - so if there's a conflict, we now throw out the old one to achieve - consistency. - [Bodo Moeller] - - *) Add OIDs for idea and blowfish in CBC mode. This will allow both - to be used in PKCS#5 v2.0 and S/MIME. Also add checking to - some routines that use cipher OIDs: some ciphers do not have OIDs - defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for - example. - [Steve Henson] - - *) Simplify the trust setting structure and code. Now we just have - two sequences of OIDs for trusted and rejected settings. These will - typically have values the same as the extended key usage extension - and any application specific purposes. - - The trust checking code now has a default behaviour: it will just - check for an object with the same NID as the passed id. Functions can - be provided to override either the default behaviour or the behaviour - for a given id. SSL client, server and email already have functions - in place for compatibility: they check the NID and also return "trusted" - if the certificate is self signed. - [Steve Henson] - - *) Add d2i,i2d bio/fp functions for PrivateKey: these convert the - traditional format into an EVP_PKEY structure. - [Steve Henson] - - *) Add a password callback function PEM_cb() which either prompts for - a password if usr_data is NULL or otherwise assumes it is a null - terminated password. Allow passwords to be passed on command line - environment or config files in a few more utilities. - [Steve Henson] - - *) Add a bunch of DER and PEM functions to handle PKCS#8 format private - keys. Add some short names for PKCS#8 PBE algorithms and allow them - to be specified on the command line for the pkcs8 and pkcs12 utilities. - Update documentation. - [Steve Henson] - - *) Support for ASN1 "NULL" type. This could be handled before by using - ASN1_TYPE but there wasn't any function that would try to read a NULL - and produce an error if it couldn't. For compatibility we also have - ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and - don't allocate anything because they don't need to. - [Steve Henson] - - *) Initial support for MacOS is now provided. Examine INSTALL.MacOS - for details. - [Andy Polyakov, Roy Woods ] - - *) Rebuild of the memory allocation routines used by OpenSSL code and - possibly others as well. The purpose is to make an interface that - provide hooks so anyone can build a separate set of allocation and - deallocation routines to be used by OpenSSL, for example memory - pool implementations, or something else, which was previously hard - since Malloc(), Realloc() and Free() were defined as macros having - the values malloc, realloc and free, respectively (except for Win32 - compilations). The same is provided for memory debugging code. - OpenSSL already comes with functionality to find memory leaks, but - this gives people a chance to debug other memory problems. - - With these changes, a new set of functions and macros have appeared: - - CRYPTO_set_mem_debug_functions() [F] - CRYPTO_get_mem_debug_functions() [F] - CRYPTO_dbg_set_options() [F] - CRYPTO_dbg_get_options() [F] - CRYPTO_malloc_debug_init() [M] - - The memory debug functions are NULL by default, unless the library - is compiled with CRYPTO_MDEBUG or friends is defined. If someone - wants to debug memory anyway, CRYPTO_malloc_debug_init() (which - gives the standard debugging functions that come with OpenSSL) or - CRYPTO_set_mem_debug_functions() (tells OpenSSL to use functions - provided by the library user) must be used. When the standard - debugging functions are used, CRYPTO_dbg_set_options can be used to - request additional information: - CRYPTO_dbg_set_options(V_CYRPTO_MDEBUG_xxx) corresponds to setting - the CRYPTO_MDEBUG_xxx macro when compiling the library. - - Also, things like CRYPTO_set_mem_functions will always give the - expected result (the new set of functions is used for allocation - and deallocation) at all times, regardless of platform and compiler - options. - - To finish it up, some functions that were never use in any other - way than through macros have a new API and new semantic: - - CRYPTO_dbg_malloc() - CRYPTO_dbg_realloc() - CRYPTO_dbg_free() - - All macros of value have retained their old syntax. - [Richard Levitte and Bodo Moeller] - - *) Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the - ordering of SMIMECapabilities wasn't in "strength order" and there - was a missing NULL in the AlgorithmIdentifier for the SHA1 signature - algorithm. - [Steve Henson] - - *) Some ASN1 types with illegal zero length encoding (INTEGER, - ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines. - [Frans Heymans , modified by Steve Henson] - - *) Merge in my S/MIME library for OpenSSL. This provides a simple - S/MIME API on top of the PKCS#7 code, a MIME parser (with enough - functionality to handle multipart/signed properly) and a utility - called 'smime' to call all this stuff. This is based on code I - originally wrote for Celo who have kindly allowed it to be - included in OpenSSL. - [Steve Henson] - - *) Add variants des_set_key_checked and des_set_key_unchecked of - des_set_key (aka des_key_sched). Global variable des_check_key - decides which of these is called by des_set_key; this way - des_check_key behaves as it always did, but applications and - the library itself, which was buggy for des_check_key == 1, - have a cleaner way to pick the version they need. - [Bodo Moeller] - - *) New function PKCS12_newpass() which changes the password of a - PKCS12 structure. - [Steve Henson] - - *) Modify X509_TRUST and X509_PURPOSE so it also uses a static and - dynamic mix. In both cases the ids can be used as an index into the - table. Also modified the X509_TRUST_add() and X509_PURPOSE_add() - functions so they accept a list of the field values and the - application doesn't need to directly manipulate the X509_TRUST - structure. - [Steve Henson] - - *) Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't - need initialising. - [Steve Henson] - - *) Modify the way the V3 extension code looks up extensions. This now - works in a similar way to the object code: we have some "standard" - extensions in a static table which is searched with OBJ_bsearch() - and the application can add dynamic ones if needed. The file - crypto/x509v3/ext_dat.h now has the info: this file needs to be - updated whenever a new extension is added to the core code and kept - in ext_nid order. There is a simple program 'tabtest.c' which checks - this. New extensions are not added too often so this file can readily - be maintained manually. - - There are two big advantages in doing things this way. The extensions - can be looked up immediately and no longer need to be "added" using - X509V3_add_standard_extensions(): this function now does nothing. - [Side note: I get *lots* of email saying the extension code doesn't - work because people forget to call this function] - Also no dynamic allocation is done unless new extensions are added: - so if we don't add custom extensions there is no need to call - X509V3_EXT_cleanup(). - [Steve Henson] - - *) Modify enc utility's salting as follows: make salting the default. Add a - magic header, so unsalted files fail gracefully instead of just decrypting - to garbage. This is because not salting is a big security hole, so people - should be discouraged from doing it. - [Ben Laurie] - - *) Fixes and enhancements to the 'x509' utility. It allowed a message - digest to be passed on the command line but it only used this - parameter when signing a certificate. Modified so all relevant - operations are affected by the digest parameter including the - -fingerprint and -x509toreq options. Also -x509toreq choked if a - DSA key was used because it didn't fix the digest. - [Steve Henson] - - *) Initial certificate chain verify code. Currently tests the untrusted - certificates for consistency with the verify purpose (which is set - when the X509_STORE_CTX structure is set up) and checks the pathlength. - - There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour: - this is because it will reject chains with invalid extensions whereas - every previous version of OpenSSL and SSLeay made no checks at all. - - Trust code: checks the root CA for the relevant trust settings. Trust - settings have an initial value consistent with the verify purpose: e.g. - if the verify purpose is for SSL client use it expects the CA to be - trusted for SSL client use. However the default value can be changed to - permit custom trust settings: one example of this would be to only trust - certificates from a specific "secure" set of CAs. - - Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions - which should be used for version portability: especially since the - verify structure is likely to change more often now. - - SSL integration. Add purpose and trust to SSL_CTX and SSL and functions - to set them. If not set then assume SSL clients will verify SSL servers - and vice versa. - - Two new options to the verify program: -untrusted allows a set of - untrusted certificates to be passed in and -purpose which sets the - intended purpose of the certificate. If a purpose is set then the - new chain verify code is used to check extension consistency. - [Steve Henson] - - *) Support for the authority information access extension. - [Steve Henson] - - *) Modify RSA and DSA PEM read routines to transparently handle - PKCS#8 format private keys. New *_PUBKEY_* functions that handle - public keys in a format compatible with certificate - SubjectPublicKeyInfo structures. Unfortunately there were already - functions called *_PublicKey_* which used various odd formats so - these are retained for compatibility: however the DSA variants were - never in a public release so they have been deleted. Changed dsa/rsa - utilities to handle the new format: note no releases ever handled public - keys so we should be OK. - - The primary motivation for this change is to avoid the same fiasco - that dogs private keys: there are several incompatible private key - formats some of which are standard and some OpenSSL specific and - require various evil hacks to allow partial transparent handling and - even then it doesn't work with DER formats. Given the option anything - other than PKCS#8 should be dumped: but the other formats have to - stay in the name of compatibility. - - With public keys and the benefit of hindsight one standard format - is used which works with EVP_PKEY, RSA or DSA structures: though - it clearly returns an error if you try to read the wrong kind of key. - - Added a -pubkey option to the 'x509' utility to output the public key. - Also rename the EVP_PKEY_get_*() to EVP_PKEY_rget_*() - (renamed to EVP_PKEY_get1_*() in the OpenSSL 0.9.5 release) and add - EVP_PKEY_rset_*() functions (renamed to EVP_PKEY_set1_*()) - that do the same as the EVP_PKEY_assign_*() except they up the - reference count of the added key (they don't "swallow" the - supplied key). - [Steve Henson] - - *) Fixes to crypto/x509/by_file.c the code to read in certificates and - CRLs would fail if the file contained no certificates or no CRLs: - added a new function to read in both types and return the number - read: this means that if none are read it will be an error. The - DER versions of the certificate and CRL reader would always fail - because it isn't possible to mix certificates and CRLs in DER format - without choking one or the other routine. Changed this to just read - a certificate: this is the best we can do. Also modified the code - in apps/verify.c to take notice of return codes: it was previously - attempting to read in certificates from NULL pointers and ignoring - any errors: this is one reason why the cert and CRL reader seemed - to work. It doesn't check return codes from the default certificate - routines: these may well fail if the certificates aren't installed. - [Steve Henson] - - *) Code to support otherName option in GeneralName. - [Steve Henson] - - *) First update to verify code. Change the verify utility - so it warns if it is passed a self signed certificate: - for consistency with the normal behaviour. X509_verify - has been modified to it will now verify a self signed - certificate if *exactly* the same certificate appears - in the store: it was previously impossible to trust a - single self signed certificate. This means that: - openssl verify ss.pem - now gives a warning about a self signed certificate but - openssl verify -CAfile ss.pem ss.pem - is OK. - [Steve Henson] - - *) For servers, store verify_result in SSL_SESSION data structure - (and add it to external session representation). - This is needed when client certificate verifications fails, - but an application-provided verification callback (set by - SSL_CTX_set_cert_verify_callback) allows accepting the session - anyway (i.e. leaves x509_store_ctx->error != X509_V_OK - but returns 1): When the session is reused, we have to set - ssl->verify_result to the appropriate error code to avoid - security holes. - [Bodo Moeller, problem pointed out by Lutz Jaenicke] - - *) Fix a bug in the new PKCS#7 code: it didn't consider the - case in PKCS7_dataInit() where the signed PKCS7 structure - didn't contain any existing data because it was being created. - [Po-Cheng Chen , slightly modified by Steve Henson] - - *) Add a salt to the key derivation routines in enc.c. This - forms the first 8 bytes of the encrypted file. Also add a - -S option to allow a salt to be input on the command line. - [Steve Henson] - - *) New function X509_cmp(). Oddly enough there wasn't a function - to compare two certificates. We do this by working out the SHA1 - hash and comparing that. X509_cmp() will be needed by the trust - code. - [Steve Henson] - - *) SSL_get1_session() is like SSL_get_session(), but increments - the reference count in the SSL_SESSION returned. - [Geoff Thorpe ] - - *) Fix for 'req': it was adding a null to request attributes. - Also change the X509_LOOKUP and X509_INFO code to handle - certificate auxiliary information. - [Steve Henson] - - *) Add support for 40 and 64 bit RC2 and RC4 algorithms: document - the 'enc' command. - [Steve Henson] - - *) Add the possibility to add extra information to the memory leak - detecting output, to form tracebacks, showing from where each - allocation was originated: CRYPTO_push_info("constant string") adds - the string plus current file name and line number to a per-thread - stack, CRYPTO_pop_info() does the obvious, CRYPTO_remove_all_info() - is like calling CYRPTO_pop_info() until the stack is empty. - Also updated memory leak detection code to be multi-thread-safe. - [Richard Levitte] - - *) Add options -text and -noout to pkcs7 utility and delete the - encryption options which never did anything. Update docs. - [Steve Henson] - - *) Add options to some of the utilities to allow the pass phrase - to be included on either the command line (not recommended on - OSes like Unix) or read from the environment. Update the - manpages and fix a few bugs. - [Steve Henson] - - *) Add a few manpages for some of the openssl commands. - [Steve Henson] - - *) Fix the -revoke option in ca. It was freeing up memory twice, - leaking and not finding already revoked certificates. - [Steve Henson] - - *) Extensive changes to support certificate auxiliary information. - This involves the use of X509_CERT_AUX structure and X509_AUX - functions. An X509_AUX function such as PEM_read_X509_AUX() - can still read in a certificate file in the usual way but it - will also read in any additional "auxiliary information". By - doing things this way a fair degree of compatibility can be - retained: existing certificates can have this information added - using the new 'x509' options. - - Current auxiliary information includes an "alias" and some trust - settings. The trust settings will ultimately be used in enhanced - certificate chain verification routines: currently a certificate - can only be trusted if it is self signed and then it is trusted - for all purposes. - [Steve Henson] - - *) Fix assembler for Alpha (tested only on DEC OSF not Linux or *BSD). - The problem was that one of the replacement routines had not been working - since SSLeay releases. For now the offending routine has been replaced - with non-optimised assembler. Even so, this now gives around 95% - performance improvement for 1024 bit RSA signs. - [Mark Cox] - - *) Hack to fix PKCS#7 decryption when used with some unorthodox RC2 - handling. Most clients have the effective key size in bits equal to - the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key. - A few however don't do this and instead use the size of the decrypted key - to determine the RC2 key length and the AlgorithmIdentifier to determine - the effective key length. In this case the effective key length can still - be 40 bits but the key length can be 168 bits for example. This is fixed - by manually forcing an RC2 key into the EVP_PKEY structure because the - EVP code can't currently handle unusual RC2 key sizes: it always assumes - the key length and effective key length are equal. - [Steve Henson] - - *) Add a bunch of functions that should simplify the creation of - X509_NAME structures. Now you should be able to do: - X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0); - and have it automatically work out the correct field type and fill in - the structures. The more adventurous can try: - X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0); - and it will (hopefully) work out the correct multibyte encoding. - [Steve Henson] - - *) Change the 'req' utility to use the new field handling and multibyte - copy routines. Before the DN field creation was handled in an ad hoc - way in req, ca, and x509 which was rather broken and didn't support - BMPStrings or UTF8Strings. Since some software doesn't implement - BMPStrings or UTF8Strings yet, they can be enabled using the config file - using the dirstring_type option. See the new comment in the default - openssl.cnf for more info. - [Steve Henson] - - *) Make crypto/rand/md_rand.c more robust: - - Assure unique random numbers after fork(). - - Make sure that concurrent threads access the global counter and - md serializably so that we never lose entropy in them - or use exactly the same state in multiple threads. - Access to the large state is not always serializable because - the additional locking could be a performance killer, and - md should be large enough anyway. - [Bodo Moeller] - - *) New file apps/app_rand.c with commonly needed functionality - for handling the random seed file. - - Use the random seed file in some applications that previously did not: - ca, - dsaparam -genkey (which also ignored its '-rand' option), - s_client, - s_server, - x509 (when signing). - Except on systems with /dev/urandom, it is crucial to have a random - seed file at least for key creation, DSA signing, and for DH exchanges; - for RSA signatures we could do without one. - - gendh and gendsa (unlike genrsa) used to read only the first byte - of each file listed in the '-rand' option. The function as previously - found in genrsa is now in app_rand.c and is used by all programs - that support '-rand'. - [Bodo Moeller] - - *) In RAND_write_file, use mode 0600 for creating files; - don't just chmod when it may be too late. - [Bodo Moeller] - - *) Report an error from X509_STORE_load_locations - when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed. - [Bill Perry] - - *) New function ASN1_mbstring_copy() this copies a string in either - ASCII, Unicode, Universal (4 bytes per character) or UTF8 format - into an ASN1_STRING type. A mask of permissible types is passed - and it chooses the "minimal" type to use or an error if not type - is suitable. - [Steve Henson] - - *) Add function equivalents to the various macros in asn1.h. The old - macros are retained with an M_ prefix. Code inside the library can - use the M_ macros. External code (including the openssl utility) - should *NOT* in order to be "shared library friendly". - [Steve Henson] - - *) Add various functions that can check a certificate's extensions - to see if it usable for various purposes such as SSL client, - server or S/MIME and CAs of these types. This is currently - VERY EXPERIMENTAL but will ultimately be used for certificate chain - verification. Also added a -purpose flag to x509 utility to - print out all the purposes. - [Steve Henson] - - *) Add a CRYPTO_EX_DATA to X509 certificate structure and associated - functions. - [Steve Henson] - - *) New X509V3_{X509,CRL,REVOKED}_get_d2i() functions. These will search - for, obtain and decode and extension and obtain its critical flag. - This allows all the necessary extension code to be handled in a - single function call. - [Steve Henson] - - *) RC4 tune-up featuring 30-40% performance improvement on most RISC - platforms. See crypto/rc4/rc4_enc.c for further details. - [Andy Polyakov] - - *) New -noout option to asn1parse. This causes no output to be produced - its main use is when combined with -strparse and -out to extract data - from a file (which may not be in ASN.1 format). - [Steve Henson] - - *) Fix for pkcs12 program. It was hashing an invalid certificate pointer - when producing the local key id. - [Richard Levitte ] - - *) New option -dhparam in s_server. This allows a DH parameter file to be - stated explicitly. If it is not stated then it tries the first server - certificate file. The previous behaviour hard coded the filename - "server.pem". - [Steve Henson] - - *) Add -pubin and -pubout options to the rsa and dsa commands. These allow - a public key to be input or output. For example: - openssl rsa -in key.pem -pubout -out pubkey.pem - Also added necessary DSA public key functions to handle this. - [Steve Henson] - - *) Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained - in the message. This was handled by allowing - X509_find_by_issuer_and_serial() to tolerate a NULL passed to it. - [Steve Henson, reported by Sampo Kellomaki ] - - *) Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null - to the end of the strings whereas this didn't. This would cause problems - if strings read with d2i_ASN1_bytes() were later modified. - [Steve Henson, reported by Arne Ansper ] - - *) Fix for base64 decode bug. When a base64 bio reads only one line of - data and it contains EOF it will end up returning an error. This is - caused by input 46 bytes long. The cause is due to the way base64 - BIOs find the start of base64 encoded data. They do this by trying a - trial decode on each line until they find one that works. When they - do a flag is set and it starts again knowing it can pass all the - data directly through the decoder. Unfortunately it doesn't reset - the context it uses. This means that if EOF is reached an attempt - is made to pass two EOFs through the context and this causes the - resulting error. This can also cause other problems as well. As is - usual with these problems it takes *ages* to find and the fix is - trivial: move one line. - [Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer) ] - - *) Ugly workaround to get s_client and s_server working under Windows. The - old code wouldn't work because it needed to select() on sockets and the - tty (for keypresses and to see if data could be written). Win32 only - supports select() on sockets so we select() with a 1s timeout on the - sockets and then see if any characters are waiting to be read, if none - are present then we retry, we also assume we can always write data to - the tty. This isn't nice because the code then blocks until we've - received a complete line of data and it is effectively polling the - keyboard at 1s intervals: however it's quite a bit better than not - working at all :-) A dedicated Windows application might handle this - with an event loop for example. - [Steve Henson] - - *) Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign - and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions - will be called when RSA_sign() and RSA_verify() are used. This is useful - if rsa_pub_dec() and rsa_priv_enc() equivalents are not available. - For this to work properly RSA_public_decrypt() and RSA_private_encrypt() - should *not* be used: RSA_sign() and RSA_verify() must be used instead. - This necessitated the support of an extra signature type NID_md5_sha1 - for SSL signatures and modifications to the SSL library to use it instead - of calling RSA_public_decrypt() and RSA_private_encrypt(). - [Steve Henson] - - *) Add new -verify -CAfile and -CApath options to the crl program, these - will lookup a CRL issuers certificate and verify the signature in a - similar way to the verify program. Tidy up the crl program so it - no longer accesses structures directly. Make the ASN1 CRL parsing a bit - less strict. It will now permit CRL extensions even if it is not - a V2 CRL: this will allow it to tolerate some broken CRLs. - [Steve Henson] - - *) Initialize all non-automatic variables each time one of the openssl - sub-programs is started (this is necessary as they may be started - multiple times from the "OpenSSL>" prompt). - [Lennart Bang, Bodo Moeller] - - *) Preliminary compilation option RSA_NULL which disables RSA crypto without - removing all other RSA functionality (this is what NO_RSA does). This - is so (for example) those in the US can disable those operations covered - by the RSA patent while allowing storage and parsing of RSA keys and RSA - key generation. - [Steve Henson] - - *) Non-copying interface to BIO pairs. - (still largely untested) - [Bodo Moeller] - - *) New function ANS1_tag2str() to convert an ASN1 tag to a descriptive - ASCII string. This was handled independently in various places before. - [Steve Henson] - - *) New functions UTF8_getc() and UTF8_putc() that parse and generate - UTF8 strings a character at a time. - [Steve Henson] - - *) Use client_version from client hello to select the protocol - (s23_srvr.c) and for RSA client key exchange verification - (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications. - [Bodo Moeller] - - *) Add various utility functions to handle SPKACs, these were previously - handled by poking round in the structure internals. Added new function - NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to - print, verify and generate SPKACs. Based on an original idea from - Massimiliano Pala but extensively modified. - [Steve Henson] - - *) RIPEMD160 is operational on all platforms and is back in 'make test'. - [Andy Polyakov] - - *) Allow the config file extension section to be overwritten on the - command line. Based on an original idea from Massimiliano Pala - . The new option is called -extensions - and can be applied to ca, req and x509. Also -reqexts to override - the request extensions in req and -crlexts to override the crl extensions - in ca. - [Steve Henson] - - *) Add new feature to the SPKAC handling in ca. Now you can include - the same field multiple times by preceding it by "XXXX." for example: - 1.OU="Unit name 1" - 2.OU="Unit name 2" - this is the same syntax as used in the req config file. - [Steve Henson] - - *) Allow certificate extensions to be added to certificate requests. These - are specified in a 'req_extensions' option of the req section of the - config file. They can be printed out with the -text option to req but - are otherwise ignored at present. - [Steve Henson] - - *) Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first - data read consists of only the final block it would not decrypted because - EVP_CipherUpdate() would correctly report zero bytes had been decrypted. - A misplaced 'break' also meant the decrypted final block might not be - copied until the next read. - [Steve Henson] - - *) Initial support for DH_METHOD. Again based on RSA_METHOD. Also added - a few extra parameters to the DH structure: these will be useful if - for example we want the value of 'q' or implement X9.42 DH. - [Steve Henson] - - *) Initial support for DSA_METHOD. This is based on the RSA_METHOD and - provides hooks that allow the default DSA functions or functions on a - "per key" basis to be replaced. This allows hardware acceleration and - hardware key storage to be handled without major modification to the - library. Also added low level modexp hooks and CRYPTO_EX structure and - associated functions. - [Steve Henson] - - *) Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO - as "read only": it can't be written to and the buffer it points to will - not be freed. Reading from a read only BIO is much more efficient than - a normal memory BIO. This was added because there are several times when - an area of memory needs to be read from a BIO. The previous method was - to create a memory BIO and write the data to it, this results in two - copies of the data and an O(n^2) reading algorithm. There is a new - function BIO_new_mem_buf() which creates a read only memory BIO from - an area of memory. Also modified the PKCS#7 routines to use read only - memory BIOs. - [Steve Henson] - - *) Bugfix: ssl23_get_client_hello did not work properly when called in - state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of - a SSLv2-compatible client hello for SSLv3 or TLSv1 could be read, - but a retry condition occurred while trying to read the rest. - [Bodo Moeller] - - *) The PKCS7_ENC_CONTENT_new() function was setting the content type as - NID_pkcs7_encrypted by default: this was wrong since this should almost - always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle - the encrypted data type: this is a more sensible place to put it and it - allows the PKCS#12 code to be tidied up that duplicated this - functionality. - [Steve Henson] - - *) Changed obj_dat.pl script so it takes its input and output files on - the command line. This should avoid shell escape redirection problems - under Win32. - [Steve Henson] - - *) Initial support for certificate extension requests, these are included - in things like Xenroll certificate requests. Included functions to allow - extensions to be obtained and added. - [Steve Henson] - - *) -crlf option to s_client and s_server for sending newlines as - CRLF (as required by many protocols). - [Bodo Moeller] - - Changes between 0.9.3a and 0.9.4 [09 Aug 1999] - - *) Install libRSAglue.a when OpenSSL is built with RSAref. - [Ralf S. Engelschall] - - *) A few more ``#ifndef NO_FP_API / #endif'' pairs for consistency. - [Andrija Antonijevic ] - - *) Fix -startdate and -enddate (which was missing) arguments to 'ca' - program. - [Steve Henson] - - *) New function DSA_dup_DH, which duplicates DSA parameters/keys as - DH parameters/keys (q is lost during that conversion, but the resulting - DH parameters contain its length). - - For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is - much faster than DH_generate_parameters (which creates parameters - where p = 2*q + 1), and also the smaller q makes DH computations - much more efficient (160-bit exponentiation instead of 1024-bit - exponentiation); so this provides a convenient way to support DHE - ciphersuites in SSL/TLS servers (see ssl/ssltest.c). It is of - utter importance to use - SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE); - or - SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE); - when such DH parameters are used, because otherwise small subgroup - attacks may become possible! - [Bodo Moeller] - - *) Avoid memory leak in i2d_DHparams. - [Bodo Moeller] - - *) Allow the -k option to be used more than once in the enc program: - this allows the same encrypted message to be read by multiple recipients. - [Steve Henson] - - *) New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts - an ASN1_OBJECT to a text string. If the "no_name" parameter is set then - it will always use the numerical form of the OID, even if it has a short - or long name. - [Steve Henson] - - *) Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp - method only got called if p,q,dmp1,dmq1,iqmp components were present, - otherwise bn_mod_exp was called. In the case of hardware keys for example - no private key components need be present and it might store extra data - in the RSA structure, which cannot be accessed from bn_mod_exp. - By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for - private key operations. - [Steve Henson] - - *) Added support for SPARC Linux. - [Andy Polyakov] - - *) pem_password_cb function type incompatibly changed from - typedef int pem_password_cb(char *buf, int size, int rwflag); - to - ....(char *buf, int size, int rwflag, void *userdata); - so that applications can pass data to their callbacks: - The PEM[_ASN1]_{read,write}... functions and macros now take an - additional void * argument, which is just handed through whenever - the password callback is called. - [Damien Miller ; tiny changes by Bodo Moeller] - - New function SSL_CTX_set_default_passwd_cb_userdata. - - Compatibility note: As many C implementations push function arguments - onto the stack in reverse order, the new library version is likely to - interoperate with programs that have been compiled with the old - pem_password_cb definition (PEM_whatever takes some data that - happens to be on the stack as its last argument, and the callback - just ignores this garbage); but there is no guarantee whatsoever that - this will work. - - *) The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=... - (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused - problems not only on Windows, but also on some Unix platforms. - To avoid problematic command lines, these definitions are now in an - auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl - for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds). - [Bodo Moeller] - - *) MIPS III/IV assembler module is reimplemented. - [Andy Polyakov] - - *) More DES library cleanups: remove references to srand/rand and - delete an unused file. - [Ulf Möller] - - *) Add support for the the free Netwide assembler (NASM) under Win32, - since not many people have MASM (ml) and it can be hard to obtain. - This is currently experimental but it seems to work OK and pass all - the tests. Check out INSTALL.W32 for info. - [Steve Henson] - - *) Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections - without temporary keys kept an extra copy of the server key, - and connections with temporary keys did not free everything in case - of an error. - [Bodo Moeller] - - *) New function RSA_check_key and new openssl rsa option -check - for verifying the consistency of RSA keys. - [Ulf Moeller, Bodo Moeller] - - *) Various changes to make Win32 compile work: - 1. Casts to avoid "loss of data" warnings in p5_crpt2.c - 2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned - comparison" warnings. - 3. Add sk__sort to DEF file generator and do make update. - [Steve Henson] - - *) Add a debugging option to PKCS#5 v2 key generation function: when - you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and - derived keys are printed to stderr. - [Steve Henson] - - *) Copy the flags in ASN1_STRING_dup(). - [Roman E. Pavlov ] - - *) The x509 application mishandled signing requests containing DSA - keys when the signing key was also DSA and the parameters didn't match. - - It was supposed to omit the parameters when they matched the signing key: - the verifying software was then supposed to automatically use the CA's - parameters if they were absent from the end user certificate. - - Omitting parameters is no longer recommended. The test was also - the wrong way round! This was probably due to unusual behaviour in - EVP_cmp_parameters() which returns 1 if the parameters match. - This meant that parameters were omitted when they *didn't* match and - the certificate was useless. Certificates signed with 'ca' didn't have - this bug. - [Steve Henson, reported by Doug Erickson ] - - *) Memory leak checking (-DCRYPTO_MDEBUG) had some problems. - The interface is as follows: - Applications can use - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(), - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop(); - "off" is now the default. - The library internally uses - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(), - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on() - to disable memory-checking temporarily. - - Some inconsistent states that previously were possible (and were - even the default) are now avoided. - - -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time - with each memory chunk allocated; this is occasionally more helpful - than just having a counter. - - -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID. - - -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future - extensions. - [Bodo Moeller] - - *) Introduce "mode" for SSL structures (with defaults in SSL_CTX), - which largely parallels "options", but is for changing API behaviour, - whereas "options" are about protocol behaviour. - Initial "mode" flags are: - - SSL_MODE_ENABLE_PARTIAL_WRITE Allow SSL_write to report success when - a single record has been written. - SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER Don't insist that SSL_write - retries use the same buffer location. - (But all of the contents must be - copied!) - [Bodo Moeller] - - *) Bugfix: SSL_set_options ignored its parameter, only SSL_CTX_set_options - worked. - - *) Fix problems with no-hmac etc. - [Ulf Möller, pointed out by Brian Wellington ] - - *) New functions RSA_get_default_method(), RSA_set_method() and - RSA_get_method(). These allows replacement of RSA_METHODs without having - to mess around with the internals of an RSA structure. - [Steve Henson] - - *) Fix memory leaks in DSA_do_sign and DSA_is_prime. - Also really enable memory leak checks in openssl.c and in some - test programs. - [Chad C. Mulligan, Bodo Moeller] - - *) Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess - up the length of negative integers. This has now been simplified to just - store the length when it is first determined and use it later, rather - than trying to keep track of where data is copied and updating it to - point to the end. - [Steve Henson, reported by Brien Wheeler - ] - - *) Add a new function PKCS7_signatureVerify. This allows the verification - of a PKCS#7 signature but with the signing certificate passed to the - function itself. This contrasts with PKCS7_dataVerify which assumes the - certificate is present in the PKCS#7 structure. This isn't always the - case: certificates can be omitted from a PKCS#7 structure and be - distributed by "out of band" means (such as a certificate database). - [Steve Henson] - - *) Complete the PEM_* macros with DECLARE_PEM versions to replace the - function prototypes in pem.h, also change util/mkdef.pl to add the - necessary function names. - [Steve Henson] - - *) mk1mf.pl (used by Windows builds) did not properly read the - options set by Configure in the top level Makefile, and Configure - was not even able to write more than one option correctly. - Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended. - [Bodo Moeller] - - *) New functions CONF_load_bio() and CONF_load_fp() to allow a config - file to be loaded from a BIO or FILE pointer. The BIO version will - for example allow memory BIOs to contain config info. - [Steve Henson] - - *) New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS. - Whoever hopes to achieve shared-library compatibility across versions - must use this, not the compile-time macro. - (Exercise 0.9.4: Which is the minimum library version required by - such programs?) - Note: All this applies only to multi-threaded programs, others don't - need locks. - [Bodo Moeller] - - *) Add missing case to s3_clnt.c state machine -- one of the new SSL tests - through a BIO pair triggered the default case, i.e. - SSLerr(...,SSL_R_UNKNOWN_STATE). - [Bodo Moeller] - - *) New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications - can use the SSL library even if none of the specific BIOs is - appropriate. - [Bodo Moeller] - - *) Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value - for the encoded length. - [Jeon KyoungHo ] - - *) Add initial documentation of the X509V3 functions. - [Steve Henson] - - *) Add a new pair of functions PEM_write_PKCS8PrivateKey() and - PEM_write_bio_PKCS8PrivateKey() that are equivalent to - PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more - secure PKCS#8 private key format with a high iteration count. - [Steve Henson] - - *) Fix determination of Perl interpreter: A perl or perl5 - _directory_ in $PATH was also accepted as the interpreter. - [Ralf S. Engelschall] - - *) Fix demos/sign/sign.c: well there wasn't anything strictly speaking - wrong with it but it was very old and did things like calling - PEM_ASN1_read() directly and used MD5 for the hash not to mention some - unusual formatting. - [Steve Henson] - - *) Fix demos/selfsign.c: it used obsolete and deleted functions, changed - to use the new extension code. - [Steve Henson] - - *) Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c - with macros. This should make it easier to change their form, add extra - arguments etc. Fix a few PEM prototypes which didn't have cipher as a - constant. - [Steve Henson] - - *) Add to configuration table a new entry that can specify an alternative - name for unistd.h (for pre-POSIX systems); we need this for NeXTstep, - according to Mark Crispin . - [Bodo Moeller] - -#if 0 - *) DES CBC did not update the IV. Weird. - [Ben Laurie] -#else - des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does. - Changing the behaviour of the former might break existing programs -- - where IV updating is needed, des_ncbc_encrypt can be used. -#endif - - *) When bntest is run from "make test" it drives bc to check its - calculations, as well as internally checking them. If an internal check - fails, it needs to cause bc to give a non-zero result or make test carries - on without noticing the failure. Fixed. - [Ben Laurie] - - *) DES library cleanups. - [Ulf Möller] - - *) Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be - used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit - ciphers. NOTE: although the key derivation function has been verified - against some published test vectors it has not been extensively tested - yet. Added a -v2 "cipher" option to pkcs8 application to allow the use - of v2.0. - [Steve Henson] - - *) Instead of "mkdir -p", which is not fully portable, use new - Perl script "util/mkdir-p.pl". - [Bodo Moeller] - - *) Rewrite the way password based encryption (PBE) is handled. It used to - assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter - structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms - but doesn't apply to PKCS#5 v2.0 where it can be something else. Now - the 'parameter' field of the AlgorithmIdentifier is passed to the - underlying key generation function so it must do its own ASN1 parsing. - This has also changed the EVP_PBE_CipherInit() function which now has a - 'parameter' argument instead of literal salt and iteration count values - and the function EVP_PBE_ALGOR_CipherInit() has been deleted. - [Steve Henson] - - *) Support for PKCS#5 v1.5 compatible password based encryption algorithms - and PKCS#8 functionality. New 'pkcs8' application linked to openssl. - Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE - KEY" because this clashed with PKCS#8 unencrypted string. Since this - value was just used as a "magic string" and not used directly its - value doesn't matter. - [Steve Henson] - - *) Introduce some semblance of const correctness to BN. Shame C doesn't - support mutable. - [Ben Laurie] - - *) "linux-sparc64" configuration (ultrapenguin). - [Ray Miller ] - "linux-sparc" configuration. - [Christian Forster ] - - *) config now generates no-xxx options for missing ciphers. - [Ulf Möller] - - *) Support the EBCDIC character set (work in progress). - File ebcdic.c not yet included because it has a different license. - [Martin Kraemer ] - - *) Support BS2000/OSD-POSIX. - [Martin Kraemer ] - - *) Make callbacks for key generation use void * instead of char *. - [Ben Laurie] - - *) Make S/MIME samples compile (not yet tested). - [Ben Laurie] - - *) Additional typesafe stacks. - [Ben Laurie] - - *) New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x). - [Bodo Moeller] - - - Changes between 0.9.3 and 0.9.3a [29 May 1999] - - *) New configuration variant "sco5-gcc". - - *) Updated some demos. - [Sean O Riordain, Wade Scholine] - - *) Add missing BIO_free at exit of pkcs12 application. - [Wu Zhigang] - - *) Fix memory leak in conf.c. - [Steve Henson] - - *) Updates for Win32 to assembler version of MD5. - [Steve Henson] - - *) Set #! path to perl in apps/der_chop to where we found it - instead of using a fixed path. - [Bodo Moeller] - - *) SHA library changes for irix64-mips4-cc. - [Andy Polyakov] - - *) Improvements for VMS support. - [Richard Levitte] - - - Changes between 0.9.2b and 0.9.3 [24 May 1999] - - *) Bignum library bug fix. IRIX 6 passes "make test" now! - This also avoids the problems with SC4.2 and unpatched SC5. - [Andy Polyakov ] - - *) New functions sk_num, sk_value and sk_set to replace the previous macros. - These are required because of the typesafe stack would otherwise break - existing code. If old code used a structure member which used to be STACK - and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with - sk_num or sk_value it would produce an error because the num, data members - are not present in STACK_OF. Now it just produces a warning. sk_set - replaces the old method of assigning a value to sk_value - (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code - that does this will no longer work (and should use sk_set instead) but - this could be regarded as a "questionable" behaviour anyway. - [Steve Henson] - - *) Fix most of the other PKCS#7 bugs. The "experimental" code can now - correctly handle encrypted S/MIME data. - [Steve Henson] - - *) Change type of various DES function arguments from des_cblock - (which means, in function argument declarations, pointer to char) - to des_cblock * (meaning pointer to array with 8 char elements), - which allows the compiler to do more typechecking; it was like - that back in SSLeay, but with lots of ugly casts. - - Introduce new type const_des_cblock. - [Bodo Moeller] - - *) Reorganise the PKCS#7 library and get rid of some of the more obvious - problems: find RecipientInfo structure that matches recipient certificate - and initialise the ASN1 structures properly based on passed cipher. - [Steve Henson] - - *) Belatedly make the BN tests actually check the results. - [Ben Laurie] - - *) Fix the encoding and decoding of negative ASN1 INTEGERS and conversion - to and from BNs: it was completely broken. New compilation option - NEG_PUBKEY_BUG to allow for some broken certificates that encode public - key elements as negative integers. - [Steve Henson] - - *) Reorganize and speed up MD5. - [Andy Polyakov ] - - *) VMS support. - [Richard Levitte ] - - *) New option -out to asn1parse to allow the parsed structure to be - output to a file. This is most useful when combined with the -strparse - option to examine the output of things like OCTET STRINGS. - [Steve Henson] - - *) Make SSL library a little more fool-proof by not requiring any longer - that SSL_set_{accept,connect}_state be called before - SSL_{accept,connect} may be used (SSL_set_..._state is omitted - in many applications because usually everything *appeared* to work as - intended anyway -- now it really works as intended). - [Bodo Moeller] - - *) Move openssl.cnf out of lib/. - [Ulf Möller] - - *) Fix various things to let OpenSSL even pass ``egcc -pipe -O2 -Wall - -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes - -Wmissing-declarations -Wnested-externs -Winline'' with EGCS 1.1.2+ - [Ralf S. Engelschall] - - *) Various fixes to the EVP and PKCS#7 code. It may now be able to - handle PKCS#7 enveloped data properly. - [Sebastian Akerman , modified by Steve] - - *) Create a duplicate of the SSL_CTX's CERT in SSL_new instead of - copying pointers. The cert_st handling is changed by this in - various ways (and thus what used to be known as ctx->default_cert - is now called ctx->cert, since we don't resort to s->ctx->[default_]cert - any longer when s->cert does not give us what we need). - ssl_cert_instantiate becomes obsolete by this change. - As soon as we've got the new code right (possibly it already is?), - we have solved a couple of bugs of the earlier code where s->cert - was used as if it could not have been shared with other SSL structures. - - Note that using the SSL API in certain dirty ways now will result - in different behaviour than observed with earlier library versions: - Changing settings for an SSL_CTX *ctx after having done s = SSL_new(ctx) - does not influence s as it used to. - - In order to clean up things more thoroughly, inside SSL_SESSION - we don't use CERT any longer, but a new structure SESS_CERT - that holds per-session data (if available); currently, this is - the peer's certificate chain and, for clients, the server's certificate - and temporary key. CERT holds only those values that can have - meaningful defaults in an SSL_CTX. - [Bodo Moeller] - - *) New function X509V3_EXT_i2d() to create an X509_EXTENSION structure - from the internal representation. Various PKCS#7 fixes: remove some - evil casts and set the enc_dig_alg field properly based on the signing - key type. - [Steve Henson] - - *) Allow PKCS#12 password to be set from the command line or the - environment. Let 'ca' get its config file name from the environment - variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req' - and 'x509'). - [Steve Henson] - - *) Allow certificate policies extension to use an IA5STRING for the - organization field. This is contrary to the PKIX definition but - VeriSign uses it and IE5 only recognises this form. Document 'x509' - extension option. - [Steve Henson] - - *) Add PEDANTIC compiler flag to allow compilation with gcc -pedantic, - without disallowing inline assembler and the like for non-pedantic builds. - [Ben Laurie] - - *) Support Borland C++ builder. - [Janez Jere , modified by Ulf Möller] - - *) Support Mingw32. - [Ulf Möller] - - *) SHA-1 cleanups and performance enhancements. - [Andy Polyakov ] - - *) Sparc v8plus assembler for the bignum library. - [Andy Polyakov ] - - *) Accept any -xxx and +xxx compiler options in Configure. - [Ulf Möller] - - *) Update HPUX configuration. - [Anonymous] - - *) Add missing sk__unshift() function to safestack.h - [Ralf S. Engelschall] - - *) New function SSL_CTX_use_certificate_chain_file that sets the - "extra_cert"s in addition to the certificate. (This makes sense - only for "PEM" format files, as chains as a whole are not - DER-encoded.) - [Bodo Moeller] - - *) Support verify_depth from the SSL API. - x509_vfy.c had what can be considered an off-by-one-error: - Its depth (which was not part of the external interface) - was actually counting the number of certificates in a chain; - now it really counts the depth. - [Bodo Moeller] - - *) Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used - instead of X509err, which often resulted in confusing error - messages since the error codes are not globally unique - (e.g. an alleged error in ssl3_accept when a certificate - didn't match the private key). - - *) New function SSL_CTX_set_session_id_context that allows to set a default - value (so that you don't need SSL_set_session_id_context for each - connection using the SSL_CTX). - [Bodo Moeller] - - *) OAEP decoding bug fix. - [Ulf Möller] - - *) Support INSTALL_PREFIX for package builders, as proposed by - David Harris. - [Bodo Moeller] - - *) New Configure options "threads" and "no-threads". For systems - where the proper compiler options are known (currently Solaris - and Linux), "threads" is the default. - [Bodo Moeller] - - *) New script util/mklink.pl as a faster substitute for util/mklink.sh. - [Bodo Moeller] - - *) Install various scripts to $(OPENSSLDIR)/misc, not to - $(INSTALLTOP)/bin -- they shouldn't clutter directories - such as /usr/local/bin. - [Bodo Moeller] - - *) "make linux-shared" to build shared libraries. - [Niels Poppe ] - - *) New Configure option no- (rsa, idea, rc5, ...). - [Ulf Möller] - - *) Add the PKCS#12 API documentation to openssl.txt. Preliminary support for - extension adding in x509 utility. - [Steve Henson] - - *) Remove NOPROTO sections and error code comments. - [Ulf Möller] - - *) Partial rewrite of the DEF file generator to now parse the ANSI - prototypes. - [Steve Henson] - - *) New Configure options --prefix=DIR and --openssldir=DIR. - [Ulf Möller] - - *) Complete rewrite of the error code script(s). It is all now handled - by one script at the top level which handles error code gathering, - header rewriting and C source file generation. It should be much better - than the old method: it now uses a modified version of Ulf's parser to - read the ANSI prototypes in all header files (thus the old K&R definitions - aren't needed for error creation any more) and do a better job of - translating function codes into names. The old 'ASN1 error code imbedded - in a comment' is no longer necessary and it doesn't use .err files which - have now been deleted. Also the error code call doesn't have to appear all - on one line (which resulted in some large lines...). - [Steve Henson] - - *) Change #include filenames from to . - [Bodo Moeller] - - *) Change behaviour of ssl2_read when facing length-0 packets: Don't return - 0 (which usually indicates a closed connection), but continue reading. - [Bodo Moeller] - - *) Fix some race conditions. - [Bodo Moeller] - - *) Add support for CRL distribution points extension. Add Certificate - Policies and CRL distribution points documentation. - [Steve Henson] - - *) Move the autogenerated header file parts to crypto/opensslconf.h. - [Ulf Möller] - - *) Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of - 8 of keying material. Merlin has also confirmed interop with this fix - between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0. - [Merlin Hughes ] - - *) Fix lots of warnings. - [Richard Levitte ] - - *) In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if - the directory spec didn't end with a LIST_SEPARATOR_CHAR. - [Richard Levitte ] - - *) Fix problems with sizeof(long) == 8. - [Andy Polyakov ] - - *) Change functions to ANSI C. - [Ulf Möller] - - *) Fix typos in error codes. - [Martin Kraemer , Ulf Möller] - - *) Remove defunct assembler files from Configure. - [Ulf Möller] - - *) SPARC v8 assembler BIGNUM implementation. - [Andy Polyakov ] - - *) Support for Certificate Policies extension: both print and set. - Various additions to support the r2i method this uses. - [Steve Henson] - - *) A lot of constification, and fix a bug in X509_NAME_oneline() that could - return a const string when you are expecting an allocated buffer. - [Ben Laurie] - - *) Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE - types DirectoryString and DisplayText. - [Steve Henson] - - *) Add code to allow r2i extensions to access the configuration database, - add an LHASH database driver and add several ctx helper functions. - [Steve Henson] - - *) Fix an evil bug in bn_expand2() which caused various BN functions to - fail when they extended the size of a BIGNUM. - [Steve Henson] - - *) Various utility functions to handle SXNet extension. Modify mkdef.pl to - support typesafe stack. - [Steve Henson] - - *) Fix typo in SSL_[gs]et_options(). - [Nils Frostberg ] - - *) Delete various functions and files that belonged to the (now obsolete) - old X509V3 handling code. - [Steve Henson] - - *) New Configure option "rsaref". - [Ulf Möller] - - *) Don't auto-generate pem.h. - [Bodo Moeller] - - *) Introduce type-safe ASN.1 SETs. - [Ben Laurie] - - *) Convert various additional casted stacks to type-safe STACK_OF() variants. - [Ben Laurie, Ralf S. Engelschall, Steve Henson] - - *) Introduce type-safe STACKs. This will almost certainly break lots of code - that links with OpenSSL (well at least cause lots of warnings), but fear - not: the conversion is trivial, and it eliminates loads of evil casts. A - few STACKed things have been converted already. Feel free to convert more. - In the fullness of time, I'll do away with the STACK type altogether. - [Ben Laurie] - - *) Add `openssl ca -revoke ' facility which revokes a certificate - specified in by updating the entry in the index.txt file. - This way one no longer has to edit the index.txt file manually for - revoking a certificate. The -revoke option does the gory details now. - [Massimiliano Pala , Ralf S. Engelschall] - - *) Fix `openssl crl -noout -text' combination where `-noout' killed the - `-text' option at all and this way the `-noout -text' combination was - inconsistent in `openssl crl' with the friends in `openssl x509|rsa|dsa'. - [Ralf S. Engelschall] - - *) Make sure a corresponding plain text error message exists for the - X509_V_ERR_CERT_REVOKED/23 error number which can occur when a - verify callback function determined that a certificate was revoked. - [Ralf S. Engelschall] - - *) Bugfix: In test/testenc, don't test "openssl " for - ciphers that were excluded, e.g. by -DNO_IDEA. Also, test - all available cipers including rc5, which was forgotten until now. - In order to let the testing shell script know which algorithms - are available, a new (up to now undocumented) command - "openssl list-cipher-commands" is used. - [Bodo Moeller] - - *) Bugfix: s_client occasionally would sleep in select() when - it should have checked SSL_pending() first. - [Bodo Moeller] - - *) New functions DSA_do_sign and DSA_do_verify to provide access to - the raw DSA values prior to ASN.1 encoding. - [Ulf Möller] - - *) Tweaks to Configure - [Niels Poppe ] - - *) Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support, - yet... - [Steve Henson] - - *) New variables $(RANLIB) and $(PERL) in the Makefiles. - [Ulf Möller] - - *) New config option to avoid instructions that are illegal on the 80386. - The default code is faster, but requires at least a 486. - [Ulf Möller] - - *) Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and - SSL2_SERVER_VERSION (not used at all) macros, which are now the - same as SSL2_VERSION anyway. - [Bodo Moeller] - - *) New "-showcerts" option for s_client. - [Bodo Moeller] - - *) Still more PKCS#12 integration. Add pkcs12 application to openssl - application. Various cleanups and fixes. - [Steve Henson] - - *) More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and - modify error routines to work internally. Add error codes and PBE init - to library startup routines. - [Steve Henson] - - *) Further PKCS#12 integration. Added password based encryption, PKCS#8 and - packing functions to asn1 and evp. Changed function names and error - codes along the way. - [Steve Henson] - - *) PKCS12 integration: and so it begins... First of several patches to - slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12 - objects to objects.h - [Steve Henson] - - *) Add a new 'indent' option to some X509V3 extension code. Initial ASN1 - and display support for Thawte strong extranet extension. - [Steve Henson] - - *) Add LinuxPPC support. - [Jeff Dubrule ] - - *) Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to - bn_div_words in alpha.s. - [Hannes Reinecke and Ben Laurie] - - *) Make sure the RSA OAEP test is skipped under -DRSAref because - OAEP isn't supported when OpenSSL is built with RSAref. - [Ulf Moeller ] - - *) Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h - so they no longer are missing under -DNOPROTO. - [Soren S. Jorvang ] - - - Changes between 0.9.1c and 0.9.2b [22 Mar 1999] - - *) Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still - doesn't work when the session is reused. Coming soon! - [Ben Laurie] - - *) Fix a security hole, that allows sessions to be reused in the wrong - context thus bypassing client cert protection! All software that uses - client certs and session caches in multiple contexts NEEDS PATCHING to - allow session reuse! A fuller solution is in the works. - [Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)] - - *) Some more source tree cleanups (removed obsolete files - crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed - permission on "config" script to be executable) and a fix for the INSTALL - document. - [Ulf Moeller ] - - *) Remove some legacy and erroneous uses of malloc, free instead of - Malloc, Free. - [Lennart Bang , with minor changes by Steve] - - *) Make rsa_oaep_test return non-zero on error. - [Ulf Moeller ] - - *) Add support for native Solaris shared libraries. Configure - solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice - if someone would make that last step automatic. - [Matthias Loepfe ] - - *) ctx_size was not built with the right compiler during "make links". Fixed. - [Ben Laurie] - - *) Change the meaning of 'ALL' in the cipher list. It now means "everything - except NULL ciphers". This means the default cipher list will no longer - enable NULL ciphers. They need to be specifically enabled e.g. with - the string "DEFAULT:eNULL". - [Steve Henson] - - *) Fix to RSA private encryption routines: if p < q then it would - occasionally produce an invalid result. This will only happen with - externally generated keys because OpenSSL (and SSLeay) ensure p > q. - [Steve Henson] - - *) Be less restrictive and allow also `perl util/perlpath.pl - /path/to/bin/perl' in addition to `perl util/perlpath.pl /path/to/bin', - because this way one can also use an interpreter named `perl5' (which is - usually the name of Perl 5.xxx on platforms where an Perl 4.x is still - installed as `perl'). - [Matthias Loepfe ] - - *) Let util/clean-depend.pl work also with older Perl 5.00x versions. - [Matthias Loepfe ] - - *) Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add - advapi32.lib to Win32 build and change the pem test comparison - to fc.exe (thanks to Ulrich Kroener for the - suggestion). Fix misplaced ASNI prototypes and declarations in evp.h - and crypto/des/ede_cbcm_enc.c. - [Steve Henson] - - *) DES quad checksum was broken on big-endian architectures. Fixed. - [Ben Laurie] - - *) Comment out two functions in bio.h that aren't implemented. Fix up the - Win32 test batch file so it (might) work again. The Win32 test batch file - is horrible: I feel ill.... - [Steve Henson] - - *) Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected - in e_os.h. Audit of header files to check ANSI and non ANSI - sections: 10 functions were absent from non ANSI section and not exported - from Windows DLLs. Fixed up libeay.num for new functions. - [Steve Henson] - - *) Make `openssl version' output lines consistent. - [Ralf S. Engelschall] - - *) Fix Win32 symbol export lists for BIO functions: Added - BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data - to ms/libeay{16,32}.def. - [Ralf S. Engelschall] - - *) Second round of fixing the OpenSSL perl/ stuff. It now at least compiled - fine under Unix and passes some trivial tests I've now added. But the - whole stuff is horribly incomplete, so a README.1ST with a disclaimer was - added to make sure no one expects that this stuff really works in the - OpenSSL 0.9.2 release. Additionally I've started to clean the XS sources - up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and - openssl_bio.xs. - [Ralf S. Engelschall] - - *) Fix the generation of two part addresses in perl. - [Kenji Miyake , integrated by Ben Laurie] - - *) Add config entry for Linux on MIPS. - [John Tobey ] - - *) Make links whenever Configure is run, unless we are on Windoze. - [Ben Laurie] - - *) Permit extensions to be added to CRLs using crl_section in openssl.cnf. - Currently only issuerAltName and AuthorityKeyIdentifier make any sense - in CRLs. - [Steve Henson] - - *) Add a useful kludge to allow package maintainers to specify compiler and - other platforms details on the command line without having to patch the - Configure script everytime: One now can use ``perl Configure - :
'', i.e. platform ids are allowed to have details appended - to them (separated by colons). This is treated as there would be a static - pre-configured entry in Configure's %table under key with value -
and ``perl Configure '' is called. So, when you want to - perform a quick test-compile under FreeBSD 3.1 with pgcc and without - assembler stuff you can use ``perl Configure "FreeBSD-elf:pgcc:-O6:::"'' - now, which overrides the FreeBSD-elf entry on-the-fly. - [Ralf S. Engelschall] - - *) Disable new TLS1 ciphersuites by default: they aren't official yet. - [Ben Laurie] - - *) Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified - on the `perl Configure ...' command line. This way one can compile - OpenSSL libraries with Position Independent Code (PIC) which is needed - for linking it into DSOs. - [Ralf S. Engelschall] - - *) Remarkably, export ciphers were totally broken and no-one had noticed! - Fixed. - [Ben Laurie] - - *) Cleaned up the LICENSE document: The official contact for any license - questions now is the OpenSSL core team under openssl-core@openssl.org. - And add a paragraph about the dual-license situation to make sure people - recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply - to the OpenSSL toolkit. - [Ralf S. Engelschall] - - *) General source tree makefile cleanups: Made `making xxx in yyy...' - display consistent in the source tree and replaced `/bin/rm' by `rm'. - Additionally cleaned up the `make links' target: Remove unnecessary - semicolons, subsequent redundant removes, inline point.sh into mklink.sh - to speed processing and no longer clutter the display with confusing - stuff. Instead only the actually done links are displayed. - [Ralf S. Engelschall] - - *) Permit null encryption ciphersuites, used for authentication only. It used - to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this. - It is now necessary to set SSL_FORBID_ENULL to prevent the use of null - encryption. - [Ben Laurie] - - *) Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder - signed attributes when verifying signatures (this would break them), - the detached data encoding was wrong and public keys obtained using - X509_get_pubkey() weren't freed. - [Steve Henson] - - *) Add text documentation for the BUFFER functions. Also added a work around - to a Win95 console bug. This was triggered by the password read stuff: the - last character typed gets carried over to the next fread(). If you were - generating a new cert request using 'req' for example then the last - character of the passphrase would be CR which would then enter the first - field as blank. - [Steve Henson] - - *) Added the new `Includes OpenSSL Cryptography Software' button as - doc/openssl_button.{gif,html} which is similar in style to the old SSLeay - button and can be used by applications based on OpenSSL to show the - relationship to the OpenSSL project. - [Ralf S. Engelschall] - - *) Remove confusing variables in function signatures in files - ssl/ssl_lib.c and ssl/ssl.h. - [Lennart Bong ] - - *) Don't install bss_file.c under PREFIX/include/ - [Lennart Bong ] - - *) Get the Win32 compile working again. Modify mkdef.pl so it can handle - functions that return function pointers and has support for NT specific - stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various - #ifdef WIN32 and WINNTs sprinkled about the place and some changes from - unsigned to signed types: this was killing the Win32 compile. - [Steve Henson] - - *) Add new certificate file to stack functions, - SSL_add_dir_cert_subjects_to_stack() and - SSL_add_file_cert_subjects_to_stack(). These largely supplant - SSL_load_client_CA_file(), and can be used to add multiple certs easily - to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()). - This means that Apache-SSL and similar packages don't have to mess around - to add as many CAs as they want to the preferred list. - [Ben Laurie] - - *) Experiment with doxygen documentation. Currently only partially applied to - ssl/ssl_lib.c. - See http://www.stack.nl/~dimitri/doxygen/index.html, and run doxygen with - openssl.doxy as the configuration file. - [Ben Laurie] - - *) Get rid of remaining C++-style comments which strict C compilers hate. - [Ralf S. Engelschall, pointed out by Carlos Amengual] - - *) Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not - compiled in by default: it has problems with large keys. - [Steve Henson] - - *) Add a bunch of SSL_xxx() functions for configuring the temporary RSA and - DH private keys and/or callback functions which directly correspond to - their SSL_CTX_xxx() counterparts but work on a per-connection basis. This - is needed for applications which have to configure certificates on a - per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis - (e.g. s_server). - For the RSA certificate situation is makes no difference, but - for the DSA certificate situation this fixes the "no shared cipher" - problem where the OpenSSL cipher selection procedure failed because the - temporary keys were not overtaken from the context and the API provided - no way to reconfigure them. - The new functions now let applications reconfigure the stuff and they - are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh, - SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback. Additionally a new - non-public-API function ssl_cert_instantiate() is used as a helper - function and also to reduce code redundancy inside ssl_rsa.c. - [Ralf S. Engelschall] - - *) Move s_server -dcert and -dkey options out of the undocumented feature - area because they are useful for the DSA situation and should be - recognized by the users. - [Ralf S. Engelschall] - - *) Fix the cipher decision scheme for export ciphers: the export bits are - *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within - SSL_EXP_MASK. So, the original variable has to be used instead of the - already masked variable. - [Richard Levitte ] - - *) Fix 'port' variable from `int' to `unsigned int' in crypto/bio/b_sock.c - [Richard Levitte ] - - *) Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal() - from `int' to `unsigned int' because it's a length and initialized by - EVP_DigestFinal() which expects an `unsigned int *'. - [Richard Levitte ] - - *) Don't hard-code path to Perl interpreter on shebang line of Configure - script. Instead use the usual Shell->Perl transition trick. - [Ralf S. Engelschall] - - *) Make `openssl x509 -noout -modulus' functional also for DSA certificates - (in addition to RSA certificates) to match the behaviour of `openssl dsa - -noout -modulus' as it's already the case for `openssl rsa -noout - -modulus'. For RSA the -modulus is the real "modulus" while for DSA - currently the public key is printed (a decision which was already done by - `openssl dsa -modulus' in the past) which serves a similar purpose. - Additionally the NO_RSA no longer completely removes the whole -modulus - option; it now only avoids using the RSA stuff. Same applies to NO_DSA - now, too. - [Ralf S. Engelschall] - - *) Add Arne Ansper's reliable BIO - this is an encrypted, block-digested - BIO. See the source (crypto/evp/bio_ok.c) for more info. - [Arne Ansper ] - - *) Dump the old yucky req code that tried (and failed) to allow raw OIDs - to be added. Now both 'req' and 'ca' can use new objects defined in the - config file. - [Steve Henson] - - *) Add cool BIO that does syslog (or event log on NT). - [Arne Ansper , integrated by Ben Laurie] - - *) Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5, - TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and - TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher - Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt. - [Ben Laurie] - - *) Add preliminary config info for new extension code. - [Steve Henson] - - *) Make RSA_NO_PADDING really use no padding. - [Ulf Moeller ] - - *) Generate errors when private/public key check is done. - [Ben Laurie] - - *) Overhaul for 'crl' utility. New function X509_CRL_print. Partial support - for some CRL extensions and new objects added. - [Steve Henson] - - *) Really fix the ASN1 IMPLICIT bug this time... Partial support for private - key usage extension and fuller support for authority key id. - [Steve Henson] - - *) Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved - padding method for RSA, which is recommended for new applications in PKCS - #1 v2.0 (RFC 2437, October 1998). - OAEP (Optimal Asymmetric Encryption Padding) has better theoretical - foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure - against Bleichbacher's attack on RSA. - [Ulf Moeller , reformatted, corrected and integrated by - Ben Laurie] - - *) Updates to the new SSL compression code - [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)] - - *) Fix so that the version number in the master secret, when passed - via RSA, checks that if TLS was proposed, but we roll back to SSLv3 - (because the server will not accept higher), that the version number - is 0x03,0x01, not 0x03,0x00 - [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)] - - *) Run extensive memory leak checks on SSL apps. Fixed *lots* of memory - leaks in ssl/ relating to new X509_get_pubkey() behaviour. Also fixes - in apps/ and an unrelated leak in crypto/dsa/dsa_vrf.c - [Steve Henson] - - *) Support for RAW extensions where an arbitrary extension can be - created by including its DER encoding. See apps/openssl.cnf for - an example. - [Steve Henson] - - *) Make sure latest Perl versions don't interpret some generated C array - code as Perl array code in the crypto/err/err_genc.pl script. - [Lars Weber <3weber@informatik.uni-hamburg.de>] - - *) Modify ms/do_ms.bat to not generate assembly language makefiles since - not many people have the assembler. Various Win32 compilation fixes and - update to the INSTALL.W32 file with (hopefully) more accurate Win32 - build instructions. - [Steve Henson] - - *) Modify configure script 'Configure' to automatically create crypto/date.h - file under Win32 and also build pem.h from pem.org. New script - util/mkfiles.pl to create the MINFO file on environments that can't do a - 'make files': perl util/mkfiles.pl >MINFO should work. - [Steve Henson] - - *) Major rework of DES function declarations, in the pursuit of correctness - and purity. As a result, many evil casts evaporated, and some weirdness, - too. You may find this causes warnings in your code. Zapping your evil - casts will probably fix them. Mostly. - [Ben Laurie] - - *) Fix for a typo in asn1.h. Bug fix to object creation script - obj_dat.pl. It considered a zero in an object definition to mean - "end of object": none of the objects in objects.h have any zeros - so it wasn't spotted. - [Steve Henson, reported by Erwann ABALEA ] - - *) Add support for Triple DES Cipher Block Chaining with Output Feedback - Masking (CBCM). In the absence of test vectors, the best I have been able - to do is check that the decrypt undoes the encrypt, so far. Send me test - vectors if you have them. - [Ben Laurie] - - *) Correct calculation of key length for export ciphers (too much space was - allocated for null ciphers). This has not been tested! - [Ben Laurie] - - *) Modifications to the mkdef.pl for Win32 DEF file creation. The usage - message is now correct (it understands "crypto" and "ssl" on its - command line). There is also now an "update" option. This will update - the util/ssleay.num and util/libeay.num files with any new functions. - If you do a: - perl util/mkdef.pl crypto ssl update - it will update them. - [Steve Henson] - - *) Overhauled the Perl interface (perl/*): - - ported BN stuff to OpenSSL's different BN library - - made the perl/ source tree CVS-aware - - renamed the package from SSLeay to OpenSSL (the files still contain - their history because I've copied them in the repository) - - removed obsolete files (the test scripts will be replaced - by better Test::Harness variants in the future) - [Ralf S. Engelschall] - - *) First cut for a very conservative source tree cleanup: - 1. merge various obsolete readme texts into doc/ssleay.txt - where we collect the old documents and readme texts. - 2. remove the first part of files where I'm already sure that we no - longer need them because of three reasons: either they are just temporary - files which were left by Eric or they are preserved original files where - I've verified that the diff is also available in the CVS via "cvs diff - -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for - the crypto/md/ stuff). - [Ralf S. Engelschall] - - *) More extension code. Incomplete support for subject and issuer alt - name, issuer and authority key id. Change the i2v function parameters - and add an extra 'crl' parameter in the X509V3_CTX structure: guess - what that's for :-) Fix to ASN1 macro which messed up - IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED. - [Steve Henson] - - *) Preliminary support for ENUMERATED type. This is largely copied from the - INTEGER code. - [Steve Henson] - - *) Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy. - [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)] - - *) Make sure `make rehash' target really finds the `openssl' program. - [Ralf S. Engelschall, Matthias Loepfe ] - - *) Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd - like to hear about it if this slows down other processors. - [Ben Laurie] - - *) Add CygWin32 platform information to Configure script. - [Alan Batie ] - - *) Fixed ms/32all.bat script: `no_asm' -> `no-asm' - [Rainer W. Gerling ] - - *) New program nseq to manipulate netscape certificate sequences - [Steve Henson] - - *) Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a - few typos. - [Steve Henson] - - *) Fixes to BN code. Previously the default was to define BN_RECURSION - but the BN code had some problems that would cause failures when - doing certificate verification and some other functions. - [Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)] - - *) Add ASN1 and PEM code to support netscape certificate sequences. - [Steve Henson] - - *) Add ASN1 and PEM code to support netscape certificate sequences. - [Steve Henson] - - *) Add several PKIX and private extended key usage OIDs. - [Steve Henson] - - *) Modify the 'ca' program to handle the new extension code. Modify - openssl.cnf for new extension format, add comments. - [Steve Henson] - - *) More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req' - and add a sample to openssl.cnf so req -x509 now adds appropriate - CA extensions. - [Steve Henson] - - *) Continued X509 V3 changes. Add to other makefiles, integrate with the - error code, add initial support to X509_print() and x509 application. - [Steve Henson] - - *) Takes a deep breath and start adding X509 V3 extension support code. Add - files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this - stuff is currently isolated and isn't even compiled yet. - [Steve Henson] - - *) Continuing patches for GeneralizedTime. Fix up certificate and CRL - ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print. - Removed the versions check from X509 routines when loading extensions: - this allows certain broken certificates that don't set the version - properly to be processed. - [Steve Henson] - - *) Deal with irritating shit to do with dependencies, in YAAHW (Yet Another - Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which - can still be regenerated with "make depend". - [Ben Laurie] - - *) Spelling mistake in C version of CAST-128. - [Ben Laurie, reported by Jeremy Hylton ] - - *) Changes to the error generation code. The perl script err-code.pl - now reads in the old error codes and retains the old numbers, only - adding new ones if necessary. It also only changes the .err files if new - codes are added. The makefiles have been modified to only insert errors - when needed (to avoid needlessly modifying header files). This is done - by only inserting errors if the .err file is newer than the auto generated - C file. To rebuild all the error codes from scratch (the old behaviour) - either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl - or delete all the .err files. - [Steve Henson] - - *) CAST-128 was incorrectly implemented for short keys. The C version has - been fixed, but is untested. The assembler versions are also fixed, but - new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing - to regenerate it if needed. - [Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun - Hagino ] - - *) File was opened incorrectly in randfile.c. - [Ulf Möller ] - - *) Beginning of support for GeneralizedTime. d2i, i2d, check and print - functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or - GeneralizedTime. ASN1_TIME is the proper type used in certificates et - al: it's just almost always a UTCTime. Note this patch adds new error - codes so do a "make errors" if there are problems. - [Steve Henson] - - *) Correct Linux 1 recognition in config. - [Ulf Möller ] - - *) Remove pointless MD5 hash when using DSA keys in ca. - [Anonymous ] - - *) Generate an error if given an empty string as a cert directory. Also - generate an error if handed NULL (previously returned 0 to indicate an - error, but didn't set one). - [Ben Laurie, reported by Anonymous ] - - *) Add prototypes to SSL methods. Make SSL_write's buffer const, at last. - [Ben Laurie] - - *) Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct - parameters. This was causing a warning which killed off the Win32 compile. - [Steve Henson] - - *) Remove C++ style comments from crypto/bn/bn_local.h. - [Neil Costigan ] - - *) The function OBJ_txt2nid was broken. It was supposed to return a nid - based on a text string, looking up short and long names and finally - "dot" format. The "dot" format stuff didn't work. Added new function - OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote - OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the - OID is not part of the table. - [Steve Henson] - - *) Add prototypes to X509 lookup/verify methods, fixing a bug in - X509_LOOKUP_by_alias(). - [Ben Laurie] - - *) Sort openssl functions by name. - [Ben Laurie] - - *) Get the gendsa program working (hopefully) and add it to app list. Remove - encryption from sample DSA keys (in case anyone is interested the password - was "1234"). - [Steve Henson] - - *) Make _all_ *_free functions accept a NULL pointer. - [Frans Heymans ] - - *) If a DH key is generated in s3_srvr.c, don't blow it by trying to use - NULL pointers. - [Anonymous ] - - *) s_server should send the CAfile as acceptable CAs, not its own cert. - [Bodo Moeller <3moeller@informatik.uni-hamburg.de>] - - *) Don't blow it for numeric -newkey arguments to apps/req. - [Bodo Moeller <3moeller@informatik.uni-hamburg.de>] - - *) Temp key "for export" tests were wrong in s3_srvr.c. - [Anonymous ] - - *) Add prototype for temp key callback functions - SSL_CTX_set_tmp_{rsa,dh}_callback(). - [Ben Laurie] - - *) Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and - DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey(). - [Steve Henson] - - *) X509_name_add_entry() freed the wrong thing after an error. - [Arne Ansper ] - - *) rsa_eay.c would attempt to free a NULL context. - [Arne Ansper ] - - *) BIO_s_socket() had a broken should_retry() on Windoze. - [Arne Ansper ] - - *) BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH. - [Arne Ansper ] - - *) Make sure the already existing X509_STORE->depth variable is initialized - in X509_STORE_new(), but document the fact that this variable is still - unused in the certificate verification process. - [Ralf S. Engelschall] - - *) Fix the various library and apps files to free up pkeys obtained from - X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions. - [Steve Henson] - - *) Fix reference counting in X509_PUBKEY_get(). This makes - demos/maurice/example2.c work, amongst others, probably. - [Steve Henson and Ben Laurie] - - *) First cut of a cleanup for apps/. First the `ssleay' program is now named - `openssl' and second, the shortcut symlinks for the `openssl ' - are no longer created. This way we have a single and consistent command - line interface `openssl ', similar to `cvs '. - [Ralf S. Engelschall, Paul Sutton and Ben Laurie] - - *) ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey - BIT STRING wrapper always have zero unused bits. - [Steve Henson] - - *) Add CA.pl, perl version of CA.sh, add extended key usage OID. - [Steve Henson] - - *) Make the top-level INSTALL documentation easier to understand. - [Paul Sutton] - - *) Makefiles updated to exit if an error occurs in a sub-directory - make (including if user presses ^C) [Paul Sutton] - - *) Make Montgomery context stuff explicit in RSA data structure. - [Ben Laurie] - - *) Fix build order of pem and err to allow for generated pem.h. - [Ben Laurie] - - *) Fix renumbering bug in X509_NAME_delete_entry(). - [Ben Laurie] - - *) Enhanced the err-ins.pl script so it makes the error library number - global and can add a library name. This is needed for external ASN1 and - other error libraries. - [Steve Henson] - - *) Fixed sk_insert which never worked properly. - [Steve Henson] - - *) Fix ASN1 macros so they can handle indefinite length constructed - EXPLICIT tags. Some non standard certificates use these: they can now - be read in. - [Steve Henson] - - *) Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc) - into a single doc/ssleay.txt bundle. This way the information is still - preserved but no longer messes up this directory. Now it's new room for - the new set of documentation files. - [Ralf S. Engelschall] - - *) SETs were incorrectly DER encoded. This was a major pain, because they - shared code with SEQUENCEs, which aren't coded the same. This means that - almost everything to do with SETs or SEQUENCEs has either changed name or - number of arguments. - [Ben Laurie, based on a partial fix by GP Jayan ] - - *) Fix test data to work with the above. - [Ben Laurie] - - *) Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but - was already fixed by Eric for 0.9.1 it seems. - [Ben Laurie - pointed out by Ulf Möller ] - - *) Autodetect FreeBSD3. - [Ben Laurie] - - *) Fix various bugs in Configure. This affects the following platforms: - nextstep - ncr-scde - unixware-2.0 - unixware-2.0-pentium - sco5-cc. - [Ben Laurie] - - *) Eliminate generated files from CVS. Reorder tests to regenerate files - before they are needed. - [Ben Laurie] - - *) Generate Makefile.ssl from Makefile.org (to keep CVS happy). - [Ben Laurie] - - - Changes between 0.9.1b and 0.9.1c [23-Dec-1998] - - *) Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and - changed SSLeay to OpenSSL in version strings. - [Ralf S. Engelschall] - - *) Some fixups to the top-level documents. - [Paul Sutton] - - *) Fixed the nasty bug where rsaref.h was not found under compile-time - because the symlink to include/ was missing. - [Ralf S. Engelschall] - - *) Incorporated the popular no-RSA/DSA-only patches - which allow to compile a RSA-free SSLeay. - [Andrew Cooke / Interrader Ldt., Ralf S. Engelschall] - - *) Fixed nasty rehash problem under `make -f Makefile.ssl links' - when "ssleay" is still not found. - [Ralf S. Engelschall] - - *) Added more platforms to Configure: Cray T3E, HPUX 11, - [Ralf S. Engelschall, Beckmann ] - - *) Updated the README file. - [Ralf S. Engelschall] - - *) Added various .cvsignore files in the CVS repository subdirs - to make a "cvs update" really silent. - [Ralf S. Engelschall] - - *) Recompiled the error-definition header files and added - missing symbols to the Win32 linker tables. - [Ralf S. Engelschall] - - *) Cleaned up the top-level documents; - o new files: CHANGES and LICENSE - o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay - o merged COPYRIGHT into LICENSE - o removed obsolete TODO file - o renamed MICROSOFT to INSTALL.W32 - [Ralf S. Engelschall] - - *) Removed dummy files from the 0.9.1b source tree: - crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi - crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f - crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f - crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f - util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f - [Ralf S. Engelschall] - - *) Added various platform portability fixes. - [Mark J. Cox] - - *) The Genesis of the OpenSSL rpject: - We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A. - Young and Tim J. Hudson created while they were working for C2Net until - summer 1998. - [The OpenSSL Project] - - - Changes between 0.9.0b and 0.9.1b [not released] - - *) Updated a few CA certificates under certs/ - [Eric A. Young] - - *) Changed some BIGNUM api stuff. - [Eric A. Young] - - *) Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD, - DGUX x86, Linux Alpha, etc. - [Eric A. Young] - - *) New COMP library [crypto/comp/] for SSL Record Layer Compression: - RLE (dummy implemented) and ZLIB (really implemented when ZLIB is - available). - [Eric A. Young] - - *) Add -strparse option to asn1pars program which parses nested - binary structures - [Dr Stephen Henson ] - - *) Added "oid_file" to ssleay.cnf for "ca" and "req" programs. - [Eric A. Young] - - *) DSA fix for "ca" program. - [Eric A. Young] - - *) Added "-genkey" option to "dsaparam" program. - [Eric A. Young] - - *) Added RIPE MD160 (rmd160) message digest. - [Eric A. Young] - - *) Added -a (all) option to "ssleay version" command. - [Eric A. Young] - - *) Added PLATFORM define which is the id given to Configure. - [Eric A. Young] - - *) Added MemCheck_XXXX functions to crypto/mem.c for memory checking. - [Eric A. Young] - - *) Extended the ASN.1 parser routines. - [Eric A. Young] - - *) Extended BIO routines to support REUSEADDR, seek, tell, etc. - [Eric A. Young] - - *) Added a BN_CTX to the BN library. - [Eric A. Young] - - *) Fixed the weak key values in DES library - [Eric A. Young] - - *) Changed API in EVP library for cipher aliases. - [Eric A. Young] - - *) Added support for RC2/64bit cipher. - [Eric A. Young] - - *) Converted the lhash library to the crypto/mem.c functions. - [Eric A. Young] - - *) Added more recognized ASN.1 object ids. - [Eric A. Young] - - *) Added more RSA padding checks for SSL/TLS. - [Eric A. Young] - - *) Added BIO proxy/filter functionality. - [Eric A. Young] - - *) Added extra_certs to SSL_CTX which can be used - send extra CA certificates to the client in the CA cert chain sending - process. It can be configured with SSL_CTX_add_extra_chain_cert(). - [Eric A. Young] - - *) Now Fortezza is denied in the authentication phase because - this is key exchange mechanism is not supported by SSLeay at all. - [Eric A. Young] - - *) Additional PKCS1 checks. - [Eric A. Young] - - *) Support the string "TLSv1" for all TLS v1 ciphers. - [Eric A. Young] - - *) Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the - ex_data index of the SSL context in the X509_STORE_CTX ex_data. - [Eric A. Young] - - *) Fixed a few memory leaks. - [Eric A. Young] - - *) Fixed various code and comment typos. - [Eric A. Young] - - *) A minor bug in ssl/s3_clnt.c where there would always be 4 0 - bytes sent in the client random. - [Edward Bishop ] - diff --git a/openssl-lib/FAQ.txt b/openssl-lib/FAQ.txt deleted file mode 100644 index 22c5cf7..0000000 --- a/openssl-lib/FAQ.txt +++ /dev/null @@ -1,2 +0,0 @@ -The FAQ is now maintained on the web: - https://www.openssl.org/docs/faq.html diff --git a/openssl-lib/NEWS.txt b/openssl-lib/NEWS.txt deleted file mode 100644 index b4db8df..0000000 --- a/openssl-lib/NEWS.txt +++ /dev/null @@ -1,856 +0,0 @@ - - NEWS - ==== - - This file gives a brief overview of the major changes between each OpenSSL - release. For more details please read the CHANGES file. - - Major changes between OpenSSL 1.1.0e and OpenSSL 1.1.0f [25 May 2017] - - o config now recognises 64-bit mingw and chooses mingw64 instead of mingw - - Major changes between OpenSSL 1.1.0d and OpenSSL 1.1.0e [16 Feb 2017] - - o Encrypt-Then-Mac renegotiation crash (CVE-2017-3733) - - Major changes between OpenSSL 1.1.0c and OpenSSL 1.1.0d [26 Jan 2017] - - o Truncated packet could crash via OOB read (CVE-2017-3731) - o Bad (EC)DHE parameters cause a client crash (CVE-2017-3730) - o BN_mod_exp may produce incorrect results on x86_64 (CVE-2017-3732) - - Major changes between OpenSSL 1.1.0b and OpenSSL 1.1.0c [10 Nov 2016] - - o ChaCha20/Poly1305 heap-buffer-overflow (CVE-2016-7054) - o CMS Null dereference (CVE-2016-7053) - o Montgomery multiplication may produce incorrect results (CVE-2016-7055) - - Major changes between OpenSSL 1.1.0a and OpenSSL 1.1.0b [26 Sep 2016] - - o Fix Use After Free for large message sizes (CVE-2016-6309) - - Major changes between OpenSSL 1.1.0 and OpenSSL 1.1.0a [22 Sep 2016] - - o OCSP Status Request extension unbounded memory growth (CVE-2016-6304) - o SSL_peek() hang on empty record (CVE-2016-6305) - o Excessive allocation of memory in tls_get_message_header() - (CVE-2016-6307) - o Excessive allocation of memory in dtls1_preprocess_fragment() - (CVE-2016-6308) - - Major changes between OpenSSL 1.0.2h and OpenSSL 1.1.0 [25 Aug 2016] - - o Copyright text was shrunk to a boilerplate that points to the license - o "shared" builds are now the default when possible - o Added support for "pipelining" - o Added the AFALG engine - o New threading API implemented - o Support for ChaCha20 and Poly1305 added to libcrypto and libssl - o Support for extended master secret - o CCM ciphersuites - o Reworked test suite, now based on perl, Test::Harness and Test::More - o *Most* libcrypto and libssl public structures were made opaque, - including: - BIGNUM and associated types, EC_KEY and EC_KEY_METHOD, - DH and DH_METHOD, DSA and DSA_METHOD, RSA and RSA_METHOD, - BIO and BIO_METHOD, EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, - EVP_CIPHER, EVP_PKEY and associated types, HMAC_CTX, - X509, X509_CRL, X509_OBJECT, X509_STORE_CTX, X509_STORE, - X509_LOOKUP, X509_LOOKUP_METHOD - o libssl internal structures made opaque - o SSLv2 support removed - o Kerberos ciphersuite support removed - o RC4 removed from DEFAULT ciphersuites in libssl - o 40 and 56 bit cipher support removed from libssl - o All public header files moved to include/openssl, no more symlinking - o SSL/TLS state machine, version negotiation and record layer rewritten - o EC revision: now operations use new EC_KEY_METHOD. - o Support for OCB mode added to libcrypto - o Support for asynchronous crypto operations added to libcrypto and libssl - o Deprecated interfaces can now be disabled at build time either - relative to the latest release via the "no-deprecated" Configure - argument, or via the "--api=1.1.0|1.0.0|0.9.8" option. - o Application software can be compiled with -DOPENSSL_API_COMPAT=version - to ensure that features deprecated in that version are not exposed. - o Support for RFC6698/RFC7671 DANE TLSA peer authentication - o Change of Configure to use --prefix as the main installation - directory location rather than --openssldir. The latter becomes - the directory for certs, private key and openssl.cnf exclusively. - o Reworked BIO networking library, with full support for IPv6. - o New "unified" build system - o New security levels - o Support for scrypt algorithm - o Support for X25519 - o Extended SSL_CONF support using configuration files - o KDF algorithm support. Implement TLS PRF as a KDF. - o Support for Certificate Transparency - o HKDF support. - - Major changes between OpenSSL 1.0.2g and OpenSSL 1.0.2h [3 May 2016] - - o Prevent padding oracle in AES-NI CBC MAC check (CVE-2016-2107) - o Fix EVP_EncodeUpdate overflow (CVE-2016-2105) - o Fix EVP_EncryptUpdate overflow (CVE-2016-2106) - o Prevent ASN.1 BIO excessive memory allocation (CVE-2016-2109) - o EBCDIC overread (CVE-2016-2176) - o Modify behavior of ALPN to invoke callback after SNI/servername - callback, such that updates to the SSL_CTX affect ALPN. - o Remove LOW from the DEFAULT cipher list. This removes singles DES from - the default. - o Only remove the SSLv2 methods with the no-ssl2-method option. - - Major changes between OpenSSL 1.0.2f and OpenSSL 1.0.2g [1 Mar 2016] - - o Disable weak ciphers in SSLv3 and up in default builds of OpenSSL. - o Disable SSLv2 default build, default negotiation and weak ciphers - (CVE-2016-0800) - o Fix a double-free in DSA code (CVE-2016-0705) - o Disable SRP fake user seed to address a server memory leak - (CVE-2016-0798) - o Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption - (CVE-2016-0797) - o Fix memory issues in BIO_*printf functions (CVE-2016-0799) - o Fix side channel attack on modular exponentiation (CVE-2016-0702) - - Major changes between OpenSSL 1.0.2e and OpenSSL 1.0.2f [28 Jan 2016] - - o DH small subgroups (CVE-2016-0701) - o SSLv2 doesn't block disabled ciphers (CVE-2015-3197) - - Major changes between OpenSSL 1.0.2d and OpenSSL 1.0.2e [3 Dec 2015] - - o BN_mod_exp may produce incorrect results on x86_64 (CVE-2015-3193) - o Certificate verify crash with missing PSS parameter (CVE-2015-3194) - o X509_ATTRIBUTE memory leak (CVE-2015-3195) - o Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs - o In DSA_generate_parameters_ex, if the provided seed is too short, - return an error - - Major changes between OpenSSL 1.0.2c and OpenSSL 1.0.2d [9 Jul 2015] - - o Alternate chains certificate forgery (CVE-2015-1793) - o Race condition handling PSK identify hint (CVE-2015-3196) - - Major changes between OpenSSL 1.0.2b and OpenSSL 1.0.2c [12 Jun 2015] - - o Fix HMAC ABI incompatibility - - Major changes between OpenSSL 1.0.2a and OpenSSL 1.0.2b [11 Jun 2015] - - o Malformed ECParameters causes infinite loop (CVE-2015-1788) - o Exploitable out-of-bounds read in X509_cmp_time (CVE-2015-1789) - o PKCS7 crash with missing EnvelopedContent (CVE-2015-1790) - o CMS verify infinite loop with unknown hash function (CVE-2015-1792) - o Race condition handling NewSessionTicket (CVE-2015-1791) - - Major changes between OpenSSL 1.0.2 and OpenSSL 1.0.2a [19 Mar 2015] - - o OpenSSL 1.0.2 ClientHello sigalgs DoS fix (CVE-2015-0291) - o Multiblock corrupted pointer fix (CVE-2015-0290) - o Segmentation fault in DTLSv1_listen fix (CVE-2015-0207) - o Segmentation fault in ASN1_TYPE_cmp fix (CVE-2015-0286) - o Segmentation fault for invalid PSS parameters fix (CVE-2015-0208) - o ASN.1 structure reuse memory corruption fix (CVE-2015-0287) - o PKCS7 NULL pointer dereferences fix (CVE-2015-0289) - o DoS via reachable assert in SSLv2 servers fix (CVE-2015-0293) - o Empty CKE with client auth and DHE fix (CVE-2015-1787) - o Handshake with unseeded PRNG fix (CVE-2015-0285) - o Use After Free following d2i_ECPrivatekey error fix (CVE-2015-0209) - o X509_to_X509_REQ NULL pointer deref fix (CVE-2015-0288) - o Removed the export ciphers from the DEFAULT ciphers - - Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.2 [22 Jan 2015]: - - o Suite B support for TLS 1.2 and DTLS 1.2 - o Support for DTLS 1.2 - o TLS automatic EC curve selection. - o API to set TLS supported signature algorithms and curves - o SSL_CONF configuration API. - o TLS Brainpool support. - o ALPN support. - o CMS support for RSA-PSS, RSA-OAEP, ECDH and X9.42 DH. - - Major changes between OpenSSL 1.0.1k and OpenSSL 1.0.1l [15 Jan 2015] - - o Build fixes for the Windows and OpenVMS platforms - - Major changes between OpenSSL 1.0.1j and OpenSSL 1.0.1k [8 Jan 2015] - - o Fix for CVE-2014-3571 - o Fix for CVE-2015-0206 - o Fix for CVE-2014-3569 - o Fix for CVE-2014-3572 - o Fix for CVE-2015-0204 - o Fix for CVE-2015-0205 - o Fix for CVE-2014-8275 - o Fix for CVE-2014-3570 - - Major changes between OpenSSL 1.0.1i and OpenSSL 1.0.1j [15 Oct 2014] - - o Fix for CVE-2014-3513 - o Fix for CVE-2014-3567 - o Mitigation for CVE-2014-3566 (SSL protocol vulnerability) - o Fix for CVE-2014-3568 - - Major changes between OpenSSL 1.0.1h and OpenSSL 1.0.1i [6 Aug 2014] - - o Fix for CVE-2014-3512 - o Fix for CVE-2014-3511 - o Fix for CVE-2014-3510 - o Fix for CVE-2014-3507 - o Fix for CVE-2014-3506 - o Fix for CVE-2014-3505 - o Fix for CVE-2014-3509 - o Fix for CVE-2014-5139 - o Fix for CVE-2014-3508 - - Major changes between OpenSSL 1.0.1g and OpenSSL 1.0.1h [5 Jun 2014] - - o Fix for CVE-2014-0224 - o Fix for CVE-2014-0221 - o Fix for CVE-2014-0198 - o Fix for CVE-2014-0195 - o Fix for CVE-2014-3470 - o Fix for CVE-2010-5298 - - Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014] - - o Fix for CVE-2014-0160 - o Add TLS padding extension workaround for broken servers. - o Fix for CVE-2014-0076 - - Major changes between OpenSSL 1.0.1e and OpenSSL 1.0.1f [6 Jan 2014] - - o Don't include gmt_unix_time in TLS server and client random values - o Fix for TLS record tampering bug CVE-2013-4353 - o Fix for TLS version checking bug CVE-2013-6449 - o Fix for DTLS retransmission bug CVE-2013-6450 - - Major changes between OpenSSL 1.0.1d and OpenSSL 1.0.1e [11 Feb 2013]: - - o Corrected fix for CVE-2013-0169 - - Major changes between OpenSSL 1.0.1c and OpenSSL 1.0.1d [4 Feb 2013]: - - o Fix renegotiation in TLS 1.1, 1.2 by using the correct TLS version. - o Include the fips configuration module. - o Fix OCSP bad key DoS attack CVE-2013-0166 - o Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169 - o Fix for TLS AESNI record handling flaw CVE-2012-2686 - - Major changes between OpenSSL 1.0.1b and OpenSSL 1.0.1c [10 May 2012]: - - o Fix TLS/DTLS record length checking bug CVE-2012-2333 - o Don't attempt to use non-FIPS composite ciphers in FIPS mode. - - Major changes between OpenSSL 1.0.1a and OpenSSL 1.0.1b [26 Apr 2012]: - - o Fix compilation error on non-x86 platforms. - o Make FIPS capable OpenSSL ciphers work in non-FIPS mode. - o Fix SSL_OP_NO_TLSv1_1 clash with SSL_OP_ALL in OpenSSL 1.0.0 - - Major changes between OpenSSL 1.0.1 and OpenSSL 1.0.1a [19 Apr 2012]: - - o Fix for ASN1 overflow bug CVE-2012-2110 - o Workarounds for some servers that hang on long client hellos. - o Fix SEGV in AES code. - - Major changes between OpenSSL 1.0.0h and OpenSSL 1.0.1 [14 Mar 2012]: - - o TLS/DTLS heartbeat support. - o SCTP support. - o RFC 5705 TLS key material exporter. - o RFC 5764 DTLS-SRTP negotiation. - o Next Protocol Negotiation. - o PSS signatures in certificates, requests and CRLs. - o Support for password based recipient info for CMS. - o Support TLS v1.2 and TLS v1.1. - o Preliminary FIPS capability for unvalidated 2.0 FIPS module. - o SRP support. - - Major changes between OpenSSL 1.0.0g and OpenSSL 1.0.0h [12 Mar 2012]: - - o Fix for CMS/PKCS#7 MMA CVE-2012-0884 - o Corrected fix for CVE-2011-4619 - o Various DTLS fixes. - - Major changes between OpenSSL 1.0.0f and OpenSSL 1.0.0g [18 Jan 2012]: - - o Fix for DTLS DoS issue CVE-2012-0050 - - Major changes between OpenSSL 1.0.0e and OpenSSL 1.0.0f [4 Jan 2012]: - - o Fix for DTLS plaintext recovery attack CVE-2011-4108 - o Clear block padding bytes of SSL 3.0 records CVE-2011-4576 - o Only allow one SGC handshake restart for SSL/TLS CVE-2011-4619 - o Check parameters are not NULL in GOST ENGINE CVE-2012-0027 - o Check for malformed RFC3779 data CVE-2011-4577 - - Major changes between OpenSSL 1.0.0d and OpenSSL 1.0.0e [6 Sep 2011]: - - o Fix for CRL vulnerability issue CVE-2011-3207 - o Fix for ECDH crashes CVE-2011-3210 - o Protection against EC timing attacks. - o Support ECDH ciphersuites for certificates using SHA2 algorithms. - o Various DTLS fixes. - - Major changes between OpenSSL 1.0.0c and OpenSSL 1.0.0d [8 Feb 2011]: - - o Fix for security issue CVE-2011-0014 - - Major changes between OpenSSL 1.0.0b and OpenSSL 1.0.0c [2 Dec 2010]: - - o Fix for security issue CVE-2010-4180 - o Fix for CVE-2010-4252 - o Fix mishandling of absent EC point format extension. - o Fix various platform compilation issues. - o Corrected fix for security issue CVE-2010-3864. - - Major changes between OpenSSL 1.0.0a and OpenSSL 1.0.0b [16 Nov 2010]: - - o Fix for security issue CVE-2010-3864. - o Fix for CVE-2010-2939 - o Fix WIN32 build system for GOST ENGINE. - - Major changes between OpenSSL 1.0.0 and OpenSSL 1.0.0a [1 Jun 2010]: - - o Fix for security issue CVE-2010-1633. - o GOST MAC and CFB fixes. - - Major changes between OpenSSL 0.9.8n and OpenSSL 1.0.0 [29 Mar 2010]: - - o RFC3280 path validation: sufficient to process PKITS tests. - o Integrated support for PVK files and keyblobs. - o Change default private key format to PKCS#8. - o CMS support: able to process all examples in RFC4134 - o Streaming ASN1 encode support for PKCS#7 and CMS. - o Multiple signer and signer add support for PKCS#7 and CMS. - o ASN1 printing support. - o Whirlpool hash algorithm added. - o RFC3161 time stamp support. - o New generalised public key API supporting ENGINE based algorithms. - o New generalised public key API utilities. - o New ENGINE supporting GOST algorithms. - o SSL/TLS GOST ciphersuite support. - o PKCS#7 and CMS GOST support. - o RFC4279 PSK ciphersuite support. - o Supported points format extension for ECC ciphersuites. - o ecdsa-with-SHA224/256/384/512 signature types. - o dsa-with-SHA224 and dsa-with-SHA256 signature types. - o Opaque PRF Input TLS extension support. - o Updated time routines to avoid OS limitations. - - Major changes between OpenSSL 0.9.8m and OpenSSL 0.9.8n [24 Mar 2010]: - - o CFB cipher definition fixes. - o Fix security issues CVE-2010-0740 and CVE-2010-0433. - - Major changes between OpenSSL 0.9.8l and OpenSSL 0.9.8m [25 Feb 2010]: - - o Cipher definition fixes. - o Workaround for slow RAND_poll() on some WIN32 versions. - o Remove MD2 from algorithm tables. - o SPKAC handling fixes. - o Support for RFC5746 TLS renegotiation extension. - o Compression memory leak fixed. - o Compression session resumption fixed. - o Ticket and SNI coexistence fixes. - o Many fixes to DTLS handling. - - Major changes between OpenSSL 0.9.8k and OpenSSL 0.9.8l [5 Nov 2009]: - - o Temporary work around for CVE-2009-3555: disable renegotiation. - - Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k [25 Mar 2009]: - - o Fix various build issues. - o Fix security issues (CVE-2009-0590, CVE-2009-0591, CVE-2009-0789) - - Major changes between OpenSSL 0.9.8i and OpenSSL 0.9.8j [7 Jan 2009]: - - o Fix security issue (CVE-2008-5077) - o Merge FIPS 140-2 branch code. - - Major changes between OpenSSL 0.9.8g and OpenSSL 0.9.8h [28 May 2008]: - - o CryptoAPI ENGINE support. - o Various precautionary measures. - o Fix for bugs affecting certificate request creation. - o Support for local machine keyset attribute in PKCS#12 files. - - Major changes between OpenSSL 0.9.8f and OpenSSL 0.9.8g [19 Oct 2007]: - - o Backport of CMS functionality to 0.9.8. - o Fixes for bugs introduced with 0.9.8f. - - Major changes between OpenSSL 0.9.8e and OpenSSL 0.9.8f [11 Oct 2007]: - - o Add gcc 4.2 support. - o Add support for AES and SSE2 assembly language optimization - for VC++ build. - o Support for RFC4507bis and server name extensions if explicitly - selected at compile time. - o DTLS improvements. - o RFC4507bis support. - o TLS Extensions support. - - Major changes between OpenSSL 0.9.8d and OpenSSL 0.9.8e [23 Feb 2007]: - - o Various ciphersuite selection fixes. - o RFC3779 support. - - Major changes between OpenSSL 0.9.8c and OpenSSL 0.9.8d [28 Sep 2006]: - - o Introduce limits to prevent malicious key DoS (CVE-2006-2940) - o Fix security issues (CVE-2006-2937, CVE-2006-3737, CVE-2006-4343) - o Changes to ciphersuite selection algorithm - - Major changes between OpenSSL 0.9.8b and OpenSSL 0.9.8c [5 Sep 2006]: - - o Fix Daniel Bleichenbacher forged signature attack, CVE-2006-4339 - o New cipher Camellia - - Major changes between OpenSSL 0.9.8a and OpenSSL 0.9.8b [4 May 2006]: - - o Cipher string fixes. - o Fixes for VC++ 2005. - o Updated ECC cipher suite support. - o New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free(). - o Zlib compression usage fixes. - o Built in dynamic engine compilation support on Win32. - o Fixes auto dynamic engine loading in Win32. - - Major changes between OpenSSL 0.9.8 and OpenSSL 0.9.8a [11 Oct 2005]: - - o Fix potential SSL 2.0 rollback, CVE-2005-2969 - o Extended Windows CE support - - Major changes between OpenSSL 0.9.7g and OpenSSL 0.9.8 [5 Jul 2005]: - - o Major work on the BIGNUM library for higher efficiency and to - make operations more streamlined and less contradictory. This - is the result of a major audit of the BIGNUM library. - o Addition of BIGNUM functions for fields GF(2^m) and NIST - curves, to support the Elliptic Crypto functions. - o Major work on Elliptic Crypto; ECDH and ECDSA added, including - the use through EVP, X509 and ENGINE. - o New ASN.1 mini-compiler that's usable through the OpenSSL - configuration file. - o Added support for ASN.1 indefinite length constructed encoding. - o New PKCS#12 'medium level' API to manipulate PKCS#12 files. - o Complete rework of shared library construction and linking - programs with shared or static libraries, through a separate - Makefile.shared. - o Rework of the passing of parameters from one Makefile to another. - o Changed ENGINE framework to load dynamic engine modules - automatically from specifically given directories. - o New structure and ASN.1 functions for CertificatePair. - o Changed the ZLIB compression method to be stateful. - o Changed the key-generation and primality testing "progress" - mechanism to take a structure that contains the ticker - function and an argument. - o New engine module: GMP (performs private key exponentiation). - o New engine module: VIA PadLOck ACE extension in VIA C3 - Nehemiah processors. - o Added support for IPv6 addresses in certificate extensions. - See RFC 1884, section 2.2. - o Added support for certificate policy mappings, policy - constraints and name constraints. - o Added support for multi-valued AVAs in the OpenSSL - configuration file. - o Added support for multiple certificates with the same subject - in the 'openssl ca' index file. - o Make it possible to create self-signed certificates using - 'openssl ca -selfsign'. - o Make it possible to generate a serial number file with - 'openssl ca -create_serial'. - o New binary search functions with extended functionality. - o New BUF functions. - o New STORE structure and library to provide an interface to all - sorts of data repositories. Supports storage of public and - private keys, certificates, CRLs, numbers and arbitrary blobs. - This library is unfortunately unfinished and unused within - OpenSSL. - o New control functions for the error stack. - o Changed the PKCS#7 library to support one-pass S/MIME - processing. - o Added the possibility to compile without old deprecated - functionality with the OPENSSL_NO_DEPRECATED macro or the - 'no-deprecated' argument to the config and Configure scripts. - o Constification of all ASN.1 conversion functions, and other - affected functions. - o Improved platform support for PowerPC. - o New FIPS 180-2 algorithms (SHA-224, -256, -384 and -512). - o New X509_VERIFY_PARAM structure to support parametrisation - of X.509 path validation. - o Major overhaul of RC4 performance on Intel P4, IA-64 and - AMD64. - o Changed the Configure script to have some algorithms disabled - by default. Those can be explicitly enabled with the new - argument form 'enable-xxx'. - o Change the default digest in 'openssl' commands from MD5 to - SHA-1. - o Added support for DTLS. - o New BIGNUM blinding. - o Added support for the RSA-PSS encryption scheme - o Added support for the RSA X.931 padding. - o Added support for BSD sockets on NetWare. - o Added support for files larger than 2GB. - o Added initial support for Win64. - o Added alternate pkg-config files. - - Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m [23 Feb 2007]: - - o FIPS 1.1.1 module linking. - o Various ciphersuite selection fixes. - - Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l [28 Sep 2006]: - - o Introduce limits to prevent malicious key DoS (CVE-2006-2940) - o Fix security issues (CVE-2006-2937, CVE-2006-3737, CVE-2006-4343) - - Major changes between OpenSSL 0.9.7j and OpenSSL 0.9.7k [5 Sep 2006]: - - o Fix Daniel Bleichenbacher forged signature attack, CVE-2006-4339 - - Major changes between OpenSSL 0.9.7i and OpenSSL 0.9.7j [4 May 2006]: - - o Visual C++ 2005 fixes. - o Update Windows build system for FIPS. - - Major changes between OpenSSL 0.9.7h and OpenSSL 0.9.7i [14 Oct 2005]: - - o Give EVP_MAX_MD_SIZE it's old value, except for a FIPS build. - - Major changes between OpenSSL 0.9.7g and OpenSSL 0.9.7h [11 Oct 2005]: - - o Fix SSL 2.0 Rollback, CVE-2005-2969 - o Allow use of fixed-length exponent on DSA signing - o Default fixed-window RSA, DSA, DH private-key operations - - Major changes between OpenSSL 0.9.7f and OpenSSL 0.9.7g [11 Apr 2005]: - - o More compilation issues fixed. - o Adaptation to more modern Kerberos API. - o Enhanced or corrected configuration for Solaris64, Mingw and Cygwin. - o Enhanced x86_64 assembler BIGNUM module. - o More constification. - o Added processing of proxy certificates (RFC 3820). - - Major changes between OpenSSL 0.9.7e and OpenSSL 0.9.7f [22 Mar 2005]: - - o Several compilation issues fixed. - o Many memory allocation failure checks added. - o Improved comparison of X509 Name type. - o Mandatory basic checks on certificates. - o Performance improvements. - - Major changes between OpenSSL 0.9.7d and OpenSSL 0.9.7e [25 Oct 2004]: - - o Fix race condition in CRL checking code. - o Fixes to PKCS#7 (S/MIME) code. - - Major changes between OpenSSL 0.9.7c and OpenSSL 0.9.7d [17 Mar 2004]: - - o Security: Fix Kerberos ciphersuite SSL/TLS handshaking bug - o Security: Fix null-pointer assignment in do_change_cipher_spec() - o Allow multiple active certificates with same subject in CA index - o Multiple X509 verification fixes - o Speed up HMAC and other operations - - Major changes between OpenSSL 0.9.7b and OpenSSL 0.9.7c [30 Sep 2003]: - - o Security: fix various ASN1 parsing bugs. - o New -ignore_err option to OCSP utility. - o Various interop and bug fixes in S/MIME code. - o SSL/TLS protocol fix for unrequested client certificates. - - Major changes between OpenSSL 0.9.7a and OpenSSL 0.9.7b [10 Apr 2003]: - - o Security: counter the Klima-Pokorny-Rosa extension of - Bleichbacher's attack - o Security: make RSA blinding default. - o Configuration: Irix fixes, AIX fixes, better mingw support. - o Support for new platforms: linux-ia64-ecc. - o Build: shared library support fixes. - o ASN.1: treat domainComponent correctly. - o Documentation: fixes and additions. - - Major changes between OpenSSL 0.9.7 and OpenSSL 0.9.7a [19 Feb 2003]: - - o Security: Important security related bugfixes. - o Enhanced compatibility with MIT Kerberos. - o Can be built without the ENGINE framework. - o IA32 assembler enhancements. - o Support for new platforms: FreeBSD/IA64 and FreeBSD/Sparc64. - o Configuration: the no-err option now works properly. - o SSL/TLS: now handles manual certificate chain building. - o SSL/TLS: certain session ID malfunctions corrected. - - Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.7 [30 Dec 2002]: - - o New library section OCSP. - o Complete rewrite of ASN1 code. - o CRL checking in verify code and openssl utility. - o Extension copying in 'ca' utility. - o Flexible display options in 'ca' utility. - o Provisional support for international characters with UTF8. - o Support for external crypto devices ('engine') is no longer - a separate distribution. - o New elliptic curve library section. - o New AES (Rijndael) library section. - o Support for new platforms: Windows CE, Tandem OSS, A/UX, AIX 64-bit, - Linux x86_64, Linux 64-bit on Sparc v9 - o Extended support for some platforms: VxWorks - o Enhanced support for shared libraries. - o Now only builds PIC code when shared library support is requested. - o Support for pkg-config. - o Lots of new manuals. - o Makes symbolic links to or copies of manuals to cover all described - functions. - o Change DES API to clean up the namespace (some applications link also - against libdes providing similar functions having the same name). - Provide macros for backward compatibility (will be removed in the - future). - o Unify handling of cryptographic algorithms (software and engine) - to be available via EVP routines for asymmetric and symmetric ciphers. - o NCONF: new configuration handling routines. - o Change API to use more 'const' modifiers to improve error checking - and help optimizers. - o Finally remove references to RSAref. - o Reworked parts of the BIGNUM code. - o Support for new engines: Broadcom ubsec, Accelerated Encryption - Processing, IBM 4758. - o A few new engines added in the demos area. - o Extended and corrected OID (object identifier) table. - o PRNG: query at more locations for a random device, automatic query for - EGD style random sources at several locations. - o SSL/TLS: allow optional cipher choice according to server's preference. - o SSL/TLS: allow server to explicitly set new session ids. - o SSL/TLS: support Kerberos cipher suites (RFC2712). - Only supports MIT Kerberos for now. - o SSL/TLS: allow more precise control of renegotiations and sessions. - o SSL/TLS: add callback to retrieve SSL/TLS messages. - o SSL/TLS: support AES cipher suites (RFC3268). - - Major changes between OpenSSL 0.9.6j and OpenSSL 0.9.6k [30 Sep 2003]: - - o Security: fix various ASN1 parsing bugs. - o SSL/TLS protocol fix for unrequested client certificates. - - Major changes between OpenSSL 0.9.6i and OpenSSL 0.9.6j [10 Apr 2003]: - - o Security: counter the Klima-Pokorny-Rosa extension of - Bleichbacher's attack - o Security: make RSA blinding default. - o Build: shared library support fixes. - - Major changes between OpenSSL 0.9.6h and OpenSSL 0.9.6i [19 Feb 2003]: - - o Important security related bugfixes. - - Major changes between OpenSSL 0.9.6g and OpenSSL 0.9.6h [5 Dec 2002]: - - o New configuration targets for Tandem OSS and A/UX. - o New OIDs for Microsoft attributes. - o Better handling of SSL session caching. - o Better comparison of distinguished names. - o Better handling of shared libraries in a mixed GNU/non-GNU environment. - o Support assembler code with Borland C. - o Fixes for length problems. - o Fixes for uninitialised variables. - o Fixes for memory leaks, some unusual crashes and some race conditions. - o Fixes for smaller building problems. - o Updates of manuals, FAQ and other instructive documents. - - Major changes between OpenSSL 0.9.6f and OpenSSL 0.9.6g [9 Aug 2002]: - - o Important building fixes on Unix. - - Major changes between OpenSSL 0.9.6e and OpenSSL 0.9.6f [8 Aug 2002]: - - o Various important bugfixes. - - Major changes between OpenSSL 0.9.6d and OpenSSL 0.9.6e [30 Jul 2002]: - - o Important security related bugfixes. - o Various SSL/TLS library bugfixes. - - Major changes between OpenSSL 0.9.6c and OpenSSL 0.9.6d [9 May 2002]: - - o Various SSL/TLS library bugfixes. - o Fix DH parameter generation for 'non-standard' generators. - - Major changes between OpenSSL 0.9.6b and OpenSSL 0.9.6c [21 Dec 2001]: - - o Various SSL/TLS library bugfixes. - o BIGNUM library fixes. - o RSA OAEP and random number generation fixes. - o Object identifiers corrected and added. - o Add assembler BN routines for IA64. - o Add support for OS/390 Unix, UnixWare with gcc, OpenUNIX 8, - MIPS Linux; shared library support for Irix, HP-UX. - o Add crypto accelerator support for AEP, Baltimore SureWare, - Broadcom and Cryptographic Appliance's keyserver - [in 0.9.6c-engine release]. - - Major changes between OpenSSL 0.9.6a and OpenSSL 0.9.6b [9 Jul 2001]: - - o Security fix: PRNG improvements. - o Security fix: RSA OAEP check. - o Security fix: Reinsert and fix countermeasure to Bleichbacher's - attack. - o MIPS bug fix in BIGNUM. - o Bug fix in "openssl enc". - o Bug fix in X.509 printing routine. - o Bug fix in DSA verification routine and DSA S/MIME verification. - o Bug fix to make PRNG thread-safe. - o Bug fix in RAND_file_name(). - o Bug fix in compatibility mode trust settings. - o Bug fix in blowfish EVP. - o Increase default size for BIO buffering filter. - o Compatibility fixes in some scripts. - - Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.6a [5 Apr 2001]: - - o Security fix: change behavior of OpenSSL to avoid using - environment variables when running as root. - o Security fix: check the result of RSA-CRT to reduce the - possibility of deducing the private key from an incorrectly - calculated signature. - o Security fix: prevent Bleichenbacher's DSA attack. - o Security fix: Zero the premaster secret after deriving the - master secret in DH ciphersuites. - o Reimplement SSL_peek(), which had various problems. - o Compatibility fix: the function des_encrypt() renamed to - des_encrypt1() to avoid clashes with some Unixen libc. - o Bug fixes for Win32, HP/UX and Irix. - o Bug fixes in BIGNUM, SSL, PKCS#7, PKCS#12, X.509, CONF and - memory checking routines. - o Bug fixes for RSA operations in threaded environments. - o Bug fixes in misc. openssl applications. - o Remove a few potential memory leaks. - o Add tighter checks of BIGNUM routines. - o Shared library support has been reworked for generality. - o More documentation. - o New function BN_rand_range(). - o Add "-rand" option to openssl s_client and s_server. - - Major changes between OpenSSL 0.9.5a and OpenSSL 0.9.6 [10 Oct 2000]: - - o Some documentation for BIO and SSL libraries. - o Enhanced chain verification using key identifiers. - o New sign and verify options to 'dgst' application. - o Support for DER and PEM encoded messages in 'smime' application. - o New 'rsautl' application, low level RSA utility. - o MD4 now included. - o Bugfix for SSL rollback padding check. - o Support for external crypto devices [1]. - o Enhanced EVP interface. - - [1] The support for external crypto devices is currently a separate - distribution. See the file README.ENGINE. - - Major changes between OpenSSL 0.9.5 and OpenSSL 0.9.5a [1 Apr 2000]: - - o Bug fixes for Win32, SuSE Linux, NeXTSTEP and FreeBSD 2.2.8 - o Shared library support for HPUX and Solaris-gcc - o Support of Linux/IA64 - o Assembler support for Mingw32 - o New 'rand' application - o New way to check for existence of algorithms from scripts - - Major changes between OpenSSL 0.9.4 and OpenSSL 0.9.5 [25 May 2000]: - - o S/MIME support in new 'smime' command - o Documentation for the OpenSSL command line application - o Automation of 'req' application - o Fixes to make s_client, s_server work under Windows - o Support for multiple fieldnames in SPKACs - o New SPKAC command line utilty and associated library functions - o Options to allow passwords to be obtained from various sources - o New public key PEM format and options to handle it - o Many other fixes and enhancements to command line utilities - o Usable certificate chain verification - o Certificate purpose checking - o Certificate trust settings - o Support of authority information access extension - o Extensions in certificate requests - o Simplified X509 name and attribute routines - o Initial (incomplete) support for international character sets - o New DH_METHOD, DSA_METHOD and enhanced RSA_METHOD - o Read only memory BIOs and simplified creation function - o TLS/SSL protocol bugfixes: Accept TLS 'client hello' in SSL 3.0 - record; allow fragmentation and interleaving of handshake and other - data - o TLS/SSL code now "tolerates" MS SGC - o Work around for Netscape client certificate hang bug - o RSA_NULL option that removes RSA patent code but keeps other - RSA functionality - o Memory leak detection now allows applications to add extra information - via a per-thread stack - o PRNG robustness improved - o EGD support - o BIGNUM library bug fixes - o Faster DSA parameter generation - o Enhanced support for Alpha Linux - o Experimental MacOS support - - Major changes between OpenSSL 0.9.3 and OpenSSL 0.9.4 [9 Aug 1999]: - - o Transparent support for PKCS#8 format private keys: these are used - by several software packages and are more secure than the standard - form - o PKCS#5 v2.0 implementation - o Password callbacks have a new void * argument for application data - o Avoid various memory leaks - o New pipe-like BIO that allows using the SSL library when actual I/O - must be handled by the application (BIO pair) - - Major changes between OpenSSL 0.9.2b and OpenSSL 0.9.3 [24 May 1999]: - o Lots of enhancements and cleanups to the Configuration mechanism - o RSA OEAP related fixes - o Added `openssl ca -revoke' option for revoking a certificate - o Source cleanups: const correctness, type-safe stacks and ASN.1 SETs - o Source tree cleanups: removed lots of obsolete files - o Thawte SXNet, certificate policies and CRL distribution points - extension support - o Preliminary (experimental) S/MIME support - o Support for ASN.1 UTF8String and VisibleString - o Full integration of PKCS#12 code - o Sparc assembler bignum implementation, optimized hash functions - o Option to disable selected ciphers - - Major changes between OpenSSL 0.9.1c and OpenSSL 0.9.2b [22 Mar 1999]: - o Fixed a security hole related to session resumption - o Fixed RSA encryption routines for the p < q case - o "ALL" in cipher lists now means "everything except NULL ciphers" - o Support for Triple-DES CBCM cipher - o Support of Optimal Asymmetric Encryption Padding (OAEP) for RSA - o First support for new TLSv1 ciphers - o Added a few new BIOs (syslog BIO, reliable BIO) - o Extended support for DSA certificate/keys. - o Extended support for Certificate Signing Requests (CSR) - o Initial support for X.509v3 extensions - o Extended support for compression inside the SSL record layer - o Overhauled Win32 builds - o Cleanups and fixes to the Big Number (BN) library - o Support for ASN.1 GeneralizedTime - o Splitted ASN.1 SETs from SEQUENCEs - o ASN1 and PEM support for Netscape Certificate Sequences - o Overhauled Perl interface - o Lots of source tree cleanups. - o Lots of memory leak fixes. - o Lots of bug fixes. - - Major changes between SSLeay 0.9.0b and OpenSSL 0.9.1c [23 Dec 1998]: - o Integration of the popular NO_RSA/NO_DSA patches - o Initial support for compression inside the SSL record layer - o Added BIO proxy and filtering functionality - o Extended Big Number (BN) library - o Added RIPE MD160 message digest - o Addeed support for RC2/64bit cipher - o Extended ASN.1 parser routines - o Adjustations of the source tree for CVS - o Support for various new platforms - diff --git a/openssl-lib/NOTES.WIN.txt b/openssl-lib/NOTES.WIN.txt deleted file mode 100644 index c31aed9..0000000 --- a/openssl-lib/NOTES.WIN.txt +++ /dev/null @@ -1,139 +0,0 @@ - - NOTES FOR THE WINDOWS PLATFORMS - =============================== - - Requirement details for native (Visual C++) builds - -------------------------------------------------- - - In addition to the requirements and instructions listed in INSTALL, - this are required as well: - - - You need Perl. We recommend ActiveState Perl, available from - https://www.activestate.com/ActivePerl. Another viable alternative - appears to be Strawberry Perl, http://strawberryperl.com. - You also need the perl module Text::Template, available on CPAN. - Please read NOTES.PERL for more information. - - - You need a C compiler. OpenSSL has been tested to build with these: - - * Visual C++ - - - Netwide Assembler, a.k.a. NASM, available from http://www.nasm.us, - is required if you intend to utilize assembler modules. Note that NASM - is the only supported assembler. The Microsoft provided assembler is NOT - supported. - - - Visual C++ (native Windows) - --------------------------- - - Installation directories - - The default installation directories are derived from environment - variables. - - For VC-WIN32, the following defaults are use: - - PREFIX: %ProgramFiles(86)%\OpenSSL - OPENSSLDIR: %CommonProgramFiles(86)%\SSL - - For VC-WIN64, the following defaults are use: - - PREFIX: %ProgramW6432%\OpenSSL - OPENSSLDIR: %CommonProgramW6432%\SSL - - Should those environment variables not exist (on a pure Win32 - installation for examples), these fallbacks are used: - - PREFIX: %ProgramFiles%\OpenSSL - OPENSSLDIR: %CommonProgramFiles%\SSL - - ALSO NOTE that those directories are usually write protected, even if - your account is in the Administrators group. To work around that, - start the command prompt by right-clicking on it and choosing "Run as - Administrator" before running 'nmake install'. The other solution - is, of course, to choose a different set of directories by using - --prefix and --openssldir when configuring. - - GNU C (Cygwin) - -------------- - - Cygwin implements a Posix/Unix runtime system (cygwin1.dll) on top of the - Windows subsystem and provides a bash shell and GNU tools environment. - Consequently, a make of OpenSSL with Cygwin is virtually identical to the - Unix procedure. - - To build OpenSSL using Cygwin, you need to: - - * Install Cygwin (see https://cygwin.com/) - - * Install Cygwin Perl and ensure it is in the path. Recall that - as least 5.10.0 is required. - - * Run the Cygwin bash shell - - Apart from that, follow the Unix instructions in INSTALL. - - NOTE: "make test" and normal file operations may fail in directories - mounted as text (i.e. mount -t c:\somewhere /home) due to Cygwin - stripping of carriage returns. To avoid this ensure that a binary - mount is used, e.g. mount -b c:\somewhere /home. - - It is also possible to create "conventional" Windows binaries that use - the Microsoft C runtime system (msvcrt.dll or crtdll.dll) using MinGW - development add-on for Cygwin. MinGW is supported even as a standalone - setup as described in the following section. In the context you should - recognize that binaries targeting Cygwin itself are not interchangeable - with "conventional" Windows binaries you generate with/for MinGW. - - - GNU C (MinGW/MSYS) - ------------------ - - * Compiler and shell environment installation: - - MinGW and MSYS are available from http://www.mingw.org/, both are - required. Run the installers and do whatever magic they say it takes - to start MSYS bash shell with GNU tools and matching Perl on its PATH. - "Matching Perl" refers to chosen "shell environment", i.e. if built - under MSYS, then Perl compiled for MSYS must be used. - - Alternatively, one can use MSYS2 from https://msys2.github.io/, - which includes MingW (32-bit and 64-bit). - - * It is also possible to cross-compile it on Linux by configuring - with './Configure --cross-compile-prefix=i386-mingw32- mingw ...'. - Other possible cross compile prefixes include x86_64-w64-mingw32- - and i686-w64-mingw32-. - - - Linking your application - ------------------------ - - This section applies to non-Cygwin builds. - - If you link with static OpenSSL libraries then you're expected to - additionally link your application with WS2_32.LIB, GDI32.LIB, - ADVAPI32.LIB, CRYPT32.LIB and USER32.LIB. Those developing - non-interactive service applications might feel concerned about - linking with GDI32.LIB and USER32.LIB, as they are justly associated - with interactive desktop, which is not available to service - processes. The toolkit is designed to detect in which context it's - currently executed, GUI, console app or service, and act accordingly, - namely whether or not to actually make GUI calls. Additionally those - who wish to /DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL and - actually keep them off service process should consider implementing - and exporting from .exe image in question own _OPENSSL_isservice not - relying on USER32.DLL. E.g., on Windows Vista and later you could: - - __declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void) - { DWORD sess; - if (ProcessIdToSessionId(GetCurrentProcessId(),&sess)) - return sess==0; - return FALSE; - } - - If you link with OpenSSL .DLLs, then you're expected to include into - your application code small "shim" snippet, which provides glue between - OpenSSL BIO layer and your compiler run-time. See the OPENSSL_Applink - manual page for further details. diff --git a/openssl-lib/README.ECC.txt b/openssl-lib/README.ECC.txt deleted file mode 100644 index fa3cad7..0000000 --- a/openssl-lib/README.ECC.txt +++ /dev/null @@ -1,61 +0,0 @@ -NOTE: The OpenSSL Software Foundation has executed a sublicense agreement -entitled "Elliptic Curve Cryptography Patent License Agreement" with the -National Security Agency/ Central Security Service Commercial Solutions -Center (NCSC) dated 2010-11-04. That agreement permits implementation and -distribution of software containing features covered by any or all of the -following patents: - -1.) U.S. Pat. No. 5,761,305 entitled "Key Agreement and Transport Protocol - with Implicit Signatures" issued on June 2, 1998; -2.) Can. Pat. Appl. Ser. No. 2176972 entitled "Key Agreement and Transport - Protocol with Implicit Signature and Reduced Bandwidth" filed on May - 16, 1996; -3.) U.S. Pat. No. 5,889,865 entitled "Key Agreement and Transport Protocol - with Implicit Signatures" issued on March 30, 1999; -4.) U.S. Pat. No. 5,896,455 entitled "Key Agreement and Transport Protocol - with Implicit Signatures" issued on April 20, 1999; -5.) U.S. Pat. No. 5,933,504 entitled "Strengthened Public Key Protocol" - issued on August 3, 1999; -6.) Can. Pat. Appl. Ser. No. 2176866 entitled "Strengthened Public Key - Protocol" filed on May 17, 1996; -7.) E.P. Pat. Appl. Ser. No. 96201322.3 entitled "Strengthened Public Key - Protocol" filed on May 17, 1996; -8.) U.S. Pat. No. 5,999,626 entitled "Digital Signatures on a Smartcard" - issued on December 7, 1999; -9.) Can. Pat. Appl. Ser. No. 2202566 entitled "Digital Signatures on a - Smartcard" filed on April 14, 1997; -10.) E.P. Pat. Appl. No. 97106114.8 entitled "Digital Signatures on a - Smartcard" filed on April 15, 1997; -11.) U.S Pat. No. 6,122,736 entitled "Key Agreement and Transport Protocol - with Implicit Signatures" issued on September 19, 2000; -12.) Can. Pat. Appl. Ser. No. 2174261 entitled "Key Agreement and Transport - Protocol with Implicit Signatures" filed on April 16, 1996; -13.) E.P. Pat. Appl. Ser. No. 96105920.1 entitled "Key Agreement and - Transport Protocol with Implicit Signatures" filed on April 16, 1996; -14.) U.S. Pat. No. 6,141,420 entitled "Elliptic Curve Encryption Systems" - issued on October 31, 2000; -15.) Can. Pat. Appl. Ser. No. 2155038 entitled "Elliptic Curve Encryption - Systems" filed on July 31, 1995; -16.) E.P. Pat. Appl. Ser. No. 95926348.4 entitled "Elliptic Curve Encryption - Systems" filed on July 31, 1995; -17.) U.S. Pat. No. 6,336,188 entitled "Authenticated Key Agreement" issued - on January 1, 2002; -18.) U.S. Pat. No. 6,487,661 entitled "Key Agreement and Transport Protocol" - issued on November 26, 2002; -19.) Can. Pat. Appl. Ser. No. 2174260 entitled "Key Agreement and Transport - Protocol" filed on April 16, 1996; -20.) E.P. Pat. Appl. Ser. No. 96105921.9 entitled "Key Agreement and - Transport Protocol" filed on April 21, 1996; -21.) U.S. Pat. No. 6,563,928 entitled "Strengthened Public Key Protocol" - issued on May 13, 2003; -22.) U.S. Pat. No. 6,618,483 entitled "Elliptic Curve Encryption Systems" - issued September 9, 2003; -23.) U.S. Pat. Appl. Ser. No. 09/434,247 entitled "Digital Signatures on a - Smartcard" filed on November 5, 1999; -24.) U.S. Pat. Appl. Ser. No. 09/558,256 entitled "Key Agreement and - Transport Protocol with Implicit Signatures" filed on April 25, 2000; -25.) U.S. Pat. Appl. Ser. No. 09/942,492 entitled "Digital Signatures on a - Smartcard" filed on August 29, 2001 and published on July 18, 2002; and, -26.) U.S. Pat. Appl. Ser. No. 10/185,735 entitled "Strengthened Public Key - Protocol" filed on July 1, 2000. - diff --git a/openssl-lib/README.txt b/openssl-lib/README.txt deleted file mode 100644 index a7bfd73..0000000 --- a/openssl-lib/README.txt +++ /dev/null @@ -1,94 +0,0 @@ - - OpenSSL 1.1.0f 25 May 2017 - - Copyright (c) 1998-2016 The OpenSSL Project - Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson - All rights reserved. - - DESCRIPTION - ----------- - - The OpenSSL Project is a collaborative effort to develop a robust, - commercial-grade, fully featured, and Open Source toolkit implementing the - Transport Layer Security (TLS) protocols (including SSLv3) as well as a - full-strength general purpose cryptographic library. - - OpenSSL is descended from the SSLeay library developed by Eric A. Young - and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the - OpenSSL license plus the SSLeay license), which means that you are free to - get and use it for commercial and non-commercial purposes as long as you - fulfill the conditions of both licenses. - - OVERVIEW - -------- - - The OpenSSL toolkit includes: - - libssl (with platform specific naming): - Provides the client and server-side implementations for SSLv3 and TLS. - - libcrypto (with platform specific naming): - Provides general cryptographic and X.509 support needed by SSL/TLS but - not logically part of it. - - openssl: - A command line tool that can be used for: - Creation of key parameters - Creation of X.509 certificates, CSRs and CRLs - Calculation of message digests - Encryption and decryption - SSL/TLS client and server tests - Handling of S/MIME signed or encrypted mail - And more... - - INSTALLATION - ------------ - - See the appropriate file: - INSTALL Linux, Unix, Windows, OpenVMS, ... - NOTES.* INSTALL addendums for different platforms - - SUPPORT - ------- - - See the OpenSSL website www.openssl.org for details on how to obtain - commercial technical support. Free community support is available through the - openssl-users email list (see - https://www.openssl.org/community/mailinglists.html for further details). - - If you have any problems with OpenSSL then please take the following steps - first: - - - Download the latest version from the repository - to see if the problem has already been addressed - - Configure with no-asm - - Remove compiler optimisation flags - - If you wish to report a bug then please include the following information - and create an issue on GitHub: - - - OpenSSL version: output of 'openssl version -a' - - Any "Configure" options that you selected during compilation of the - library if applicable (see INSTALL) - - OS Name, Version, Hardware platform - - Compiler Details (name, version) - - Application Details (name, version) - - Problem Description (steps that will reproduce the problem, if known) - - Stack Traceback (if the application dumps core) - - Just because something doesn't work the way you expect does not mean it - is necessarily a bug in OpenSSL. Use the openssl-users email list for this type - of query. - - HOW TO CONTRIBUTE TO OpenSSL - ---------------------------- - - See CONTRIBUTING - - LEGALITIES - ---------- - - A number of nations restrict the use or export of cryptography. If you - are potentially subject to such restrictions you should seek competent - professional legal advice before attempting to develop or distribute - cryptographic code. diff --git a/openssl-lib/bin64/libcryptoMD.dll b/openssl-lib/bin64/libcryptoMD.dll deleted file mode 100644 index d67498070abd7510e394525c191036ed3d1f3f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2393600 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íj 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ÐuE~Xuq4bCA~4%fSHiFk!ydAL)xr@C5~!!E(4 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�p+4eQlr*Z?=^Ko+YA> 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

2J_Zk= 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 z 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 Sh6)T77%DJSV5q>O3j7Ced%zX| diff --git a/openssl-lib/bin64/libcryptoMDd.dll b/openssl-lib/bin64/libcryptoMDd.dll deleted file mode 100644 index 6943da858aee8508fe138b929479fd9f940043b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3196928 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

vRmH=B5o#5UL4TiH)5_ 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 z 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

Bo2Mj{xn#Au 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%0DKRVMrn>(dW-oJFnY_4q=cWc>{{O3P@nBIuyD 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 z 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

*i&xrpALc2NK*nTk1`Dh{8ikglm@ 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

{$SMlI*mCjrTiZw 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
$+| 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%0AW*HiXJ86axhw0K)t(~}U%rPH2Q#&wb4V^XW* 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�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

  • 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 `HG}55{cXx+S5J!CS5GEK_vm2HIOH`ZrYKb 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 diff --git a/openssl-lib/bin64/openssl.exe b/openssl-lib/bin64/openssl.exe deleted file mode 100644 index 97b06f71dfaf00203da0f45216e73c52a6a8667f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488448 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

    nRg-?3sanMgG5Ou(BYnv7*FPC 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 diff --git a/openssl-lib/readme.precompiled.txt b/openssl-lib/readme.precompiled.txt deleted file mode 100644 index 48778c8..0000000 --- a/openssl-lib/readme.precompiled.txt +++ /dev/null @@ -1,51 +0,0 @@ - -29 May 2017 -====================================================================================================================== - url: http://www.npcglib.org/~stathis/blog/precompiled-openssl -====================================================================================================================== -These are custom pre-built OpenSSL Libraries v1.1.0f (http://www.openssl.org). -They are compiled with Cygwin/MSVC for 32/64-bit Windows, using Visual Studio 2015. - -Please note that the OpenSSL Project (http://www.openssl.org) is the only official source of OpenSSL. -These builds are created for my own personal use and therefore you are utilizing them at your own risk. -My builds are unsupported and not endorsed by The OpenSSL Project. - -I build these in the context of my own work and spare time, -I do NOT charge any money, I do NOT make any money ... and NO I do NOT accept any donations! -If you really like OpenSSL, if it has helped you or your company in any way, -or you are feeling like giving back anyway, then please -donate directly to the OpenSSL Project: https://www.openssl.org/support/donations.html -The developers and countless contributors deserve it! - ------------------------------------------------------------------------------- -32-bit OpenSSL Libraries [shared] [runtime: dynamic (/MD)]] ------------------------------------------------------------------------------- -release runtime dlls: bin\libcryptoMD.dll bin\libsslMD.dll - release import libs: lib\libcryptoMD.lib lib\libsslMD.lib - debug runtime dlls: bin\libcryptoMDd.dll bin\libsslMDd.dll - debug import libs: lib\libcryptoMDd.lib lib\libsslMDd.lib - ------------------------------------------------------------------------------- -32-bit OpenSSL Libraries [static] [runtime: static (/MT)]] ------------------------------------------------------------------------------- - release libs: lib\libcryptoMT.lib lib\libsslMT.lib - debug libs: lib\libcryptoMTd.lib lib\libsslMTd.lib - ------------------------------------------------------------------------------- -64-bit OpenSSL Libraries [shared] [runtime: dynamic (/MD)]] ------------------------------------------------------------------------------- -release runtime dlls: bin64\libcryptoMD.dll bin64\libsslMD.dll - release import libs: lib64\libcryptoMD.lib lib64\libsslMD.lib - debug runtime dlls: bin64\libcryptoMDd.dll bin64\libsslMDd.dll - debug import libs: lib64\libcryptoMDd.lib lib64\libsslMDd.lib - ------------------------------------------------------------------------------- -64-bit OpenSSL Libraries [static] [runtime: static (/MT)]] ------------------------------------------------------------------------------- - release libs: lib64\libcryptoMT.lib lib64\libsslMT.lib - debug libs: lib64\libcryptoMTd.lib lib64\libsslMTd.lib - -====================================================================================================================== - -If you have any comments or problems send me an email at: -stathis diff --git a/openssl-lib/ssl/misc/CA.pl b/openssl-lib/ssl/misc/CA.pl deleted file mode 100644 index 4c5b16a..0000000 --- a/openssl-lib/ssl/misc/CA.pl +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/env perl -# Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Licensed under the OpenSSL license (the "License"). You may not use -# this file except in compliance with the License. You can obtain a copy -# in the file LICENSE in the source distribution or at -# https://www.openssl.org/source/license.html - -# -# Wrapper around the ca to make it easier to use -# -# WARNING: do not edit! -# Generated by makefile from ..\..\openssl-1.1.0f\apps\CA.pl.in - -use strict; -use warnings; - -my $openssl = "openssl"; -if(defined $ENV{'OPENSSL'}) { - $openssl = $ENV{'OPENSSL'}; -} else { - $ENV{'OPENSSL'} = $openssl; -} - -my $verbose = 1; - -my $OPENSSL_CONFIG = $ENV{"OPENSSL_CONFIG"} || ""; -my $DAYS = "-days 365"; -my $CADAYS = "-days 1095"; # 3 years -my $REQ = "$openssl req $OPENSSL_CONFIG"; -my $CA = "$openssl ca $OPENSSL_CONFIG"; -my $VERIFY = "$openssl verify"; -my $X509 = "$openssl x509"; -my $PKCS12 = "$openssl pkcs12"; - -# default openssl.cnf file has setup as per the following -my $CATOP = "./demoCA"; -my $CAKEY = "cakey.pem"; -my $CAREQ = "careq.pem"; -my $CACERT = "cacert.pem"; -my $CACRL = "crl.pem"; -my $DIRMODE = 0777; - -my $NEWKEY = "newkey.pem"; -my $NEWREQ = "newreq.pem"; -my $NEWCERT = "newcert.pem"; -my $NEWP12 = "newcert.p12"; -my $RET = 0; -my $WHAT = shift @ARGV || ""; -my $FILE; - -# See if reason for a CRL entry is valid; exit if not. -sub crl_reason_ok -{ - my $r = shift; - - if ($r eq 'unspecified' || $r eq 'keyCompromise' - || $r eq 'CACompromise' || $r eq 'affiliationChanged' - || $r eq 'superseded' || $r eq 'cessationOfOperation' - || $r eq 'certificateHold' || $r eq 'removeFromCRL') { - return 1; - } - print STDERR "Invalid CRL reason; must be one of:\n"; - print STDERR " unspecified, keyCompromise, CACompromise,\n"; - print STDERR " affiliationChanged, superseded, cessationOfOperation\n"; - print STDERR " certificateHold, removeFromCRL"; - exit 1; -} - -# Copy a PEM-format file; return like exit status (zero means ok) -sub copy_pemfile -{ - my ($infile, $outfile, $bound) = @_; - my $found = 0; - - open IN, $infile || die "Cannot open $infile, $!"; - open OUT, ">$outfile" || die "Cannot write to $outfile, $!"; - while () { - $found = 1 if /^-----BEGIN.*$bound/; - print OUT $_ if $found; - $found = 2, last if /^-----END.*$bound/; - } - close IN; - close OUT; - return $found == 2 ? 0 : 1; -} - -# Wrapper around system; useful for debugging. Returns just the exit status -sub run -{ - my $cmd = shift; - print "====\n$cmd\n" if $verbose; - my $status = system($cmd); - print "==> $status\n====\n" if $verbose; - return $status >> 8; -} - - -if ( $WHAT =~ /^(-\?|-h|-help)$/ ) { - print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-signcert|-verify\n"; - print STDERR " CA -pkcs12 [certname]\n"; - print STDERR " CA -crl|-revoke cert-filename [reason]\n"; - exit 0; -} -if ($WHAT eq '-newcert' ) { - # create a certificate - $RET = run("$REQ -new -x509 -keyout $NEWKEY -out $NEWCERT $DAYS"); - print "Cert is in $NEWCERT, private key is in $NEWKEY\n" if $RET == 0; -} elsif ($WHAT eq '-newreq' ) { - # create a certificate request - $RET = run("$REQ -new -keyout $NEWKEY -out $NEWREQ $DAYS"); - print "Request is in $NEWREQ, private key is in $NEWKEY\n" if $RET == 0; -} elsif ($WHAT eq '-newreq-nodes' ) { - # create a certificate request - $RET = run("$REQ -new -nodes -keyout $NEWKEY -out $NEWREQ $DAYS"); - print "Request is in $NEWREQ, private key is in $NEWKEY\n" if $RET == 0; -} elsif ($WHAT eq '-newca' ) { - # create the directory hierarchy - mkdir ${CATOP}, $DIRMODE; - mkdir "${CATOP}/certs", $DIRMODE; - mkdir "${CATOP}/crl", $DIRMODE ; - mkdir "${CATOP}/newcerts", $DIRMODE; - mkdir "${CATOP}/private", $DIRMODE; - open OUT, ">${CATOP}/index.txt"; - close OUT; - open OUT, ">${CATOP}/crlnumber"; - print OUT "01\n"; - close OUT; - # ask user for existing CA certificate - print "CA certificate filename (or enter to create)\n"; - $FILE = "" unless defined($FILE = ); - $FILE =~ s{\R$}{}; - if ($FILE ne "") { - copy_pemfile($FILE,"${CATOP}/private/$CAKEY", "PRIVATE"); - copy_pemfile($FILE,"${CATOP}/$CACERT", "CERTIFICATE"); - } else { - print "Making CA certificate ...\n"; - $RET = run("$REQ -new -keyout" - . " ${CATOP}/private/$CAKEY" - . " -out ${CATOP}/$CAREQ"); - $RET = run("$CA -create_serial" - . " -out ${CATOP}/$CACERT $CADAYS -batch" - . " -keyfile ${CATOP}/private/$CAKEY -selfsign" - . " -extensions v3_ca" - . " -infiles ${CATOP}/$CAREQ") if $RET == 0; - print "CA certificate is in ${CATOP}/$CACERT\n" if $RET == 0; - } -} elsif ($WHAT eq '-pkcs12' ) { - my $cname = $ARGV[1]; - $cname = "My Certificate" unless defined $cname; - $RET = run("$PKCS12 -in $NEWCERT -inkey $NEWKEY" - . " -certfile ${CATOP}/$CACERT" - . " -out $NEWP12" - . " -export -name \"$cname\""); - print "PKCS #12 file is in $NEWP12\n" if $RET == 0; -} elsif ($WHAT eq '-xsign' ) { - $RET = run("$CA -policy policy_anything -infiles $NEWREQ"); -} elsif ($WHAT eq '-sign' ) { - $RET = run("$CA -policy policy_anything -out $NEWCERT -infiles $NEWREQ"); - print "Signed certificate is in $NEWCERT\n" if $RET == 0; -} elsif ($WHAT eq '-signCA' ) { - $RET = run("$CA -policy policy_anything -out $NEWCERT" - . " -extensions v3_ca -infiles $NEWREQ"); - print "Signed CA certificate is in $NEWCERT\n" if $RET == 0; -} elsif ($WHAT eq '-signcert' ) { - $RET = run("$X509 -x509toreq -in $NEWREQ -signkey $NEWREQ" - . " -out tmp.pem"); - $RET = run("$CA -policy policy_anything -out $NEWCERT" - . " -infiles tmp.pem") if $RET == 0; - print "Signed certificate is in $NEWCERT\n" if $RET == 0; -} elsif ($WHAT eq '-verify' ) { - my @files = @ARGV ? @ARGV : ( $NEWCERT ); - my $file; - foreach $file (@files) { - my $status = run("$VERIFY \"-CAfile\" ${CATOP}/$CACERT $file"); - $RET = $status if $status != 0; - } -} elsif ($WHAT eq '-crl' ) { - $RET = run("$CA -gencrl -out ${CATOP}/crl/$CACRL"); - print "Generated CRL is in ${CATOP}/crl/$CACRL\n" if $RET == 0; -} elsif ($WHAT eq '-revoke' ) { - my $cname = $ARGV[1]; - if (!defined $cname) { - print "Certificate filename is required; reason optional.\n"; - exit 1; - } - my $reason = $ARGV[2]; - $reason = " -crl_reason $reason" - if defined $reason && crl_reason_ok($reason); - $RET = run("$CA -revoke \"$cname\"" . $reason); -} else { - print STDERR "Unknown arg \"$WHAT\"\n"; - print STDERR "Use -help for help.\n"; - exit 1; -} - -exit $RET; diff --git a/openssl-lib/ssl/misc/tsget.pl b/openssl-lib/ssl/misc/tsget.pl deleted file mode 100644 index e4e8b17..0000000 --- a/openssl-lib/ssl/misc/tsget.pl +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env perl -# Copyright (c) 2002 The OpenTSA Project. All rights reserved. -# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. -# -# Licensed under the OpenSSL license (the "License"). You may not use -# this file except in compliance with the License. You can obtain a copy -# in the file LICENSE in the source distribution or at -# https://www.openssl.org/source/license.html - -use strict; -use IO::Handle; -use Getopt::Std; -use File::Basename; -use WWW::Curl::Easy; - -use vars qw(%options); - -# Callback for reading the body. -sub read_body { - my ($maxlength, $state) = @_; - my $return_data = ""; - my $data_len = length ${$state->{data}}; - if ($state->{bytes} < $data_len) { - $data_len = $data_len - $state->{bytes}; - $data_len = $maxlength if $data_len > $maxlength; - $return_data = substr ${$state->{data}}, $state->{bytes}, $data_len; - $state->{bytes} += $data_len; - } - return $return_data; -} - -# Callback for writing the body into a variable. -sub write_body { - my ($data, $pointer) = @_; - ${$pointer} .= $data; - return length($data); -} - -# Initialise a new Curl object. -sub create_curl { - my $url = shift; - - # Create Curl object. - my $curl = WWW::Curl::Easy::new(); - - # Error-handling related options. - $curl->setopt(CURLOPT_VERBOSE, 1) if $options{d}; - $curl->setopt(CURLOPT_FAILONERROR, 1); - $curl->setopt(CURLOPT_USERAGENT, - "OpenTSA tsget.pl/openssl-1.1.0f"); - - # Options for POST method. - $curl->setopt(CURLOPT_UPLOAD, 1); - $curl->setopt(CURLOPT_CUSTOMREQUEST, "POST"); - $curl->setopt(CURLOPT_HTTPHEADER, - ["Content-Type: application/timestamp-query", - "Accept: application/timestamp-reply,application/timestamp-response"]); - $curl->setopt(CURLOPT_READFUNCTION, \&read_body); - $curl->setopt(CURLOPT_HEADERFUNCTION, sub { return length($_[0]); }); - - # Options for getting the result. - $curl->setopt(CURLOPT_WRITEFUNCTION, \&write_body); - - # SSL related options. - $curl->setopt(CURLOPT_SSLKEYTYPE, "PEM"); - $curl->setopt(CURLOPT_SSL_VERIFYPEER, 1); # Verify server's certificate. - $curl->setopt(CURLOPT_SSL_VERIFYHOST, 2); # Check server's CN. - $curl->setopt(CURLOPT_SSLKEY, $options{k}) if defined($options{k}); - $curl->setopt(CURLOPT_SSLKEYPASSWD, $options{p}) if defined($options{p}); - $curl->setopt(CURLOPT_SSLCERT, $options{c}) if defined($options{c}); - $curl->setopt(CURLOPT_CAINFO, $options{C}) if defined($options{C}); - $curl->setopt(CURLOPT_CAPATH, $options{P}) if defined($options{P}); - $curl->setopt(CURLOPT_RANDOM_FILE, $options{r}) if defined($options{r}); - $curl->setopt(CURLOPT_EGDSOCKET, $options{g}) if defined($options{g}); - - # Setting destination. - $curl->setopt(CURLOPT_URL, $url); - - return $curl; -} - -# Send a request and returns the body back. -sub get_timestamp { - my $curl = shift; - my $body = shift; - my $ts_body; - local $::error_buf; - - # Error-handling related options. - $curl->setopt(CURLOPT_ERRORBUFFER, "::error_buf"); - - # Options for POST method. - $curl->setopt(CURLOPT_INFILE, {data => $body, bytes => 0}); - $curl->setopt(CURLOPT_INFILESIZE, length(${$body})); - - # Options for getting the result. - $curl->setopt(CURLOPT_FILE, \$ts_body); - - # Send the request... - my $error_code = $curl->perform(); - my $error_string; - if ($error_code != 0) { - my $http_code = $curl->getinfo(CURLINFO_HTTP_CODE); - $error_string = "could not get timestamp"; - $error_string .= ", http code: $http_code" unless $http_code == 0; - $error_string .= ", curl code: $error_code"; - $error_string .= " ($::error_buf)" if defined($::error_buf); - } else { - my $ct = $curl->getinfo(CURLINFO_CONTENT_TYPE); - if (lc($ct) ne "application/timestamp-reply" - && lc($ct) ne "application/timestamp-response") { - $error_string = "unexpected content type returned: $ct"; - } - } - return ($ts_body, $error_string); - -} - -# Print usage information and exists. -sub usage { - - print STDERR "usage: $0 -h [-e ] [-o ] "; - print STDERR "[-v] [-d] [-k ] [-p ] "; - print STDERR "[-c ] [-C ] [-P ] "; - print STDERR "[-r ] [-g ] []...\n"; - exit 1; -} - -# ---------------------------------------------------------------------- -# Main program -# ---------------------------------------------------------------------- - -# Getting command-line options (default comes from TSGET environment variable). -my $getopt_arg = "h:e:o:vdk:p:c:C:P:r:g:"; -if (exists $ENV{TSGET}) { - my @old_argv = @ARGV; - @ARGV = split /\s+/, $ENV{TSGET}; - getopts($getopt_arg, \%options) or usage; - @ARGV = @old_argv; -} -getopts($getopt_arg, \%options) or usage; - -# Checking argument consistency. -if (!exists($options{h}) || (@ARGV == 0 && !exists($options{o})) - || (@ARGV > 1 && exists($options{o}))) { - print STDERR "Inconsistent command line options.\n"; - usage; -} -# Setting defaults. -@ARGV = ("-") unless @ARGV != 0; -$options{e} = ".tsr" unless defined($options{e}); - -# Processing requests. -my $curl = create_curl $options{h}; -undef $/; # For reading whole files. -REQUEST: foreach (@ARGV) { - my $input = $_; - my ($base, $path) = fileparse($input, '\.[^.]*'); - my $output_base = $base . $options{e}; - my $output = defined($options{o}) ? $options{o} : $path . $output_base; - - STDERR->printflush("$input: ") if $options{v}; - # Read request. - my $body; - if ($input eq "-") { - # Read the request from STDIN; - $body = ; - } else { - # Read the request from file. - open INPUT, "<" . $input - or warn("$input: could not open input file: $!\n"), next REQUEST; - $body = ; - close INPUT - or warn("$input: could not close input file: $!\n"), next REQUEST; - } - - # Send request. - STDERR->printflush("sending request") if $options{v}; - - my ($ts_body, $error) = get_timestamp $curl, \$body; - if (defined($error)) { - die "$input: fatal error: $error\n"; - } - STDERR->printflush(", reply received") if $options{v}; - - # Write response. - if ($output eq "-") { - # Write to STDOUT. - print $ts_body; - } else { - # Write to file. - open OUTPUT, ">", $output - or warn("$output: could not open output file: $!\n"), next REQUEST; - print OUTPUT $ts_body; - close OUTPUT - or warn("$output: could not close output file: $!\n"), next REQUEST; - } - STDERR->printflush(", $output written.\n") if $options{v}; -} -$curl->cleanup(); -WWW::Curl::Easy::global_cleanup(); diff --git a/openssl-lib/ssl/openssl.cnf b/openssl-lib/ssl/openssl.cnf deleted file mode 100644 index b3e7444..0000000 --- a/openssl-lib/ssl/openssl.cnf +++ /dev/null @@ -1,346 +0,0 @@ -# -# OpenSSL example configuration file. -# This is mostly being used for generation of certificate requests. -# - -# This definition stops the following lines choking if HOME isn't -# defined. -HOME = . -RANDFILE = $ENV::HOME/.rnd - -# Extra OBJECT IDENTIFIER info: -#oid_file = $ENV::HOME/.oid -oid_section = new_oids - -# To use this configuration file with the "-extfile" option of the -# "openssl x509" utility, name here the section containing the -# X.509v3 extensions to use: -# extensions = -# (Alternatively, use a configuration file that has only -# X.509v3 extensions in its main [= default] section.) - -[ new_oids ] - -# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. -# Add a simple OID like this: -# testoid1=1.2.3.4 -# Or use config file substitution like this: -# testoid2=${testoid1}.5.6 - -# Policies used by the TSA examples. -tsa_policy1 = 1.2.3.4.1 -tsa_policy2 = 1.2.3.4.5.6 -tsa_policy3 = 1.2.3.4.5.7 - -#################################################################### -[ ca ] -default_ca = CA_default # The default ca section - -#################################################################### -[ CA_default ] - -dir = ./demoCA # Where everything is kept -certs = $dir/certs # Where the issued certs are kept -crl_dir = $dir/crl # Where the issued crl are kept -database = $dir/index.txt # database index file. -#unique_subject = no # Set to 'no' to allow creation of - # several certs with same subject. -new_certs_dir = $dir/newcerts # default place for new certs. - -certificate = $dir/cacert.pem # The CA certificate -serial = $dir/serial # The current serial number -crlnumber = $dir/crlnumber # the current crl number - # must be commented out to leave a V1 CRL -crl = $dir/crl.pem # The current CRL -private_key = $dir/private/cakey.pem# The private key -RANDFILE = $dir/private/.rand # private random number file - -x509_extensions = usr_cert # The extensions to add to the cert - -# Comment out the following two lines for the "traditional" -# (and highly broken) format. -name_opt = ca_default # Subject Name options -cert_opt = ca_default # Certificate field options - -# Extension copying option: use with caution. -# copy_extensions = copy - -# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs -# so this is commented out by default to leave a V1 CRL. -# crlnumber must also be commented out to leave a V1 CRL. -# crl_extensions = crl_ext - -default_days = 365 # how long to certify for -default_crl_days= 30 # how long before next CRL -default_md = default # use public key default MD -preserve = no # keep passed DN ordering - -# A few difference way of specifying how similar the request should look -# For type CA, the listed attributes must be the same, and the optional -# and supplied fields are just that :-) -policy = policy_match - -# For the CA policy -[ policy_match ] -countryName = match -stateOrProvinceName = match -organizationName = match -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -# For the 'anything' policy -# At this point in time, you must list all acceptable 'object' -# types. -[ policy_anything ] -countryName = optional -stateOrProvinceName = optional -localityName = optional -organizationName = optional -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -#################################################################### -[ req ] -default_bits = 2048 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca # The extensions to add to the self signed cert - -# Passwords for private keys if not present they will be prompted for -# input_password = secret -# output_password = secret - -# This sets a mask for permitted string types. There are several options. -# default: PrintableString, T61String, BMPString. -# pkix : PrintableString, BMPString (PKIX recommendation before 2004) -# utf8only: only UTF8Strings (PKIX recommendation after 2004). -# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). -# MASK:XXXX a literal mask value. -# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. -string_mask = utf8only - -# req_extensions = v3_req # The extensions to add to a certificate request - -[ req_distinguished_name ] -countryName = Country Name (2 letter code) -countryName_default = AU -countryName_min = 2 -countryName_max = 2 - -stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = Some-State - -localityName = Locality Name (eg, city) - -0.organizationName = Organization Name (eg, company) -0.organizationName_default = Internet Widgits Pty Ltd - -# we can do this but it is not needed normally :-) -#1.organizationName = Second Organization Name (eg, company) -#1.organizationName_default = World Wide Web Pty Ltd - -organizationalUnitName = Organizational Unit Name (eg, section) -#organizationalUnitName_default = - -commonName = Common Name (e.g. server FQDN or YOUR name) -commonName_max = 64 - -emailAddress = Email Address -emailAddress_max = 64 - -# SET-ex3 = SET extension number 3 - -[ req_attributes ] -challengePassword = A challenge password -challengePassword_min = 4 -challengePassword_max = 20 - -unstructuredName = An optional company name - -[ usr_cert ] - -# These extensions are added when 'ca' signs a request. - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This is required for TSA certificates. -# extendedKeyUsage = critical,timeStamping - -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -[ v3_ca ] - - -# Extensions for a typical CA - - -# PKIX recommendation. - -subjectKeyIdentifier=hash - -authorityKeyIdentifier=keyid:always,issuer - -basicConstraints = critical,CA:true - -# Key usage: this is typical for a CA certificate. However since it will -# prevent it being used as an test self-signed certificate it is best -# left out by default. -# keyUsage = cRLSign, keyCertSign - -# Some might want this also -# nsCertType = sslCA, emailCA - -# Include email address in subject alt name: another PKIX recommendation -# subjectAltName=email:copy -# Copy issuer details -# issuerAltName=issuer:copy - -# DER hex encoding of an extension: beware experts only! -# obj=DER:02:03 -# Where 'obj' is a standard or added object -# You can even override a supported extension: -# basicConstraints= critical, DER:30:03:01:01:FF - -[ crl_ext ] - -# CRL extensions. -# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. - -# issuerAltName=issuer:copy -authorityKeyIdentifier=keyid:always - -[ proxy_cert_ext ] -# These extensions should be added when creating a proxy certificate - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This really needs to be in place for it to be a proxy certificate. -proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo - -#################################################################### -[ tsa ] - -default_tsa = tsa_config1 # the default TSA section - -[ tsa_config1 ] - -# These are used by the TSA reply generation only. -dir = ./demoCA # TSA root directory -serial = $dir/tsaserial # The current serial number (mandatory) -crypto_device = builtin # OpenSSL engine to use for signing -signer_cert = $dir/tsacert.pem # The TSA signing certificate - # (optional) -certs = $dir/cacert.pem # Certificate chain to include in reply - # (optional) -signer_key = $dir/private/tsakey.pem # The TSA private key (optional) -signer_digest = sha256 # Signing digest to use. (Optional) -default_policy = tsa_policy1 # Policy if request did not specify it - # (optional) -other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) -digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) -accuracy = secs:1, millisecs:500, microsecs:100 # (optional) -clock_precision_digits = 0 # number of digits after dot. (optional) -ordering = yes # Is ordering defined for timestamps? - # (optional, default: no) -tsa_name = yes # Must the TSA name be included in the reply? - # (optional, default: no) -ess_cert_id_chain = no # Must the ESS cert id chain be included? - # (optional, default: no) diff --git a/openssl-lib/ssl/openssl.cnf.dist b/openssl-lib/ssl/openssl.cnf.dist deleted file mode 100644 index b3e7444..0000000 --- a/openssl-lib/ssl/openssl.cnf.dist +++ /dev/null @@ -1,346 +0,0 @@ -# -# OpenSSL example configuration file. -# This is mostly being used for generation of certificate requests. -# - -# This definition stops the following lines choking if HOME isn't -# defined. -HOME = . -RANDFILE = $ENV::HOME/.rnd - -# Extra OBJECT IDENTIFIER info: -#oid_file = $ENV::HOME/.oid -oid_section = new_oids - -# To use this configuration file with the "-extfile" option of the -# "openssl x509" utility, name here the section containing the -# X.509v3 extensions to use: -# extensions = -# (Alternatively, use a configuration file that has only -# X.509v3 extensions in its main [= default] section.) - -[ new_oids ] - -# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. -# Add a simple OID like this: -# testoid1=1.2.3.4 -# Or use config file substitution like this: -# testoid2=${testoid1}.5.6 - -# Policies used by the TSA examples. -tsa_policy1 = 1.2.3.4.1 -tsa_policy2 = 1.2.3.4.5.6 -tsa_policy3 = 1.2.3.4.5.7 - -#################################################################### -[ ca ] -default_ca = CA_default # The default ca section - -#################################################################### -[ CA_default ] - -dir = ./demoCA # Where everything is kept -certs = $dir/certs # Where the issued certs are kept -crl_dir = $dir/crl # Where the issued crl are kept -database = $dir/index.txt # database index file. -#unique_subject = no # Set to 'no' to allow creation of - # several certs with same subject. -new_certs_dir = $dir/newcerts # default place for new certs. - -certificate = $dir/cacert.pem # The CA certificate -serial = $dir/serial # The current serial number -crlnumber = $dir/crlnumber # the current crl number - # must be commented out to leave a V1 CRL -crl = $dir/crl.pem # The current CRL -private_key = $dir/private/cakey.pem# The private key -RANDFILE = $dir/private/.rand # private random number file - -x509_extensions = usr_cert # The extensions to add to the cert - -# Comment out the following two lines for the "traditional" -# (and highly broken) format. -name_opt = ca_default # Subject Name options -cert_opt = ca_default # Certificate field options - -# Extension copying option: use with caution. -# copy_extensions = copy - -# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs -# so this is commented out by default to leave a V1 CRL. -# crlnumber must also be commented out to leave a V1 CRL. -# crl_extensions = crl_ext - -default_days = 365 # how long to certify for -default_crl_days= 30 # how long before next CRL -default_md = default # use public key default MD -preserve = no # keep passed DN ordering - -# A few difference way of specifying how similar the request should look -# For type CA, the listed attributes must be the same, and the optional -# and supplied fields are just that :-) -policy = policy_match - -# For the CA policy -[ policy_match ] -countryName = match -stateOrProvinceName = match -organizationName = match -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -# For the 'anything' policy -# At this point in time, you must list all acceptable 'object' -# types. -[ policy_anything ] -countryName = optional -stateOrProvinceName = optional -localityName = optional -organizationName = optional -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -#################################################################### -[ req ] -default_bits = 2048 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca # The extensions to add to the self signed cert - -# Passwords for private keys if not present they will be prompted for -# input_password = secret -# output_password = secret - -# This sets a mask for permitted string types. There are several options. -# default: PrintableString, T61String, BMPString. -# pkix : PrintableString, BMPString (PKIX recommendation before 2004) -# utf8only: only UTF8Strings (PKIX recommendation after 2004). -# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). -# MASK:XXXX a literal mask value. -# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. -string_mask = utf8only - -# req_extensions = v3_req # The extensions to add to a certificate request - -[ req_distinguished_name ] -countryName = Country Name (2 letter code) -countryName_default = AU -countryName_min = 2 -countryName_max = 2 - -stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = Some-State - -localityName = Locality Name (eg, city) - -0.organizationName = Organization Name (eg, company) -0.organizationName_default = Internet Widgits Pty Ltd - -# we can do this but it is not needed normally :-) -#1.organizationName = Second Organization Name (eg, company) -#1.organizationName_default = World Wide Web Pty Ltd - -organizationalUnitName = Organizational Unit Name (eg, section) -#organizationalUnitName_default = - -commonName = Common Name (e.g. server FQDN or YOUR name) -commonName_max = 64 - -emailAddress = Email Address -emailAddress_max = 64 - -# SET-ex3 = SET extension number 3 - -[ req_attributes ] -challengePassword = A challenge password -challengePassword_min = 4 -challengePassword_max = 20 - -unstructuredName = An optional company name - -[ usr_cert ] - -# These extensions are added when 'ca' signs a request. - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This is required for TSA certificates. -# extendedKeyUsage = critical,timeStamping - -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -[ v3_ca ] - - -# Extensions for a typical CA - - -# PKIX recommendation. - -subjectKeyIdentifier=hash - -authorityKeyIdentifier=keyid:always,issuer - -basicConstraints = critical,CA:true - -# Key usage: this is typical for a CA certificate. However since it will -# prevent it being used as an test self-signed certificate it is best -# left out by default. -# keyUsage = cRLSign, keyCertSign - -# Some might want this also -# nsCertType = sslCA, emailCA - -# Include email address in subject alt name: another PKIX recommendation -# subjectAltName=email:copy -# Copy issuer details -# issuerAltName=issuer:copy - -# DER hex encoding of an extension: beware experts only! -# obj=DER:02:03 -# Where 'obj' is a standard or added object -# You can even override a supported extension: -# basicConstraints= critical, DER:30:03:01:01:FF - -[ crl_ext ] - -# CRL extensions. -# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. - -# issuerAltName=issuer:copy -authorityKeyIdentifier=keyid:always - -[ proxy_cert_ext ] -# These extensions should be added when creating a proxy certificate - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This really needs to be in place for it to be a proxy certificate. -proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo - -#################################################################### -[ tsa ] - -default_tsa = tsa_config1 # the default TSA section - -[ tsa_config1 ] - -# These are used by the TSA reply generation only. -dir = ./demoCA # TSA root directory -serial = $dir/tsaserial # The current serial number (mandatory) -crypto_device = builtin # OpenSSL engine to use for signing -signer_cert = $dir/tsacert.pem # The TSA signing certificate - # (optional) -certs = $dir/cacert.pem # Certificate chain to include in reply - # (optional) -signer_key = $dir/private/tsakey.pem # The TSA private key (optional) -signer_digest = sha256 # Signing digest to use. (Optional) -default_policy = tsa_policy1 # Policy if request did not specify it - # (optional) -other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) -digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) -accuracy = secs:1, millisecs:500, microsecs:100 # (optional) -clock_precision_digits = 0 # number of digits after dot. (optional) -ordering = yes # Is ordering defined for timestamps? - # (optional, default: no) -tsa_name = yes # Must the TSA name be included in the reply? - # (optional, default: no) -ess_cert_id_chain = no # Must the ESS cert id chain be included? - # (optional, default: no) diff --git a/rapidjson-lib/.gitattributes b/rapidjson-lib/.gitattributes deleted file mode 100644 index 6f598bb..0000000 --- a/rapidjson-lib/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Set the default behavior, in case people don't have core.autocrlf set. -* text=auto - -# Explicitly declare text files you want to always be normalized and converted -# to native line endings on checkout. -*.cpp text -*.h text -*.txt text -*.md text -*.cmake text -*.svg text -*.dot text -*.yml text -*.in text -*.sh text -*.autopkg text -Dockerfile text - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -*.json binary \ No newline at end of file diff --git a/rapidjson-lib/.gitignore b/rapidjson-lib/.gitignore deleted file mode 100644 index e7e8fba..0000000 --- a/rapidjson-lib/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -/bin/* -!/bin/data -!/bin/encodings -!/bin/jsonchecker -!/bin/types -/build -/doc/html -/doc/doxygen_*.db -*.a - -# Temporary files created during CMake build -CMakeCache.txt -CMakeFiles -cmake_install.cmake -CTestTestfile.cmake -Makefile -RapidJSON*.cmake -RapidJSON.pc -Testing -/googletest -install_manifest.txt -Doxyfile -Doxyfile.zh-cn -DartConfiguration.tcl -*.nupkg diff --git a/rapidjson-lib/.gitmodules b/rapidjson-lib/.gitmodules deleted file mode 100644 index 5e41f7c..0000000 --- a/rapidjson-lib/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "thirdparty/gtest"] - path = thirdparty/gtest - url = https://github.com/google/googletest.git diff --git a/rapidjson-lib/.travis.yml b/rapidjson-lib/.travis.yml deleted file mode 100644 index f9319f2..0000000 --- a/rapidjson-lib/.travis.yml +++ /dev/null @@ -1,98 +0,0 @@ -sudo: required -dist: precise - -language: cpp -cache: - - ccache - -env: - global: - - USE_CCACHE=1 - - CCACHE_SLOPPINESS=pch_defines,time_macros - - CCACHE_COMPRESS=1 - - CCACHE_MAXSIZE=100M - - ARCH_FLAGS_x86='-m32' # #266: don't use SSE on 32-bit - - ARCH_FLAGS_x86_64='-msse4.2' # use SSE4.2 on 64-bit - - GITHUB_REPO='miloyip/rapidjson' - - secure: "HrsaCb+N66EG1HR+LWH1u51SjaJyRwJEDzqJGYMB7LJ/bfqb9mWKF1fLvZGk46W5t7TVaXRDD5KHFx9DPWvKn4gRUVkwTHEy262ah5ORh8M6n/6VVVajeV/AYt2C0sswdkDBDO4Xq+xy5gdw3G8s1A4Inbm73pUh+6vx+7ltBbk=" - -before_install: - - sudo apt-add-repository -y ppa:ubuntu-toolchain-r/test - - sudo apt-get update -qq - - sudo apt-get install -y cmake valgrind g++-multilib libc6-dbg:i386 - -matrix: - include: - # gcc - - env: CONF=release ARCH=x86 CXX11=ON - compiler: gcc - - env: CONF=release ARCH=x86_64 CXX11=ON - compiler: gcc - - env: CONF=debug ARCH=x86 CXX11=OFF - compiler: gcc - - env: CONF=debug ARCH=x86_64 CXX11=OFF - compiler: gcc - # clang - - env: CONF=debug ARCH=x86 CXX11=ON CCACHE_CPP2=yes - compiler: clang - - env: CONF=debug ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes - compiler: clang - - env: CONF=debug ARCH=x86 CXX11=OFF CCACHE_CPP2=yes - compiler: clang - - env: CONF=debug ARCH=x86_64 CXX11=OFF CCACHE_CPP2=yes - compiler: clang - - env: CONF=release ARCH=x86 CXX11=ON CCACHE_CPP2=yes - compiler: clang - - env: CONF=release ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes - compiler: clang - # coverage report - - env: CONF=debug ARCH=x86 CXX11=ON GCOV_FLAGS='--coverage' - compiler: gcc - cache: - - ccache - - pip - after_success: - - pip install --user cpp-coveralls - - coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h - - env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage' - compiler: gcc - cache: - - ccache - - pip - after_success: - - pip install --user cpp-coveralls - - coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h - - script: # Documentation task - - cd build - - cmake .. -DRAPIDJSON_HAS_STDSTRING=ON -DCMAKE_VERBOSE_MAKEFILE=ON - - make travis_doc - cache: false - addons: - apt: - packages: - - doxygen - -before_script: - - ccache -s - # hack to avoid Valgrind bug (https://bugs.kde.org/show_bug.cgi?id=326469), - # exposed by merging PR#163 (using -march=native) - # TODO: Since this bug is already fixed. Remove this when valgrind can be upgraded. - - sed -i "s/-march=native//" CMakeLists.txt - - mkdir build - -script: - - if [ "$CXX" = "clang++" ]; then export CXXFLAGS="-stdlib=libc++ ${CXXFLAGS}"; fi - - > - eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ; - (cd build && cmake - -DRAPIDJSON_HAS_STDSTRING=ON - -DRAPIDJSON_BUILD_CXX11=$CXX11 - -DCMAKE_VERBOSE_MAKEFILE=ON - -DCMAKE_BUILD_TYPE=$CONF - -DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS" - -DCMAKE_EXE_LINKER_FLAGS=$GCOV_FLAGS - ..) - - cd build - - make tests -j 2 - - make examples -j 2 - - ctest -j 2 -V `[ "$CONF" = "release" ] || echo "-E perftest"` diff --git a/rapidjson-lib/CHANGELOG.md b/rapidjson-lib/CHANGELOG.md deleted file mode 100644 index 0205e7b..0000000 --- a/rapidjson-lib/CHANGELOG.md +++ /dev/null @@ -1,158 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). - -## [Unreleased] - -## 1.1.0 - 2016-08-25 - -### Added -* Add GenericDocument ctor overload to specify JSON type (#369) -* Add FAQ (#372, #373, #374, #376) -* Add forward declaration header `fwd.h` -* Add @PlatformIO Library Registry manifest file (#400) -* Implement assignment operator for BigInteger (#404) -* Add comments support (#443) -* Adding coapp definition (#460) -* documenttest.cpp: EXPECT_THROW when checking empty allocator (470) -* GenericDocument: add implicit conversion to ParseResult (#480) -* Use with C++ linkage on Windows ARM (#485) -* Detect little endian for Microsoft ARM targets -* Check Nan/Inf when writing a double (#510) -* Add JSON Schema Implementation (#522) -* Add iostream wrapper (#530) -* Add Jsonx example for converting JSON into JSONx (a XML format) (#531) -* Add optional unresolvedTokenIndex parameter to Pointer::Get() (#532) -* Add encoding validation option for Writer/PrettyWriter (#534) -* Add Writer::SetMaxDecimalPlaces() (#536) -* Support {0, } and {0, m} in Regex (#539) -* Add Value::Get/SetFloat(), Value::IsLossLessFloat/Double() (#540) -* Add stream position check to reader unit tests (#541) -* Add Templated accessors and range-based for (#542) -* Add (Pretty)Writer::RawValue() (#543) -* Add Document::Parse(std::string), Document::Parse(const char*, size_t length) and related APIs. (#553) -* Add move constructor for GenericSchemaDocument (#554) -* Add VS2010 and VS2015 to AppVeyor CI (#555) -* Add parse-by-parts example (#556, #562) -* Support parse number as string (#564, #589) -* Add kFormatSingleLineArray for PrettyWriter (#577) -* Added optional support for trailing commas (#584) -* Added filterkey and filterkeydom examples (#615) -* Added npm docs (#639) -* Allow options for writing and parsing NaN/Infinity (#641) -* Add std::string overload to PrettyWriter::Key() when RAPIDJSON_HAS_STDSTRING is defined (#698) - -### Fixed -* Fix gcc/clang/vc warnings (#350, #394, #397, #444, #447, #473, #515, #582, #589, #595, #667) -* Fix documentation (#482, #511, #550, #557, #614, #635, #660) -* Fix emscripten alignment issue (#535) -* Fix missing allocator to uses of AddMember in document (#365) -* CMake will no longer complain that the minimum CMake version is not specified (#501) -* Make it usable with old VC8 (VS2005) (#383) -* Prohibit C++11 move from Document to Value (#391) -* Try to fix incorrect 64-bit alignment (#419) -* Check return of fwrite to avoid warn_unused_result build failures (#421) -* Fix UB in GenericDocument::ParseStream (#426) -* Keep Document value unchanged on parse error (#439) -* Add missing return statement (#450) -* Fix Document::Parse(const Ch*) for transcoding (#478) -* encodings.h: fix typo in preprocessor condition (#495) -* Custom Microsoft headers are necessary only for Visual Studio 2012 and lower (#559) -* Fix memory leak for invalid regex (26e69ffde95ba4773ab06db6457b78f308716f4b) -* Fix a bug in schema minimum/maximum keywords for 64-bit integer (e7149d665941068ccf8c565e77495521331cf390) -* Fix a crash bug in regex (#605) -* Fix schema "required" keyword cannot handle duplicated keys (#609) -* Fix cmake CMP0054 warning (#612) -* Added missing include guards in istreamwrapper.h and ostreamwrapper.h (#634) -* Fix undefined behaviour (#646) -* Fix buffer overrun using PutN (#673) -* Fix rapidjson::value::Get() may returns wrong data (#681) -* Add Flush() for all value types (#689) -* Handle malloc() fail in PoolAllocator (#691) -* Fix builds on x32 platform. #703 - -### Changed -* Clarify problematic JSON license (#392) -* Move Travis to container based infrastructure (#504, #558) -* Make whitespace array more compact (#513) -* Optimize Writer::WriteString() with SIMD (#544) -* x86-64 48-bit pointer optimization for GenericValue (#546) -* Define RAPIDJSON_HAS_CXX11_RVALUE_REFS directly in clang (#617) -* Make GenericSchemaDocument constructor explicit (#674) -* Optimize FindMember when use std::string (#690) - -## [1.0.2] - 2015-05-14 - -### Added -* Add Value::XXXMember(...) overloads for std::string (#335) - -### Fixed -* Include rapidjson.h for all internal/error headers. -* Parsing some numbers incorrectly in full-precision mode (`kFullPrecisionParseFlag`) (#342) -* Fix some numbers parsed incorrectly (#336) -* Fix alignment of 64bit platforms (#328) -* Fix MemoryPoolAllocator::Clear() to clear user-buffer (0691502573f1afd3341073dd24b12c3db20fbde4) - -### Changed -* CMakeLists for include as a thirdparty in projects (#334, #337) -* Change Document::ParseStream() to use stack allocator for Reader (ffbe38614732af8e0b3abdc8b50071f386a4a685) - -## [1.0.1] - 2015-04-25 - -### Added -* Changelog following [Keep a CHANGELOG](https://github.com/olivierlacan/keep-a-changelog) suggestions. - -### Fixed -* Parsing of some numbers (e.g. "1e-00011111111111") causing assertion (#314). -* Visual C++ 32-bit compilation error in `diyfp.h` (#317). - -## [1.0.0] - 2015-04-22 - -### Added -* 100% [Coverall](https://coveralls.io/r/miloyip/rapidjson?branch=master) coverage. -* Version macros (#311) - -### Fixed -* A bug in trimming long number sequence (4824f12efbf01af72b8cb6fc96fae7b097b73015). -* Double quote in unicode escape (#288). -* Negative zero roundtrip (double only) (#289). -* Standardize behavior of `memcpy()` and `malloc()` (0c5c1538dcfc7f160e5a4aa208ddf092c787be5a, #305, 0e8bbe5e3ef375e7f052f556878be0bd79e9062d). - -### Removed -* Remove an invalid `Document::ParseInsitu()` API (e7f1c6dd08b522cfcf9aed58a333bd9a0c0ccbeb). - -## 1.0-beta - 2015-04-8 - -### Added -* RFC 7159 (#101) -* Optional Iterative Parser (#76) -* Deep-copy values (#20) -* Error code and message (#27) -* ASCII Encoding (#70) -* `kParseStopWhenDoneFlag` (#83) -* `kParseFullPrecisionFlag` (881c91d696f06b7f302af6d04ec14dd08db66ceb) -* Add `Key()` to handler concept (#134) -* C++11 compatibility and support (#128) -* Optimized number-to-string and vice versa conversions (#137, #80) -* Short-String Optimization (#131) -* Local stream optimization by traits (#32) -* Travis & Appveyor Continuous Integration, with Valgrind verification (#24, #242) -* Redo all documentation (English, Simplified Chinese) - -### Changed -* Copyright ownership transfered to THL A29 Limited (a Tencent company). -* Migrating from Premake to CMAKE (#192) -* Resolve all warning reports - -### Removed -* Remove other JSON libraries for performance comparison (#180) - -## 0.11 - 2012-11-16 - -## 0.1 - 2011-11-18 - -[Unreleased]: https://github.com/miloyip/rapidjson/compare/v1.1.0...HEAD -[1.1.0]: https://github.com/miloyip/rapidjson/compare/v1.0.2...v1.1.0 -[1.0.2]: https://github.com/miloyip/rapidjson/compare/v1.0.1...v1.0.2 -[1.0.1]: https://github.com/miloyip/rapidjson/compare/v1.0.0...v1.0.1 -[1.0.0]: https://github.com/miloyip/rapidjson/compare/v1.0-beta...v1.0.0 diff --git a/rapidjson-lib/CMakeLists.txt b/rapidjson-lib/CMakeLists.txt deleted file mode 100644 index ceda71b..0000000 --- a/rapidjson-lib/CMakeLists.txt +++ /dev/null @@ -1,173 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -if(POLICY CMP0025) - # detect Apple's Clang - cmake_policy(SET CMP0025 NEW) -endif() -if(POLICY CMP0054) - cmake_policy(SET CMP0054 NEW) -endif() - -SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules) - -PROJECT(RapidJSON CXX) - -set(LIB_MAJOR_VERSION "1") -set(LIB_MINOR_VERSION "1") -set(LIB_PATCH_VERSION "0") -set(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VERSION}") - -# compile in release with debug info mode by default -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) -endif() - -# Build all binaries in a separate directory -SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - -option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON) -option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON) -option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON) -option(RAPIDJSON_BUILD_THIRDPARTY_GTEST - "Use gtest installation in `thirdparty/gtest` by default if available" OFF) - -option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11 (gcc/clang)" ON) - -option(RAPIDJSON_BUILD_ASAN "Build rapidjson with address sanitizer (gcc/clang)" OFF) -option(RAPIDJSON_BUILD_UBSAN "Build rapidjson with undefined behavior sanitizer (gcc/clang)" OFF) - -option(RAPIDJSON_HAS_STDSTRING "" OFF) -if(RAPIDJSON_HAS_STDSTRING) - add_definitions(-DRAPIDJSON_HAS_STDSTRING) -endif() - -find_program(CCACHE_FOUND ccache) -if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics") - endif() -endif(CCACHE_FOUND) - -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror") - if (RAPIDJSON_BUILD_CXX11) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7.0") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - endif() - endif() - if (RAPIDJSON_BUILD_ASAN) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0") - message(FATAL_ERROR "GCC < 4.8 doesn't support the address sanitizer") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") - endif() - endif() - if (RAPIDJSON_BUILD_UBSAN) - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9.0") - message(FATAL_ERROR "GCC < 4.9 doesn't support the undefined behavior sanitizer") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") - endif() - endif() -elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror -Wno-missing-field-initializers") - if (RAPIDJSON_BUILD_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - endif() - if (RAPIDJSON_BUILD_ASAN) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") - endif() - if (RAPIDJSON_BUILD_UBSAN) - if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") - endif() - endif() -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") -endif() - -#add extra search paths for libraries and includes -SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in") -SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install") -SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PATH "Path to the documentation") - -IF(UNIX OR CYGWIN) - SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}") -ELSEIF(WIN32) - SET(_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake") -ENDIF() -SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake fiels are installed in") - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) - -if(RAPIDJSON_BUILD_DOC) - add_subdirectory(doc) -endif() - -add_custom_target(travis_doc) -add_custom_command(TARGET travis_doc - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/travis-doxygen.sh) - -if(RAPIDJSON_BUILD_EXAMPLES) - add_subdirectory(example) -endif() - -if(RAPIDJSON_BUILD_TESTS) - if(MSVC11) - # required for VS2012 due to missing support for variadic templates - add_definitions(-D_VARIADIC_MAX=10) - endif(MSVC11) - add_subdirectory(test) - include(CTest) -endif() - -# pkg-config -IF (UNIX OR CYGWIN) - CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc - @ONLY) - INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc - DESTINATION "${LIB_INSTALL_DIR}/pkgconfig" - COMPONENT pkgconfig) -ENDIF() - -install(FILES readme.md - DESTINATION "${DOC_INSTALL_DIR}" - COMPONENT doc) - -install(DIRECTORY include/rapidjson - DESTINATION "${INCLUDE_INSTALL_DIR}" - COMPONENT dev) - -install(DIRECTORY example/ - DESTINATION "${DOC_INSTALL_DIR}/examples" - COMPONENT examples - # Following patterns are for excluding the intermediate/object files - # from an install of in-source CMake build. - PATTERN "CMakeFiles" EXCLUDE - PATTERN "Makefile" EXCLUDE - PATTERN "cmake_install.cmake" EXCLUDE) - -# Provide config and version files to be used by other applications -# =============================== - -export(PACKAGE ${PROJECT_NAME}) - -# cmake-modules -CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in - ${PROJECT_NAME}Config.cmake - @ONLY) -CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in - ${PROJECT_NAME}ConfigVersion.cmake - @ONLY) -INSTALL(FILES - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake - DESTINATION "${CMAKE_INSTALL_DIR}" - COMPONENT dev) diff --git a/rapidjson-lib/CMakeModules/FindGTestSrc.cmake b/rapidjson-lib/CMakeModules/FindGTestSrc.cmake deleted file mode 100644 index f3cb8c9..0000000 --- a/rapidjson-lib/CMakeModules/FindGTestSrc.cmake +++ /dev/null @@ -1,30 +0,0 @@ - -SET(GTEST_SEARCH_PATH - "${GTEST_SOURCE_DIR}" - "${CMAKE_CURRENT_LIST_DIR}/../thirdparty/gtest/googletest") - -IF(UNIX) - IF(RAPIDJSON_BUILD_THIRDPARTY_GTEST) - LIST(APPEND GTEST_SEARCH_PATH "/usr/src/gtest") - ELSE() - LIST(INSERT GTEST_SEARCH_PATH 1 "/usr/src/gtest") - ENDIF() -ENDIF() - -FIND_PATH(GTEST_SOURCE_DIR - NAMES CMakeLists.txt src/gtest_main.cc - PATHS ${GTEST_SEARCH_PATH}) - - -# Debian installs gtest include directory in /usr/include, thus need to look -# for include directory separately from source directory. -FIND_PATH(GTEST_INCLUDE_DIR - NAMES gtest/gtest.h - PATH_SUFFIXES include - HINTS ${GTEST_SOURCE_DIR} - PATHS ${GTEST_SEARCH_PATH}) - -INCLUDE(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GTestSrc DEFAULT_MSG - GTEST_SOURCE_DIR - GTEST_INCLUDE_DIR) diff --git a/rapidjson-lib/RapidJSON.pc.in b/rapidjson-lib/RapidJSON.pc.in deleted file mode 100644 index 7467f97..0000000 --- a/rapidjson-lib/RapidJSON.pc.in +++ /dev/null @@ -1,7 +0,0 @@ -includedir=@INCLUDE_INSTALL_DIR@ - -Name: @PROJECT_NAME@ -Description: A fast JSON parser/generator for C++ with both SAX/DOM style API -Version: @LIB_VERSION_STRING@ -URL: https://github.com/miloyip/rapidjson -Cflags: -I${includedir} diff --git a/rapidjson-lib/RapidJSONConfig.cmake.in b/rapidjson-lib/RapidJSONConfig.cmake.in deleted file mode 100644 index 9fa1218..0000000 --- a/rapidjson-lib/RapidJSONConfig.cmake.in +++ /dev/null @@ -1,3 +0,0 @@ -get_filename_component(RAPIDJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(RAPIDJSON_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@") -message(STATUS "RapidJSON found. Headers: ${RAPIDJSON_INCLUDE_DIRS}") diff --git a/rapidjson-lib/RapidJSONConfigVersion.cmake.in b/rapidjson-lib/RapidJSONConfigVersion.cmake.in deleted file mode 100644 index 25741fc..0000000 --- a/rapidjson-lib/RapidJSONConfigVersion.cmake.in +++ /dev/null @@ -1,10 +0,0 @@ -SET(PACKAGE_VERSION "@LIB_VERSION_STRING@") - -IF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) - SET(PACKAGE_VERSION_EXACT "true") -ENDIF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) -IF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) - SET(PACKAGE_VERSION_COMPATIBLE "true") -ELSE (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) - SET(PACKAGE_VERSION_UNSUITABLE "true") -ENDIF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) diff --git a/rapidjson-lib/appveyor.yml b/rapidjson-lib/appveyor.yml deleted file mode 100644 index dfedf9c..0000000 --- a/rapidjson-lib/appveyor.yml +++ /dev/null @@ -1,41 +0,0 @@ -os: Visual Studio 2015 CTP -version: 1.1.0.{build} - -configuration: -- Debug -- Release - -environment: - matrix: - # - VS_VERSION: 9 2008 - # VS_PLATFORM: win32 - # - VS_VERSION: 9 2008 - # VS_PLATFORM: x64 - - VS_VERSION: 10 2010 - VS_PLATFORM: win32 - - VS_VERSION: 10 2010 - VS_PLATFORM: x64 - - VS_VERSION: 11 2012 - VS_PLATFORM: win32 - - VS_VERSION: 11 2012 - VS_PLATFORM: x64 - - VS_VERSION: 12 2013 - VS_PLATFORM: win32 - - VS_VERSION: 12 2013 - VS_PLATFORM: x64 - - VS_VERSION: 14 2015 - VS_PLATFORM: win32 - - VS_VERSION: 14 2015 - VS_PLATFORM: x64 - -before_build: -- git submodule update --init --recursive -- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=true -Wno-dev - -build: - project: Build\VS\RapidJSON.sln - parallel: true - verbosity: minimal - -test_script: -- cd Build\VS && if %CONFIGURATION%==Debug (ctest --verbose -E perftest --build-config %CONFIGURATION%) else (ctest --verbose --build-config %CONFIGURATION%) diff --git a/rapidjson-lib/doc/CMakeLists.txt b/rapidjson-lib/doc/CMakeLists.txt deleted file mode 100644 index c1f165a..0000000 --- a/rapidjson-lib/doc/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -find_package(Doxygen) - -IF(NOT DOXYGEN_FOUND) - MESSAGE(STATUS "No Doxygen found. Documentation won't be built") -ELSE() - file(GLOB SOURCES ${CMAKE_CURRENT_LIST_DIR}/../include/*) - file(GLOB MARKDOWN_DOC ${CMAKE_CURRENT_LIST_DIR}/../doc/*.md) - list(APPEND MARKDOWN_DOC ${CMAKE_CURRENT_LIST_DIR}/../readme.md) - - CONFIGURE_FILE(Doxyfile.in Doxyfile @ONLY) - CONFIGURE_FILE(Doxyfile.zh-cn.in Doxyfile.zh-cn @ONLY) - - add_custom_command(OUTPUT html - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.zh-cn - COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/html - DEPENDS ${MARKDOWN_DOC} ${SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile* - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../ - ) - - add_custom_target(doc ALL DEPENDS html) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html - DESTINATION ${DOC_INSTALL_DIR} - COMPONENT doc) -ENDIF() diff --git a/rapidjson-lib/doc/Doxyfile.in b/rapidjson-lib/doc/Doxyfile.in deleted file mode 100644 index ca14233..0000000 --- a/rapidjson-lib/doc/Doxyfile.in +++ /dev/null @@ -1,2369 +0,0 @@ -# Doxyfile 1.8.7 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = RapidJSON - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "A fast JSON parser/generator for C++ with both SAX/DOM style API" - -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in -# the documentation. The maximum height of the logo should not exceed 55 pixels -# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo -# to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@ - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a -# new page for each member. If set to NO, the documentation of a member will be -# part of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by by putting a % sign in front of the word -# or globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = YES - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO these classes will be included in the various overviews. This option has -# no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the -# todo list. This list is created by putting \todo commands in the -# documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the -# test list. This list is created by putting \test commands in the -# documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = $(RAPIDJSON_SECTIONS) - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES the list -# will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. Do not use file names with spaces, bibtex cannot handle them. See -# also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO doxygen will only warn about wrong or incomplete parameter -# documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = readme.md \ - CHANGELOG.md \ - include/rapidjson/rapidjson.h \ - include/ \ - doc/features.md \ - doc/tutorial.md \ - doc/pointer.md \ - doc/stream.md \ - doc/encoding.md \ - doc/dom.md \ - doc/sax.md \ - doc/schema.md \ - doc/performance.md \ - doc/internals.md \ - doc/faq.md - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.inc \ - *.md - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = ./include/rapidjson/msinttypes/ - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = internal - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = ./doc - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER ) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = readme.md - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES, then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = NO - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = ./doc/misc/header.html - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = ./doc/misc/footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- -# defined cascading style sheet that is included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefor more robust against future updates. -# Doxygen will copy the style sheet file to the output directory. For an example -# see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = ./doc/misc/doxygenextra.css - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the stylesheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler ( hhc.exe). If non-empty -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated ( -# YES) or that it should be included in the master .chm file ( NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated ( -# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = YES - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using prerendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /}", fillcolor=5] - helloworld [label="{string|}", fillcolor=5] - stars [label="{string|}", fillcolor=5] - ten [label="{number|10}", fillcolor=6] - } - } - - oldjson -> root [label=" ParseInsitu()" lhead="cluster1"] - edge [arrowhead=vee] - root -> { msg; stars } - - edge [arrowhead="none"] - msg -> helloworld - stars -> ten - - { - edge [arrowhead=vee, arrowtail=dot, arrowsize=0.5, dir=both, tailclip=false] - msg:a:c -> newjson:a - helloworld:a:c -> newjson:b - stars:a:c -> newjson:c - } - - //oldjson -> newjson [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/insituparsing.png b/rapidjson-lib/doc/diagram/insituparsing.png deleted file mode 100644 index 4400c88466a8fb5ec0774b72acd52bf41c670c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37281 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 F0sxnWX08AL diff --git a/rapidjson-lib/doc/diagram/iterative-parser-states-diagram.dot b/rapidjson-lib/doc/diagram/iterative-parser-states-diagram.dot deleted file mode 100644 index 82ebfe1..0000000 --- a/rapidjson-lib/doc/diagram/iterative-parser-states-diagram.dot +++ /dev/null @@ -1,62 +0,0 @@ -digraph { - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - penwidth=0.0 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - - node [shape = doublecircle]; Start; Finish; - node [shape = box; style = "rounded, filled"; fillcolor=white ]; - - Start -> ArrayInitial [label=" ["]; - Start -> ObjectInitial [label=" {"]; - - subgraph clusterArray { - margin="10,10" - style=filled - fillcolor=gray95 - label = "Array" - - ArrayInitial; Element; ElementDelimiter; ArrayFinish; - } - - subgraph clusterObject { - margin="10,10" - style=filled - fillcolor=gray95 - label = "Object" - - ObjectInitial; MemberKey; KeyValueDelimiter; MemberValue; MemberDelimiter; ObjectFinish; - } - - ArrayInitial -> ArrayInitial [label="["]; - ArrayInitial -> ArrayFinish [label=" ]"]; - ArrayInitial -> ObjectInitial [label="{", constraint=false]; - ArrayInitial -> Element [label="string\nfalse\ntrue\nnull\nnumber"]; - - Element -> ArrayFinish [label="]"]; - Element -> ElementDelimiter [label=","]; - - ElementDelimiter -> ArrayInitial [label=" ["]; - ElementDelimiter -> ObjectInitial [label="{"]; - ElementDelimiter -> Element [label="string\nfalse\ntrue\nnull\nnumber"]; - - ObjectInitial -> ObjectFinish [label=" }"]; - ObjectInitial -> MemberKey [label=" string "]; - - MemberKey -> KeyValueDelimiter [label=":"]; - - KeyValueDelimiter -> ArrayInitial [label="["]; - KeyValueDelimiter -> ObjectInitial [label=" {"]; - KeyValueDelimiter -> MemberValue [label=" string\n false\n true\n null\n number"]; - - MemberValue -> ObjectFinish [label="}"]; - MemberValue -> MemberDelimiter [label=","]; - - MemberDelimiter -> MemberKey [label=" string "]; - - ArrayFinish -> Finish; - ObjectFinish -> Finish; -} diff --git a/rapidjson-lib/doc/diagram/iterative-parser-states-diagram.png b/rapidjson-lib/doc/diagram/iterative-parser-states-diagram.png deleted file mode 100644 index f315494db1d7b3a91ffef5eb395c0fc67e462d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92378 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 diff --git a/rapidjson-lib/doc/diagram/move1.dot b/rapidjson-lib/doc/diagram/move1.dot deleted file mode 100644 index a7c1464..0000000 --- a/rapidjson-lib/doc/diagram/move1.dot +++ /dev/null @@ -1,47 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Before" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - { - rank = same - b1 [label="{b:number|456}", fillcolor=6] - a1 [label="{a:number|123}", fillcolor=6] - } - - a1 -> b1 [style="dashed", label="Move", dir=back] - } - - subgraph cluster2 { - margin="10,10" - labeljust="left" - label = "After" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - { - rank = same - b2 [label="{b:null|}", fillcolor=1] - a2 [label="{a:number|456}", fillcolor=6] - } - a2 -> b2 [style=invis, dir=back] - } - b1 -> b2 [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/move1.png b/rapidjson-lib/doc/diagram/move1.png deleted file mode 100644 index ab322d084bd6d819fdb93a014d19e5fbf6e2b2b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16081 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 aKn%h5W>`e-p#nYXpQObV#HvLM1OEpM8uU{D diff --git a/rapidjson-lib/doc/diagram/move2.dot b/rapidjson-lib/doc/diagram/move2.dot deleted file mode 100644 index 7037ea6..0000000 --- a/rapidjson-lib/doc/diagram/move2.dot +++ /dev/null @@ -1,62 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Before Copying (Hypothetic)" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - c1 [label="{contact:array|}", fillcolor=4] - c11 [label="{|}"] - c12 [label="{|}"] - c13 [shape="none", label="...", style="solid"] - o1 [label="{o:object|}", fillcolor=3] - ghost [label="{o:object|}", style=invis] - - c1 -> o1 [style="dashed", label="AddMember", constraint=false] - - edge [arrowhead=vee] - c1 -> { c11; c12; c13 } - o1 -> ghost [style=invis] - } - - subgraph cluster2 { - margin="10,10" - labeljust="left" - label = "After Copying (Hypothetic)" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - c2 [label="{contact:array|}", fillcolor=4] - c3 [label="{array|}", fillcolor=4] - c21 [label="{|}"] - c22 [label="{|}"] - c23 [shape=none, label="...", style="solid"] - o2 [label="{o:object|}", fillcolor=3] - cs [label="{string|\"contact\"}", fillcolor=5] - c31 [label="{|}"] - c32 [label="{|}"] - c33 [shape="none", label="...", style="solid"] - - edge [arrowhead=vee] - c2 -> { c21; c22; c23 } - o2 -> cs - cs -> c3 [arrowhead=none] - c3 -> { c31; c32; c33 } - } - ghost -> o2 [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/move2.png b/rapidjson-lib/doc/diagram/move2.png deleted file mode 100644 index 8d4fc5bcc2223e127f672666b8eddbce4020e01c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41517 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 diff --git a/rapidjson-lib/doc/diagram/move3.dot b/rapidjson-lib/doc/diagram/move3.dot deleted file mode 100644 index c197b99..0000000 --- a/rapidjson-lib/doc/diagram/move3.dot +++ /dev/null @@ -1,60 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - forcelabels=true - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Before Moving" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - c1 [label="{contact:array|}", fillcolor=4] - c11 [label="{|}"] - c12 [label="{|}"] - c13 [shape=none, label="...", style="solid"] - o1 [label="{o:object|}", fillcolor=3] - ghost [label="{o:object|}", style=invis] - - c1 -> o1 [style="dashed", constraint=false, label="AddMember"] - - edge [arrowhead=vee] - c1 -> { c11; c12; c13 } - o1 -> ghost [style=invis] - } - - subgraph cluster2 { - margin="10,10" - labeljust="left" - label = "After Moving" - style=filled - fillcolor=gray95 - - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - c2 [label="{contact:null|}", fillcolor=1] - c3 [label="{array|}", fillcolor=4] - c21 [label="{|}"] - c22 [label="{|}"] - c23 [shape="none", label="...", style="solid"] - o2 [label="{o:object|}", fillcolor=3] - cs [label="{string|\"contact\"}", fillcolor=5] - c2 -> o2 [style="dashed", constraint=false, label="AddMember", style=invis] - - edge [arrowhead=vee] - c3 -> { c21; c22; c23 } - o2 -> cs - cs -> c3 [arrowhead=none] - } - ghost -> o2 [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/move3.png b/rapidjson-lib/doc/diagram/move3.png deleted file mode 100644 index 558470f1fab8390faa35fca1ef85c0e7f048d3c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36371 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 diff --git a/rapidjson-lib/doc/diagram/normalparsing.dot b/rapidjson-lib/doc/diagram/normalparsing.dot deleted file mode 100644 index b15941b..0000000 --- a/rapidjson-lib/doc/diagram/normalparsing.dot +++ /dev/null @@ -1,56 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] - - { - node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray] - normaljson [label="\{|\"|m|s|g|\"|:|\"|H|e|l|l|o|\\|n|W|o|r|l|d|!|\"|,|\"|\\|u|0|0|7|3|t|a|r|s\"|:|1|0|\}"] - - { - rank = same - msgstring [label="m|s|g|\\0"] - helloworldstring [label="H|e|l|l|o|\\n|W|o|r|l|d|!|\\0"] - starsstring [label="s|t|a|r|s\\0"] - } - } - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Document by Normal Parsing" - style=filled - fillcolor=gray95 - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - root [label="{object|}", fillcolor=3] - - { - msg [label="{string|}", fillcolor=5] - helloworld [label="{string|}", fillcolor=5] - stars [label="{string|}", fillcolor=5] - ten [label="{number|10}", fillcolor=6] - } - } - - normaljson -> root [label=" Parse()" lhead="cluster1"] - edge [arrowhead=vee] - root -> { msg; stars } - - edge [arrowhead="none"] - msg -> helloworld - stars -> ten - - edge [arrowhead=vee, arrowtail=dot, arrowsize=0.5, dir=both, tailclip=false] - msg:a:c -> msgstring:w - helloworld:a:c -> helloworldstring:w - stars:a:c -> starsstring:w - - msgstring -> helloworldstring -> starsstring [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/normalparsing.png b/rapidjson-lib/doc/diagram/normalparsing.png deleted file mode 100644 index 702512ca3678f62f4a35100953d2dad02fc84fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32887 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 PMX$b!NDG$;>iYgK0)w4D diff --git a/rapidjson-lib/doc/diagram/simpledom.dot b/rapidjson-lib/doc/diagram/simpledom.dot deleted file mode 100644 index 959cdbb..0000000 --- a/rapidjson-lib/doc/diagram/simpledom.dot +++ /dev/null @@ -1,54 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] - - { - node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray] - srcjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|0|\}"] - dstjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|1|\}"] - } - - { - node [shape="box", style="filled", fillcolor="gray95"] - Document2 [label="(Modified) Document"] - Writer - } - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Document" - style=filled - fillcolor=gray95 - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - root [label="{object|}", fillcolor=3] - - { - project [label="{string|\"project\"}", fillcolor=5] - rapidjson [label="{string|\"rapidjson\"}", fillcolor=5] - stars [label="{string|\"stars\"}", fillcolor=5] - ten [label="{number|10}", fillcolor=6] - } - - edge [arrowhead=vee] - root -> { project; stars } - - edge [arrowhead="none"] - project -> rapidjson - stars -> ten - } - - srcjson -> root [label=" Parse()", lhead="cluster1"] - - ten -> Document2 [label=" Increase \"stars\"", ltail="cluster1" ] - Document2 -> Writer [label=" Traverse DOM by Accept()"] - Writer -> dstjson [label=" Output to StringBuffer"] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/simpledom.png b/rapidjson-lib/doc/diagram/simpledom.png deleted file mode 100644 index 38d9c5dc126f9f28e799b877cb4737cdfebd787e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43670 zcmce;RaBf^v@9A39^5UsySpX0ySux4B@ytXWlab|RD%B#{vC5#GIfha@c}rth=n`o(RMZk2Yp_qk8h-(d6r?pp5bFII!7Bmtj!WlaL#uZm_3yRG@htB3rIl9p zD+{i%543^rF^nMP0^wO8sNy%Evf1?BYy3C(4we260~P8Q&DGcc{si76LJkaVi%GSR zsQ%|AyW|J_|NV468srifytUkHt91DH=6H#nhnF{^x5=zT;O_cBwXLnKSit_WGt+k} zPgv5#ge*HJM}Cx3PUK;qS+|9w9+zq$iCXc`;bG=+b|SOQA?cW`loTqT`ADL;komQ0 zwJ+z55`EUS#xjh}p_P_5r#bGfst!&^ERESj<~&R1i0P>0iFhxP>Zb~(P?x!;EMp

    d-WmRivHS`b^sdFqpGs`!Rk@*~d`T6-k9)`sUj$ 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 z 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 bNY2eb)1a^t{00J^Q}CyurmI?}Y!&=Jjhtmx diff --git a/rapidjson-lib/doc/diagram/tutorial.dot b/rapidjson-lib/doc/diagram/tutorial.dot deleted file mode 100644 index 138ddc3..0000000 --- a/rapidjson-lib/doc/diagram/tutorial.dot +++ /dev/null @@ -1,58 +0,0 @@ -digraph { - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.2 - penwidth=0.5 - - node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - edge [fontname="Inconsolata, Consolas", fontsize=10] - - subgraph cluster1 { - margin="10,10" - labeljust="left" - label = "Document" - style=filled - fillcolor=gray95 - node [shape=Mrecord, style=filled, colorscheme=spectral7] - - root [label="{object|}", fillcolor=3] - - { - hello [label="{string|\"hello\"}", fillcolor=5] - t [label="{string|\"t\"}", fillcolor=5] - f [label="{string|\"f\"}", fillcolor=5] - n [label="{string|\"n\"}", fillcolor=5] - i [label="{string|\"i\"}", fillcolor=5] - pi [label="{string|\"pi\"}", fillcolor=5] - a [label="{string|\"a\"}", fillcolor=5] - - world [label="{string|\"world\"}", fillcolor=5] - true [label="{true|}", fillcolor=7] - false [label="{false|}", fillcolor=2] - null [label="{null|}", fillcolor=1] - i1 [label="{number|123}", fillcolor=6] - pi1 [label="{number|3.1416}", fillcolor=6] - array [label="{array|size=4}", fillcolor=4] - - a1 [label="{number|1}", fillcolor=6] - a2 [label="{number|2}", fillcolor=6] - a3 [label="{number|3}", fillcolor=6] - a4 [label="{number|4}", fillcolor=6] - } - - edge [arrowhead=vee] - root -> { hello; t; f; n; i; pi; a } - array -> { a1; a2; a3; a4 } - - edge [arrowhead=none] - hello -> world - t -> true - f -> false - n -> null - i -> i1 - pi -> pi1 - a -> array - } -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/tutorial.png b/rapidjson-lib/doc/diagram/tutorial.png deleted file mode 100644 index 8a12924acdd72a9c1b99c0a48a201b936f3557f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44634 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 diff --git a/rapidjson-lib/doc/diagram/utilityclass.dot b/rapidjson-lib/doc/diagram/utilityclass.dot deleted file mode 100644 index 1492a8a..0000000 --- a/rapidjson-lib/doc/diagram/utilityclass.dot +++ /dev/null @@ -1,73 +0,0 @@ -digraph { - rankdir=LR - compound=true - fontname="Inconsolata, Consolas" - fontsize=10 - margin="0,0" - ranksep=0.3 - nodesep=0.15 - penwidth=0.5 - colorscheme=spectral7 - - node [shape=box, fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5, style=filled, fillcolor=white] - edge [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] - - subgraph cluster0 { - style=filled - fillcolor=4 - - Encoding [label="<>\nEncoding"] - - edge [arrowtail=onormal, dir=back] - Encoding -> { UTF8; UTF16; UTF32; ASCII; AutoUTF } - UTF16 -> { UTF16LE; UTF16BE } - UTF32 -> { UTF32LE; UTF32BE } - } - - subgraph cluster1 { - style=filled - fillcolor=5 - - Stream [label="<>\nStream"] - InputByteStream [label="<>\nInputByteStream"] - OutputByteStream [label="<>\nOutputByteStream"] - - edge [arrowtail=onormal, dir=back] - Stream -> { - StringStream; InsituStringStream; StringBuffer; - EncodedInputStream; EncodedOutputStream; - AutoUTFInputStream; AutoUTFOutputStream - InputByteStream; OutputByteStream - } - - InputByteStream -> { MemoryStream; FlieReadStream } - OutputByteStream -> { MemoryBuffer; FileWriteStream } - } - - subgraph cluster2 { - style=filled - fillcolor=3 - - Allocator [label="<>\nAllocator"] - - edge [arrowtail=onormal, dir=back] - Allocator -> { CrtAllocator; MemoryPoolAllocator } - } - - { - edge [arrowtail=odiamond, arrowhead=vee, dir=both] - EncodedInputStream -> InputByteStream - EncodedOutputStream -> OutputByteStream - AutoUTFInputStream -> InputByteStream - AutoUTFOutputStream -> OutputByteStream - MemoryPoolAllocator -> Allocator [label="base", tailport=s] - } - - { - edge [arrowhead=vee, style=dashed] - AutoUTFInputStream -> AutoUTF - AutoUTFOutputStream -> AutoUTF - } - - //UTF32LE -> Stream [style=invis] -} \ No newline at end of file diff --git a/rapidjson-lib/doc/diagram/utilityclass.png b/rapidjson-lib/doc/diagram/utilityclass.png deleted file mode 100644 index ce029a4d0670e0a358e3bdb8c030083f67b1ffcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99993 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 JR@TJ(e*o()o2UQ) diff --git a/rapidjson-lib/doc/dom.md b/rapidjson-lib/doc/dom.md deleted file mode 100644 index 6c541fe..0000000 --- a/rapidjson-lib/doc/dom.md +++ /dev/null @@ -1,280 +0,0 @@ -# DOM - -Document Object Model(DOM) is an in-memory representation of JSON for query and manipulation. The basic usage of DOM is described in [Tutorial](doc/tutorial.md). This section will describe some details and more advanced usages. - -[TOC] - -# Template {#Template} - -In the tutorial, `Value` and `Document` was used. Similarly to `std::string`, these are actually `typedef` of template classes: - -~~~~~~~~~~cpp -namespace rapidjson { - -template > -class GenericValue { - // ... -}; - -template > -class GenericDocument : public GenericValue { - // ... -}; - -typedef GenericValue > Value; -typedef GenericDocument > Document; - -} // namespace rapidjson -~~~~~~~~~~ - -User can customize these template parameters. - -## Encoding {#Encoding} - -The `Encoding` parameter specifies the encoding of JSON String value in memory. Possible options are `UTF8`, `UTF16`, `UTF32`. Note that, these 3 types are also template class. `UTF8<>` is `UTF8`, which means using char to store the characters. You may refer to [Encoding](doc/encoding.md) for details. - -Suppose a Windows application would query localization strings stored in JSON files. Unicode-enabled functions in Windows use UTF-16 (wide character) encoding. No matter what encoding was used in JSON files, we can store the strings in UTF-16 in memory. - -~~~~~~~~~~cpp -using namespace rapidjson; - -typedef GenericDocument > WDocument; -typedef GenericValue > WValue; - -FILE* fp = fopen("localization.json", "rb"); // non-Windows use "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -AutoUTFInputStream eis(bis); // wraps bis into eis - -WDocument d; -d.ParseStream<0, AutoUTF >(eis); - -const WValue locale(L"ja"); // Japanese - -MessageBoxW(hWnd, d[locale].GetString(), L"Test", MB_OK); -~~~~~~~~~~ - -## Allocator {#Allocator} - -The `Allocator` defines which allocator class is used when allocating/deallocating memory for `Document`/`Value`. `Document` owns, or references to an `Allocator` instance. On the other hand, `Value` does not do so, in order to reduce memory consumption. - -The default allocator used in `GenericDocument` is `MemoryPoolAllocator`. This allocator actually allocate memory sequentially, and cannot deallocate one by one. This is very suitable when parsing a JSON into a DOM tree. - -Another allocator is `CrtAllocator`, of which CRT is short for C RunTime library. This allocator simply calls the standard `malloc()`/`realloc()`/`free()`. When there is a lot of add and remove operations, this allocator may be preferred. But this allocator is far less efficient than `MemoryPoolAllocator`. - -# Parsing {#Parsing} - -`Document` provides several functions for parsing. In below, (1) is the fundamental function, while the others are helpers which call (1). - -~~~~~~~~~~cpp -using namespace rapidjson; - -// (1) Fundamental -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (2) Using the same Encoding for stream -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (3) Using default parse flags -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (4) In situ parsing -template -GenericDocument& GenericDocument::ParseInsitu(Ch* str); - -// (5) In situ parsing, using default parse flags -GenericDocument& GenericDocument::ParseInsitu(Ch* str); - -// (6) Normal parsing of a string -template -GenericDocument& GenericDocument::Parse(const Ch* str); - -// (7) Normal parsing of a string, using same Encoding of Document -template -GenericDocument& GenericDocument::Parse(const Ch* str); - -// (8) Normal parsing of a string, using default parse flags -GenericDocument& GenericDocument::Parse(const Ch* str); -~~~~~~~~~~ - -The examples of [tutorial](doc/tutorial.md) uses (8) for normal parsing of string. The examples of [stream](doc/stream.md) uses the first three. *In situ* parsing will be described soon. - -The `parseFlags` are combination of the following bit-flags: - -Parse flags | Meaning -------------------------------|----------------------------------- -`kParseNoFlags` | No flag is set. -`kParseDefaultFlags` | Default parse flags. It is equal to macro `RAPIDJSON_PARSE_DEFAULT_FLAGS`, which is defined as `kParseNoFlags`. -`kParseInsituFlag` | In-situ(destructive) parsing. -`kParseValidateEncodingFlag` | Validate encoding of JSON strings. -`kParseIterativeFlag` | Iterative(constant complexity in terms of function call stack size) parsing. -`kParseStopWhenDoneFlag` | After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate `kParseErrorDocumentRootNotSingular` error. Using this flag for parsing multiple JSONs in the same stream. -`kParseFullPrecisionFlag` | Parse number in full precision (slower). If this flag is not set, the normal precision (faster) is used. Normal precision has maximum 3 [ULP](http://en.wikipedia.org/wiki/Unit_in_the_last_place) error. -`kParseCommentsFlag` | Allow one-line `// ...` and multi-line `/* ... */` comments (relaxed JSON syntax). -`kParseNumbersAsStringsFlag` | Parse numerical type values as strings. -`kParseTrailingCommasFlag` | Allow trailing commas at the end of objects and arrays (relaxed JSON syntax). -`kParseNanAndInfFlag` | Allow parsing `NaN`, `Inf`, `Infinity`, `-Inf` and `-Infinity` as `double` values (relaxed JSON syntax). - -By using a non-type template parameter, instead of a function parameter, C++ compiler can generate code which is optimized for specified combinations, improving speed, and reducing code size (if only using a single specialization). The downside is the flags needed to be determined in compile-time. - -The `SourceEncoding` parameter defines what encoding is in the stream. This can be differed to the `Encoding` of the `Document`. See [Transcoding and Validation](#TranscodingAndValidation) section for details. - -And the `InputStream` is type of input stream. - -## Parse Error {#ParseError} - -When the parse processing succeeded, the `Document` contains the parse results. When there is an error, the original DOM is *unchanged*. And the error state of parsing can be obtained by `bool HasParseError()`, `ParseErrorCode GetParseError()` and `size_t GetParseOffset()`. - -Parse Error Code | Description ---------------------------------------------|--------------------------------------------------- -`kParseErrorNone` | No error. -`kParseErrorDocumentEmpty` | The document is empty. -`kParseErrorDocumentRootNotSingular` | The document root must not follow by other values. -`kParseErrorValueInvalid` | Invalid value. -`kParseErrorObjectMissName` | Missing a name for object member. -`kParseErrorObjectMissColon` | Missing a colon after a name of object member. -`kParseErrorObjectMissCommaOrCurlyBracket` | Missing a comma or `}` after an object member. -`kParseErrorArrayMissCommaOrSquareBracket` | Missing a comma or `]` after an array element. -`kParseErrorStringUnicodeEscapeInvalidHex` | Incorrect hex digit after `\\u` escape in string. -`kParseErrorStringUnicodeSurrogateInvalid` | The surrogate pair in string is invalid. -`kParseErrorStringEscapeInvalid` | Invalid escape character in string. -`kParseErrorStringMissQuotationMark` | Missing a closing quotation mark in string. -`kParseErrorStringInvalidEncoding` | Invalid encoding in string. -`kParseErrorNumberTooBig` | Number too big to be stored in `double`. -`kParseErrorNumberMissFraction` | Miss fraction part in number. -`kParseErrorNumberMissExponent` | Miss exponent in number. - -The offset of error is defined as the character number from beginning of stream. Currently RapidJSON does not keep track of line number. - -To get an error message, RapidJSON provided a English messages in `rapidjson/error/en.h`. User can customize it for other locales, or use a custom localization system. - -Here shows an example of parse error handling. - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/error/en.h" - -// ... -Document d; -if (d.Parse(json).HasParseError()) { - fprintf(stderr, "\nError(offset %u): %s\n", - (unsigned)d.GetErrorOffset(), - GetParseError_En(d.GetParseError())); - // ... -} -~~~~~~~~~~ - -## In Situ Parsing {#InSituParsing} - -From [Wikipedia](http://en.wikipedia.org/wiki/In_situ): - -> *In situ* ... is a Latin phrase that translates literally to "on site" or "in position". It means "locally", "on site", "on the premises" or "in place" to describe an event where it takes place, and is used in many different contexts. -> ... -> (In computer science) An algorithm is said to be an in situ algorithm, or in-place algorithm, if the extra amount of memory required to execute the algorithm is O(1), that is, does not exceed a constant no matter how large the input. For example, heapsort is an in situ sorting algorithm. - -In normal parsing process, a large overhead is to decode JSON strings and copy them to other buffers. *In situ* parsing decodes those JSON string at the place where it is stored. It is possible in JSON because the length of decoded string is always shorter than or equal to the one in JSON. In this context, decoding a JSON string means to process the escapes, such as `"\n"`, `"\u1234"`, etc., and add a null terminator (`'\0'`)at the end of string. - -The following diagrams compare normal and *in situ* parsing. The JSON string values contain pointers to the decoded string. - -![normal parsing](diagram/normalparsing.png) - -In normal parsing, the decoded string are copied to freshly allocated buffers. `"\\n"` (2 characters) is decoded as `"\n"` (1 character). `"\\u0073"` (6 characters) is decoded as `"s"` (1 character). - -![instiu parsing](diagram/insituparsing.png) - -*In situ* parsing just modified the original JSON. Updated characters are highlighted in the diagram. If the JSON string does not contain escape character, such as `"msg"`, the parsing process merely replace the closing double quotation mark with a null character. - -Since *in situ* parsing modify the input, the parsing API needs `char*` instead of `const char*`. - -~~~~~~~~~~cpp -// Read whole file into a buffer -FILE* fp = fopen("test.json", "r"); -fseek(fp, 0, SEEK_END); -size_t filesize = (size_t)ftell(fp); -fseek(fp, 0, SEEK_SET); -char* buffer = (char*)malloc(filesize + 1); -size_t readLength = fread(buffer, 1, filesize, fp); -buffer[readLength] = '\0'; -fclose(fp); - -// In situ parsing the buffer into d, buffer will also be modified -Document d; -d.ParseInsitu(buffer); - -// Query/manipulate the DOM here... - -free(buffer); -// Note: At this point, d may have dangling pointers pointed to the deallocated buffer. -~~~~~~~~~~ - -The JSON strings are marked as const-string. But they may not be really "constant". The life cycle of it depends on the JSON buffer. - -In situ parsing minimizes allocation overheads and memory copying. Generally this improves cache coherence, which is an important factor of performance in modern computer. - -There are some limitations of *in situ* parsing: - -1. The whole JSON is in memory. -2. The source encoding in stream and target encoding in document must be the same. -3. The buffer need to be retained until the document is no longer used. -4. If the DOM need to be used for long period after parsing, and there are few JSON strings in the DOM, retaining the buffer may be a memory waste. - -*In situ* parsing is mostly suitable for short-term JSON that only need to be processed once, and then be released from memory. In practice, these situation is very common, for example, deserializing JSON to C++ objects, processing web requests represented in JSON, etc. - -## Transcoding and Validation {#TranscodingAndValidation} - -RapidJSON supports conversion between Unicode formats (officially termed UCS Transformation Format) internally. During DOM parsing, the source encoding of the stream can be different from the encoding of the DOM. For example, the source stream contains a UTF-8 JSON, while the DOM is using UTF-16 encoding. There is an example code in [EncodedInputStream](doc/stream.md). - -When writing a JSON from DOM to output stream, transcoding can also be used. An example is in [EncodedOutputStream](doc/stream.md). - -During transcoding, the source string is decoded to into Unicode code points, and then the code points are encoded in the target format. During decoding, it will validate the byte sequence in the source string. If it is not a valid sequence, the parser will be stopped with `kParseErrorStringInvalidEncoding` error. - -When the source encoding of stream is the same as encoding of DOM, by default, the parser will *not* validate the sequence. User may use `kParseValidateEncodingFlag` to force validation. - -# Techniques {#Techniques} - -Some techniques about using DOM API is discussed here. - -## DOM as SAX Event Publisher - -In RapidJSON, stringifying a DOM with `Writer` may be look a little bit weired. - -~~~~~~~~~~cpp -// ... -Writer writer(buffer); -d.Accept(writer); -~~~~~~~~~~ - -Actually, `Value::Accept()` is responsible for publishing SAX events about the value to the handler. With this design, `Value` and `Writer` are decoupled. `Value` can generate SAX events, and `Writer` can handle those events. - -User may create custom handlers for transforming the DOM into other formats. For example, a handler which converts the DOM into XML. - -For more about SAX events and handler, please refer to [SAX](doc/sax.md). - -## User Buffer {#UserBuffer} - -Some applications may try to avoid memory allocations whenever possible. - -`MemoryPoolAllocator` can support this by letting user to provide a buffer. The buffer can be on the program stack, or a "scratch buffer" which is statically allocated (a static/global array) for storing temporary data. - -`MemoryPoolAllocator` will use the user buffer to satisfy allocations. When the user buffer is used up, it will allocate a chunk of memory from the base allocator (by default the `CrtAllocator`). - -Here is an example of using stack memory. The first allocator is for storing values, while the second allocator is for storing temporary data during parsing. - -~~~~~~~~~~cpp -typedef GenericDocument, MemoryPoolAllocator<>, MemoryPoolAllocator<>> DocumentType; -char valueBuffer[4096]; -char parseBuffer[1024]; -MemoryPoolAllocator<> valueAllocator(valueBuffer, sizeof(valueBuffer)); -MemoryPoolAllocator<> parseAllocator(parseBuffer, sizeof(parseBuffer)); -DocumentType d(&valueAllocator, sizeof(parseBuffer), &parseAllocator); -d.Parse(json); -~~~~~~~~~~ - -If the total size of allocation is less than 4096+1024 bytes during parsing, this code does not invoke any heap allocation (via `new` or `malloc()`) at all. - -User can query the current memory consumption in bytes via `MemoryPoolAllocator::Size()`. And then user can determine a suitable size of user buffer. diff --git a/rapidjson-lib/doc/dom.zh-cn.md b/rapidjson-lib/doc/dom.zh-cn.md deleted file mode 100644 index d93f603..0000000 --- a/rapidjson-lib/doc/dom.zh-cn.md +++ /dev/null @@ -1,284 +0,0 @@ -# DOM - -文档对象模型(Document Object Model, DOM)是一种罝于内存中的 JSON 表示方式,以供查询及操作。我们己于 [教程](doc/tutorial.zh-cn.md) 中介绍了 DOM 的基本用法,本节将讲述一些细节及高级用法。 - -[TOC] - -# 模板 {#Template} - -教程中使用了 `Value` 和 `Document` 类型。与 `std::string` 相似,这些类型其实是两个模板类的 `typedef`: - -~~~~~~~~~~cpp -namespace rapidjson { - -template > -class GenericValue { - // ... -}; - -template > -class GenericDocument : public GenericValue { - // ... -}; - -typedef GenericValue > Value; -typedef GenericDocument > Document; - -} // namespace rapidjson -~~~~~~~~~~ - -使用者可以自定义这些模板参数。 - -## 编码 {#Encoding} - -`Encoding` 参数指明在内存中的 JSON String 使用哪种编码。可行的选项有 `UTF8`、`UTF16`、`UTF32`。要注意这 3 个类型其实也是模板类。`UTF8<>` 等同 `UTF8`,这代表它使用 `char` 来存储字符串。更多细节可以参考 [编码](doc/encoding.zh-cn.md)。 - -这里是一个例子。假设一个 Windows 应用软件希望查询存储于 JSON 中的本地化字符串。Windows 中含 Unicode 的函数使用 UTF-16(宽字符)编码。无论 JSON 文件使用哪种编码,我们都可以把字符串以 UTF-16 形式存储在内存。 - -~~~~~~~~~~cpp -using namespace rapidjson; - -typedef GenericDocument > WDocument; -typedef GenericValue > WValue; - -FILE* fp = fopen("localization.json", "rb"); // 非 Windows 平台使用 "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -AutoUTFInputStream eis(bis); // 包装 bis 成 eis - -WDocument d; -d.ParseStream<0, AutoUTF >(eis); - -const WValue locale(L"ja"); // Japanese - -MessageBoxW(hWnd, d[locale].GetString(), L"Test", MB_OK); -~~~~~~~~~~ - -## 分配器 {#Allocator} - -`Allocator` 定义当 `Document`/`Value` 分配或释放内存时使用那个分配类。`Document` 拥有或引用到一个 `Allocator` 实例。而为了节省内存,`Value` 没有这么做。 - -`GenericDocument` 的缺省分配器是 `MemoryPoolAllocator`。此分配器实际上会顺序地分配内存,并且不能逐一释放。当要解析一个 JSON 并生成 DOM,这种分配器是非常合适的。 - -RapidJSON 还提供另一个分配器 `CrtAllocator`,当中 CRT 是 C 运行库(C RunTime library)的缩写。此分配器简单地读用标准的 `malloc()`/`realloc()`/`free()`。当我们需要许多增减操作,这种分配器会更为适合。然而这种分配器远远比 `MemoryPoolAllocator` 低效。 - -# 解析 {#Parsing} - -`Document` 提供几个解析函数。以下的 (1) 是根本的函数,其他都是调用 (1) 的协助函数。 - -~~~~~~~~~~cpp -using namespace rapidjson; - -// (1) 根本 -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (2) 使用流的编码 -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (3) 使用缺省标志 -template -GenericDocument& GenericDocument::ParseStream(InputStream& is); - -// (4) 原位解析 -template -GenericDocument& GenericDocument::ParseInsitu(Ch* str); - -// (5) 原位解析,使用缺省标志 -GenericDocument& GenericDocument::ParseInsitu(Ch* str); - -// (6) 正常解析一个字符串 -template -GenericDocument& GenericDocument::Parse(const Ch* str); - -// (7) 正常解析一个字符串,使用 Document 的编码 -template -GenericDocument& GenericDocument::Parse(const Ch* str); - -// (8) 正常解析一个字符串,使用缺省标志 -GenericDocument& GenericDocument::Parse(const Ch* str); -~~~~~~~~~~ - -[教程](doc/tutorial.zh-cn.md) 中的例使用 (8) 去正常解析字符串。而 [流](doc/stream.zh-cn.md) 的例子使用前 3 个函数。我们将稍后介绍原位(*In situ*) 解析。 - -`parseFlags` 是以下位标置的组合: - -解析位标志 | 意义 -------------------------------|----------------------------------- -`kParseNoFlags` | 没有任何标志。 -`kParseDefaultFlags` | 缺省的解析选项。它等于 `RAPIDJSON_PARSE_DEFAULT_FLAGS` 宏,此宏定义为 `kParseNoFlags`。 -`kParseInsituFlag` | 原位(破坏性)解析。 -`kParseValidateEncodingFlag` | 校验 JSON 字符串的编码。 -`kParseIterativeFlag` | 迭代式(调用堆栈大小为常数复杂度)解析。 -`kParseStopWhenDoneFlag` | 当从流解析了一个完整的 JSON 根节点之后,停止继续处理余下的流。当使用了此标志,解析器便不会产生 `kParseErrorDocumentRootNotSingular` 错误。可使用本标志去解析同一个流里的多个 JSON。 -`kParseFullPrecisionFlag` | 使用完整的精确度去解析数字(较慢)。如不设置此标节,则会使用正常的精确度(较快)。正常精确度会有最多 3 个 [ULP](http://en.wikipedia.org/wiki/Unit_in_the_last_place) 的误差。 -`kParseCommentsFlag` | 容许单行 `// ...` 及多行 `/* ... */` 注释(放宽的 JSON 语法)。 -`kParseNumbersAsStringsFlag` | 把数字类型解析成字符串。 -`kParseTrailingCommasFlag` | 容许在对象和数组结束前含有逗号(放宽的 JSON 语法)。 -`kParseNanAndInfFlag` | 容许 `NaN`、`Inf`、`Infinity`、`-Inf` 及 `-Infinity` 作为 `double` 值(放宽的 JSON 语法)。 - -由于使用了非类型模板参数,而不是函数参数,C++ 编译器能为个别组合生成代码,以改善性能及减少代码尺寸(当只用单种特化)。缺点是需要在编译期决定标志。 - -`SourceEncoding` 参数定义流使用了什么编码。这与 `Document` 的 `Encoding` 不相同。细节可参考 [转码和校验](#TranscodingAndValidation) 一节。 - -此外 `InputStream` 是输入流的类型。 - -## 解析错误 {#ParseError} - -当解析过程顺利完成,`Document` 便会含有解析结果。当过程出现错误,原来的 DOM 会 * 维持不便 *。可使用 `bool HasParseError()`、`ParseErrorCode GetParseError()` 及 `size_t GetParseOffset()` 获取解析的错误状态。 - -解析错误代号 | 描述 ---------------------------------------------|--------------------------------------------------- -`kParseErrorNone` | 无错误。 -`kParseErrorDocumentEmpty` | 文档是空的。 -`kParseErrorDocumentRootNotSingular` | 文档的根后面不能有其它值。 -`kParseErrorValueInvalid` | 不合法的值。 -`kParseErrorObjectMissName` | Object 成员缺少名字。 -`kParseErrorObjectMissColon` | Object 成员名字后缺少冒号。 -`kParseErrorObjectMissCommaOrCurlyBracket` | Object 成员后缺少逗号或 `}`。 -`kParseErrorArrayMissCommaOrSquareBracket` | Array 元素后缺少逗号或 `]` 。 -`kParseErrorStringUnicodeEscapeInvalidHex` | String 中的 `\\u` 转义符后含非十六进位数字。 -`kParseErrorStringUnicodeSurrogateInvalid` | String 中的代理对(surrogate pair)不合法。 -`kParseErrorStringEscapeInvalid` | String 含非法转义字符。 -`kParseErrorStringMissQuotationMark` | String 缺少关闭引号。 -`kParseErrorStringInvalidEncoding` | String 含非法编码。 -`kParseErrorNumberTooBig` | Number 的值太大,不能存储于 `double`。 -`kParseErrorNumberMissFraction` | Number 缺少了小数部分。 -`kParseErrorNumberMissExponent` | Number 缺少了指数。 - -错误的偏移量定义为从流开始至错误处的字符数量。目前 RapidJSON 不记录错误行号。 - -要取得错误讯息,RapidJSON 在 `rapidjson/error/en.h` 中提供了英文错误讯息。使用者可以修改它用于其他语言环境,或使用一个自定义的本地化系统。 - -以下是一个处理错误的例子。 - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/error/en.h" - -// ... -Document d; -if (d.Parse(json).HasParseError()) { - fprintf(stderr, "\nError(offset %u): %s\n", - (unsigned)d.GetErrorOffset(), - GetParseError_En(d.GetParseErrorCode())); - // ... -} -~~~~~~~~~~ - -## 原位解析 {#InSituParsing} - -根据 [维基百科](http://en.wikipedia.org/wiki/In_situ): - -> *In situ* ... is a Latin phrase that translates literally to "on site" or "in position". It means "locally", "on site", "on the premises" or "in place" to describe an event where it takes place, and is used in many different contexts. -> ... -> (In computer science) An algorithm is said to be an in situ algorithm, or in-place algorithm, if the extra amount of memory required to execute the algorithm is O(1), that is, does not exceed a constant no matter how large the input. For example, heapsort is an in situ sorting algorithm. - -> 翻译:*In situ*……是一个拉丁文片语,字面上的意思是指「现场」、「在位置」。在许多不同语境中,它描述一个事件发生的位置,意指「本地」、「现场」、「在处所」、「就位」。 -> …… -> (在计算机科学中)一个算法若称为原位算法,或在位算法,是指执行该算法所需的额外内存空间是 O(1) 的,换句话说,无论输入大小都只需要常数空间。例如,堆排序是一个原位排序算法。 - -在正常的解析过程中,对 JSON string 解码并复制至其他缓冲区是一个很大的开销。原位解析(*in situ* parsing)把这些 JSON string 直接解码于它原来存储的地方。由于解码后的 string 长度总是短于或等于原来储存于 JSON 的 string,所以这是可行的。在这个语境下,对 JSON string 进行解码是指处理转义符,如 `"\n"`、`"\u1234"` 等,以及在 string 末端加入空终止符号 (`'\0'`)。 - -以下的图比较正常及原位解析。JSON string 值包含指向解码后的字符串。 - -![正常解析](diagram/normalparsing.png) - -在正常解析中,解码后的字符串被复制至全新分配的缓冲区中。`"\\n"`(2 个字符)被解码成 `"\n"`(1 个字符)。`"\\u0073"`(6 个字符)被解码成 `"s"`(1 个字符)。 - -![原位解析](diagram/insituparsing.png) - -原位解析直接修改了原来的 JSON。图中高亮了被更新的字符。若 JSON string 不含转义符,例如 `"msg"`,那么解析过程仅仅是以空字符代替结束双引号。 - -由于原位解析修改了输入,其解析 API 需要 `char*` 而非 `const char*`。 - -~~~~~~~~~~cpp -// 把整个文件读入 buffer -FILE* fp = fopen("test.json", "r"); -fseek(fp, 0, SEEK_END); -size_t filesize = (size_t)ftell(fp); -fseek(fp, 0, SEEK_SET); -char* buffer = (char*)malloc(filesize + 1); -size_t readLength = fread(buffer, 1, filesize, fp); -buffer[readLength] = '\0'; -fclose(fp); - -// 原位解析 buffer 至 d,buffer 内容会被修改。 -Document d; -d.ParseInsitu(buffer); - -// 在此查询、修改 DOM…… - -free(buffer); -// 注意:在这个位置,d 可能含有指向已被释放的 buffer 的悬空指针 -~~~~~~~~~~ - -JSON string 会被打上 const-string 的标志。但它们可能并非真正的「常数」。它的生命周期取决于存储 JSON 的缓冲区。 - -原位解析把分配开销及内存复制减至最小。通常这样做能改善缓存一致性,而这对现代计算机来说是一个重要的性能因素。 - -原位解析有以下限制: - -1. 整个 JSON 须存储在内存之中。 -2. 流的来源缓码与文档的目标编码必须相同。 -3. 需要保留缓冲区,直至文档不再被使用。 -4. 若 DOM 需要在解析后被长期使用,而 DOM 内只有很少 JSON string,保留缓冲区可能造成内存浪费。 - -原位解析最适合用于短期的、用完即弃的 JSON。实际应用中,这些场合是非常普遍的,例如反序列化 JSON 至 C++ 对象、处理以 JSON 表示的 web 请求等。 - -## 转码与校验 {#TranscodingAndValidation} - -RapidJSON 内部支持不同 Unicode 格式(正式的术语是 UCS 变换格式)间的转换。在 DOM 解析时,流的来源编码与 DOM 的编码可以不同。例如,来源流可能含有 UTF-8 的 JSON,而 DOM 则使用 UTF-16 编码。在 [EncodedInputStream](doc/stream.zh-cn.md) 一节里有一个例子。 - -当从 DOM 输出一个 JSON 至输出流之时,也可以使用转码功能。在 [EncodedOutputStream](doc/stream.zh-cn.md) 一节里有一个例子。 - -在转码过程中,会把来源 string 解码成 Unicode 码点,然后把码点编码成目标格式。在解码时,它会校验来源 string 的字节序列是否合法。若遇上非合法序列,解析器会停止并返回 `kParseErrorStringInvalidEncoding` 错误。 - -当来源编码与 DOM 的编码相同,解析器缺省地 * 不会 * 校验序列。使用者可开启 `kParseValidateEncodingFlag` 去强制校验。 - -# 技巧 {#Techniques} - -这里讨论一些 DOM API 的使用技巧。 - -## 把 DOM 作为 SAX 事件发表者 - -在 RapidJSON 中,利用 `Writer` 把 DOM 生成 JSON 的做法,看来有点奇怪。 - -~~~~~~~~~~cpp -// ... -Writer writer(buffer); -d.Accept(writer); -~~~~~~~~~~ - -实际上,`Value::Accept()` 是负责发布该值相关的 SAX 事件至处理器的。通过这个设计,`Value` 及 `Writer` 解除了偶合。`Value` 可生成 SAX 事件,而 `Writer` 则可以处理这些事件。 - -使用者可以创建自定义的处理器,去把 DOM 转换成其它格式。例如,一个把 DOM 转换成 XML 的处理器。 - -要知道更多关于 SAX 事件与处理器,可参阅 [SAX](doc/sax.zh-cn.md)。 - -## 使用者缓冲区 {#UserBuffer} - -许多应用软件可能需要尽量减少内存分配。 - -`MemoryPoolAllocator` 可以帮助这方面,它容许使用者提供一个缓冲区。该缓冲区可能置于程序堆栈,或是一个静态分配的「草稿缓冲区(scratch buffer)」(一个静态/全局的数组),用于储存临时数据。 - -`MemoryPoolAllocator` 会先用使用者缓冲区去解决分配请求。当使用者缓冲区用完,就会从基础分配器(缺省为 `CrtAllocator`)分配一块内存。 - -以下是使用堆栈内存的例子,第一个分配器用于存储值,第二个用于解析时的临时缓冲。 - -~~~~~~~~~~cpp -typedef GenericDocument, MemoryPoolAllocator<>, MemoryPoolAllocator<>> DocumentType; -char valueBuffer[4096]; -char parseBuffer[1024]; -MemoryPoolAllocator<> valueAllocator(valueBuffer, sizeof(valueBuffer)); -MemoryPoolAllocator<> parseAllocator(parseBuffer, sizeof(parseBuffer)); -DocumentType d(&valueAllocator, sizeof(parseBuffer), &parseAllocator); -d.Parse(json); -~~~~~~~~~~ - -若解析时分配总量少于 4096+1024 字节时,这段代码不会造成任何堆内存分配(经 `new` 或 `malloc()`)。 - -使用者可以通过 `MemoryPoolAllocator::Size()` 查询当前已分的内存大小。那么使用者可以拟定使用者缓冲区的合适大小。 diff --git a/rapidjson-lib/doc/encoding.md b/rapidjson-lib/doc/encoding.md deleted file mode 100644 index 8f8ff7f..0000000 --- a/rapidjson-lib/doc/encoding.md +++ /dev/null @@ -1,146 +0,0 @@ -# Encoding - -According to [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf), - -> (in Introduction) JSON text is a sequence of Unicode code points. - -The earlier [RFC4627](http://www.ietf.org/rfc/rfc4627.txt) stated that, - -> (in §3) JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. - -> (in §6) JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON is written in UTF-8, JSON is 8bit compatible. When JSON is written in UTF-16 or UTF-32, the binary content-transfer-encoding must be used. - -RapidJSON supports various encodings. It can also validate the encodings of JSON, and transconding JSON among encodings. All these features are implemented internally, without the need for external libraries (e.g. [ICU](http://site.icu-project.org/)). - -[TOC] - -# Unicode {#Unicode} -From [Unicode's official website](http://www.unicode.org/standard/WhatIsUnicode.html): -> Unicode provides a unique number for every character, -> no matter what the platform, -> no matter what the program, -> no matter what the language. - -Those unique numbers are called code points, which is in the range `0x0` to `0x10FFFF`. - -## Unicode Transformation Format {#UTF} - -There are various encodings for storing Unicode code points. These are called Unicode Transformation Format (UTF). RapidJSON supports the most commonly used UTFs, including - -* UTF-8: 8-bit variable-width encoding. It maps a code point to 1–4 bytes. -* UTF-16: 16-bit variable-width encoding. It maps a code point to 1–2 16-bit code units (i.e., 2–4 bytes). -* UTF-32: 32-bit fixed-width encoding. It directly maps a code point to a single 32-bit code unit (i.e. 4 bytes). - -For UTF-16 and UTF-32, the byte order (endianness) does matter. Within computer memory, they are often stored in the computer's endianness. However, when it is stored in file or transferred over network, we need to state the byte order of the byte sequence, either little-endian (LE) or big-endian (BE). - -RapidJSON provide these encodings via the structs in `rapidjson/encodings.h`: - -~~~~~~~~~~cpp -namespace rapidjson { - -template -struct UTF8; - -template -struct UTF16; - -template -struct UTF16LE; - -template -struct UTF16BE; - -template -struct UTF32; - -template -struct UTF32LE; - -template -struct UTF32BE; - -} // namespace rapidjson -~~~~~~~~~~ - -For processing text in memory, we normally use `UTF8`, `UTF16` or `UTF32`. For processing text via I/O, we may use `UTF8`, `UTF16LE`, `UTF16BE`, `UTF32LE` or `UTF32BE`. - -When using the DOM-style API, the `Encoding` template parameter in `GenericValue` and `GenericDocument` indicates the encoding to be used to represent JSON string in memory. So normally we will use `UTF8`, `UTF16` or `UTF32` for this template parameter. The choice depends on operating systems and other libraries that the application is using. For example, Windows API represents Unicode characters in UTF-16, while most Linux distributions and applications prefer UTF-8. - -Example of UTF-16 DOM declaration: - -~~~~~~~~~~cpp -typedef GenericDocument > WDocument; -typedef GenericValue > WValue; -~~~~~~~~~~ - -For a detail example, please check the example in [DOM's Encoding](doc/stream.md) section. - -## Character Type {#CharacterType} - -As shown in the declaration, each encoding has a `CharType` template parameter. Actually, it may be a little bit confusing, but each `CharType` stores a code unit, not a character (code point). As mentioned in previous section, a code point may be encoded to 1–4 code units for UTF-8. - -For `UTF16(LE|BE)`, `UTF32(LE|BE)`, the `CharType` must be integer type of at least 2 and 4 bytes respectively. - -Note that C++11 introduces `char16_t` and `char32_t`, which can be used for `UTF16` and `UTF32` respectively. - -## AutoUTF {#AutoUTF} - -Previous encodings are statically bound in compile-time. In other words, user must know exactly which encodings will be used in the memory or streams. However, sometimes we may need to read/write files of different encodings. The encoding needed to be decided in runtime. - -`AutoUTF` is an encoding designed for this purpose. It chooses which encoding to be used according to the input or output stream. Currently, it should be used with `EncodedInputStream` and `EncodedOutputStream`. - -## ASCII {#ASCII} - -Although the JSON standards did not mention about [ASCII](http://en.wikipedia.org/wiki/ASCII), sometimes we would like to write 7-bit ASCII JSON for applications that cannot handle UTF-8. Since any JSON can represent unicode characters in escaped sequence `\uXXXX`, JSON can always be encoded in ASCII. - -Here is an example for writing a UTF-8 DOM into ASCII: - -~~~~~~~~~~cpp -using namespace rapidjson; -Document d; // UTF8<> -// ... -StringBuffer buffer; -Writer > writer(buffer); -d.Accept(writer); -std::cout << buffer.GetString(); -~~~~~~~~~~ - -ASCII can be used in input stream. If the input stream contains bytes with values above 127, it will cause `kParseErrorStringInvalidEncoding` error. - -ASCII *cannot* be used in memory (encoding of `Document` or target encoding of `Reader`), as it cannot represent Unicode code points. - -# Validation & Transcoding {#ValidationTranscoding} - -When RapidJSON parses a JSON, it can validate the input JSON, whether it is a valid sequence of a specified encoding. This option can be turned on by adding `kParseValidateEncodingFlag` in `parseFlags` template parameter. - -If the input encoding and output encoding is different, `Reader` and `Writer` will automatically transcode (convert) the text. In this case, `kParseValidateEncodingFlag` is not necessary, as it must decode the input sequence. And if the sequence was unable to be decoded, it must be invalid. - -## Transcoder {#Transcoder} - -Although the encoding functions in RapidJSON are designed for JSON parsing/generation, user may abuse them for transcoding of non-JSON strings. - -Here is an example for transcoding a string from UTF-8 to UTF-16: - -~~~~~~~~~~cpp -#include "rapidjson/encodings.h" - -using namespace rapidjson; - -const char* s = "..."; // UTF-8 string -StringStream source(s); -GenericStringBuffer > target; - -bool hasError = false; -while (source.Peek() != '\0') - if (!Transcoder, UTF16<> >::Transcode(source, target)) { - hasError = true; - break; - } - -if (!hasError) { - const wchar_t* t = target.GetString(); - // ... -} -~~~~~~~~~~ - -You may also use `AutoUTF` and the associated streams for setting source/target encoding in runtime. diff --git a/rapidjson-lib/doc/encoding.zh-cn.md b/rapidjson-lib/doc/encoding.zh-cn.md deleted file mode 100644 index 6816923..0000000 --- a/rapidjson-lib/doc/encoding.zh-cn.md +++ /dev/null @@ -1,152 +0,0 @@ -# 编码 - -根据 [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf): - -> (in Introduction) JSON text is a sequence of Unicode code points. -> -> 翻译:JSON 文本是 Unicode 码点的序列。 - -较早的 [RFC4627](http://www.ietf.org/rfc/rfc4627.txt) 申明: - -> (in §3) JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. -> -> 翻译:JSON 文本应该以 Unicode 编码。缺省的编码为 UTF-8。 - -> (in §6) JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON is written in UTF-8, JSON is 8bit compatible. When JSON is written in UTF-16 or UTF-32, the binary content-transfer-encoding must be used. -> -> 翻译:JSON 可使用 UTF-8、UTF-16 或 UTF-18 表示。当 JSON 以 UTF-8 写入,该 JSON 是 8 位兼容的。当 JSON 以 UTF-16 或 UTF-32 写入,就必须使用二进制的内容传送编码。 - -RapidJSON 支持多种编码。它也能检查 JSON 的编码,以及在不同编码中进行转码。所有这些功能都是在内部实现,无需使用外部的程序库(如 [ICU](http://site.icu-project.org/))。 - -[TOC] - -# Unicode {#Unicode} -根据 [Unicode 的官方网站](http://www.unicode.org/standard/translations/t-chinese.html): ->Unicode 给每个字符提供了一个唯一的数字, -不论是什么平台、 -不论是什么程序、 -不论是什么语言。 - -这些唯一数字称为码点(code point),其范围介乎 `0x0` 至 `0x10FFFF` 之间。 - -## Unicode 转换格式 {#UTF} - -存储 Unicode 码点有多种编码方式。这些称为 Unicode 转换格式(Unicode Transformation Format, UTF)。RapidJSON 支持最常用的 UTF,包括: - -* UTF-8:8 位可变长度编码。它把一个码点映射至 1 至 4 个字节。 -* UTF-16:16 位可变长度编码。它把一个码点映射至 1 至 2 个 16 位编码单元(即 2 至 4 个字节)。 -* UTF-32:32 位固定长度编码。它直接把码点映射至单个 32 位编码单元(即 4 字节)。 - -对于 UTF-16 及 UTF-32 来说,字节序(endianness)是有影响的。在内存中,它们通常都是以该计算机的字节序来存储。然而,当要储存在文件中或在网上传输,我们需要指明字节序列的字节序,是小端(little endian, LE)还是大端(big-endian, BE)。 - -RapidJSON 通过 `rapidjson/encodings.h` 中的 struct 去提供各种编码: - -~~~~~~~~~~cpp -namespace rapidjson { - -template -struct UTF8; - -template -struct UTF16; - -template -struct UTF16LE; - -template -struct UTF16BE; - -template -struct UTF32; - -template -struct UTF32LE; - -template -struct UTF32BE; - -} // namespace rapidjson -~~~~~~~~~~ - -对于在内存中的文本,我们正常会使用 `UTF8`、`UTF16` 或 `UTF32`。对于处理经过 I/O 的文本,我们可使用 `UTF8`、`UTF16LE`、`UTF16BE`、`UTF32LE` 或 `UTF32BE`。 - -当使用 DOM 风格的 API,`GenericValue` 及 `GenericDocument` 里的 `Encoding` 模板参数是用于指明内存中存储的 JSON 字符串使用哪种编码。因此通常我们会在此参数中使用 `UTF8`、`UTF16` 或 `UTF32`。如何选择,视乎应用软件所使用的操作系统及其他程序库。例如,Windows API 使用 UTF-16 表示 Unicode 字符,而多数的 Linux 发行版本及应用软件则更喜欢 UTF-8。 - -使用 UTF-16 的 DOM 声明例子: - -~~~~~~~~~~cpp -typedef GenericDocument > WDocument; -typedef GenericValue > WValue; -~~~~~~~~~~ - -可以在 [DOM's Encoding](doc/stream.zh-cn.md) 一节看到更详细的使用例子。 - -## 字符类型 {#CharacterType} - -从之前的声明中可以看到,每个编码都有一个 `CharType` 模板参数。这可能比较容易混淆,实际上,每个 `CharType` 存储一个编码单元,而不是一个字符(码点)。如之前所谈及,在 UTF-8 中一个码点可能会编码成 1 至 4 个编码单元。 - -对于 `UTF16(LE|BE)` 及 `UTF32(LE|BE)` 来说,`CharType` 必须分别是一个至少 2 及 4 字节的整数类型。 - -注意 C++11 新添了 `char16_t` 及 `char32_t` 类型,也可分别用于 `UTF16` 及 `UTF32`。 - -## AutoUTF {#AutoUTF} - -上述所介绍的编码都是在编译期静态挷定的。换句话说,使用者必须知道内存或流之中使用了哪种编码。然而,有时候我们可能需要读写不同编码的文件,而且这些编码需要在运行时才能决定。 - -`AutoUTF` 是为此而设计的编码。它根据输入或输出流来选择使用哪种编码。目前它应该与 `EncodedInputStream` 及 `EncodedOutputStream` 结合使用。 - -## ASCII {#ASCII} - -虽然 JSON 标准并未提及 [ASCII](http://en.wikipedia.org/wiki/ASCII),有时候我们希望写入 7 位的 ASCII JSON,以供未能处理 UTF-8 的应用程序使用。由于任 JSON 都可以把 Unicode 字符表示为 `\uXXXX` 转义序列,JSON 总是可用 ASCII 来编码。 - -以下的例子把 UTF-8 的 DOM 写成 ASCII 的 JSON: - -~~~~~~~~~~cpp -using namespace rapidjson; -Document d; // UTF8<> -// ... -StringBuffer buffer; -Writer > writer(buffer); -d.Accept(writer); -std::cout << buffer.GetString(); -~~~~~~~~~~ - -ASCII 可用于输入流。当输入流包含大于 127 的字节,就会导致 `kParseErrorStringInvalidEncoding` 错误。 - -ASCII * 不能 * 用于内存(`Document` 的编码,或 `Reader` 的目标编码),因为它不能表示 Unicode 码点。 - -# 校验及转码 {#ValidationTranscoding} - -当 RapidJSON 解析一个 JSON 时,它能校验输入 JSON,判断它是否所标明编码的合法序列。要开启此选项,请把 `kParseValidateEncodingFlag` 加入 `parseFlags` 模板参数。 - -若输入编码和输出编码并不相同,`Reader` 及 `Writer` 会算把文本转码。在这种情况下,并不需要 `kParseValidateEncodingFlag`,因为它必须解码输入序列。若序列不能被解码,它必然是不合法的。 - -## 转码器 {#Transcoder} - -虽然 RapidJSON 的编码功能是为 JSON 解析/生成而设计,使用者也可以“滥用”它们来为非 JSON 字符串转码。 - -以下的例子把 UTF-8 字符串转码成 UTF-16: - -~~~~~~~~~~cpp -#include "rapidjson/encodings.h" - -using namespace rapidjson; - -const char* s = "..."; // UTF-8 string -StringStream source(s); -GenericStringBuffer > target; - -bool hasError = false; -while (source.Peek() != '\0') - if (!Transcoder, UTF16<> >::Transcode(source, target)) { - hasError = true; - break; - } - -if (!hasError) { - const wchar_t* t = target.GetString(); - // ... -} -~~~~~~~~~~ - -你也可以用 `AutoUTF` 及对应的流来在运行时设置内源/目的之编码。 diff --git a/rapidjson-lib/doc/faq.md b/rapidjson-lib/doc/faq.md deleted file mode 100644 index 1b0541c..0000000 --- a/rapidjson-lib/doc/faq.md +++ /dev/null @@ -1,289 +0,0 @@ -# FAQ - -[TOC] - -## General - -1. What is RapidJSON? - - RapidJSON is a C++ library for parsing and generating JSON. You may check all [features](doc/features.md) of it. - -2. Why is RapidJSON named so? - - It is inspired by [RapidXML](http://rapidxml.sourceforge.net/), which is a fast XML DOM parser. - -3. Is RapidJSON similar to RapidXML? - - RapidJSON borrowed some designs of RapidXML, including *in situ* parsing, header-only library. But the two APIs are completely different. Also RapidJSON provide many features that are not in RapidXML. - -4. Is RapidJSON free? - - Yes, it is free under MIT license. It can be used in commercial applications. Please check the details in [license.txt](https://github.com/miloyip/rapidjson/blob/master/license.txt). - -5. Is RapidJSON small? What are its dependencies? - - Yes. A simple executable which parses a JSON and prints its statistics is less than 30KB on Windows. - - RapidJSON depends on C++ standard library only. - -6. How to install RapidJSON? - - Check [Installation section](https://miloyip.github.io/rapidjson/). - -7. Can RapidJSON run on my platform? - - RapidJSON has been tested in many combinations of operating systems, compilers and CPU architecture by the community. But we cannot ensure that it can be run on your particular platform. Building and running the unit test suite will give you the answer. - -8. Does RapidJSON support C++03? C++11? - - RapidJSON was firstly implemented for C++03. Later it added optional support of some C++11 features (e.g., move constructor, `noexcept`). RapidJSON shall be compatible with C++03 or C++11 compliant compilers. - -9. Does RapidJSON really work in real applications? - - Yes. It is deployed in both client and server real applications. A community member reported that RapidJSON in their system parses 50 million JSONs daily. - -10. How RapidJSON is tested? - - RapidJSON contains a unit test suite for automatic testing. [Travis](https://travis-ci.org/miloyip/rapidjson/)(for Linux) and [AppVeyor](https://ci.appveyor.com/project/miloyip/rapidjson/)(for Windows) will compile and run the unit test suite for all modifications. The test process also uses Valgrind (in Linux) to detect memory leaks. - -11. Is RapidJSON well documented? - - RapidJSON provides user guide and API documentationn. - -12. Are there alternatives? - - Yes, there are a lot alternatives. For example, [nativejson-benchmark](https://github.com/miloyip/nativejson-benchmark) has a listing of open-source C/C++ JSON libraries. [json.org](http://www.json.org/) also has a list. - -## JSON - -1. What is JSON? - - JSON (JavaScript Object Notation) is a lightweight data-interchange format. It uses human readable text format. More details of JSON can be referred to [RFC7159](http://www.ietf.org/rfc/rfc7159.txt) and [ECMA-404](http://www.ecma-international.org/publications/standards/Ecma-404.htm). - -2. What are applications of JSON? - - JSON are commonly used in web applications for transferring structured data. It is also used as a file format for data persistence. - -2. Does RapidJSON conform to the JSON standard? - - Yes. RapidJSON is fully compliance with [RFC7159](http://www.ietf.org/rfc/rfc7159.txt) and [ECMA-404](http://www.ecma-international.org/publications/standards/Ecma-404.htm). It can handle corner cases, such as supporting null character and surrogate pairs in JSON strings. - -3. Does RapidJSON support relaxed syntax? - - Currently no. RapidJSON only support the strict standardized format. Support on related syntax is under discussion in this [issue](https://github.com/miloyip/rapidjson/issues/36). - -## DOM and SAX - -1. What is DOM style API? - - Document Object Model (DOM) is an in-memory representation of JSON for query and manipulation. - -2. What is SAX style API? - - SAX is an event-driven API for parsing and generation. - -3. Should I choose DOM or SAX? - - DOM is easy for query and manipulation. SAX is very fast and memory-saving but often more difficult to be applied. - -4. What is *in situ* parsing? - - *in situ* parsing decodes the JSON strings directly into the input JSON. This is an optimization which can reduce memory consumption and improve performance, but the input JSON will be modified. Check [in-situ parsing](doc/dom.md) for details. - -5. When does parsing generate an error? - - The parser generates an error when the input JSON contains invalid syntax, or a value can not be represented (a number is too big), or the handler of parsers terminate the parsing. Check [parse error](doc/dom.md) for details. - -6. What error information is provided? - - The error is stored in `ParseResult`, which includes the error code and offset (number of characters from the beginning of JSON). The error code can be translated into human-readable error message. - -7. Why not just using `double` to represent JSON number? - - Some applications use 64-bit unsigned/signed integers. And these integers cannot be converted into `double` without loss of precision. So the parsers detects whether a JSON number is convertible to different types of integers and/or `double`. - -8. How to clear-and-minimize a document or value? - - Call one of the `SetXXX()` methods - they call destructor which deallocates DOM data: - - ~~~~~~~~~~cpp - Document d; - ... - d.SetObject(); // clear and minimize - ~~~~~~~~~~ - - Alternatively, use equivalent of the [C++ swap with temporary idiom](https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize): - ~~~~~~~~~~cpp - Value(kObjectType).Swap(d); - ~~~~~~~~~~ - or equivalent, but sightly longer to type: - ~~~~~~~~~~cpp - d.Swap(Value(kObjectType).Move()); - ~~~~~~~~~~ - -9. How to insert a document node into another document? - - Let's take the following two DOM trees represented as JSON documents: - ~~~~~~~~~~cpp - Document person; - person.Parse("{\"person\":{\"name\":{\"first\":\"Adam\",\"last\":\"Thomas\"}}}"); - - Document address; - address.Parse("{\"address\":{\"city\":\"Moscow\",\"street\":\"Quiet\"}}"); - ~~~~~~~~~~ - Let's assume we want to merge them in such way that the whole `address` document becomes a node of the `person`: - ~~~~~~~~~~js - { "person": { - "name": { "first": "Adam", "last": "Thomas" }, - "address": { "city": "Moscow", "street": "Quiet" } - } - } - ~~~~~~~~~~ - - The most important requirement to take care of document and value life-cycle as well as consistent memory managent using the right allocator during the value transfer. - - Simple yet most efficient way to achieve that is to modify the `address` definition above to initialize it with allocator of the `person` document, then we just add the root member of the value: - ~~~~~~~~~~cpp - Documnet address(person.GetAllocator()); - ... - person["person"].AddMember("address", address["address"], person.GetAllocator()); - ~~~~~~~~~~ -Alternatively, if we don't want to explicitly refer to the root value of `address` by name, we can refer to it via iterator: - ~~~~~~~~~~cpp - auto addressRoot = address.MemberBegin(); - person["person"].AddMember(addressRoot->name, addressRoot->value, person.GetAllocator()); - ~~~~~~~~~~ - - Second way is to deep-clone the value from the address document: - ~~~~~~~~~~cpp - Value addressValue = Value(address["address"], person.GetAllocator()); - person["person"].AddMember("address", addressValue, person.GetAllocator()); - ~~~~~~~~~~ - -## Document/Value (DOM) - -1. What is move semantics? Why? - - Instead of copy semantics, move semantics is used in `Value`. That means, when assigning a source value to a target value, the ownership of source value is moved to the target value. - - Since moving is faster than copying, this design decision forces user to aware of the copying overhead. - -2. How to copy a value? - - There are two APIs: constructor with allocator, and `CopyFrom()`. See [Deep Copy Value](doc/tutorial.md) for an example. - -3. Why do I need to provide the length of string? - - Since C string is null-terminated, the length of string needs to be computed via `strlen()`, with linear runtime complexity. This incurs an unncessary overhead of many operations, if the user already knows the length of string. - - Also, RapidJSON can handle `\u0000` (null character) within a string. If a string contains null characters, `strlen()` cannot return the true length of it. In such case user must provide the length of string explicitly. - -4. Why do I need to provide allocator parameter in many DOM manipulation API? - - Since the APIs are member functions of `Value`, we do not want to save an allocator pointer in every `Value`. - -5. Does it convert between numerical types? - - When using `GetInt()`, `GetUint()`, ... conversion may occur. For integer-to-integer conversion, it only convert when it is safe (otherwise it will assert). However, when converting a 64-bit signed/unsigned integer to double, it will convert but be aware that it may lose precision. A number with fraction, or an integer larger than 64-bit, can only be obtained by `GetDouble()`. - -## Reader/Writer (SAX) - -1. Why don't we just `printf` a JSON? Why do we need a `Writer`? - - Most importantly, `Writer` will ensure the output JSON is well-formed. Calling SAX events incorrectly (e.g. `StartObject()` pairing with `EndArray()`) will assert. Besides, `Writer` will escapes strings (e.g., `\n`). Finally, the numeric output of `printf()` may not be a valid JSON number, especially in some locale with digit delimiters. And the number-to-string conversion in `Writer` is implemented with very fast algorithms, which outperforms than `printf()` or `iostream`. - -2. Can I pause the parsing process and resume it later? - - This is not directly supported in the current version due to performance consideration. However, if the execution environment supports multi-threading, user can parse a JSON in a separate thread, and pause it by blocking in the input stream. - -## Unicode - -1. Does it support UTF-8, UTF-16 and other format? - - Yes. It fully support UTF-8, UTF-16 (LE/BE), UTF-32 (LE/BE) and ASCII. - -2. Can it validate the encoding? - - Yes, just pass `kParseValidateEncodingFlag` to `Parse()`. If there is invalid encoding in the stream, it wil generate `kParseErrorStringInvalidEncoding` error. - -3. What is surrogate pair? Does RapidJSON support it? - - JSON uses UTF-16 encoding when escaping unicode character, e.g. `\u5927` representing Chinese character "big". To handle characters other than those in basic multilingual plane (BMP), UTF-16 encodes those characters with two 16-bit values, which is called UTF-16 surrogate pair. For example, the Emoji character U+1F602 can be encoded as `\uD83D\uDE02` in JSON. - - RapidJSON fully support parsing/generating UTF-16 surrogates. - -4. Can it handle `\u0000` (null character) in JSON string? - - Yes. RapidJSON fully support null character in JSON string. However, user need to be aware of it and using `GetStringLength()` and related APIs to obtain the true length of string. - -5. Can I output `\uxxxx` for all non-ASCII character? - - Yes, use `ASCII<>` as output encoding template parameter in `Writer` can enforce escaping those characters. - -## Stream - -1. I have a big JSON file. Should I load the whole file to memory? - - User can use `FileReadStream` to read the file chunk-by-chunk. But for *in situ* parsing, the whole file must be loaded. - -2. Can I parse JSON while it is streamed from network? - - Yes. User can implement a custom stream for this. Please refer to the implementation of `FileReadStream`. - -3. I don't know what encoding will the JSON be. How to handle them? - - You may use `AutoUTFInputStream` which detects the encoding of input stream automatically. However, it will incur some performance overhead. - -4. What is BOM? How RapidJSON handle it? - - [Byte order mark (BOM)](http://en.wikipedia.org/wiki/Byte_order_mark) sometimes reside at the beginning of file/stream to indiciate the UTF encoding type of it. - - RapidJSON's `EncodedInputStream` can detect/consume BOM. `EncodedOutputStream` can optionally write a BOM. See [Encoded Streams](doc/stream.md) for example. - -5. Why little/big endian is related? - - little/big endian of stream is an issue for UTF-16 and UTF-32 streams, but not UTF-8 stream. - -## Performance - -1. Is RapidJSON really fast? - - Yes. It may be the fastest open source JSON library. There is a [benchmark](https://github.com/miloyip/nativejson-benchmark) for evaluating performance of C/C++ JSON libaries. - -2. Why is it fast? - - Many design decisions of RapidJSON is aimed at time/space performance. These may reduce user-friendliness of APIs. Besides, it also employs low-level optimizations (intrinsics, SIMD) and special algorithms (custom double-to-string, string-to-double conversions). - -3. What is SIMD? How it is applied in RapidJSON? - - [SIMD](http://en.wikipedia.org/wiki/SIMD) instructions can perform parallel computation in modern CPUs. RapidJSON support Intel's SSE2/SSE4.2 to accelerate whitespace skipping. This improves performance of parsing indent formatted JSON. Define `RAPIDJSON_SSE2` or `RAPIDJSON_SSE42` macro to enable this feature. However, running the executable on a machine without such instruction set support will make it crash. - -4. Does it consume a lot of memory? - - The design of RapidJSON aims at reducing memory footprint. - - In the SAX API, `Reader` consumes memory portional to maximum depth of JSON tree, plus maximum length of JSON string. - - In the DOM API, each `Value` consumes exactly 16/24 bytes for 32/64-bit architecture respectively. RapidJSON also uses a special memory allocator to minimize overhead of allocations. - -5. What is the purpose of being high performance? - - Some applications need to process very large JSON files. Some server-side applications need to process huge amount of JSONs. Being high performance can improve both latency and throuput. In a broad sense, it will also save energy. - -## Gossip - -1. Who are the developers of RapidJSON? - - Milo Yip ([miloyip](https://github.com/miloyip)) is the original author of RapidJSON. Many contributors from the world have improved RapidJSON. Philipp A. Hartmann ([pah](https://github.com/pah)) has implemented a lot of improvements, setting up automatic testing and also involves in a lot of discussions for the community. Don Ding ([thebusytypist](https://github.com/thebusytypist)) implemented the iterative parser. Andrii Senkovych ([jollyroger](https://github.com/jollyroger)) completed the CMake migration. Kosta ([Kosta-Github](https://github.com/Kosta-Github)) provided a very neat short-string optimization. Thank you for all other contributors and community members as well. - -2. Why do you develop RapidJSON? - - It was just a hobby project initially in 2011. Milo Yip is a game programmer and he just knew about JSON at that time and would like to apply JSON in future projects. As JSON seems very simple he would like to write a header-only and fast library. - -3. Why there is a long empty period of development? - - It is basically due to personal issues, such as getting new family members. Also, Milo Yip has spent a lot of spare time on translating "Game Engine Architecture" by Jason Gregory into Chinese. - -4. Why did the repository move from Google Code to GitHub? - - This is the trend. And GitHub is much more powerful and convenient. diff --git a/rapidjson-lib/doc/faq.zh-cn.md b/rapidjson-lib/doc/faq.zh-cn.md deleted file mode 100644 index ed100e1..0000000 --- a/rapidjson-lib/doc/faq.zh-cn.md +++ /dev/null @@ -1,290 +0,0 @@ -# 常见问题 - -[TOC] - -## 一般问题 - -1. RapidJSON 是什么? - - RapidJSON 是一个 C++ 库,用于解析及生成 JSON。读者可参考它的所有 [特点](doc/features.zh-cn.md)。 - -2. 为什么称作 RapidJSON? - - 它的灵感来自于 [RapidXML](http://rapidxml.sourceforge.net/),RapidXML 是一个高速的 XML DOM 解析器。 - -3. RapidJSON 与 RapidXML 相似么? - - RapidJSON 借镜了 RapidXML 的一些设计, 包括原位(*in situ*)解析、只有头文件的库。但两者的 API 是完全不同的。此外 RapidJSON 也提供许多 RapidXML 没有的特点。 - -4. RapidJSON 是免费的么? - - 是的,它在 MIT 特許條款下免费。它可用于商业软件。详情请参看 [license.txt](https://github.com/miloyip/rapidjson/blob/master/license.txt)。 - -5. RapidJSON 很小么?它有何依赖? - - 是的。在 Windows 上,一个解析 JSON 并打印出统计的可执行文件少于 30KB。 - - RapidJSON 仅依赖于 C++ 标准库。 - -6. 怎样安装 RapidJSON? - - 见 [安装一节](../readme.zh-cn.md#安装)。 - -7. RapidJSON 能否运行于我的平台? - - 社区已在多个操作系统/编译器/CPU 架构的组合上测试 RapidJSON。但我们无法确保它能运行于你特定的平台上。只需要生成及执行单元测试便能获取答案。 - -8. RapidJSON 支持 C++03 么?C++11 呢? - - RapidJSON 开始时在 C++03 上实现。后来加入了可选的 C++11 特性支持(如转移构造函数、`noexcept`)。RapidJSON 应该兼容所有遵从 C++03 或 C++11 的编译器。 - -9. RapidJSON 是否真的用于实际应用? - - 是的。它被配置于前台及后台的真实应用中。一个社区成员说 RapidJSON 在他们的系统中每日解析 5 千万个 JSON。 - -10. RapidJSON 是如何被测试的? - - RapidJSON 包含一组单元测试去执行自动测试。[Travis](https://travis-ci.org/miloyip/rapidjson/)(供 Linux 平台)及 [AppVeyor](https://ci.appveyor.com/project/miloyip/rapidjson/)(供 Windows 平台)会对所有修改进行编译及执行单元测试。在 Linux 下还会使用 Valgrind 去检测内存泄漏。 - -11. RapidJSON 是否有完整的文档? - - RapidJSON 提供了使用手册及 API 说明文档。 - -12. 有没有其他替代品? - - 有许多替代品。例如 [nativejson-benchmark](https://github.com/miloyip/nativejson-benchmark) 列出了一些开源的 C/C++ JSON 库。[json.org](http://www.json.org/) 也有一个列表。 - -## JSON - -1. 什么是 JSON? - - JSON (JavaScript Object Notation) 是一个轻量的数据交换格式。它使用人类可读的文本格式。更多关于 JSON 的细节可考 [RFC7159](http://www.ietf.org/rfc/rfc7159.txt) 及 [ECMA-404](http://www.ecma-international.org/publications/standards/Ecma-404.htm)。 - -2. JSON 有什么应用场合? - - JSON 常用于网页应用程序,以传送结构化数据。它也可作为文件格式用于数据持久化。 - -2. RapidJSON 是否符合 JSON 标准? - - 是。RapidJSON 完全符合 [RFC7159](http://www.ietf.org/rfc/rfc7159.txt) 及 [ECMA-404](http://www.ecma-international.org/publications/standards/Ecma-404.htm)。它能处理一些特殊情况,例如支持 JSON 字符串中含有空字符及代理对(surrogate pair)。 - -3. RapidJSON 是否支持宽松的语法? - - 现时不支持。RapidJSON 只支持严格的标准格式。宽松语法现时在这 [issue](https://github.com/miloyip/rapidjson/issues/36) 中进行讨论。 - -## DOM 与 SAX - -1. 什么是 DOM 风格 API? - - Document Object Model(DOM)是一个储存于内存的 JSON 表示方式,用于查询及修改 JSON。 - -2. 什么是 SAX 风格 API? - - SAX 是一个事件驱动的 API,用于解析及生成 JSON。 - -3. 我应用 DOM 还是 SAX? - - DOM 易于查询及修改。SAX 则是非常快及省内存的,但通常较难使用。 - -4. 什么是原位(*in situ*)解析? - - 原位解析会把 JSON 字符串直接解码至输入的 JSON 中。这是一个优化,可减少内存消耗及提升性能,但输入的 JSON 会被更改。进一步细节请参考 [原位解析](doc/dom.zh-cn.md) 。 - -5. 什么时候会产生解析错误? - - 当输入的 JSON 包含非法语法,或不能表示一个值(如 Number 太大),或解析器的处理器中断解析过程,解析器都会产生一个错误。详情请参考 [解析错误](doc/dom.zh-cn.md)。 - -6. 有什么错误信息? - - 错误信息存储在 `ParseResult`,它包含错误代号及偏移值(从 JSON 开始至错误处的字符数目)。可以把错误代号翻译为人类可读的错误讯息。 - -7. 为何不只使用 `double` 去表示 JSON number? - - 一些应用需要使用 64 位无号/有号整数。这些整数不能无损地转换成 `double`。因此解析器会检测一个 JSON number 是否能转换至各种整数类型及 `double`。 - -8. 如何清空并最小化 `document` 或 `value` 的容量? - - 调用 `SetXXX()` 方法 - 这些方法会调用析构函数,并重建空的 Object 或 Array: - - ~~~~~~~~~~cpp - Document d; - ... - d.SetObject(); // clear and minimize - ~~~~~~~~~~ - - 另外,也可以参考在 [C++ swap with temporary idiom](https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize) 中的一种等价的方法: - ~~~~~~~~~~cpp - Value(kObjectType).Swap(d); - ~~~~~~~~~~ - 或者,使用这个稍微长一点的代码也能完成同样的事情: - ~~~~~~~~~~cpp - d.Swap(Value(kObjectType).Move()); - ~~~~~~~~~~ - -9. 如何将一个 `document` 节点插入到另一个 `document` 中? - - 比如有以下两个 document(DOM): - ~~~~~~~~~~cpp - Document person; - person.Parse("{\"person\":{\"name\":{\"first\":\"Adam\",\"last\":\"Thomas\"}}}"); - - Document address; - address.Parse("{\"address\":{\"city\":\"Moscow\",\"street\":\"Quiet\"}}"); - ~~~~~~~~~~ - 假设我们希望将整个 `address` 插入到 `person` 中,作为其的一个子节点: - ~~~~~~~~~~js - { "person": { - "name": { "first": "Adam", "last": "Thomas" }, - "address": { "city": "Moscow", "street": "Quiet" } - } - } - ~~~~~~~~~~ - - 在插入节点的过程中需要注意 `document` 和 `value` 的生命周期并且正确地使用 allocator 进行内存分配和管理。 - - 一个简单有效的方法就是修改上述 `address` 变量的定义,让其使用 `person` 的 allocator 初始化,然后将其添加到根节点。 - - ~~~~~~~~~~cpp - Documnet address(person.GetAllocator()); - ... - person["person"].AddMember("address", address["address"], person.GetAllocator()); - ~~~~~~~~~~ - 当然,如果你不想通过显式地写出 `address` 的 key 来得到其值,可以使用迭代器来实现: - ~~~~~~~~~~cpp - auto addressRoot = address.MemberBegin(); - person["person"].AddMember(addressRoot->name, addressRoot->value, person.GetAllocator()); - ~~~~~~~~~~ - - 此外,还可以通过深拷贝 address document 来实现: - ~~~~~~~~~~cpp - Value addressValue = Value(address["address"], person.GetAllocator()); - person["person"].AddMember("address", addressValue, person.GetAllocator()); - ~~~~~~~~~~ - -## Document/Value (DOM) - -1. 什么是转移语意?为什么? - - `Value` 不用复制语意,而使用了转移语意。这是指,当把来源值赋值于目标值时,来源值的所有权会转移至目标值。 - - 由于转移快于复制,此设计决定强迫使用者注意到复制的消耗。 - -2. 怎样去复制一个值? - - 有两个 API 可用:含 allocator 的构造函数,以及 `CopyFrom()`。可参考 [深复制 Value](doc/tutorial.zh-cn.md) 里的用例。 - -3. 为什么我需要提供字符串的长度? - - 由于 C 字符串是空字符结尾的,需要使用 `strlen()` 去计算其长度,这是线性复杂度的操作。若使用者已知字符串的长度,对很多操作来说会造成不必要的消耗。 - - 此外,RapidJSON 可处理含有 `\u0000`(空字符)的字符串。若一个字符串含有空字符,`strlen()` 便不能返回真正的字符串长度。在这种情况下使用者必须明确地提供字符串长度。 - -4. 为什么在许多 DOM 操作 API 中要提供分配器作为参数? - - 由于这些 API 是 `Value` 的成员函数,我们不希望为每个 `Value` 储存一个分配器指针。 - -5. 它会转换各种数值类型么? - - 当使用 `GetInt()`、`GetUint()` 等 API 时,可能会发生转换。对于整数至整数转换,仅当保证转换安全才会转换(否则会断言失败)。然而,当把一个 64 位有号/无号整数转换至 double 时,它会转换,但有可能会损失精度。含有小数的数字、或大于 64 位的整数,都只能使用 `GetDouble()` 获取其值。 - -## Reader/Writer (SAX) - -1. 为什么不仅仅用 `printf` 输出一个 JSON?为什么需要 `Writer`? - - 最重要的是,`Writer` 能确保输出的 JSON 是格式正确的。错误地调用 SAX 事件(如 `StartObject()` 错配 `EndArray()`)会造成断言失败。此外,`Writer` 会把字符串进行转义(如 `\n`)。最后,`printf()` 的数值输出可能并不是一个合法的 JSON number,特别是某些 locale 会有数字分隔符。而且 `Writer` 的数值字符串转换是使用非常快的算法来实现的,胜过 `printf()` 及 `iostream`。 - -2. 我能否暂停解析过程,并在稍后继续? - - 基于性能考虑,目前版本并不直接支持此功能。然而,若执行环境支持多线程,使用者可以在另一线程解析 JSON,并通过阻塞输入流去暂停。 - -## Unicode - -1. 它是否支持 UTF-8、UTF-16 及其他格式? - - 是。它完全支持 UTF-8、UTF-16(大端/小端)、UTF-32(大端/小端)及 ASCII。 - -2. 它能否检测编码的合法性? - - 能。只需把 `kParseValidateEncodingFlag` 参考传给 `Parse()`。若发现在输入流中有非法的编码,它就会产生 `kParseErrorStringInvalidEncoding` 错误。 - -3. 什么是代理对(surrogate pair)?RapidJSON 是否支持? - - JSON 使用 UTF-16 编码去转义 Unicode 字符,例如 `\u5927` 表示中文字“大”。要处理基本多文种平面(basic multilingual plane,BMP)以外的字符时,UTF-16 会把那些字符编码成两个 16 位值,这称为 UTF-16 代理对。例如,绘文字字符 U+1F602 在 JSON 中可被编码成 `\uD83D\uDE02`。 - - RapidJSON 完全支持解析及生成 UTF-16 代理对。 - -4. 它能否处理 JSON 字符串中的 `\u0000`(空字符)? - - 能。RapidJSON 完全支持 JSON 字符串中的空字符。然而,使用者需要注意到这件事,并使用 `GetStringLength()` 及相关 API 去取得字符串真正长度。 - -5. 能否对所有非 ASCII 字符输出成 `\uxxxx` 形式? - - 可以。只要在 `Writer` 中使用 `ASCII<>` 作为输出编码参数,就可以强逼转义那些字符。 - -## 流 - -1. 我有一个很大的 JSON 文件。我应否把它整个载入内存中? - - 使用者可使用 `FileReadStream` 去逐块读入文件。但若使用于原位解析,必须载入整个文件。 - -2. 我能否解析一个从网络上串流进来的 JSON? - - 可以。使用者可根据 `FileReadStream` 的实现,去实现一个自定义的流。 - -3. 我不知道一些 JSON 将会使用哪种编码。怎样处理它们? - - 你可以使用 `AutoUTFInputStream`,它能自动检测输入流的编码。然而,它会带来一些性能开销。 - -4. 什么是 BOM?RapidJSON 怎样处理它? - - [字节顺序标记(byte order mark, BOM)](http://en.wikipedia.org/wiki/Byte_order_mark) 有时会出现于文件/流的开始,以表示其 UTF 编码类型。 - - RapidJSON 的 `EncodedInputStream` 可检测/跳过 BOM。`EncodedOutputStream` 可选择是否写入 BOM。可参考 [编码流](doc/stream.zh-cn.md) 中的例子。 - -5. 为什么会涉及大端/小端? - - 流的大端/小端是 UTF-16 及 UTF-32 流要处理的问题,而 UTF-8 不需要处理。 - -## 性能 - -1. RapidJSON 是否真的快? - - 是。它可能是最快的开源 JSON 库。有一个 [评测](https://github.com/miloyip/nativejson-benchmark) 评估 C/C++ JSON 库的性能。 - -2. 为什么它会快? - - RapidJSON 的许多设计是针对时间/空间性能来设计的,这些决定可能会影响 API 的易用性。此外,它也使用了许多底层优化(内部函数/intrinsic、SIMD)及特别的算法(自定义的 double 至字符串转换、字符串至 double 的转换)。 - -3. 什是是 SIMD?它如何用于 RapidJSON? - - [SIMD](http://en.wikipedia.org/wiki/SIMD) 指令可以在现代 CPU 中执行并行运算。RapidJSON 支持了 Intel 的 SSE2/SSE4.2 去加速跳过空白字符。在解析含缩进的 JSON 时,这能提升性能。只要定义名为 `RAPIDJSON_SSE2` 或 `RAPIDJSON_SSE42` 的宏,就能启动这个功能。然而,若在不支持这些指令集的机器上执行这些可执行文件,会导致崩溃。 - -4. 它会消耗许多内存么? - - RapidJSON 的设计目标是减低内存占用。 - - 在 SAX API 中,`Reader` 消耗的内存与 JSON 树深度加上最长 JSON 字符成正比。 - - 在 DOM API 中,每个 `Value` 在 32/64 位架构下分别消耗 16/24 字节。RapidJSON 也使用一个特殊的内存分配器去减少分配的额外开销。 - -5. 高性能的意义何在? - - 有些应用程序需要处理非常大的 JSON 文件。而有些后台应用程序需要处理大量的 JSON。达到高性能同时改善延时及吞吐量。更广义来说,这也可以节省能源。 - -## 八挂 - -1. 谁是 RapidJSON 的开发者? - - 叶劲峰(Milo Yip,[miloyip](https://github.com/miloyip))是 RapidJSON 的原作者。全世界许多贡献者一直在改善 RapidJSON。Philipp A. Hartmann([pah](https://github.com/pah))实现了许多改进,也设置了自动化测试,而且还参与许多社区讨论。丁欧南(Don Ding,[thebusytypist](https://github.com/thebusytypist))实现了迭代式解析器。Andrii Senkovych([jollyroger](https://github.com/jollyroger))完成了向 CMake 的迁移。Kosta([Kosta-Github](https://github.com/Kosta-Github))提供了一个非常灵巧的短字符串优化。也需要感谢其他献者及社区成员。 - -2. 为何你要开发 RapidJSON? - - 在 2011 年开始这项目是,它仅一个兴趣项目。Milo Yip 是一个游戏程序员,他在那时候认识到 JSON 并希望在未来的项目中使用。由于 JSON 好像很简单,他希望写一个仅有头文件并且快速的程序库。 - -3. 为什么开发中段有一段长期空档? - - 主要是个人因素,例如加入新家庭成员。另外,Milo Yip 也花了许多业馀时间去翻译 Jason Gregory 的《Game Engine Architecture》至中文版《游戏引擎架构》。 - -4. 为什么这个项目从 Google Code 搬到 GitHub? - - 这是大势所趋,而且 GitHub 更为强大及方便。 diff --git a/rapidjson-lib/doc/features.md b/rapidjson-lib/doc/features.md deleted file mode 100644 index 732fb21..0000000 --- a/rapidjson-lib/doc/features.md +++ /dev/null @@ -1,104 +0,0 @@ -# Features - -## General - -* Cross-platform - * Compilers: Visual Studio, gcc, clang, etc. - * Architectures: x86, x64, ARM, etc. - * Operating systems: Windows, Mac OS X, Linux, iOS, Android, etc. -* Easy installation - * Header files only library. Just copy the headers to your project. -* Self-contained, minimal dependences - * No STL, BOOST, etc. - * Only included ``, ``, ``, ``, ``, ``. -* Without C++ exception, RTTI -* High performance - * Use template and inline functions to reduce function call overheads. - * Internal optimized Grisu2 and floating point parsing implementations. - * Optional SSE2/SSE4.2 support. - -## Standard compliance - -* RapidJSON should be fully RFC4627/ECMA-404 compliance. -* Support JSON Pointer (RFC6901). -* Support JSON Schema Draft v4. -* Support Unicode surrogate. -* Support null character (`"\u0000"`) - * For example, `["Hello\u0000World"]` can be parsed and handled gracefully. There is API for getting/setting lengths of string. -* Support optional relaxed syntax. - * Single line (`// ...`) and multiple line (`/* ... */`) comments (`kParseCommentsFlag`). - * Trailing commas at the end of objects and arrays (`kParseTrailingCommasFlag`). - * `NaN`, `Inf`, `Infinity`, `-Inf` and `-Infinity` as `double` values (`kParseNanAndInfFlag`) -* [NPM compliant](http://github.com/miloyip/rapidjson/blob/master/doc/npm.md). - -## Unicode - -* Support UTF-8, UTF-16, UTF-32 encodings, including little endian and big endian. - * These encodings are used in input/output streams and in-memory representation. -* Support automatic detection of encodings in input stream. -* Support transcoding between encodings internally. - * For example, you can read a UTF-8 file and let RapidJSON transcode the JSON strings into UTF-16 in the DOM. -* Support encoding validation internally. - * For example, you can read a UTF-8 file, and let RapidJSON check whether all JSON strings are valid UTF-8 byte sequence. -* Support custom character types. - * By default the character types are `char` for UTF8, `wchar_t` for UTF16, `uint32_t` for UTF32. -* Support custom encodings. - -## API styles - -* SAX (Simple API for XML) style API - * Similar to [SAX](http://en.wikipedia.org/wiki/Simple_API_for_XML), RapidJSON provides a event sequential access parser API (`rapidjson::GenericReader`). It also provides a generator API (`rapidjson::Writer`) which consumes the same set of events. -* DOM (Document Object Model) style API - * Similar to [DOM](http://en.wikipedia.org/wiki/Document_Object_Model) for HTML/XML, RapidJSON can parse JSON into a DOM representation (`rapidjson::GenericDocument`), for easy manipulation, and finally stringify back to JSON if needed. - * The DOM style API (`rapidjson::GenericDocument`) is actually implemented with SAX style API (`rapidjson::GenericReader`). SAX is faster but sometimes DOM is easier. Users can pick their choices according to scenarios. - -## Parsing - -* Recursive (default) and iterative parser - * Recursive parser is faster but prone to stack overflow in extreme cases. - * Iterative parser use custom stack to keep parsing state. -* Support *in situ* parsing. - * Parse JSON string values in-place at the source JSON, and then the DOM points to addresses of those strings. - * Faster than convention parsing: no allocation for strings, no copy (if string does not contain escapes), cache-friendly. -* Support 32-bit/64-bit signed/unsigned integer and `double` for JSON number type. -* Support parsing multiple JSONs in input stream (`kParseStopWhenDoneFlag`). -* Error Handling - * Support comprehensive error code if parsing failed. - * Support error message localization. - -## DOM (Document) - -* RapidJSON checks range of numerical values for conversions. -* Optimization for string literal - * Only store pointer instead of copying -* Optimization for "short" strings - * Store short string in `Value` internally without additional allocation. - * For UTF-8 string: maximum 11 characters in 32-bit, 21 characters in 64-bit (13 characters in x86-64). -* Optionally support `std::string` (define `RAPIDJSON_HAS_STDSTRING=1`) - -## Generation - -* Support `rapidjson::PrettyWriter` for adding newlines and indentations. - -## Stream - -* Support `rapidjson::GenericStringBuffer` for storing the output JSON as string. -* Support `rapidjson::FileReadStream` and `rapidjson::FileWriteStream` for input/output `FILE` object. -* Support custom streams. - -## Memory - -* Minimize memory overheads for DOM. - * Each JSON value occupies exactly 16/20 bytes for most 32/64-bit machines (excluding text string). -* Support fast default allocator. - * A stack-based allocator (allocate sequentially, prohibit to free individual allocations, suitable for parsing). - * User can provide a pre-allocated buffer. (Possible to parse a number of JSONs without any CRT allocation) -* Support standard CRT(C-runtime) allocator. -* Support custom allocators. - -## Miscellaneous - -* Some C++11 support (optional) - * Rvalue reference - * `noexcept` specifier - * Range-based for loop diff --git a/rapidjson-lib/doc/features.zh-cn.md b/rapidjson-lib/doc/features.zh-cn.md deleted file mode 100644 index fd3fd4d..0000000 --- a/rapidjson-lib/doc/features.zh-cn.md +++ /dev/null @@ -1,103 +0,0 @@ -# 特点 - -## 总体 - -* 跨平台 - * 编译器:Visual Studio、gcc、clang 等 - * 架构:x86、x64、ARM 等 - * 操作系统:Windows、Mac OS X、Linux、iOS、Android 等 -* 容易安装 - * 只有头文件的库。只需把头文件复制至你的项目中。 -* 独立、最小依赖 - * 不需依赖 STL、BOOST 等。 - * 只包含 ``, ``, ``, ``, ``, ``。 -* 没使用 C++ 异常、RTTI -* 高性能 - * 使用模版及内联函数去降低函数调用开销。 - * 内部经优化的 Grisu2 及浮点数解析实现。 - * 可选的 SSE2/SSE4.2 支持。 - -## 符合标准 - -* RapidJSON 应完全符合 RFC4627/ECMA-404 标准。 -* 支持 JSON Pointer (RFC6901). -* 支持 JSON Schema Draft v4. -* 支持 Unicod 代理对(surrogate pair)。 -* 支持空字符(`"\u0000"`)。 - * 例如,可以优雅地解析及处理 `["Hello\u0000World"]`。含读写字符串长度的 API。 -* 支持可选的放宽语法 - * 单行(`// ...`)及多行(`/* ... */`) 注释 (`kParseCommentsFlag`)。 - * 在对象和数组结束前含逗号 (`kParseTrailingCommasFlag`)。 - * `NaN`、`Inf`、`Infinity`、`-Inf` 及 `-Infinity` 作为 `double` 值 (`kParseNanAndInfFlag`) -* [NPM 兼容](https://github.com/miloyip/rapidjson/blob/master/doc/npm.md). - -## Unicode - -* 支持 UTF-8、UTF-16、UTF-32 编码,包括小端序和大端序。 - * 这些编码用于输入输出流,以及内存中的表示。 -* 支持从输入流自动检测编码。 -* 内部支持编码的转换。 - * 例如,你可以读取一个 UTF-8 文件,让 RapidJSON 把 JSON 字符串转换至 UTF-16 的 DOM。 -* 内部支持编码校验。 - * 例如,你可以读取一个 UTF-8 文件,让 RapidJSON 检查是否所有 JSON 字符串是合法的 UTF-8 字节序列。 -* 支持自定义的字符类型。 - * 预设的字符类型是:UTF-8 为 `char`,UTF-16 为 `wchar_t`,UTF32 为 `uint32_t`。 -* 支持自定义的编码。 - -## API 风格 - -* SAX(Simple API for XML)风格 API - * 类似于 [SAX](http://en.wikipedia.org/wiki/Simple_API_for_XML), RapidJSON 提供一个事件循序访问的解析器 API(`rapidjson::GenericReader`)。RapidJSON 也提供一个生成器 API(`rapidjson::Writer`),可以处理相同的事件集合。 -* DOM(Document Object Model)风格 API - * 类似于 HTML/XML 的 [DOM](http://en.wikipedia.org/wiki/Document_Object_Model),RapidJSON 可把 JSON 解析至一个 DOM 表示方式(`rapidjson::GenericDocument`),以方便操作。如有需要,可把 DOM 转换(stringify)回 JSON。 - * DOM 风格 API(`rapidjson::GenericDocument`)实际上是由 SAX 风格 API(`rapidjson::GenericReader`)实现的。SAX 更快,但有时 DOM 更易用。用户可根据情况作出选择。 - -## 解析 - -* 递归式(预设)及迭代式解析器 - * 递归式解析器较快,但在极端情况下可出现堆栈溢出。 - * 迭代式解析器使用自定义的堆栈去维持解析状态。 -* 支持原位(*in situ*)解析。 - * 把 JSON 字符串的值解析至原 JSON 之中,然后让 DOM 指向那些字符串。 - * 比常规分析更快:不需字符串的内存分配、不需复制(如字符串不含转义符)、缓存友好。 -* 对于 JSON 数字类型,支持 32-bit/64-bit 的有号/无号整数,以及 `double`。 -* 错误处理 - * 支持详尽的解析错误代号。 - * 支持本地化错误信息。 - -## DOM (Document) - -* RapidJSON 在类型转换时会检查数值的范围。 -* 字符串字面量的优化 - * 只储存指针,不作复制 -* 优化“短”字符串 - * 在 `Value` 内储存短字符串,无需额外分配。 - * 对 UTF-8 字符串来说,32 位架构下可存储最多 11 字符,64 位下 21 字符(x86-64 下 13 字符)。 -* 可选地支持 `std::string`(定义 `RAPIDJSON_HAS_STDSTRING=1`) - -## 生成 - -* 支持 `rapidjson::PrettyWriter` 去加入换行及缩进。 - -## 输入输出流 - -* 支持 `rapidjson::GenericStringBuffer`,把输出的 JSON 储存于字符串内。 -* 支持 `rapidjson::FileReadStream` 及 `rapidjson::FileWriteStream`,使用 `FILE` 对象作输入输出。 -* 支持自定义输入输出流。 - -## 内存 - -* 最小化 DOM 的内存开销。 - * 对大部分 32/64 位机器而言,每个 JSON 值只占 16 或 20 字节(不包含字符串)。 -* 支持快速的预设分配器。 - * 它是一个堆栈形式的分配器(顺序分配,不容许单独释放,适合解析过程之用)。 - * 使用者也可提供一个预分配的缓冲区。(有可能达至无需 CRT 分配就能解析多个 JSON) -* 支持标准 CRT(C-runtime)分配器。 -* 支持自定义分配器。 - -## 其他 - -* 一些 C++11 的支持(可选) - * 右值引用(rvalue reference) - * `noexcept` 修饰符 - * 范围 for 循环 diff --git a/rapidjson-lib/doc/internals.md b/rapidjson-lib/doc/internals.md deleted file mode 100644 index 49802a0..0000000 --- a/rapidjson-lib/doc/internals.md +++ /dev/null @@ -1,365 +0,0 @@ -# Internals - -This section records some design and implementation details. - -[TOC] - -# Architecture {#Architecture} - -## SAX and DOM - -The basic relationships of SAX and DOM is shown in the following UML diagram. - -![Architecture UML class diagram](diagram/architecture.png) - -The core of the relationship is the `Handler` concept. From the SAX side, `Reader` parses a JSON from a stream and publish events to a `Handler`. `Writer` implements the `Handler` concept to handle the same set of events. From the DOM side, `Document` implements the `Handler` concept to build a DOM according to the events. `Value` supports a `Value::Accept(Handler&)` function, which traverses the DOM to publish events. - -With this design, SAX is not dependent on DOM. Even `Reader` and `Writer` have no dependencies between them. This provides flexibility to chain event publisher and handlers. Besides, `Value` does not depends on SAX as well. So, in addition to stringify a DOM to JSON, user may also stringify it to a XML writer, or do anything else. - -## Utility Classes - -Both SAX and DOM APIs depends on 3 additional concepts: `Allocator`, `Encoding` and `Stream`. Their inheritance hierarchy is shown as below. - -![Utility classes UML class diagram](diagram/utilityclass.png) - -# Value {#Value} - -`Value` (actually a typedef of `GenericValue>`) is the core of DOM API. This section describes the design of it. - -## Data Layout {#DataLayout} - -`Value` is a [variant type](http://en.wikipedia.org/wiki/Variant_type). In RapidJSON's context, an instance of `Value` can contain 1 of 6 JSON value types. This is possible by using `union`. Each `Value` contains two members: `union Data data_` and a`unsigned flags_`. The `flags_` indiciates the JSON type, and also additional information. - -The following tables show the data layout of each type. The 32-bit/64-bit columns indicates the size of the field in bytes. - -| Null | |32-bit|64-bit| -|-------------------|----------------------------------|:----:|:----:| -| (unused) | |4 |8 | -| (unused) | |4 |4 | -| (unused) | |4 |4 | -| `unsigned flags_` | `kNullType kNullFlag` |4 |4 | - -| Bool | |32-bit|64-bit| -|-------------------|----------------------------------------------------|:----:|:----:| -| (unused) | |4 |8 | -| (unused) | |4 |4 | -| (unused) | |4 |4 | -| `unsigned flags_` | `kBoolType` (either `kTrueFlag` or `kFalseFlag`) |4 |4 | - -| String | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `Ch* str` | Pointer to the string (may own) |4 |8 | -| `SizeType length` | Length of string |4 |4 | -| (unused) | |4 |4 | -| `unsigned flags_` | `kStringType kStringFlag ...` |4 |4 | - -| Object | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `Member* members` | Pointer to array of members (owned) |4 |8 | -| `SizeType size` | Number of members |4 |4 | -| `SizeType capacity` | Capacity of members |4 |4 | -| `unsigned flags_` | `kObjectType kObjectFlag` |4 |4 | - -| Array | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `Value* values` | Pointer to array of values (owned) |4 |8 | -| `SizeType size` | Number of values |4 |4 | -| `SizeType capacity` | Capacity of values |4 |4 | -| `unsigned flags_` | `kArrayType kArrayFlag` |4 |4 | - -| Number (Int) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `int i` | 32-bit signed integer |4 |4 | -| (zero padding) | 0 |4 |4 | -| (unused) | |4 |8 | -| `unsigned flags_` | `kNumberType kNumberFlag kIntFlag kInt64Flag ...` |4 |4 | - -| Number (UInt) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `unsigned u` | 32-bit unsigned integer |4 |4 | -| (zero padding) | 0 |4 |4 | -| (unused) | |4 |8 | -| `unsigned flags_` | `kNumberType kNumberFlag kUIntFlag kUInt64Flag ...` |4 |4 | - -| Number (Int64) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `int64_t i64` | 64-bit signed integer |8 |8 | -| (unused) | |4 |8 | -| `unsigned flags_` | `kNumberType kNumberFlag kInt64Flag ...` |4 |4 | - -| Number (Uint64) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `uint64_t i64` | 64-bit unsigned integer |8 |8 | -| (unused) | |4 |8 | -| `unsigned flags_` | `kNumberType kNumberFlag kInt64Flag ...` |4 |4 | - -| Number (Double) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `uint64_t i64` | Double precision floating-point |8 |8 | -| (unused) | |4 |8 | -| `unsigned flags_` | `kNumberType kNumberFlag kDoubleFlag` |4 |4 | - -Here are some notes: -* To reduce memory consumption for 64-bit architecture, `SizeType` is typedef as `unsigned` instead of `size_t`. -* Zero padding for 32-bit number may be placed after or before the actual type, according to the endianess. This makes possible for interpreting a 32-bit integer as a 64-bit integer, without any conversion. -* An `Int` is always an `Int64`, but the converse is not always true. - -## Flags {#Flags} - -The 32-bit `flags_` contains both JSON type and other additional information. As shown in the above tables, each JSON type contains redundant `kXXXType` and `kXXXFlag`. This design is for optimizing the operation of testing bit-flags (`IsNumber()`) and obtaining a sequential number for each type (`GetType()`). - -String has two optional flags. `kCopyFlag` means that the string owns a copy of the string. `kInlineStrFlag` means using [Short-String Optimization](#ShortString). - -Number is a bit more complicated. For normal integer values, it can contains `kIntFlag`, `kUintFlag`, `kInt64Flag` and/or `kUint64Flag`, according to the range of the integer. For numbers with fraction, and integers larger than 64-bit range, they will be stored as `double` with `kDoubleFlag`. - -## Short-String Optimization {#ShortString} - - [Kosta](https://github.com/Kosta-Github) provided a very neat short-string optimization. The optimization idea is given as follow. Excluding the `flags_`, a `Value` has 12 or 16 bytes (32-bit or 64-bit) for storing actual data. Instead of storing a pointer to a string, it is possible to store short strings in these space internally. For encoding with 1-byte character type (e.g. `char`), it can store maximum 11 or 15 characters string inside the `Value` type. - -| ShortString (Ch=char) | |32-bit|64-bit| -|---------------------|-------------------------------------|:----:|:----:| -| `Ch str[MaxChars]` | String buffer |11 |15 | -| `Ch invLength` | MaxChars - Length |1 |1 | -| `unsigned flags_` | `kStringType kStringFlag ...` |4 |4 | - -A special technique is applied. Instead of storing the length of string directly, it stores (MaxChars - length). This make it possible to store 11 characters with trailing `\0`. - -This optimization can reduce memory usage for copy-string. It can also improve cache-coherence thus improve runtime performance. - -# Allocator {#InternalAllocator} - -`Allocator` is a concept in RapidJSON: -~~~cpp -concept Allocator { - static const bool kNeedFree; //!< Whether this allocator needs to call Free(). - - // Allocate a memory block. - // \param size of the memory block in bytes. - // \returns pointer to the memory block. - void* Malloc(size_t size); - - // Resize a memory block. - // \param originalPtr The pointer to current memory block. Null pointer is permitted. - // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.) - // \param newSize the new size in bytes. - void* Realloc(void* originalPtr, size_t originalSize, size_t newSize); - - // Free a memory block. - // \param pointer to the memory block. Null pointer is permitted. - static void Free(void *ptr); -}; -~~~ - -Note that `Malloc()` and `Realloc()` are member functions but `Free()` is static member function. - -## MemoryPoolAllocator {#MemoryPoolAllocator} - -`MemoryPoolAllocator` is the default allocator for DOM. It allocate but do not free memory. This is suitable for building a DOM tree. - -Internally, it allocates chunks of memory from the base allocator (by default `CrtAllocator`) and stores the chunks as a singly linked list. When user requests an allocation, it allocates memory from the following order: - -1. User supplied buffer if it is available. (See [User Buffer section in DOM](doc/dom.md)) -2. If user supplied buffer is full, use the current memory chunk. -3. If the current block is full, allocate a new block of memory. - -# Parsing Optimization {#ParsingOptimization} - -## Skip Whitespaces with SIMD {#SkipwhitespaceWithSIMD} - -When parsing JSON from a stream, the parser need to skip 4 whitespace characters: - -1. Space (`U+0020`) -2. Character Tabulation (`U+000B`) -3. Line Feed (`U+000A`) -4. Carriage Return (`U+000D`) - -A simple implementation will be simply: -~~~cpp -void SkipWhitespace(InputStream& s) { - while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek() == '\t') - s.Take(); -} -~~~ - -However, this requires 4 comparisons and a few branching for each character. This was found to be a hot spot. - -To accelerate this process, SIMD was applied to compare 16 characters with 4 white spaces for each iteration. Currently RapidJSON only supports SSE2 and SSE4.2 instructions for this. And it is only activated for UTF-8 memory streams, including string stream or *in situ* parsing. - -To enable this optimization, need to define `RAPIDJSON_SSE2` or `RAPIDJSON_SSE42` before including `rapidjson.h`. Some compilers can detect the setting, as in `perftest.h`: - -~~~cpp -// __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler. -// We use -march=native with gmake to enable -msse2 and -msse4.2, if supported. -#if defined(__SSE4_2__) -# define RAPIDJSON_SSE42 -#elif defined(__SSE2__) -# define RAPIDJSON_SSE2 -#endif -~~~ - -Note that, these are compile-time settings. Running the executable on a machine without such instruction set support will make it crash. - -### Page boundary issue - -In an early version of RapidJSON, [an issue](https://code.google.com/archive/p/rapidjson/issues/104) reported that the `SkipWhitespace_SIMD()` causes crash very rarely (around 1 in 500,000). After investigation, it is suspected that `_mm_loadu_si128()` accessed bytes after `'\0'`, and across a protected page boundary. - -In [Intel® 64 and IA-32 Architectures Optimization Reference Manual -](http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html), section 10.2.1: - -> To support algorithms requiring unaligned 128-bit SIMD memory accesses, memory buffer allocation by a caller function should consider adding some pad space so that a callee function can safely use the address pointer safely with unaligned 128-bit SIMD memory operations. -> The minimal padding size should be the width of the SIMD register that might be used in conjunction with unaligned SIMD memory access. - -This is not feasible as RapidJSON should not enforce such requirement. - -To fix this issue, currently the routine process bytes up to the next aligned address. After tha, use aligned read to perform SIMD processing. Also see [#85](https://github.com/miloyip/rapidjson/issues/85). - -## Local Stream Copy {#LocalStreamCopy} - -During optimization, it is found that some compilers cannot localize some member data access of streams into local variables or registers. Experimental results show that for some stream types, making a copy of the stream and used it in inner-loop can improve performance. For example, the actual (non-SIMD) implementation of `SkipWhitespace()` is implemented as: - -~~~cpp -template -void SkipWhitespace(InputStream& is) { - internal::StreamLocalCopy copy(is); - InputStream& s(copy.s); - - while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek() == '\t') - s.Take(); -} -~~~ - -Depending on the traits of stream, `StreamLocalCopy` will make (or not make) a copy of the stream object, use it locally and copy the states of stream back to the original stream. - -## Parsing to Double {#ParsingDouble} - -Parsing string into `double` is difficult. The standard library function `strtod()` can do the job but it is slow. By default, the parsers use normal precision setting. This has has maximum 3 [ULP](http://en.wikipedia.org/wiki/Unit_in_the_last_place) error and implemented in `internal::StrtodNormalPrecision()`. - -When using `kParseFullPrecisionFlag`, the parsers calls `internal::StrtodFullPrecision()` instead, and this function actually implemented 3 versions of conversion methods. -1. [Fast-Path](http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/). -2. Custom DIY-FP implementation as in [double-conversion](https://github.com/floitsch/double-conversion). -3. Big Integer Method as in (Clinger, William D. How to read floating point numbers accurately. Vol. 25. No. 6. ACM, 1990). - -If the first conversion methods fail, it will try the second, and so on. - -# Generation Optimization {#GenerationOptimization} - -## Integer-to-String conversion {#itoa} - -The naive algorithm for integer-to-string conversion involves division per each decimal digit. We have implemented various implementations and evaluated them in [itoa-benchmark](https://github.com/miloyip/itoa-benchmark). - -Although SSE2 version is the fastest but the difference is minor by comparing to the first running-up `branchlut`. And `branchlut` is pure C++ implementation so we adopt `branchlut` in RapidJSON. - -## Double-to-String conversion {#dtoa} - -Originally RapidJSON uses `snprintf(..., ..., "%g")` to achieve double-to-string conversion. This is not accurate as the default precision is 6. Later we also find that this is slow and there is an alternative. - -Google's V8 [double-conversion](https://github.com/floitsch/double-conversion -) implemented a newer, fast algorithm called Grisu3 (Loitsch, Florian. "Printing floating-point numbers quickly and accurately with integers." ACM Sigplan Notices 45.6 (2010): 233-243.). - -However, since it is not header-only so that we implemented a header-only version of Grisu2. This algorithm guarantees that the result is always accurate. And in most of cases it produces the shortest (optimal) string representation. - -The header-only conversion function has been evaluated in [dtoa-benchmark](https://github.com/miloyip/dtoa-benchmark). - -# Parser {#Parser} - -## Iterative Parser {#IterativeParser} - -The iterative parser is a recursive descent LL(1) parser -implemented in a non-recursive manner. - -### Grammar {#IterativeParserGrammar} - -The grammar used for this parser is based on strict JSON syntax: -~~~~~~~~~~ -S -> array | object -array -> [ values ] -object -> { members } -values -> non-empty-values | ε -non-empty-values -> value addition-values -addition-values -> ε | , non-empty-values -members -> non-empty-members | ε -non-empty-members -> member addition-members -addition-members -> ε | , non-empty-members -member -> STRING : value -value -> STRING | NUMBER | NULL | BOOLEAN | object | array -~~~~~~~~~~ - -Note that left factoring is applied to non-terminals `values` and `members` -to make the grammar be LL(1). - -### Parsing Table {#IterativeParserParsingTable} - -Based on the grammar, we can construct the FIRST and FOLLOW set. - -The FIRST set of non-terminals is listed below: - -| NON-TERMINAL | FIRST | -|:-----------------:|:--------------------------------:| -| array | [ | -| object | { | -| values | ε STRING NUMBER NULL BOOLEAN { [ | -| addition-values | ε COMMA | -| members | ε STRING | -| addition-members | ε COMMA | -| member | STRING | -| value | STRING NUMBER NULL BOOLEAN { [ | -| S | [ { | -| non-empty-members | STRING | -| non-empty-values | STRING NUMBER NULL BOOLEAN { [ | - -The FOLLOW set is listed below: - -| NON-TERMINAL | FOLLOW | -|:-----------------:|:-------:| -| S | $ | -| array | , $ } ] | -| object | , $ } ] | -| values | ] | -| non-empty-values | ] | -| addition-values | ] | -| members | } | -| non-empty-members | } | -| addition-members | } | -| member | , } | -| value | , } ] | - -Finally the parsing table can be constructed from FIRST and FOLLOW set: - -| NON-TERMINAL | [ | { | , | : | ] | } | STRING | NUMBER | NULL | BOOLEAN | -|:-----------------:|:---------------------:|:---------------------:|:-------------------:|:-:|:-:|:-:|:-----------------------:|:---------------------:|:---------------------:|:---------------------:| -| S | array | object | | | | | | | | | -| array | [ values ] | | | | | | | | | | -| object | | { members } | | | | | | | | | -| values | non-empty-values | non-empty-values | | | ε | | non-empty-values | non-empty-values | non-empty-values | non-empty-values | -| non-empty-values | value addition-values | value addition-values | | | | | value addition-values | value addition-values | value addition-values | value addition-values | -| addition-values | | | , non-empty-values | | ε | | | | | | -| members | | | | | | ε | non-empty-members | | | | -| non-empty-members | | | | | | | member addition-members | | | | -| addition-members | | | , non-empty-members | | | ε | | | | | -| member | | | | | | | STRING : value | | | | -| value | array | object | | | | | STRING | NUMBER | NULL | BOOLEAN | - -There is a great [tool](http://hackingoff.com/compilers/predict-first-follow-set) for above grammar analysis. - -### Implementation {#IterativeParserImplementation} - -Based on the parsing table, a direct(or conventional) implementation -that pushes the production body in reverse order -while generating a production could work. - -In RapidJSON, several modifications(or adaptations to current design) are made to a direct implementation. - -First, the parsing table is encoded in a state machine in RapidJSON. -States are constructed by the head and body of production. -State transitions are constructed by production rules. -Besides, extra states are added for productions involved with `array` and `object`. -In this way the generation of array values or object members would be a single state transition, -rather than several pop/push operations in the direct implementation. -This also makes the estimation of stack size more easier. - -The state diagram is shown as follows: - -![State Diagram](diagram/iterative-parser-states-diagram.png) - -Second, the iterative parser also keeps track of array's value count and object's member count -in its internal stack, which may be different from a conventional implementation. diff --git a/rapidjson-lib/doc/logo/rapidjson.png b/rapidjson-lib/doc/logo/rapidjson.png deleted file mode 100644 index b3b2f80ccb9ce8ce63c13cb3e80dc94d8f165ca3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5259 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 RrWpVL002ovPDHLkV1jI2B - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - RapidJSON - - diff --git a/rapidjson-lib/doc/misc/DoxygenLayout.xml b/rapidjson-lib/doc/misc/DoxygenLayout.xml deleted file mode 100644 index b7c9586..0000000 --- a/rapidjson-lib/doc/misc/DoxygenLayout.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rapidjson-lib/doc/misc/doxygenextra.css b/rapidjson-lib/doc/misc/doxygenextra.css deleted file mode 100644 index bd67375..0000000 --- a/rapidjson-lib/doc/misc/doxygenextra.css +++ /dev/null @@ -1,274 +0,0 @@ -body code { - margin: 0; - border: 1px solid #ddd; - background-color: #f8f8f8; - border-radius: 3px; - padding: 0; -} - -a { - color: #4183c4; -} - -a.el { - font-weight: normal; -} - -body, table, div, p, dl { - color: #333333; - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-size: 15px; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 25.5px; -} - -body { - background-color: #eee; -} - -div.header { - background-image: none; - background-color: white; - margin: 0px; - border: 0px; -} - -div.headertitle { - width: 858px; - margin: 30px; - padding: 0px; -} - -div.toc { - background-color: #f8f8f8; - border-color: #ddd; - margin-right: 10px; - margin-left: 20px; -} -div.toc h3 { - color: #333333; - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-size: 18px; - font-style: normal; - font-variant: normal; - font-weight: normal; -} -div.toc li { - color: #333333; - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-size: 12px; - font-style: normal; - font-variant: normal; - font-weight: normal; -} - -.title { - font-size: 2.5em; - line-height: 63.75px; - border-bottom: 1px solid #ddd; - margin-bottom: 15px; - margin-left: 0px; - margin-right: 0px; - margin-top: 0px; -} - -.summary { - float: none !important; - width: auto !important; - padding-top: 10px; - padding-right: 10px !important; -} - -.summary + .headertitle .title { - font-size: 1.5em; - line-height: 2.0em; -} - -body h1 { - font-size: 2em; - line-height: 1.7; - border-bottom: 1px solid #eee; - margin: 1em 0 15px; - padding: 0; - overflow: hidden; -} - -body h2 { - font-size: 1.5em; - line-height: 1.7; - margin: 1em 0 15px; - padding: 0; -} - -pre.fragment { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 13px; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 19px; -} - -table.doxtable th { - background-color: #f8f8f8; - color: #333333; - font-size: 15px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #ddd; -} - -#doc-content { - background-color: #fff; - width: 918px; - height: auto !important; - margin-left: 270px !important; -} - -div.contents { - width: 858px; - margin: 30px; -} - -div.line { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 13px; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 19px; -} - -tt, code, pre { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 12px; -} - -div.fragment { - background-color: #f8f8f8; - border: 1px solid #ddd; - font-size: 13px; - line-height: 19px; - overflow: auto; - padding: 6px 10px; - border-radius: 3px; -} - -#topbanner { - position: fixed; - margin: 15px; - z-index: 101; -} - -#projectname -{ - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-size: 38px; - font-weight: bold; - line-height: 63.75px; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-size: 16px; - line-height: 22.4px; - margin: 0px 0px 13px 0px; - padding: 2px; -} - -/* side bar and search */ - -#side-nav -{ - padding: 10px 0px 20px 20px; - border-top: 60px solid #2980b9; - background-color: #343131; - width: 250px !important; - height: 100% !important; - position: fixed; -} - -#nav-tree -{ - background-color: transparent; - background-image: none; - height: 100% !important; -} - -#nav-tree .label -{ - font-family: Helvetica, arial, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; - line-height: 25.5px; - font-size: 15px; -} - -#nav-tree -{ - color: #b3b3b3; -} - -#nav-tree .selected { - background-image: none; -} - -#nav-tree a -{ - color: #b3b3b3; -} - -#github -{ - position: fixed; - left: auto; - right: auto; - width: 250px; -} - -#MSearchBox -{ - margin: 20px; - left: 40px; - right: auto; - position: fixed; - width: 180px; -} - -#MSearchField -{ - width: 121px; -} - -#MSearchResultsWindow -{ - left: 45px !important; -} - -#nav-sync -{ - display: none; -} - -.ui-resizable .ui-resizable-handle -{ - width: 0px; -} - -#nav-path -{ - display: none; -} - -/* external link icon */ -div.contents a[href ^= "http"]:after { - content: " " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=); -} - -.githublogo { - content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RERCMUIwOUY4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RERCMUIwOUU4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJBOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJCOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jUqS1wAAApVJREFUeNq0l89rE1EQx3e3gVJoSPzZeNEWPKgHoa0HBak0iHiy/4C3WvDmoZ56qJ7txVsPQu8qlqqHIhRKJZceesmhioQEfxTEtsoSpdJg1u/ABJ7Pmc1m8zLwgWTmzcw3L+/te+tHUeQltONgCkyCi2AEDHLsJ6iBMlgHL8FeoqokoA2j4CloRMmtwTmj7erHBXPgCWhG6a3JNXKdCiDl1cidVbXZkJoXQRi5t5BrxwoY71FzU8S4JuAIqFkJ2+BFSlEh525b/hr3+k/AklDkNsf6wTT4yv46KIMNpsy+iMdMc47HNWxbsgVcUn7FmLAzzoFAWDsBx+wVP6bUpp5ewI+DOeUx0Wd9D8F70BTGNjkWtqnhmT1JQAHcUgZd8Lo3rQb1LAT8eJVUfgGvHQigGp+V2Z0iAUUl8QH47kAA1XioxIo+bRN8OG8F/oBjwv+Z1nJgX5jpdzQDw0LCjsPmrcW7I/iHScCAEDj03FtD8A0EyuChHgg4KTlJQF3wZ7WELppnBX+dBFSVpJsOBWi1qiRgSwnOgoyD5hmuJdkWCVhTgnTvW3AgYIFrSbZGh0UW/Io5Vp+DQoK7o80pztWMemZbgxeNwCNwDbw1fIfgGZjhU6xPaJgBV8BdsMw5cbZoHsenwYFxkZzl83xTSKTiviCAfCsJLysH3POfC8m8NegyGAGfLP/VmGmfSChgXroR0RSWjEFv2J/nG84cuKFMf4sTCZqXuJd4KaXFVjEG3+tw4eXbNK/YC9oXXs3O8NY8y99L4BXY5cvLY/Bb2VZ58EOJVcB18DHJq9lRsKr8inyKGVjlmh29mtHs3AHfuhCwy1vXT/Nu2GKQt+UHsGdctyX6eQyNvc+5sfX9Dl7Pe2J/BRgAl2CpwmrsHR0AAAAASUVORK5CYII=); -} \ No newline at end of file diff --git a/rapidjson-lib/doc/misc/footer.html b/rapidjson-lib/doc/misc/footer.html deleted file mode 100644 index 77f1131..0000000 --- a/rapidjson-lib/doc/misc/footer.html +++ /dev/null @@ -1,11 +0,0 @@ - - - -

    - - - diff --git a/rapidjson-lib/doc/misc/header.html b/rapidjson-lib/doc/misc/header.html deleted file mode 100644 index 2dbe721..0000000 --- a/rapidjson-lib/doc/misc/header.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - -$projectname: $title -$title - - - -$treeview -$search -$mathjax - -$extrastylesheet - - -
    -
    -$searchbox - - diff --git a/rapidjson-lib/doc/npm.md b/rapidjson-lib/doc/npm.md deleted file mode 100644 index 5efa768..0000000 --- a/rapidjson-lib/doc/npm.md +++ /dev/null @@ -1,31 +0,0 @@ -## NPM - -# package.json {#package} - -~~~~~~~~~~js -{ - ... - "dependencies": { - ... - "rapidjson": "git@github.com:miloyip/rapidjson.git" - }, - ... - "gypfile": true -} -~~~~~~~~~~ - -# binding.gyp {#binding} - -~~~~~~~~~~js -{ - ... - 'targets': [ - { - ... - 'include_dirs': [ - 'SetInt(stars->GetInt() + 1); - -// { "project" : "RapidJSON", "stars" : 11 } - -// Set() and Create() automatically generate parents if not exist. -Pointer("/a/b/0").Create(d); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] } } - -// GetWithDefault() returns reference. And it deep clones the default value. -Value& hello = Pointer("/hello").GetWithDefault(d, "world"); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] }, "hello" : "world" } - -// Swap() is similar to Set() -Value x("C++"); -Pointer("/hello").Swap(d, x); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] }, "hello" : "C++" } -// x becomes "world" - -// Erase a member or element, return true if the value exists -bool success = Pointer("/a").Erase(d); -assert(success); - -// { "project" : "RapidJSON", "stars" : 10 } -~~~ - -# Helper Functions {#HelperFunctions} - -Since object-oriented calling convention may be non-intuitive, RapidJSON also provides helper functions, which just wrap the member functions with free-functions. - -The following example does exactly the same as the above one. - -~~~cpp -Document d; - -SetValueByPointer(d, "/project", "RapidJSON"); -SetValueByPointer(d, "/stars", 10); - -if (Value* stars = GetValueByPointer(d, "/stars")) - stars->SetInt(stars->GetInt() + 1); - -CreateValueByPointer(d, "/a/b/0"); - -Value& hello = GetValueByPointerWithDefault(d, "/hello", "world"); - -Value x("C++"); -SwapValueByPointer(d, "/hello", x); - -bool success = EraseValueByPointer(d, "/a"); -assert(success); -~~~ - -The conventions are shown here for comparison: - -1. `Pointer(source).(root, ...)` -2. `ValueByPointer(root, Pointer(source), ...)` -3. `ValueByPointer(root, source, ...)` - -# Resolving Pointer {#ResolvingPointer} - -`Pointer::Get()` or `GetValueByPointer()` function does not modify the DOM. If the tokens cannot match a value in the DOM, it returns `nullptr`. User can use this to check whether a value exists. - -Note that, numerical tokens can represent an array index or member name. The resolving process will match the values according to the types of value. - -~~~javascript -{ - "0" : 123, - "1" : [456] -} -~~~ - -1. `"/0"` → `123` -2. `"/1/0"` → `456` - -The token `"0"` is treated as member name in the first pointer. It is treated as an array index in the second pointer. - -The other functions, including `Create()`, `GetWithDefault()`, `Set()` and `Swap()`, will change the DOM. These functions will always succeed. They will create the parent values if they do not exist. If the parent values do not match the tokens, they will also be forced to change their type. Changing the type also mean fully removal of that DOM subtree. - -Parsing the above JSON into `d`, - -~~~cpp -SetValueByPointer(d, "1/a", 789); // { "0" : 123, "1" : { "a" : 789 } } -~~~ - -## Resolving Minus Sign Token - -Besides, [RFC6901] defines a special token `-` (single minus sign), which represents the pass-the-end element of an array. `Get()` only treats this token as a member name '"-"'. Yet the other functions can resolve this for array, equivalent to calling `Value::PushBack()` to the array. - -~~~cpp -Document d; -d.Parse("{\"foo\":[123]}"); -SetValueByPointer(d, "/foo/-", 456); // { "foo" : [123, 456] } -SetValueByPointer(d, "/-", 789); // { "foo" : [123, 456], "-" : 789 } -~~~ - -## Resolving Document and Value - -When using `p.Get(root)` or `GetValueByPointer(root, p)`, `root` is a (const) `Value&`. That means, it can be a subtree of the DOM. - -The other functions have two groups of signature. One group uses `Document& document` as parameter, another one uses `Value& root`. The first group uses `document.GetAllocator()` for creating values. And the second group needs user to supply an allocator, like the functions in DOM. - -All examples above do not require an allocator parameter, because the first parameter is a `Document&`. But if you want to resolve a pointer to a subtree, you need to supply the allocator as in the following example: - -~~~cpp -class Person { -public: - Person() { - document_ = new Document(); - // CreateValueByPointer() here no need allocator - SetLocation(CreateValueByPointer(*document_, "/residence"), ...); - SetLocation(CreateValueByPointer(*document_, "/office"), ...); - }; - -private: - void SetLocation(Value& location, const char* country, const char* addresses[2]) { - Value::Allocator& a = document_->GetAllocator(); - // SetValueByPointer() here need allocator - SetValueByPointer(location, "/country", country, a); - SetValueByPointer(location, "/address/0", address[0], a); - SetValueByPointer(location, "/address/1", address[1], a); - } - - // ... - - Document* document_; -}; -~~~ - -`Erase()` or `EraseValueByPointer()` does not need allocator. And they return `true` if the value is erased successfully. - -# Error Handling {#ErrorHandling} - -A `Pointer` parses a source string in its constructor. If there is parsing error, `Pointer::IsValid()` returns `false`. And you can use `Pointer::GetParseErrorCode()` and `GetParseErrorOffset()` to retrieve the error information. - -Note that, all resolving functions assumes valid pointer. Resolving with an invalid pointer causes assertion failure. - -# URI Fragment Representation {#URIFragment} - -In addition to the string representation of JSON pointer that we are using till now, [RFC6901] also defines the URI fragment representation of JSON pointer. URI fragment is specified in [RFC3986] "Uniform Resource Identifier (URI): Generic Syntax". - -The main differences are that a the URI fragment always has a `#` (pound sign) in the beginning, and some characters are encoded by percent-encoding in UTF-8 sequence. For example, the following table shows different C/C++ string literals of different representations. - -String Representation | URI Fragment Representation | Pointer Tokens (UTF-8) -----------------------|-----------------------------|------------------------ -`"/foo/0"` | `"#/foo/0"` | `{"foo", 0}` -`"/a~1b"` | `"#/a~1b"` | `{"a/b"}` -`"/m~0n"` | `"#/m~0n"` | `{"m~n"}` -`"/ "` | `"#/%20"` | `{" "}` -`"/\0"` | `"#/%00"` | `{"\0"}` -`"/€"` | `"#/%E2%82%AC"` | `{"€"}` - -RapidJSON fully support URI fragment representation. It automatically detects the pound sign during parsing. - -# Stringify - -You may also stringify a `Pointer` to a string or other output streams. This can be done by: - -~~~ -Pointer p(...); -StringBuffer sb; -p.Stringify(sb); -std::cout << sb.GetString() << std::endl; -~~~ - -It can also stringify to URI fragment reprsentation by `StringifyUriFragment()`. - -# User-Supplied Tokens {#UserSuppliedTokens} - -If a pointer will be resolved multiple times, it should be constructed once, and then apply it to different DOMs or in different times. This reduce time and memory allocation for constructing `Pointer` multiple times. - -We can go one step further, to completely eliminate the parsing process and dynamic memory allocation, we can establish the token array directly: - -~~~cpp -#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } -#define INDEX(i) { #i, sizeof(#i) - 1, i } - -static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) }; -static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); -// Equivalent to static const Pointer p("/foo/123"); -~~~ - -This may be useful for memory constrained systems. - -[RFC3986]: https://tools.ietf.org/html/rfc3986 -[RFC6901]: https://tools.ietf.org/html/rfc6901 diff --git a/rapidjson-lib/doc/pointer.zh-cn.md b/rapidjson-lib/doc/pointer.zh-cn.md deleted file mode 100644 index f58f55f..0000000 --- a/rapidjson-lib/doc/pointer.zh-cn.md +++ /dev/null @@ -1,234 +0,0 @@ -# Pointer - -(本功能于 v1.1.0 发布) - -JSON Pointer 是一个标准化([RFC6901])的方式去选取一个 JSON Document(DOM)中的值。这类似于 XML 的 XPath。然而,JSON Pointer 简单得多,而且每个 JSON Pointer 仅指向单个值。 - -使用 RapidJSON 的 JSON Pointer 实现能简化一些 DOM 的操作。 - -[TOC] - -# JSON Pointer {#JsonPointer} - -一个 JSON Pointer 由一串(零至多个)token 所组成,每个 token 都有 `/` 前缀。每个 token 可以是一个字符串或数字。例如,给定一个 JSON: -~~~javascript -{ - "foo" : ["bar", "baz"], - "pi" : 3.1416 -} -~~~ - -以下的 JSON Pointer 解析为: - -1. `"/foo"` → `[ "bar", "baz" ]` -2. `"/foo/0"` → `"bar"` -3. `"/foo/1"` → `"baz"` -4. `"/pi"` → `3.1416` - -要注意,一个空 JSON Pointer `""` (零个 token)解析为整个 JSON。 - -# 基本使用方法 {#BasicUsage} - -以下的代码范例不解自明。 - -~~~cpp -#include "rapidjson/pointer.h" - -// ... -Document d; - -// 使用 Set() 创建 DOM -Pointer("/project").Set(d, "RapidJSON"); -Pointer("/stars").Set(d, 10); - -// { "project" : "RapidJSON", "stars" : 10 } - -// 使用 Get() 访问 DOM。若该值不存在则返回 nullptr。 -if (Value* stars = Pointer("/stars").Get(d)) - stars->SetInt(stars->GetInt() + 1); - -// { "project" : "RapidJSON", "stars" : 11 } - -// Set() 和 Create() 自动生成父值(如果它们不存在)。 -Pointer("/a/b/0").Create(d); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] } } - -// GetWithDefault() 返回引用。若该值不存在则会深拷贝缺省值。 -Value& hello = Pointer("/hello").GetWithDefault(d, "world"); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] }, "hello" : "world" } - -// Swap() 和 Set() 相似 -Value x("C++"); -Pointer("/hello").Swap(d, x); - -// { "project" : "RapidJSON", "stars" : 11, "a" : { "b" : [ null ] }, "hello" : "C++" } -// x 变成 "world" - -// 删去一个成员或元素,若值存在返回 true -bool success = Pointer("/a").Erase(d); -assert(success); - -// { "project" : "RapidJSON", "stars" : 10 } -~~~ - -# 辅助函数 {#HelperFunctions} - -由于面向对象的调用习惯可能不符直觉,RapidJSON 也提供了一些辅助函数,它们把成员函数包装成自由函数。 - -以下的例子与上面例子所做的事情完全相同。 - -~~~cpp -Document d; - -SetValueByPointer(d, "/project", "RapidJSON"); -SetValueByPointer(d, "/stars", 10); - -if (Value* stars = GetValueByPointer(d, "/stars")) - stars->SetInt(stars->GetInt() + 1); - -CreateValueByPointer(d, "/a/b/0"); - -Value& hello = GetValueByPointerWithDefault(d, "/hello", "world"); - -Value x("C++"); -SwapValueByPointer(d, "/hello", x); - -bool success = EraseValueByPointer(d, "/a"); -assert(success); -~~~ - -以下对比 3 种调用方式: - -1. `Pointer(source).(root, ...)` -2. `ValueByPointer(root, Pointer(source), ...)` -3. `ValueByPointer(root, source, ...)` - -# 解析 Pointer {#ResolvingPointer} - -`Pointer::Get()` 或 `GetValueByPointer()` 函数并不修改 DOM。若那些 token 不能匹配 DOM 里的值,这些函数便返回 `nullptr`。使用者可利用这个方法来检查一个值是否存在。 - -注意,数值 token 可表示数组索引或成员名字。解析过程中会按值的类型来匹配。 - -~~~javascript -{ - "0" : 123, - "1" : [456] -} -~~~ - -1. `"/0"` → `123` -2. `"/1/0"` → `456` - -Token `"0"` 在第一个 pointer 中被当作成员名字。它在第二个 pointer 中被当作成数组索引。 - -其他函数会改变 DOM,包括 `Create()`、`GetWithDefault()`、`Set()`、`Swap()`。这些函数总是成功的。若一些父值不存在,就会创建它们。若父值类型不匹配 token,也会强行改变其类型。改变类型也意味着完全移除其 DOM 子树的内容。 - -例如,把上面的 JSON 解译至 `d` 之后, - -~~~cpp -SetValueByPointer(d, "1/a", 789); // { "0" : 123, "1" : { "a" : 789 } } -~~~ - -## 解析负号 token - -另外,[RFC6901] 定义了一个特殊 token `-` (单个负号),用于表示数组最后元素的下一个元素。 `Get()` 只会把此 token 当作成员名字 '"-"'。而其他函数则会以此解析数组,等同于对数组调用 `Value::PushBack()` 。 - -~~~cpp -Document d; -d.Parse("{\"foo\":[123]}"); -SetValueByPointer(d, "/foo/-", 456); // { "foo" : [123, 456] } -SetValueByPointer(d, "/-", 789); // { "foo" : [123, 456], "-" : 789 } -~~~ - -## 解析 Document 及 Value - -当使用 `p.Get(root)` 或 `GetValueByPointer(root, p)`,`root` 是一个(常数) `Value&`。这意味着,它也可以是 DOM 里的一个子树。 - -其他函数有两组签名。一组使用 `Document& document` 作为参数,另一组使用 `Value& root`。第一组使用 `document.GetAllocator()` 去创建值,而第二组则需要使用者提供一个 allocator,如同 DOM 里的函数。 - -以上例子都不需要 allocator 参数,因为它的第一个参数是 `Document&`。但如果你需要对一个子树进行解析,就需要如下面的例子般提供 allocator: - -~~~cpp -class Person { -public: - Person() { - document_ = new Document(); - // CreateValueByPointer() here no need allocator - SetLocation(CreateValueByPointer(*document_, "/residence"), ...); - SetLocation(CreateValueByPointer(*document_, "/office"), ...); - }; - -private: - void SetLocation(Value& location, const char* country, const char* addresses[2]) { - Value::Allocator& a = document_->GetAllocator(); - // SetValueByPointer() here need allocator - SetValueByPointer(location, "/country", country, a); - SetValueByPointer(location, "/address/0", address[0], a); - SetValueByPointer(location, "/address/1", address[1], a); - } - - // ... - - Document* document_; -}; -~~~ - -`Erase()` 或 `EraseValueByPointer()` 不需要 allocator。而且它们成功删除值之后会返回 `true`。 - -# 错误处理 {#ErrorHandling} - -`Pointer` 在其建构函数里会解译源字符串。若有解析错误,`Pointer::IsValid()` 返回 `false`。你可使用 `Pointer::GetParseErrorCode()` 和 `GetParseErrorOffset()` 去获取错信息。 - -要注意的是,所有解析函数都假设 pointer 是合法的。对一个非法 pointer 解析会做成断言失败。 - -# URI 片段表示方式 {#URIFragment} - -除了我们一直在使用的字符串方式表示 JSON pointer,[RFC6901] 也定义了一个 JSON Pointer 的 URI 片段(fragment)表示方式。URI 片段是定义于 [RFC3986] "Uniform Resource Identifier (URI): Generic Syntax"。 - -URI 片段的主要分别是必然以 `#` (pound sign)开头,而一些字符也会以百分比编码成 UTF-8 序列。例如,以下的表展示了不同表示法下的 C/C++ 字符串常数。 - -字符串表示方式 | URI 片段表示方式 | Pointer Tokens (UTF-8) -----------------------|-----------------------------|------------------------ -`"/foo/0"` | `"#/foo/0"` | `{"foo", 0}` -`"/a~1b"` | `"#/a~1b"` | `{"a/b"}` -`"/m~0n"` | `"#/m~0n"` | `{"m~n"}` -`"/ "` | `"#/%20"` | `{" "}` -`"/\0"` | `"#/%00"` | `{"\0"}` -`"/€"` | `"#/%E2%82%AC"` | `{"€"}` - -RapidJSON 完全支持 URI 片段表示方式。它在解译时会自动检测 `#` 号。 - -# 字符串化 - -你也可以把一个 `Pointer` 字符串化,储存于字符串或其他输出流。例如: - -~~~ -Pointer p(...); -StringBuffer sb; -p.Stringify(sb); -std::cout << sb.GetString() << std::endl; -~~~ - -使用 `StringifyUriFragment()` 可以把 pointer 字符串化为 URI 片段表示法。 - -# 使用者提供的 tokens {#UserSuppliedTokens} - -若一个 pointer 会用于多次解析,它应该只被创建一次,然后再施于不同的 DOM ,或在不同时间做解析。这样可以避免多次创键 `Pointer`,节省时间和内存分配。 - -我们甚至可以再更进一步,完全消去解析过程及动态内存分配。我们可以直接生成 token 数组: - -~~~cpp -#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } -#define INDEX(i) { #i, sizeof(#i) - 1, i } - -static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) }; -static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); -// Equivalent to static const Pointer p("/foo/123"); -~~~ - -这种做法可能适合内存受限的系统。 - -[RFC3986]: https://tools.ietf.org/html/rfc3986 -[RFC6901]: https://tools.ietf.org/html/rfc6901 diff --git a/rapidjson-lib/doc/sax.md b/rapidjson-lib/doc/sax.md deleted file mode 100644 index 1d4fc2a..0000000 --- a/rapidjson-lib/doc/sax.md +++ /dev/null @@ -1,486 +0,0 @@ -# SAX - -The term "SAX" originated from [Simple API for XML](http://en.wikipedia.org/wiki/Simple_API_for_XML). We borrowed this term for JSON parsing and generation. - -In RapidJSON, `Reader` (typedef of `GenericReader<...>`) is the SAX-style parser for JSON, and `Writer` (typedef of `GenericWriter<...>`) is the SAX-style generator for JSON. - -[TOC] - -# Reader {#Reader} - -`Reader` parses a JSON from a stream. While it reads characters from the stream, it analyze the characters according to the syntax of JSON, and publish events to a handler. - -For example, here is a JSON. - -~~~~~~~~~~js -{ - "hello": "world", - "t": true , - "f": false, - "n": null, - "i": 123, - "pi": 3.1416, - "a": [1, 2, 3, 4] -} -~~~~~~~~~~ - -While a `Reader` parses this JSON, it publishes the following events to the handler sequentially: - -~~~~~~~~~~ -StartObject() -Key("hello", 5, true) -String("world", 5, true) -Key("t", 1, true) -Bool(true) -Key("f", 1, true) -Bool(false) -Key("n", 1, true) -Null() -Key("i") -UInt(123) -Key("pi") -Double(3.1416) -Key("a") -StartArray() -Uint(1) -Uint(2) -Uint(3) -Uint(4) -EndArray(4) -EndObject(7) -~~~~~~~~~~ - -These events can be easily matched with the JSON, except some event parameters need further explanation. Let's see the `simplereader` example which produces exactly the same output as above: - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include - -using namespace rapidjson; -using namespace std; - -struct MyHandler : public BaseReaderHandler, MyHandler> { - bool Null() { cout << "Null()" << endl; return true; } - bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; } - bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; } - bool Uint(unsigned u) { cout << "Uint(" << u << ")" << endl; return true; } - bool Int64(int64_t i) { cout << "Int64(" << i << ")" << endl; return true; } - bool Uint64(uint64_t u) { cout << "Uint64(" << u << ")" << endl; return true; } - bool Double(double d) { cout << "Double(" << d << ")" << endl; return true; } - bool String(const char* str, SizeType length, bool copy) { - cout << "String(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool StartObject() { cout << "StartObject()" << endl; return true; } - bool Key(const char* str, SizeType length, bool copy) { - cout << "Key(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool EndObject(SizeType memberCount) { cout << "EndObject(" << memberCount << ")" << endl; return true; } - bool StartArray() { cout << "StartArray()" << endl; return true; } - bool EndArray(SizeType elementCount) { cout << "EndArray(" << elementCount << ")" << endl; return true; } -}; - -void main() { - const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - - MyHandler handler; - Reader reader; - StringStream ss(json); - reader.Parse(ss, handler); -} -~~~~~~~~~~ - -Note that, RapidJSON uses template to statically bind the `Reader` type and the handler type, instead of using class with virtual functions. This paradigm can improve the performance by inlining functions. - -## Handler {#Handler} - -As the previous example showed, user needs to implement a handler, which consumes the events (function calls) from `Reader`. The handler must contain the following member functions. - -~~~~~~~~~~cpp -class Handler { - bool Null(); - bool Bool(bool b); - bool Int(int i); - bool Uint(unsigned i); - bool Int64(int64_t i); - bool Uint64(uint64_t i); - bool Double(double d); - bool RawNumber(const Ch* str, SizeType length, bool copy); - bool String(const Ch* str, SizeType length, bool copy); - bool StartObject(); - bool Key(const Ch* str, SizeType length, bool copy); - bool EndObject(SizeType memberCount); - bool StartArray(); - bool EndArray(SizeType elementCount); -}; -~~~~~~~~~~ - -`Null()` is called when the `Reader` encounters a JSON null value. - -`Bool(bool)` is called when the `Reader` encounters a JSON true or false value. - -When the `Reader` encounters a JSON number, it chooses a suitable C++ type mapping. And then it calls *one* function out of `Int(int)`, `Uint(unsigned)`, `Int64(int64_t)`, `Uint64(uint64_t)` and `Double(double)`. If `kParseNumbersAsStrings` is enabled, `Reader` will always calls `RawNumber()` instead. - -`String(const char* str, SizeType length, bool copy)` is called when the `Reader` encounters a string. The first parameter is pointer to the string. The second parameter is the length of the string (excluding the null terminator). Note that RapidJSON supports null character `'\0'` inside a string. If such situation happens, `strlen(str) < length`. The last `copy` indicates whether the handler needs to make a copy of the string. For normal parsing, `copy = true`. Only when *insitu* parsing is used, `copy = false`. And beware that, the character type depends on the target encoding, which will be explained later. - -When the `Reader` encounters the beginning of an object, it calls `StartObject()`. An object in JSON is a set of name-value pairs. If the object contains members it first calls `Key()` for the name of member, and then calls functions depending on the type of the value. These calls of name-value pairs repeats until calling `EndObject(SizeType memberCount)`. Note that the `memberCount` parameter is just an aid for the handler, user may not need this parameter. - -Array is similar to object but simpler. At the beginning of an array, the `Reader` calls `BeginArary()`. If there is elements, it calls functions according to the types of element. Similarly, in the last call `EndArray(SizeType elementCount)`, the parameter `elementCount` is just an aid for the handler. - -Every handler functions returns a `bool`. Normally it should returns `true`. If the handler encounters an error, it can return `false` to notify event publisher to stop further processing. - -For example, when we parse a JSON with `Reader` and the handler detected that the JSON does not conform to the required schema, then the handler can return `false` and let the `Reader` stop further parsing. And the `Reader` will be in error state with error code `kParseErrorTermination`. - -## GenericReader {#GenericReader} - -As mentioned before, `Reader` is a typedef of a template class `GenericReader`: - -~~~~~~~~~~cpp -namespace rapidjson { - -template > -class GenericReader { - // ... -}; - -typedef GenericReader, UTF8<> > Reader; - -} // namespace rapidjson -~~~~~~~~~~ - -The `Reader` uses UTF-8 as both source and target encoding. The source encoding means the encoding in the JSON stream. The target encoding means the encoding of the `str` parameter in `String()` calls. For example, to parse a UTF-8 stream and outputs UTF-16 string events, you can define a reader by: - -~~~~~~~~~~cpp -GenericReader, UTF16<> > reader; -~~~~~~~~~~ - -Note that, the default character type of `UTF16` is `wchar_t`. So this `reader`needs to call `String(const wchar_t*, SizeType, bool)` of the handler. - -The third template parameter `Allocator` is the allocator type for internal data structure (actually a stack). - -## Parsing {#SaxParsing} - -The one and only one function of `Reader` is to parse JSON. - -~~~~~~~~~~cpp -template -bool Parse(InputStream& is, Handler& handler); - -// with parseFlags = kDefaultParseFlags -template -bool Parse(InputStream& is, Handler& handler); -~~~~~~~~~~ - -If an error occurs during parsing, it will return `false`. User can also calls `bool HasParseEror()`, `ParseErrorCode GetParseErrorCode()` and `size_t GetErrorOffset()` to obtain the error states. Actually `Document` uses these `Reader` functions to obtain parse errors. Please refer to [DOM](doc/dom.md) for details about parse error. - -# Writer {#Writer} - -`Reader` converts (parses) JSON into events. `Writer` does exactly the opposite. It converts events into JSON. - -`Writer` is very easy to use. If your application only need to converts some data into JSON, it may be a good choice to use `Writer` directly, instead of building a `Document` and then stringifying it with a `Writer`. - -In `simplewriter` example, we do exactly the reverse of `simplereader`. - -~~~~~~~~~~cpp -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; -using namespace std; - -void main() { - StringBuffer s; - Writer writer(s); - - writer.StartObject(); - writer.Key("hello"); - writer.String("world"); - writer.Key("t"); - writer.Bool(true); - writer.Key("f"); - writer.Bool(false); - writer.Key("n"); - writer.Null(); - writer.Key("i"); - writer.Uint(123); - writer.Key("pi"); - writer.Double(3.1416); - writer.Key("a"); - writer.StartArray(); - for (unsigned i = 0; i < 4; i++) - writer.Uint(i); - writer.EndArray(); - writer.EndObject(); - - cout << s.GetString() << endl; -} -~~~~~~~~~~ - -~~~~~~~~~~ -{"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]} -~~~~~~~~~~ - -There are two `String()` and `Key()` overloads. One is the same as defined in handler concept with 3 parameters. It can handle string with null characters. Another one is the simpler version used in the above example. - -Note that, the example code does not pass any parameters in `EndArray()` and `EndObject()`. An `SizeType` can be passed but it will be simply ignored by `Writer`. - -You may doubt that, why not just using `sprintf()` or `std::stringstream` to build a JSON? - -There are various reasons: -1. `Writer` must output a well-formed JSON. If there is incorrect event sequence (e.g. `Int()` just after `StartObject()`), it generates assertion fail in debug mode. -2. `Writer::String()` can handle string escaping (e.g. converting code point `U+000A` to `\n`) and Unicode transcoding. -3. `Writer` handles number output consistently. -4. `Writer` implements the event handler concept. It can be used to handle events from `Reader`, `Document` or other event publisher. -5. `Writer` can be optimized for different platforms. - -Anyway, using `Writer` API is even simpler than generating a JSON by ad hoc methods. - -## Template {#WriterTemplate} - -`Writer` has a minor design difference to `Reader`. `Writer` is a template class, not a typedef. There is no `GenericWriter`. The following is the declaration. - -~~~~~~~~~~cpp -namespace rapidjson { - -template, typename TargetEncoding = UTF8<>, typename Allocator = CrtAllocator<>, unsigned writeFlags = kWriteDefaultFlags> -class Writer { -public: - Writer(OutputStream& os, Allocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) -// ... -}; - -} // namespace rapidjson -~~~~~~~~~~ - -The `OutputStream` template parameter is the type of output stream. It cannot be deduced and must be specified by user. - -The `SourceEncoding` template parameter specifies the encoding to be used in `String(const Ch*, ...)`. - -The `TargetEncoding` template parameter specifies the encoding in the output stream. - -The `Allocator` is the type of allocator, which is used for allocating internal data structure (a stack). - -The `writeFlags` are combination of the following bit-flags: - -Parse flags | Meaning -------------------------------|----------------------------------- -`kWriteNoFlags` | No flag is set. -`kWriteDefaultFlags` | Default write flags. It is equal to macro `RAPIDJSON_WRITE_DEFAULT_FLAGS`, which is defined as `kWriteNoFlags`. -`kWriteValidateEncodingFlag` | Validate encoding of JSON strings. -`kWriteNanAndInfFlag` | Allow writing of `Infinity`, `-Infinity` and `NaN`. - -Besides, the constructor of `Writer` has a `levelDepth` parameter. This parameter affects the initial memory allocated for storing information per hierarchy level. - -## PrettyWriter {#PrettyWriter} - -While the output of `Writer` is the most condensed JSON without white-spaces, suitable for network transfer or storage, it is not easily readable by human. - -Therefore, RapidJSON provides a `PrettyWriter`, which adds indentation and line feeds in the output. - -The usage of `PrettyWriter` is exactly the same as `Writer`, expect that `PrettyWriter` provides a `SetIndent(Ch indentChar, unsigned indentCharCount)` function. The default is 4 spaces. - -## Completeness and Reset {#CompletenessReset} - -A `Writer` can only output a single JSON, which can be any JSON type at the root. Once the singular event for root (e.g. `String()`), or the last matching `EndObject()` or `EndArray()` event, is handled, the output JSON is well-formed and complete. User can detect this state by calling `Writer::IsComplete()`. - -When a JSON is complete, the `Writer` cannot accept any new events. Otherwise the output will be invalid (i.e. having more than one root). To reuse the `Writer` object, user can call `Writer::Reset(OutputStream& os)` to reset all internal states of the `Writer` with a new output stream. - -# Techniques {#SaxTechniques} - -## Parsing JSON to Custom Data Structure {#CustomDataStructure} - -`Document`'s parsing capability is completely based on `Reader`. Actually `Document` is a handler which receives events from a reader to build a DOM during parsing. - -User may uses `Reader` to build other data structures directly. This eliminates building of DOM, thus reducing memory and improving performance. - -In the following `messagereader` example, `ParseMessages()` parses a JSON which should be an object with key-string pairs. - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include "rapidjson/error/en.h" -#include -#include -#include - -using namespace std; -using namespace rapidjson; - -typedef map MessageMap; - -struct MessageHandler - : public BaseReaderHandler, MessageHandler> { - MessageHandler() : state_(kExpectObjectStart) { - } - - bool StartObject() { - switch (state_) { - case kExpectObjectStart: - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool String(const char* str, SizeType length, bool) { - switch (state_) { - case kExpectNameOrObjectEnd: - name_ = string(str, length); - state_ = kExpectValue; - return true; - case kExpectValue: - messages_.insert(MessageMap::value_type(name_, string(str, length))); - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool EndObject(SizeType) { return state_ == kExpectNameOrObjectEnd; } - - bool Default() { return false; } // All other events are invalid. - - MessageMap messages_; - enum State { - kExpectObjectStart, - kExpectNameOrObjectEnd, - kExpectValue, - }state_; - std::string name_; -}; - -void ParseMessages(const char* json, MessageMap& messages) { - Reader reader; - MessageHandler handler; - StringStream ss(json); - if (reader.Parse(ss, handler)) - messages.swap(handler.messages_); // Only change it if success. - else { - ParseErrorCode e = reader.GetParseErrorCode(); - size_t o = reader.GetErrorOffset(); - cout << "Error: " << GetParseError_En(e) << endl;; - cout << " at offset " << o << " near '" << string(json).substr(o, 10) << "...'" << endl; - } -} - -int main() { - MessageMap messages; - - const char* json1 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\" }"; - cout << json1 << endl; - ParseMessages(json1, messages); - - for (MessageMap::const_iterator itr = messages.begin(); itr != messages.end(); ++itr) - cout << itr->first << ": " << itr->second << endl; - - cout << endl << "Parse a JSON with invalid schema." << endl; - const char* json2 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\", \"foo\" : {} }"; - cout << json2 << endl; - ParseMessages(json2, messages); - - return 0; -} -~~~~~~~~~~ - -~~~~~~~~~~ -{ "greeting" : "Hello!", "farewell" : "bye-bye!" } -farewell: bye-bye! -greeting: Hello! - -Parse a JSON with invalid schema. -{ "greeting" : "Hello!", "farewell" : "bye-bye!", "foo" : {} } -Error: Terminate parsing due to Handler error. - at offset 59 near '} }...' -~~~~~~~~~~ - -The first JSON (`json1`) was successfully parsed into `MessageMap`. Since `MessageMap` is a `std::map`, the printing order are sorted by the key. This order is different from the JSON's order. - -In the second JSON (`json2`), `foo`'s value is an empty object. As it is an object, `MessageHandler::StartObject()` will be called. However, at that moment `state_ = kExpectValue`, so that function returns `false` and cause the parsing process be terminated. The error code is `kParseErrorTermination`. - -## Filtering of JSON {#Filtering} - -As mentioned earlier, `Writer` can handle the events published by `Reader`. `condense` example simply set a `Writer` as handler of a `Reader`, so it can remove all white-spaces in JSON. `pretty` example uses the same relationship, but replacing `Writer` by `PrettyWriter`. So `pretty` can be used to reformat a JSON with indentation and line feed. - -Actually, we can add intermediate layer(s) to filter the contents of JSON via these SAX-style API. For example, `capitalize` example capitalize all strings in a JSON. - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include -#include - -using namespace rapidjson; - -template -struct CapitalizeFilter { - CapitalizeFilter(OutputHandler& out) : out_(out), buffer_() { - } - - bool Null() { return out_.Null(); } - bool Bool(bool b) { return out_.Bool(b); } - bool Int(int i) { return out_.Int(i); } - bool Uint(unsigned u) { return out_.Uint(u); } - bool Int64(int64_t i) { return out_.Int64(i); } - bool Uint64(uint64_t u) { return out_.Uint64(u); } - bool Double(double d) { return out_.Double(d); } - bool RawNumber(const char* str, SizeType length, bool copy) { return out_.RawNumber(str, length, copy); } - bool String(const char* str, SizeType length, bool) { - buffer_.clear(); - for (SizeType i = 0; i < length; i++) - buffer_.push_back(std::toupper(str[i])); - return out_.String(&buffer_.front(), length, true); // true = output handler need to copy the string - } - bool StartObject() { return out_.StartObject(); } - bool Key(const char* str, SizeType length, bool copy) { return String(str, length, copy); } - bool EndObject(SizeType memberCount) { return out_.EndObject(memberCount); } - bool StartArray() { return out_.StartArray(); } - bool EndArray(SizeType elementCount) { return out_.EndArray(elementCount); } - - OutputHandler& out_; - std::vector buffer_; -}; - -int main(int, char*[]) { - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - CapitalizeFilter > filter(writer); - if (!reader.Parse(is, filter)) { - fprintf(stderr, "\nError(%u): %s\n", (unsigned)reader.GetErrorOffset(), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} -~~~~~~~~~~ - -Note that, it is incorrect to simply capitalize the JSON as a string. For example: -~~~~~~~~~~ -["Hello\nWorld"] -~~~~~~~~~~ - -Simply capitalizing the whole JSON would contain incorrect escape character: -~~~~~~~~~~ -["HELLO\NWORLD"] -~~~~~~~~~~ - -The correct result by `capitalize`: -~~~~~~~~~~ -["HELLO\nWORLD"] -~~~~~~~~~~ - -More complicated filters can be developed. However, since SAX-style API can only provide information about a single event at a time, user may need to book-keeping the contextual information (e.g. the path from root value, storage of other related values). Some processing may be easier to be implemented in DOM than SAX. diff --git a/rapidjson-lib/doc/sax.zh-cn.md b/rapidjson-lib/doc/sax.zh-cn.md deleted file mode 100644 index b20286d..0000000 --- a/rapidjson-lib/doc/sax.zh-cn.md +++ /dev/null @@ -1,487 +0,0 @@ -# SAX - -"SAX" 此术语源于 [Simple API for XML](http://en.wikipedia.org/wiki/Simple_API_for_XML)。我们借了此术语去套用在 JSON 的解析及生成。 - -在 RapidJSON 中,`Reader`(`GenericReader<...>` 的 typedef)是 JSON 的 SAX 风格解析器,而 `Writer`(`GenericWriter<...>` 的 typedef)则是 JSON 的 SAX 风格生成器。 - -[TOC] - -# Reader {#Reader} - -`Reader` 从输入流解析一个 JSON。当它从流中读取字符时,它会基于 JSON 的语法去分析字符,并向处理器发送事件。 - -例如,以下是一个 JSON。 - -~~~~~~~~~~js -{ - "hello": "world", - "t": true , - "f": false, - "n": null, - "i": 123, - "pi": 3.1416, - "a": [1, 2, 3, 4] -} -~~~~~~~~~~ - -当一个 `Reader` 解析此 JSON 时,它会顺序地向处理器发送以下的事件: - -~~~~~~~~~~ -StartObject() -Key("hello", 5, true) -String("world", 5, true) -Key("t", 1, true) -Bool(true) -Key("f", 1, true) -Bool(false) -Key("n", 1, true) -Null() -Key("i") -UInt(123) -Key("pi") -Double(3.1416) -Key("a") -StartArray() -Uint(1) -Uint(2) -Uint(3) -Uint(4) -EndArray(4) -EndObject(7) -~~~~~~~~~~ - -除了一些事件参数需要再作解释,这些事件可以轻松地与 JSON 对上。我们可以看看 `simplereader` 例子怎样产生和以上完全相同的结果: - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include - -using namespace rapidjson; -using namespace std; - -struct MyHandler : public BaseReaderHandler, MyHandler> { - bool Null() { cout << "Null()" << endl; return true; } - bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; } - bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; } - bool Uint(unsigned u) { cout << "Uint(" << u << ")" << endl; return true; } - bool Int64(int64_t i) { cout << "Int64(" << i << ")" << endl; return true; } - bool Uint64(uint64_t u) { cout << "Uint64(" << u << ")" << endl; return true; } - bool Double(double d) { cout << "Double(" << d << ")" << endl; return true; } - bool String(const char* str, SizeType length, bool copy) { - cout << "String(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool StartObject() { cout << "StartObject()" << endl; return true; } - bool Key(const char* str, SizeType length, bool copy) { - cout << "Key(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool EndObject(SizeType memberCount) { cout << "EndObject(" << memberCount << ")" << endl; return true; } - bool StartArray() { cout << "StartArray()" << endl; return true; } - bool EndArray(SizeType elementCount) { cout << "EndArray(" << elementCount << ")" << endl; return true; } -}; - -void main() { - const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - - MyHandler handler; - Reader reader; - StringStream ss(json); - reader.Parse(ss, handler); -} -~~~~~~~~~~ - -注意 RapidJSON 使用模板去静态挷定 `Reader` 类型及处理器的类形,而不是使用含虚函数的类。这个范式可以通过把函数内联而改善性能。 - -## 处理器 {#Handler} - -如前例所示,使用者需要实现一个处理器(handler),用于处理来自 `Reader` 的事件(函数调用)。处理器必须包含以下的成员函数。 - -~~~~~~~~~~cpp -class Handler { - bool Null(); - bool Bool(bool b); - bool Int(int i); - bool Uint(unsigned i); - bool Int64(int64_t i); - bool Uint64(uint64_t i); - bool Double(double d); - bool RawNumber(const Ch* str, SizeType length, bool copy); - bool String(const Ch* str, SizeType length, bool copy); - bool StartObject(); - bool Key(const Ch* str, SizeType length, bool copy); - bool EndObject(SizeType memberCount); - bool StartArray(); - bool EndArray(SizeType elementCount); -}; -~~~~~~~~~~ - -当 `Reader` 遇到 JSON null 值时会调用 `Null()`。 - -当 `Reader` 遇到 JSON true 或 false 值时会调用 `Bool(bool)`。 - -当 `Reader` 遇到 JSON number,它会选择一个合适的 C++ 类型映射,然后调用 `Int(int)`、`Uint(unsigned)`、`Int64(int64_t)`、`Uint64(uint64_t)` 及 `Double(double)` 的 * 其中之一个 *。 若开启了 `kParseNumbersAsStrings` 选项,`Reader` 便会改为调用 `RawNumber()`。 - -当 `Reader` 遇到 JSON string,它会调用 `String(const char* str, SizeType length, bool copy)`。第一个参数是字符串的指针。第二个参数是字符串的长度(不包含空终止符号)。注意 RapidJSON 支持字串中含有空字符 `'\0'`。若出现这种情况,便会有 `strlen(str) < length`。最后的 `copy` 参数表示处理器是否需要复制该字符串。在正常解析时,`copy = true`。仅当使用原位解析时,`copy = false`。此外,还要注意字符的类型与目标编码相关,我们稍后会再谈这一点。 - -当 `Reader` 遇到 JSON object 的开始之时,它会调用 `StartObject()`。JSON 的 object 是一个键值对(成员)的集合。若 object 包含成员,它会先为成员的名字调用 `Key()`,然后再按值的类型调用函数。它不断调用这些键值对,直至最终调用 `EndObject(SizeType memberCount)`。注意 `memberCount` 参数对处理器来说只是协助性质,使用者可能不需要此参数。 - -JSON array 与 object 相似,但更简单。在 array 开始时,`Reader` 会调用 `BeginArary()`。若 array 含有元素,它会按元素的类型来读用函数。相似地,最后它会调用 `EndArray(SizeType elementCount)`,其中 `elementCount` 参数对处理器来说只是协助性质。 - -每个处理器函数都返回一个 `bool`。正常它们应返回 `true`。若处理器遇到错误,它可以返回 `false` 去通知事件发送方停止继续处理。 - -例如,当我们用 `Reader` 解析一个 JSON 时,处理器检测到该 JSON 并不符合所需的 schema,那么处理器可以返回 `false`,令 `Reader` 停止之后的解析工作。而 `Reader` 会进入一个错误状态,并以 `kParseErrorTermination` 错误码标识。 - -## GenericReader {#GenericReader} - -前面提及,`Reader` 是 `GenericReader` 模板类的 typedef: - -~~~~~~~~~~cpp -namespace rapidjson { - -template > -class GenericReader { - // ... -}; - -typedef GenericReader, UTF8<> > Reader; - -} // namespace rapidjson -~~~~~~~~~~ - -`Reader` 使用 UTF-8 作为来源及目标编码。来源编码是指 JSON 流的编码。目标编码是指 `String()` 的 `str` 参数所用的编码。例如,要解析一个 UTF-8 流并输出至 UTF-16 string 事件,你需要这么定义一个 reader: - -~~~~~~~~~~cpp -GenericReader, UTF16<> > reader; -~~~~~~~~~~ - -注意到 `UTF16` 的缺省类型是 `wchar_t`。因此这个 `reader` 需要调用处理器的 `String(const wchar_t*, SizeType, bool)`。 - -第三个模板参数 `Allocator` 是内部数据结构(实际上是一个堆栈)的分配器类型。 - -## 解析 {#SaxParsing} - -`Reader` 的唯一功能就是解析 JSON。 - -~~~~~~~~~~cpp -template -bool Parse(InputStream& is, Handler& handler); - -// 使用 parseFlags = kDefaultParseFlags -template -bool Parse(InputStream& is, Handler& handler); -~~~~~~~~~~ - -若在解析中出现错误,它会返回 `false`。使用者可调用 `bool HasParseEror()`, `ParseErrorCode GetParseErrorCode()` 及 `size_t GetErrorOffset()` 获取错误状态。实际上 `Document` 使用这些 `Reader` 函数去获取解析错误。请参考 [DOM](doc/dom.zh-cn.md) 去了解有关解析错误的细节。 - -# Writer {#Writer} - -`Reader` 把 JSON 转换(解析)成为事件。`Writer` 做完全相反的事情。它把事件转换成 JSON。 - -`Writer` 是非常容易使用的。若你的应用程序只需把一些数据转换成 JSON,可能直接使用 `Writer`,会比建立一个 `Document` 然后用 `Writer` 把它转换成 JSON 更加方便。 - -在 `simplewriter` 例子里,我们做 `simplereader` 完全相反的事情。 - -~~~~~~~~~~cpp -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; -using namespace std; - -void main() { - StringBuffer s; - Writer writer(s); - - writer.StartObject(); - writer.Key("hello"); - writer.String("world"); - writer.Key("t"); - writer.Bool(true); - writer.Key("f"); - writer.Bool(false); - writer.Key("n"); - writer.Null(); - writer.Key("i"); - writer.Uint(123); - writer.Key("pi"); - writer.Double(3.1416); - writer.Key("a"); - writer.StartArray(); - for (unsigned i = 0; i < 4; i++) - writer.Uint(i); - writer.EndArray(); - writer.EndObject(); - - cout << s.GetString() << endl; -} -~~~~~~~~~~ - -~~~~~~~~~~ -{"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]} -~~~~~~~~~~ - -`String()` 及 `Key()` 各有两个重载。一个是如处理器 concept 般,有 3 个参数。它能处理含空字符的字符串。另一个是如上中使用的较简单版本。 - -注意到,例子代码中的 `EndArray()` 及 `EndObject()` 并没有参数。可以传递一个 `SizeType` 的参数,但它会被 `Writer` 忽略。 - -你可能会怀疑,为什么不使用 `sprintf()` 或 `std::stringstream` 去建立一个 JSON? - -这有几个原因: -1. `Writer` 必然会输出一个结构良好(well-formed)的 JSON。若然有错误的事件次序(如 `Int()` 紧随 `StartObject()` 出现),它会在调试模式中产生断言失败。 -2. `Writer::String()` 可处理字符串转义(如把码点 `U+000A` 转换成 `\n`)及进行 Unicode 转码。 -3. `Writer` 一致地处理 number 的输出。 -4. `Writer` 实现了事件处理器 concept。可用于处理来自 `Reader`、`Document` 或其他事件发生器。 -5. `Writer` 可对不同平台进行优化。 - -无论如何,使用 `Writer` API 去生成 JSON 甚至乎比这些临时方法更简单。 - -## 模板 {#WriterTemplate} - -`Writer` 与 `Reader` 有少许设计区别。`Writer` 是一个模板类,而不是一个 typedef。 并没有 `GenericWriter`。以下是 `Writer` 的声明。 - -~~~~~~~~~~cpp -namespace rapidjson { - -template, typename TargetEncoding = UTF8<>, typename Allocator = CrtAllocator<> > -class Writer { -public: - Writer(OutputStream& os, Allocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) -// ... -}; - -} // namespace rapidjson -~~~~~~~~~~ - -`OutputStream` 模板参数是输出流的类型。它的类型不可以被自动推断,必须由使用者提供。 - -`SourceEncoding` 模板参数指定了 `String(const Ch*, ...)` 的编码。 - -`TargetEncoding` 模板参数指定输出流的编码。 - -`Allocator` 是分配器的类型,用于分配内部数据结构(一个堆栈)。 - -`writeFlags` 是以下位标志的组合: - -写入位标志 | 意义 -------------------------------|----------------------------------- -`kWriteNoFlags` | 没有任何标志。 -`kWriteDefaultFlags` | 缺省的解析选项。它等于 `RAPIDJSON_WRITE_DEFAULT_FLAGS` 宏,此宏定义为 `kWriteNoFlags`。 -`kWriteValidateEncodingFlag` | 校验 JSON 字符串的编码。 -`kWriteNanAndInfFlag` | 容许写入 `Infinity`, `-Infinity` 及 `NaN`。 - -此外,`Writer` 的构造函数有一 `levelDepth` 参数。存储每层阶信息的初始内存分配量受此参数影响。 - -## PrettyWriter {#PrettyWriter} - -`Writer` 所输出的是没有空格字符的最紧凑 JSON,适合网络传输或储存,但不适合人类阅读。 - -因此,RapidJSON 提供了一个 `PrettyWriter`,它在输出中加入缩进及换行。 - -`PrettyWriter` 的用法与 `Writer` 几乎一样,不同之处是 `PrettyWriter` 提供了一个 `SetIndent(Ch indentChar, unsigned indentCharCount)` 函数。缺省的缩进是 4 个空格。 - -## 完整性及重置 {#CompletenessReset} - -一个 `Writer` 只可输出单个 JSON,其根节点可以是任何 JSON 类型。当处理完单个根节点事件(如 `String()`),或匹配的最后 `EndObject()` 或 `EndArray()` 事件,输出的 JSON 是结构完整(well-formed)及完整的。使用者可调用 `Writer::IsComplete()` 去检测完整性。 - -当 JSON 完整时,`Writer` 不能再接受新的事件。不然其输出便会是不合法的(例如有超过一个根节点)。为了重新利用 `Writer` 对象,使用者可调用 `Writer::Reset(OutputStream& os)` 去重置其所有内部状态及设置新的输出流。 - -# 技巧 {#SaxTechniques} - -## 解析 JSON 至自定义结构 {#CustomDataStructure} - -`Document` 的解析功能完全依靠 `Reader`。实际上 `Document` 是一个处理器,在解析 JSON 时接收事件去建立一个 DOM。 - -使用者可以直接使用 `Reader` 去建立其他数据结构。这消除了建立 DOM 的步骤,从而减少了内存开销并改善性能。 - -在以下的 `messagereader` 例子中,`ParseMessages()` 解析一个 JSON,该 JSON 应该是一个含键值对的 object。 - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include "rapidjson/error/en.h" -#include -#include -#include - -using namespace std; -using namespace rapidjson; - -typedef map MessageMap; - -struct MessageHandler - : public BaseReaderHandler, MessageHandler> { - MessageHandler() : state_(kExpectObjectStart) { - } - - bool StartObject() { - switch (state_) { - case kExpectObjectStart: - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool String(const char* str, SizeType length, bool) { - switch (state_) { - case kExpectNameOrObjectEnd: - name_ = string(str, length); - state_ = kExpectValue; - return true; - case kExpectValue: - messages_.insert(MessageMap::value_type(name_, string(str, length))); - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool EndObject(SizeType) { return state_ == kExpectNameOrObjectEnd; } - - bool Default() { return false; } // All other events are invalid. - - MessageMap messages_; - enum State { - kExpectObjectStart, - kExpectNameOrObjectEnd, - kExpectValue, - }state_; - std::string name_; -}; - -void ParseMessages(const char* json, MessageMap& messages) { - Reader reader; - MessageHandler handler; - StringStream ss(json); - if (reader.Parse(ss, handler)) - messages.swap(handler.messages_); // Only change it if success. - else { - ParseErrorCode e = reader.GetParseErrorCode(); - size_t o = reader.GetErrorOffset(); - cout << "Error: " << GetParseError_En(e) << endl;; - cout << " at offset " << o << " near '" << string(json).substr(o, 10) << "...'" << endl; - } -} - -int main() { - MessageMap messages; - - const char* json1 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\" }"; - cout << json1 << endl; - ParseMessages(json1, messages); - - for (MessageMap::const_iterator itr = messages.begin(); itr != messages.end(); ++itr) - cout << itr->first << ": " << itr->second << endl; - - cout << endl << "Parse a JSON with invalid schema." << endl; - const char* json2 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\", \"foo\" : {} }"; - cout << json2 << endl; - ParseMessages(json2, messages); - - return 0; -} -~~~~~~~~~~ - -~~~~~~~~~~ -{ "greeting" : "Hello!", "farewell" : "bye-bye!" } -farewell: bye-bye! -greeting: Hello! - -Parse a JSON with invalid schema. -{ "greeting" : "Hello!", "farewell" : "bye-bye!", "foo" : {} } -Error: Terminate parsing due to Handler error. - at offset 59 near '} }...' -~~~~~~~~~~ - -第一个 JSON(`json1`)被成功地解析至 `MessageMap`。由于 `MessageMap` 是一个 `std::map`,打印次序按键值排序。此次序与 JSON 中的次序不同。 - -在第二个 JSON(`json2`)中,`foo` 的值是一个空 object。由于它是一个 object,`MessageHandler::StartObject()` 会被调用。然而,在 `state_ = kExpectValue` 的情况下,该函数会返回 `false`,并导致解析过程终止。错误代码是 `kParseErrorTermination`。 - -## 过滤 JSON {#Filtering} - -如前面提及过,`Writer` 可处理 `Reader` 发出的事件。`example/condense/condense.cpp` 例子简单地设置 `Writer` 作为一个 `Reader` 的处理器,因此它能移除 JSON 中的所有空白字符。`example/pretty/pretty.cpp` 例子使用同样的关系,只是以 `PrettyWriter` 取代 `Writer`。因此 `pretty` 能够重新格式化 JSON,加入缩进及换行。 - -实际上,我们可以使用 SAX 风格 API 去加入(多个)中间层去过滤 JSON 的内容。例如 `capitalize` 例子可以把所有 JSON string 改为大写。 - -~~~~~~~~~~cpp -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include -#include - -using namespace rapidjson; - -template -struct CapitalizeFilter { - CapitalizeFilter(OutputHandler& out) : out_(out), buffer_() { - } - - bool Null() { return out_.Null(); } - bool Bool(bool b) { return out_.Bool(b); } - bool Int(int i) { return out_.Int(i); } - bool Uint(unsigned u) { return out_.Uint(u); } - bool Int64(int64_t i) { return out_.Int64(i); } - bool Uint64(uint64_t u) { return out_.Uint64(u); } - bool Double(double d) { return out_.Double(d); } - bool RawNumber(const char* str, SizeType length, bool copy) { return out_.RawNumber(str, length, copy); } - bool String(const char* str, SizeType length, bool) { - buffer_.clear(); - for (SizeType i = 0; i < length; i++) - buffer_.push_back(std::toupper(str[i])); - return out_.String(&buffer_.front(), length, true); // true = output handler need to copy the string - } - bool StartObject() { return out_.StartObject(); } - bool Key(const char* str, SizeType length, bool copy) { return String(str, length, copy); } - bool EndObject(SizeType memberCount) { return out_.EndObject(memberCount); } - bool StartArray() { return out_.StartArray(); } - bool EndArray(SizeType elementCount) { return out_.EndArray(elementCount); } - - OutputHandler& out_; - std::vector buffer_; -}; - -int main(int, char*[]) { - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - CapitalizeFilter > filter(writer); - if (!reader.Parse(is, filter)) { - fprintf(stderr, "\nError(%u): %s\n", (unsigned)reader.GetErrorOffset(), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} -~~~~~~~~~~ - -注意到,不可简单地把 JSON 当作字符串去改为大写。例如: -~~~~~~~~~~ -["Hello\nWorld"] -~~~~~~~~~~ - -简单地把整个 JSON 转为大写的话会产生错误的转义符: -~~~~~~~~~~ -["HELLO\NWORLD"] -~~~~~~~~~~ - -而 `capitalize` 就会产生正确的结果: -~~~~~~~~~~ -["HELLO\nWORLD"] -~~~~~~~~~~ - -我们还可以开发更复杂的过滤器。然而,由于 SAX 风格 API 在某一时间点只能提供单一事件的信息,使用者需要自行记录一些上下文信息(例如从根节点起的路径、储存其他相关值)。对于处理某些情况,用 DOM 会比 SAX 更容易实现。 - diff --git a/rapidjson-lib/doc/schema.md b/rapidjson-lib/doc/schema.md deleted file mode 100644 index a83cebc..0000000 --- a/rapidjson-lib/doc/schema.md +++ /dev/null @@ -1,237 +0,0 @@ -# Schema - -(This feature was released in v1.1.0) - -JSON Schema is a draft standard for describing the format of JSON data. The schema itself is also JSON data. By validating a JSON structure with JSON Schema, your code can safely access the DOM without manually checking types, or whether a key exists, etc. It can also ensure that the serialized JSON conform to a specified schema. - -RapidJSON implemented a JSON Schema validator for [JSON Schema Draft v4](http://json-schema.org/documentation.html). If you are not familiar with JSON Schema, you may refer to [Understanding JSON Schema](http://spacetelescope.github.io/understanding-json-schema/). - -[TOC] - -## Basic Usage - -First of all, you need to parse a JSON Schema into `Document`, and then compile the `Document` into a `SchemaDocument`. - -Secondly, construct a `SchemaValidator` with the `SchemaDocument`. It is similar to a `Writer` in the sense of handling SAX events. So, you can use `document.Accept(validator)` to validate a document, and then check the validity. - -~~~cpp -#include "rapidjson/schema.h" - -// ... - -Document sd; -if (!sd.Parse(schemaJson).HasParseError()) { - // the schema is not a valid JSON. - // ... -} -SchemaDocument schema(sd); // Compile a Document to SchemaDocument -// sd is no longer needed here. - -Document d; -if (!d.Parse(inputJson).HasParseError()) { - // the input is not a valid JSON. - // ... -} - -SchemaValidator validator(schema); -if (!d.Accept(validator)) { - // Input JSON is invalid according to the schema - // Output diagnostic information - StringBuffer sb; - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb); - printf("Invalid schema: %s\n", sb.GetString()); - printf("Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword()); - sb.Clear(); - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb); - printf("Invalid document: %s\n", sb.GetString()); -} -~~~ - -Some notes: - -* One `SchemaDocment` can be referenced by multiple `SchemaValidator`s. It will not be modified by `SchemaValidator`s. -* A `SchemaValidator` may be reused to validate multiple documents. To run it for other documents, call `validator.Reset()` first. - -## Validation during parsing/serialization - -Unlike most JSON Schema validator implementations, RapidJSON provides a SAX-based schema validator. Therefore, you can parse a JSON from a stream while validating it on the fly. If the validator encounters a JSON value that invalidates the supplied schema, the parsing will be terminated immediately. This design is especially useful for parsing large JSON files. - -### DOM parsing - -For using DOM in parsing, `Document` needs some preparation and finalizing tasks, in addition to receiving SAX events, thus it needs some work to route the reader, validator and the document. `SchemaValidatingReader` is a helper class that doing such work. - -~~~cpp -#include "rapidjson/filereadstream.h" - -// ... -SchemaDocument schema(sd); // Compile a Document to SchemaDocument - -// Use reader to parse the JSON -FILE* fp = fopen("big.json", "r"); -FileReadStream is(fp, buffer, sizeof(buffer)); - -// Parse JSON from reader, validate the SAX events, and store in d. -Document d; -SchemaValidatingReader > reader(is, schema); -d.Populate(reader); - -if (!reader.GetParseResult()) { - // Not a valid JSON - // When reader.GetParseResult().Code() == kParseErrorTermination, - // it may be terminated by: - // (1) the validator found that the JSON is invalid according to schema; or - // (2) the input stream has I/O error. - - // Check the validation result - if (!reader.IsValid()) { - // Input JSON is invalid according to the schema - // Output diagnostic information - StringBuffer sb; - reader.GetInvalidSchemaPointer().StringifyUriFragment(sb); - printf("Invalid schema: %s\n", sb.GetString()); - printf("Invalid keyword: %s\n", reader.GetInvalidSchemaKeyword()); - sb.Clear(); - reader.GetInvalidDocumentPointer().StringifyUriFragment(sb); - printf("Invalid document: %s\n", sb.GetString()); - } -} -~~~ - -### SAX parsing - -For using SAX in parsing, it is much simpler. If it only need to validate the JSON without further processing, it is simply: - -~~~ -SchemaValidator validator(schema); -Reader reader; -if (!reader.Parse(stream, validator)) { - if (!validator.IsValid()) { - // ... - } -} -~~~ - -This is exactly the method used in the [schemavalidator](example/schemavalidator/schemavalidator.cpp) example. The distinct advantage is low memory usage, no matter how big the JSON was (the memory usage depends on the complexity of the schema). - -If you need to handle the SAX events further, then you need to use the template class `GenericSchemaValidator` to set the output handler of the validator: - -~~~ -MyHandler handler; -GenericSchemaValidator validator(schema, handler); -Reader reader; -if (!reader.Parse(ss, validator)) { - if (!validator.IsValid()) { - // ... - } -} -~~~ - -### Serialization - -It is also possible to do validation during serializing. This can ensure the result JSON is valid according to the JSON schema. - -~~~ -StringBuffer sb; -Writer writer(sb); -GenericSchemaValidator > validator(s, writer); -if (!d.Accept(validator)) { - // Some problem during Accept(), it may be validation or encoding issues. - if (!validator.IsValid()) { - // ... - } -} -~~~ - -Of course, if your application only needs SAX-style serialization, it can simply send SAX events to `SchemaValidator` instead of `Writer`. - -## Remote Schema - -JSON Schema supports [`$ref` keyword](http://spacetelescope.github.io/understanding-json-schema/structuring.html), which is a [JSON pointer](doc/pointer.md) referencing to a local or remote schema. Local pointer is prefixed with `#`, while remote pointer is an relative or absolute URI. For example: - -~~~js -{ "$ref": "definitions.json#/address" } -~~~ - -As `SchemaDocument` does not know how to resolve such URI, it needs a user-provided `IRemoteSchemaDocumentProvider` instance to do so. - -~~~ -class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider { -public: - virtual const SchemaDocument* GetRemoteDocument(const char* uri, SizeTyp length) { - // Resolve the uri and returns a pointer to that schema. - } -}; - -// ... - -MyRemoteSchemaDocumentProvider provider; -SchemaDocument schema(sd, &provider); -~~~ - -## Conformance - -RapidJSON passed 262 out of 263 tests in [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (Json Schema draft 4). - -The failed test is "changed scope ref invalid" of "change resolution scope" in `refRemote.json`. It is due to that `id` schema keyword and URI combining function are not implemented. - -Besides, the `format` schema keyword for string values is ignored, since it is not required by the specification. - -### Regular Expression - -The schema keyword `pattern` and `patternProperties` uses regular expression to match the required pattern. - -RapidJSON implemented a simple NFA regular expression engine, which is used by default. It supports the following syntax. - -|Syntax|Description| -|------|-----------| -|`ab` | Concatenation | -|`a|b` | Alternation | -|`a?` | Zero or one | -|`a*` | Zero or more | -|`a+` | One or more | -|`a{3}` | Exactly 3 times | -|`a{3,}` | At least 3 times | -|`a{3,5}`| 3 to 5 times | -|`(ab)` | Grouping | -|`^a` | At the beginning | -|`a$` | At the end | -|`.` | Any character | -|`[abc]` | Character classes | -|`[a-c]` | Character class range | -|`[a-z0-9_]` | Character class combination | -|`[^abc]` | Negated character classes | -|`[^a-c]` | Negated character class range | -|`[\b]` | Backspace (U+0008) | -|`\|`, `\\`, ... | Escape characters | -|`\f` | Form feed (U+000C) | -|`\n` | Line feed (U+000A) | -|`\r` | Carriage return (U+000D) | -|`\t` | Tab (U+0009) | -|`\v` | Vertical tab (U+000B) | - -For C++11 compiler, it is also possible to use the `std::regex` by defining `RAPIDJSON_SCHEMA_USE_INTERNALREGEX=0` and `RAPIDJSON_SCHEMA_USE_STDREGEX=1`. If your schemas do not need `pattern` and `patternProperties`, you can set both macros to zero to disable this feature, which will reduce some code size. - -## Performance - -Most C++ JSON libraries do not yet support JSON Schema. So we tried to evaluate the performance of RapidJSON's JSON Schema validator according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), which tests 11 JavaScript libraries running on Node.js. - -That benchmark runs validations on [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite), in which some test suites and tests are excluded. We made the same benchmarking procedure in [`schematest.cpp`](test/perftest/schematest.cpp). - -On a Mac Book Pro (2.8 GHz Intel Core i7), the following results are collected. - -|Validator|Relative speed|Number of test runs per second| -|---------|:------------:|:----------------------------:| -|RapidJSON|155%|30682| -|[`ajv`](https://github.com/epoberezkin/ajv)|100%|19770 (± 1.31%)| -|[`is-my-json-valid`](https://github.com/mafintosh/is-my-json-valid)|70%|13835 (± 2.84%)| -|[`jsen`](https://github.com/bugventure/jsen)|57.7%|11411 (± 1.27%)| -|[`schemasaurus`](https://github.com/AlexeyGrishin/schemasaurus)|26%|5145 (± 1.62%)| -|[`themis`](https://github.com/playlyfe/themis)|19.9%|3935 (± 2.69%)| -|[`z-schema`](https://github.com/zaggino/z-schema)|7%|1388 (± 0.84%)| -|[`jsck`](https://github.com/pandastrike/jsck#readme)|3.1%|606 (± 2.84%)| -|[`jsonschema`](https://github.com/tdegrunt/jsonschema#readme)|0.9%|185 (± 1.01%)| -|[`skeemas`](https://github.com/Prestaul/skeemas#readme)|0.8%|154 (± 0.79%)| -|tv4|0.5%|93 (± 0.94%)| -|[`jayschema`](https://github.com/natesilva/jayschema)|0.1%|21 (± 1.14%)| - -That is, RapidJSON is about 1.5x faster than the fastest JavaScript library (ajv). And 1400x faster than the slowest one. diff --git a/rapidjson-lib/doc/schema.zh-cn.md b/rapidjson-lib/doc/schema.zh-cn.md deleted file mode 100644 index a01c1b1..0000000 --- a/rapidjson-lib/doc/schema.zh-cn.md +++ /dev/null @@ -1,237 +0,0 @@ -# Schema - -(本功能于 v1.1.0 发布) - -JSON Schema 是描述 JSON 格式的一个标准草案。一个 schema 本身也是一个 JSON。使用 JSON Schema 去校验 JSON,可以让你的代码安全地访问 DOM,而无须检查类型或键值是否存在等。这也能确保输出的 JSON 是符合指定的 schema。 - -RapidJSON 实现了一个 [JSON Schema Draft v4](http://json-schema.org/documentation.html) 的校验器。若你不熟悉 JSON Schema,可以参考 [Understanding JSON Schema](http://spacetelescope.github.io/understanding-json-schema/)。 - -[TOC] - -## 基本用法 - -首先,你要把 JSON Schema 解析成 `Document`,再把它编译成一个 `SchemaDocument`。 - -然后,利用该 `SchemaDocument` 创建一个 `SchemaValidator`。它与 `Writer` 相似,都是能够处理 SAX 事件的。因此,你可以用 `document.Accept(validator)` 去校验一个 JSON,然后再获取校验结果。 - -~~~cpp -#include "rapidjson/schema.h" - -// ... - -Document sd; -if (!sd.Parse(schemaJson).HasParseError()) { - // 此 schema 不是合法的 JSON - // ... -} -SchemaDocument schema(sd); // 把一个 Document 编译至 SchemaDocument -// 之后不再需要 sd - -Document d; -if (!d.Parse(inputJson).HasParseError()) { - // 输入不是一个合法的 JSON - // ... -} - -SchemaValidator validator(schema); -if (!d.Accept(validator)) { - // 输入的 JSON 不合乎 schema - // 打印诊断信息 - StringBuffer sb; - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb); - printf("Invalid schema: %s\n", sb.GetString()); - printf("Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword()); - sb.Clear(); - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb); - printf("Invalid document: %s\n", sb.GetString()); -} -~~~ - -一些注意点: - -* 一个 `SchemaDocment` 能被多个 `SchemaValidator` 引用。它不会被 `SchemaValidator` 修改。 -* 可以重复使用一个 `SchemaValidator` 来校验多个文件。在校验其他文件前,须先调用 `validator.Reset()`。 - -## 在解析/生成时进行校验 - -与大部分 JSON Schema 校验器有所不同,RapidJSON 提供了一个基于 SAX 的 schema 校验器实现。因此,你可以在输入流解析 JSON 的同时进行校验。若校验器遇到一个与 schema 不符的值,就会立即终止解析。这设计对于解析大型 JSON 文件时特别有用。 - -### DOM 解析 - -在使用 DOM 进行解析时,`Document` 除了接收 SAX 事件外,还需做一些准备及结束工作,因此,为了连接 `Reader`、`SchemaValidator` 和 `Document` 要做多一点事情。`SchemaValidatingReader` 是一个辅助类去做那些工作。 - -~~~cpp -#include "rapidjson/filereadstream.h" - -// ... -SchemaDocument schema(sd); // 把一个 Document 编译至 SchemaDocument - -// 使用 reader 解析 JSON -FILE* fp = fopen("big.json", "r"); -FileReadStream is(fp, buffer, sizeof(buffer)); - -// 用 reader 解析 JSON,校验它的 SAX 事件,并存储至 d -Document d; -SchemaValidatingReader > reader(is, schema); -d.Populate(reader); - -if (!reader.GetParseResult()) { - // 不是一个合法的 JSON - // 当 reader.GetParseResult().Code() == kParseErrorTermination, - // 它可能是被以下原因中止: - // (1) 校验器发现 JSON 不合乎 schema;或 - // (2) 输入流有 I/O 错误。 - - // 检查校验结果 - if (!reader.IsValid()) { - // 输入的 JSON 不合乎 schema - // 打印诊断信息 - StringBuffer sb; - reader.GetInvalidSchemaPointer().StringifyUriFragment(sb); - printf("Invalid schema: %s\n", sb.GetString()); - printf("Invalid keyword: %s\n", reader.GetInvalidSchemaKeyword()); - sb.Clear(); - reader.GetInvalidDocumentPointer().StringifyUriFragment(sb); - printf("Invalid document: %s\n", sb.GetString()); - } -} -~~~ - -### SAX 解析 - -使用 SAX 解析时,情况就简单得多。若只需要校验 JSON 而无需进一步处理,那么仅需要: - -~~~ -SchemaValidator validator(schema); -Reader reader; -if (!reader.Parse(stream, validator)) { - if (!validator.IsValid()) { - // ... - } -} -~~~ - -这种方式和 [schemavalidator](example/schemavalidator/schemavalidator.cpp) 例子完全相同。这带来的独特优势是,无论 JSON 多巨大,永远维持低内存用量(内存用量只与 Schema 的复杂度相关)。 - -若你需要进一步处理 SAX 事件,便可使用模板类 `GenericSchemaValidator` 去设置校验器的输出 `Handler`: - -~~~ -MyHandler handler; -GenericSchemaValidator validator(schema, handler); -Reader reader; -if (!reader.Parse(ss, validator)) { - if (!validator.IsValid()) { - // ... - } -} -~~~ - -### 生成 - -我们也可以在生成(serialization)的时候进行校验。这能确保输出的 JSON 符合一个 JSON Schema。 - -~~~ -StringBuffer sb; -Writer writer(sb); -GenericSchemaValidator > validator(s, writer); -if (!d.Accept(validator)) { - // Some problem during Accept(), it may be validation or encoding issues. - if (!validator.IsValid()) { - // ... - } -} -~~~ - -当然,如果你的应用仅需要 SAX 风格的生成,那么只需要把 SAX 事件由原来发送到 `Writer`,改为发送到 `SchemaValidator`。 - -## 远程 Schema - -JSON Schema 支持 [`$ref` 关键字](http://spacetelescope.github.io/understanding-json-schema/structuring.html),它是一个 [JSON pointer](doc/pointer.zh-cn.md) 引用至一个本地(local)或远程(remote) schema。本地指针的首字符是 `#`,而远程指针是一个相对或绝对 URI。例如: - -~~~js -{ "$ref": "definitions.json#/address" } -~~~ - -由于 `SchemaDocument` 并不知道如何处理那些 URI,它需要使用者提供一个 `IRemoteSchemaDocumentProvider` 的实例去处理。 - -~~~ -class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider { -public: - virtual const SchemaDocument* GetRemoteDocument(const char* uri, SizeTyp length) { - // Resolve the uri and returns a pointer to that schema. - } -}; - -// ... - -MyRemoteSchemaDocumentProvider provider; -SchemaDocument schema(sd, &provider); -~~~ - -## 标准的符合程度 - -RapidJSON 通过了 [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (Json Schema draft 4) 中 263 个测试的 262 个。 - -没通过的测试是 `refRemote.json` 中的 "change resolution scope" - "changed scope ref invalid"。这是由于未实现 `id` schema 关键字及 URI 合并功能。 - -除此以外,关于字符串类型的 `format` schema 关键字也会被忽略,因为标准中并没需求必须实现。 - -### 正则表达式 - -`pattern` 及 `patternProperties` 这两个 schema 关键字使用了正则表达式去匹配所需的模式。 - -RapidJSON 实现了一个简单的 NFA 正则表达式引擎,并预设使用。它支持以下语法。 - -|语法|描述| -|------|-----------| -|`ab` | 串联 | -|`a|b` | 交替 | -|`a?` | 零或一次 | -|`a*` | 零或多次 | -|`a+` | 一或多次 | -|`a{3}` | 刚好 3 次 | -|`a{3,}` | 至少 3 次 | -|`a{3,5}`| 3 至 5 次 | -|`(ab)` | 分组 | -|`^a` | 在开始处 | -|`a$` | 在结束处 | -|`.` | 任何字符 | -|`[abc]` | 字符组 | -|`[a-c]` | 字符组范围 | -|`[a-z0-9_]` | 字符组组合 | -|`[^abc]` | 字符组取反 | -|`[^a-c]` | 字符组范围取反 | -|`[\b]` | 退格符 (U+0008) | -|`\|`, `\\`, ... | 转义字符 | -|`\f` | 馈页 (U+000C) | -|`\n` | 馈行 (U+000A) | -|`\r` | 回车 (U+000D) | -|`\t` | 制表 (U+0009) | -|`\v` | 垂直制表 (U+000B) | - -对于使用 C++11 编译器的使用者,也可使用 `std::regex`,只需定义 `RAPIDJSON_SCHEMA_USE_INTERNALREGEX=0` 及 `RAPIDJSON_SCHEMA_USE_STDREGEX=1`。若你的 schema 无需使用 `pattern` 或 `patternProperties`,可以把两个宏都设为零,以禁用此功能,这样做可节省一些代码体积。 - -## 性能 - -大部分 C++ JSON 库都未支持 JSON Schema。因此我们尝试按照 [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) 去评估 RapidJSON 的 JSON Schema 校验器。该评测测试了 11 个运行在 node.js 上的 JavaScript 库。 - -该评测校验 [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) 中的测试,当中排除了一些测试套件及个别测试。我们在 [`schematest.cpp`](test/perftest/schematest.cpp) 实现了相同的评测。 - -在 MacBook Pro (2.8 GHz Intel Core i7) 上收集到以下结果。 - -|校验器|相对速度|每秒执行的测试数目| -|---------|:------------:|:----------------------------:| -|RapidJSON|155%|30682| -|[`ajv`](https://github.com/epoberezkin/ajv)|100%|19770 (± 1.31%)| -|[`is-my-json-valid`](https://github.com/mafintosh/is-my-json-valid)|70%|13835 (± 2.84%)| -|[`jsen`](https://github.com/bugventure/jsen)|57.7%|11411 (± 1.27%)| -|[`schemasaurus`](https://github.com/AlexeyGrishin/schemasaurus)|26%|5145 (± 1.62%)| -|[`themis`](https://github.com/playlyfe/themis)|19.9%|3935 (± 2.69%)| -|[`z-schema`](https://github.com/zaggino/z-schema)|7%|1388 (± 0.84%)| -|[`jsck`](https://github.com/pandastrike/jsck#readme)|3.1%|606 (± 2.84%)| -|[`jsonschema`](https://github.com/tdegrunt/jsonschema#readme)|0.9%|185 (± 1.01%)| -|[`skeemas`](https://github.com/Prestaul/skeemas#readme)|0.8%|154 (± 0.79%)| -|tv4|0.5%|93 (± 0.94%)| -|[`jayschema`](https://github.com/natesilva/jayschema)|0.1%|21 (± 1.14%)| - -换言之,RapidJSON 比最快的 JavaScript 库(ajv)快约 1.5x。比最慢的快 1400x。 diff --git a/rapidjson-lib/doc/stream.md b/rapidjson-lib/doc/stream.md deleted file mode 100644 index b79ce53..0000000 --- a/rapidjson-lib/doc/stream.md +++ /dev/null @@ -1,426 +0,0 @@ -# Stream - -In RapidJSON, `rapidjson::Stream` is a concept for reading/writing JSON. Here we first show how to use streams provided. And then see how to create a custom stream. - -[TOC] - -# Memory Streams {#MemoryStreams} - -Memory streams store JSON in memory. - -## StringStream (Input) {#StringStream} - -`StringStream` is the most basic input stream. It represents a complete, read-only JSON stored in memory. It is defined in `rapidjson/rapidjson.h`. - -~~~~~~~~~~cpp -#include "rapidjson/document.h" // will include "rapidjson/rapidjson.h" - -using namespace rapidjson; - -// ... -const char json[] = "[1, 2, 3, 4]"; -StringStream s(json); - -Document d; -d.ParseStream(s); -~~~~~~~~~~ - -Since this is very common usage, `Document::Parse(const char*)` is provided to do exactly the same as above: - -~~~~~~~~~~cpp -// ... -const char json[] = "[1, 2, 3, 4]"; -Document d; -d.Parse(json); -~~~~~~~~~~ - -Note that, `StringStream` is a typedef of `GenericStringStream >`, user may use another encodings to represent the character set of the stream. - -## StringBuffer (Output) {#StringBuffer} - -`StringBuffer` is a simple output stream. It allocates a memory buffer for writing the whole JSON. Use `GetString()` to obtain the buffer. - -~~~~~~~~~~cpp -#include "rapidjson/stringbuffer.h" - -StringBuffer buffer; -Writer writer(buffer); -d.Accept(writer); - -const char* output = buffer.GetString(); -~~~~~~~~~~ - -When the buffer is full, it will increases the capacity automatically. The default capacity is 256 characters (256 bytes for UTF8, 512 bytes for UTF16, etc.). User can provide an allocator and a initial capacity. - -~~~~~~~~~~cpp -StringBuffer buffer1(0, 1024); // Use its allocator, initial size = 1024 -StringBuffer buffer2(allocator, 1024); -~~~~~~~~~~ - -By default, `StringBuffer` will instantiate an internal allocator. - -Similarly, `StringBuffer` is a typedef of `GenericStringBuffer >`. - -# File Streams {#FileStreams} - -When parsing a JSON from file, you may read the whole JSON into memory and use ``StringStream`` above. - -However, if the JSON is big, or memory is limited, you can use `FileReadStream`. It only read a part of JSON from file into buffer, and then let the part be parsed. If it runs out of characters in the buffer, it will read the next part from file. - -## FileReadStream (Input) {#FileReadStream} - -`FileReadStream` reads the file via a `FILE` pointer. And user need to provide a buffer. - -~~~~~~~~~~cpp -#include "rapidjson/filereadstream.h" -#include - -using namespace rapidjson; - -FILE* fp = fopen("big.json", "rb"); // non-Windows use "r" - -char readBuffer[65536]; -FileReadStream is(fp, readBuffer, sizeof(readBuffer)); - -Document d; -d.ParseStream(is); - -fclose(fp); -~~~~~~~~~~ - -Different from string streams, `FileReadStream` is byte stream. It does not handle encodings. If the file is not UTF-8, the byte stream can be wrapped in a `EncodedInputStream`. It will be discussed very soon. - -Apart from reading file, user can also use `FileReadStream` to read `stdin`. - -## FileWriteStream (Output) {#FileWriteStream} - -`FileWriteStream` is buffered output stream. Its usage is very similar to `FileReadStream`. - -~~~~~~~~~~cpp -#include "rapidjson/filewritestream.h" -#include - -using namespace rapidjson; - -Document d; -d.Parse(json); -// ... - -FILE* fp = fopen("output.json", "wb"); // non-Windows use "w" - -char writeBuffer[65536]; -FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer)); - -Writer writer(os); -d.Accept(writer); - -fclose(fp); -~~~~~~~~~~ - -It can also directs the output to `stdout`. - -# iostream Wrapper {#iostreamWrapper} - -Due to users' requests, RapidJSON provided official wrappers for `std::basic_istream` and `std::basic_ostream`. However, please note that the performance will be much lower than the other streams above. - -## IStreamWrapper {#IStreamWrapper} - -`IStreamWrapper` wraps any class drived from `std::istream`, such as `std::istringstream`, `std::stringstream`, `std::ifstream`, `std::fstream`, into RapidJSON's input stream. - -~~~cpp -#include -#include -#include - -using namespace rapidjson; -using namespace std; - -ifstream ifs("test.json"); -IStreamWrapper isw(ifs); - -Document d; -d.ParseStream(isw); -~~~ - -For classes derived from `std::wistream`, use `WIStreamWrapper`. - -## OStreamWrapper {#OStreamWrapper} - -Similarly, `OStreamWrapper` wraps any class derived from `std::ostream`, such as `std::ostringstream`, `std::stringstream`, `std::ofstream`, `std::fstream`, into RapidJSON's input stream. - -~~~cpp -#include -#include -#include -#include - -using namespace rapidjson; -using namespace std; - -Document d; -d.Parse(json); - -// ... - -ofstream ofs("output.json"); -OStreamWrapper osw(ofs); - -Writer writer(osw); -d.Accept(writer); -~~~ - -For classes derived from `std::wostream`, use `WOStreamWrapper`. - -# Encoded Streams {#EncodedStreams} - -Encoded streams do not contain JSON itself, but they wrap byte streams to provide basic encoding/decoding function. - -As mentioned above, UTF-8 byte streams can be read directly. However, UTF-16 and UTF-32 have endian issue. To handle endian correctly, it needs to convert bytes into characters (e.g. `wchar_t` for UTF-16) while reading, and characters into bytes while writing. - -Besides, it also need to handle [byte order mark (BOM)](http://en.wikipedia.org/wiki/Byte_order_mark). When reading from a byte stream, it is needed to detect or just consume the BOM if exists. When writing to a byte stream, it can optionally write BOM. - -If the encoding of stream is known in compile-time, you may use `EncodedInputStream` and `EncodedOutputStream`. If the stream can be UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE JSON, and it is only known in runtime, you may use `AutoUTFInputStream` and `AutoUTFOutputStream`. These streams are defined in `rapidjson/encodedstream.h`. - -Note that, these encoded streams can be applied to streams other than file. For example, you may have a file in memory, or a custom byte stream, be wrapped in encoded streams. - -## EncodedInputStream {#EncodedInputStream} - -`EncodedInputStream` has two template parameters. The first one is a `Encoding` class, such as `UTF8`, `UTF16LE`, defined in `rapidjson/encodings.h`. The second one is the class of stream to be wrapped. - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/filereadstream.h" // FileReadStream -#include "rapidjson/encodedstream.h" // EncodedInputStream -#include - -using namespace rapidjson; - -FILE* fp = fopen("utf16le.json", "rb"); // non-Windows use "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -EncodedInputStream, FileReadStream> eis(bis); // wraps bis into eis - -Document d; // Document is GenericDocument > -d.ParseStream<0, UTF16LE<> >(eis); // Parses UTF-16LE file into UTF-8 in memory - -fclose(fp); -~~~~~~~~~~ - -## EncodedOutputStream {#EncodedOutputStream} - -`EncodedOutputStream` is similar but it has a `bool putBOM` parameter in the constructor, controlling whether to write BOM into output byte stream. - -~~~~~~~~~~cpp -#include "rapidjson/filewritestream.h" // FileWriteStream -#include "rapidjson/encodedstream.h" // EncodedOutputStream -#include - -Document d; // Document is GenericDocument > -// ... - -FILE* fp = fopen("output_utf32le.json", "wb"); // non-Windows use "w" - -char writeBuffer[256]; -FileWriteStream bos(fp, writeBuffer, sizeof(writeBuffer)); - -typedef EncodedOutputStream, FileWriteStream> OutputStream; -OutputStream eos(bos, true); // Write BOM - -Writer, UTF8<>> writer(eos); -d.Accept(writer); // This generates UTF32-LE file from UTF-8 in memory - -fclose(fp); -~~~~~~~~~~ - -## AutoUTFInputStream {#AutoUTFInputStream} - -Sometimes an application may want to handle all supported JSON encoding. `AutoUTFInputStream` will detection encoding by BOM first. If BOM is unavailable, it will use characteristics of valid JSON to make detection. If neither method success, it falls back to the UTF type provided in constructor. - -Since the characters (code units) may be 8-bit, 16-bit or 32-bit. `AutoUTFInputStream` requires a character type which can hold at least 32-bit. We may use `unsigned`, as in the template parameter: - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/filereadstream.h" // FileReadStream -#include "rapidjson/encodedstream.h" // AutoUTFInputStream -#include - -using namespace rapidjson; - -FILE* fp = fopen("any.json", "rb"); // non-Windows use "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -AutoUTFInputStream eis(bis); // wraps bis into eis - -Document d; // Document is GenericDocument > -d.ParseStream<0, AutoUTF >(eis); // This parses any UTF file into UTF-8 in memory - -fclose(fp); -~~~~~~~~~~ - -When specifying the encoding of stream, uses `AutoUTF` as in `ParseStream()` above. - -You can obtain the type of UTF via `UTFType GetType()`. And check whether a BOM is found by `HasBOM()` - -## AutoUTFOutputStream {#AutoUTFOutputStream} - -Similarly, to choose encoding for output during runtime, we can use `AutoUTFOutputStream`. This class is not automatic *per se*. You need to specify the UTF type and whether to write BOM in runtime. - -~~~~~~~~~~cpp -using namespace rapidjson; - -void WriteJSONFile(FILE* fp, UTFType type, bool putBOM, const Document& d) { - char writeBuffer[256]; - FileWriteStream bos(fp, writeBuffer, sizeof(writeBuffer)); - - typedef AutoUTFOutputStream OutputStream; - OutputStream eos(bos, type, putBOM); - - Writer, AutoUTF<> > writer; - d.Accept(writer); -} -~~~~~~~~~~ - -`AutoUTFInputStream` and `AutoUTFOutputStream` is more convenient than `EncodedInputStream` and `EncodedOutputStream`. They just incur a little bit runtime overheads. - -# Custom Stream {#CustomStream} - -In addition to memory/file streams, user can create their own stream classes which fits RapidJSON's API. For example, you may create network stream, stream from compressed file, etc. - -RapidJSON combines different types using templates. A class containing all required interface can be a stream. The Stream interface is defined in comments of `rapidjson/rapidjson.h`: - -~~~~~~~~~~cpp -concept Stream { - typename Ch; //!< Character type of the stream. - - //! Read the current character from stream without moving the read cursor. - Ch Peek() const; - - //! Read the current character from stream and moving the read cursor to next character. - Ch Take(); - - //! Get the current read cursor. - //! \return Number of characters read from start. - size_t Tell(); - - //! Begin writing operation at the current read pointer. - //! \return The begin writer pointer. - Ch* PutBegin(); - - //! Write a character. - void Put(Ch c); - - //! Flush the buffer. - void Flush(); - - //! End the writing operation. - //! \param begin The begin write pointer returned by PutBegin(). - //! \return Number of characters written. - size_t PutEnd(Ch* begin); -} -~~~~~~~~~~ - -For input stream, they must implement `Peek()`, `Take()` and `Tell()`. -For output stream, they must implement `Put()` and `Flush()`. -There are two special interface, `PutBegin()` and `PutEnd()`, which are only for *in situ* parsing. Normal streams do not implement them. However, if the interface is not needed for a particular stream, it is still need to a dummy implementation, otherwise will generate compilation error. - -## Example: istream wrapper {#ExampleIStreamWrapper} - -The following example is a simple wrapper of `std::istream`, which only implements 3 functions. - -~~~~~~~~~~cpp -class MyIStreamWrapper { -public: - typedef char Ch; - - MyIStreamWrapper(std::istream& is) : is_(is) { - } - - Ch Peek() const { // 1 - int c = is_.peek(); - return c == std::char_traits::eof() ? '\0' : (Ch)c; - } - - Ch Take() { // 2 - int c = is_.get(); - return c == std::char_traits::eof() ? '\0' : (Ch)c; - } - - size_t Tell() const { return (size_t)is_.tellg(); } // 3 - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch) { assert(false); } - void Flush() { assert(false); } - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - MyIStreamWrapper(const MyIStreamWrapper&); - MyIStreamWrapper& operator=(const MyIStreamWrapper&); - - std::istream& is_; -}; -~~~~~~~~~~ - -User can use it to wrap instances of `std::stringstream`, `std::ifstream`. - -~~~~~~~~~~cpp -const char* json = "[1,2,3,4]"; -std::stringstream ss(json); -MyIStreamWrapper is(ss); - -Document d; -d.ParseStream(is); -~~~~~~~~~~ - -Note that, this implementation may not be as efficient as RapidJSON's memory or file streams, due to internal overheads of the standard library. - -## Example: ostream wrapper {#ExampleOStreamWrapper} - -The following example is a simple wrapper of `std::istream`, which only implements 2 functions. - -~~~~~~~~~~cpp -class MyOStreamWrapper { -public: - typedef char Ch; - - MyOStreamWrapper(std::ostream& os) : os_(os) { - } - - Ch Peek() const { assert(false); return '\0'; } - Ch Take() { assert(false); return '\0'; } - size_t Tell() const { } - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch c) { os_.put(c); } // 1 - void Flush() { os_.flush(); } // 2 - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - MyOStreamWrapper(const MyOStreamWrapper&); - MyOStreamWrapper& operator=(const MyOStreamWrapper&); - - std::ostream& os_; -}; -~~~~~~~~~~ - -User can use it to wrap instances of `std::stringstream`, `std::ofstream`. - -~~~~~~~~~~cpp -Document d; -// ... - -std::stringstream ss; -MyOStreamWrapper os(ss); - -Writer writer(os); -d.Accept(writer); -~~~~~~~~~~ - -Note that, this implementation may not be as efficient as RapidJSON's memory or file streams, due to internal overheads of the standard library. - -# Summary {#Summary} - -This section describes stream classes available in RapidJSON. Memory streams are simple. File stream can reduce the memory required during JSON parsing and generation, if the JSON is stored in file system. Encoded streams converts between byte streams and character streams. Finally, user may create custom streams using a simple interface. diff --git a/rapidjson-lib/doc/stream.zh-cn.md b/rapidjson-lib/doc/stream.zh-cn.md deleted file mode 100644 index f2c54f7..0000000 --- a/rapidjson-lib/doc/stream.zh-cn.md +++ /dev/null @@ -1,426 +0,0 @@ -# 流 - -在 RapidJSON 中,`rapidjson::Stream` 是用於读写 JSON 的概念(概念是指 C++ 的 concept)。在这里我们先介绍如何使用 RapidJSON 提供的各种流。然后再看看如何自行定义流。 - -[TOC] - -# 内存流 {#MemoryStreams} - -内存流把 JSON 存储在内存之中。 - -## StringStream(输入){#StringStream} - -`StringStream` 是最基本的输入流,它表示一个完整的、只读的、存储于内存的 JSON。它在 `rapidjson/rapidjson.h` 中定义。 - -~~~~~~~~~~cpp -#include "rapidjson/document.h" // 会包含 "rapidjson/rapidjson.h" - -using namespace rapidjson; - -// ... -const char json[] = "[1, 2, 3, 4]"; -StringStream s(json); - -Document d; -d.ParseStream(s); -~~~~~~~~~~ - -由于这是非常常用的用法,RapidJSON 提供 `Document::Parse(const char*)` 去做完全相同的事情: - -~~~~~~~~~~cpp -// ... -const char json[] = "[1, 2, 3, 4]"; -Document d; -d.Parse(json); -~~~~~~~~~~ - -需要注意,`StringStream` 是 `GenericStringStream >` 的 typedef,使用者可用其他编码类去代表流所使用的字符集。 - -## StringBuffer(输出){#StringBuffer} - -`StringBuffer` 是一个简单的输出流。它分配一个内存缓冲区,供写入整个 JSON。可使用 `GetString()` 来获取该缓冲区。 - -~~~~~~~~~~cpp -#include "rapidjson/stringbuffer.h" - -StringBuffer buffer; -Writer writer(buffer); -d.Accept(writer); - -const char* output = buffer.GetString(); -~~~~~~~~~~ - -当缓冲区满溢,它将自动增加容量。缺省容量是 256 个字符(UTF8 是 256 字节,UTF16 是 512 字节等)。使用者能自行提供分配器及初始容量。 - -~~~~~~~~~~cpp -StringBuffer buffer1(0, 1024); // 使用它的分配器,初始大小 = 1024 -StringBuffer buffer2(allocator, 1024); -~~~~~~~~~~ - -如无设置分配器,`StringBuffer` 会自行实例化一个内部分配器。 - -相似地,`StringBuffer` 是 `GenericStringBuffer >` 的 typedef。 - -# 文件流 {#FileStreams} - -当要从文件解析一个 JSON,你可以把整个 JSON 读入内存并使用上述的 `StringStream`。 - -然而,若 JSON 很大,或是内存有限,你可以改用 `FileReadStream`。它只会从文件读取一部分至缓冲区,然后让那部分被解析。若缓冲区的字符都被读完,它会再从文件读取下一部分。 - -## FileReadStream(输入) {#FileReadStream} - -`FileReadStream` 通过 `FILE` 指针读取文件。使用者需要提供一个缓冲区。 - -~~~~~~~~~~cpp -#include "rapidjson/filereadstream.h" -#include - -using namespace rapidjson; - -FILE* fp = fopen("big.json", "rb"); // 非 Windows 平台使用 "r" - -char readBuffer[65536]; -FileReadStream is(fp, readBuffer, sizeof(readBuffer)); - -Document d; -d.ParseStream(is); - -fclose(fp); -~~~~~~~~~~ - -与 `StringStreams` 不一样,`FileReadStream` 是一个字节流。它不处理编码。若文件并非 UTF-8 编码,可以把字节流用 `EncodedInputStream` 包装。我们很快会讨论这个问题。 - -除了读取文件,使用者也可以使用 `FileReadStream` 来读取 `stdin`。 - -## FileWriteStream(输出){#FileWriteStream} - -`FileWriteStream` 是一个含缓冲功能的输出流。它的用法与 `FileReadStream` 非常相似。 - -~~~~~~~~~~cpp -#include "rapidjson/filewritestream.h" -#include - -using namespace rapidjson; - -Document d; -d.Parse(json); -// ... - -FILE* fp = fopen("output.json", "wb"); // 非 Windows 平台使用 "w" - -char writeBuffer[65536]; -FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer)); - -Writer writer(os); -d.Accept(writer); - -fclose(fp); -~~~~~~~~~~ - -它也可以把输出导向 `stdout`。 - -# iostream 包装类 {#iostreamWrapper} - -基于用户的要求,RapidJSON 提供了正式的 `std::basic_istream` 和 `std::basic_ostream` 包装类。然而,请注意其性能会大大低于以上的其他流。 - -## IStreamWrapper {#IStreamWrapper} - -`IStreamWrapper` 把任何继承自 `std::istream` 的类(如 `std::istringstream`、`std::stringstream`、`std::ifstream`、`std::fstream`)包装成 RapidJSON 的输入流。 - -~~~cpp -#include -#include -#include - -using namespace rapidjson; -using namespace std; - -ifstream ifs("test.json"); -IStreamWrapper isw(ifs); - -Document d; -d.ParseStream(isw); -~~~ - -对于继承自 `std::wistream` 的类,则使用 `WIStreamWrapper`。 - -## OStreamWrapper {#OStreamWrapper} - -相似地,`OStreamWrapper` 把任何继承自 `std::ostream` 的类(如 `std::ostringstream`、`std::stringstream`、`std::ofstream`、`std::fstream`)包装成 RapidJSON 的输出流。 - -~~~cpp -#include -#include -#include -#include - -using namespace rapidjson; -using namespace std; - -Document d; -d.Parse(json); - -// ... - -ofstream ofs("output.json"); -OStreamWrapper osw(ofs); - -Writer writer(osw); -d.Accept(writer); -~~~ - -对于继承自 `std::wistream` 的类,则使用 `WIStreamWrapper`。 - -# 编码流 {#EncodedStreams} - -编码流(encoded streams)本身不存储 JSON,它们是通过包装字节流来提供基本的编码/解码功能。 - -如上所述,我们可以直接读入 UTF-8 字节流。然而,UTF-16 及 UTF-32 有字节序(endian)问题。要正确地处理字节序,需要在读取时把字节转换成字符(如对 UTF-16 使用 `wchar_t`),以及在写入时把字符转换为字节。 - -除此以外,我们也需要处理 [字节顺序标记(byte order mark, BOM)](http://en.wikipedia.org/wiki/Byte_order_mark)。当从一个字节流读取时,需要检测 BOM,或者仅仅是把存在的 BOM 消去。当把 JSON 写入字节流时,也可选择写入 BOM。 - -若一个流的编码在编译期已知,你可使用 `EncodedInputStream` 及 `EncodedOutputStream`。若一个流可能存储 UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE 的 JSON,并且编码只能在运行时得知,你便可以使用 `AutoUTFInputStream` 及 `AutoUTFOutputStream`。这些流定义在 `rapidjson/encodedstream.h`。 - -注意到,这些编码流可以施于文件以外的流。例如,你可以用编码流包装内存中的文件或自定义的字节流。 - -## EncodedInputStream {#EncodedInputStream} - -`EncodedInputStream` 含两个模板参数。第一个是 `Encoding` 类型,例如定义于 `rapidjson/encodings.h` 的 `UTF8`、`UTF16LE`。第二个参数是被包装的流的类型。 - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/filereadstream.h" // FileReadStream -#include "rapidjson/encodedstream.h" // EncodedInputStream -#include - -using namespace rapidjson; - -FILE* fp = fopen("utf16le.json", "rb"); // 非 Windows 平台使用 "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -EncodedInputStream, FileReadStream> eis(bis); // 用 eis 包装 bis - -Document d; // Document 为 GenericDocument > -d.ParseStream<0, UTF16LE<> >(eis); // 把 UTF-16LE 文件解析至内存中的 UTF-8 - -fclose(fp); -~~~~~~~~~~ - -## EncodedOutputStream {#EncodedOutputStream} - -`EncodedOutputStream` 也是相似的,但它的构造函数有一个 `bool putBOM` 参数,用于控制是否在输出字节流写入 BOM。 - -~~~~~~~~~~cpp -#include "rapidjson/filewritestream.h" // FileWriteStream -#include "rapidjson/encodedstream.h" // EncodedOutputStream -#include - -Document d; // Document 为 GenericDocument > -// ... - -FILE* fp = fopen("output_utf32le.json", "wb"); // 非 Windows 平台使用 "w" - -char writeBuffer[256]; -FileWriteStream bos(fp, writeBuffer, sizeof(writeBuffer)); - -typedef EncodedOutputStream, FileWriteStream> OutputStream; -OutputStream eos(bos, true); // 写入 BOM - -Writer, UTF8<>> writer(eos); -d.Accept(writer); // 这里从内存的 UTF-8 生成 UTF32-LE 文件 - -fclose(fp); -~~~~~~~~~~ - -## AutoUTFInputStream {#AutoUTFInputStream} - -有时候,应用软件可能需要㲃理所有可支持的 JSON 编码。`AutoUTFInputStream` 会先使用 BOM 来检测编码。若 BOM 不存在,它便会使用合法 JSON 的特性来检测。若两种方法都失败,它就会倒退至构造函数提供的 UTF 类型。 - -由于字符(编码单元/code unit)可能是 8 位、16 位或 32 位,`AutoUTFInputStream` 需要一个能至少储存 32 位的字符类型。我们可以使用 `unsigned` 作为模板参数: - -~~~~~~~~~~cpp -#include "rapidjson/document.h" -#include "rapidjson/filereadstream.h" // FileReadStream -#include "rapidjson/encodedstream.h" // AutoUTFInputStream -#include - -using namespace rapidjson; - -FILE* fp = fopen("any.json", "rb"); // 非 Windows 平台使用 "r" - -char readBuffer[256]; -FileReadStream bis(fp, readBuffer, sizeof(readBuffer)); - -AutoUTFInputStream eis(bis); // 用 eis 包装 bis - -Document d; // Document 为 GenericDocument > -d.ParseStream<0, AutoUTF >(eis); // 把任何 UTF 编码的文件解析至内存中的 UTF-8 - -fclose(fp); -~~~~~~~~~~ - -当要指定流的编码,可使用上面例子中 `ParseStream()` 的参数 `AutoUTF`。 - -你可以使用 `UTFType GetType()` 去获取 UTF 类型,并且用 `HasBOM()` 检测输入流是否含有 BOM。 - -## AutoUTFOutputStream {#AutoUTFOutputStream} - -相似地,要在运行时选择输出的编码,我们可使用 `AutoUTFOutputStream`。这个类本身并非「自动」。你需要在运行时指定 UTF 类型,以及是否写入 BOM。 - -~~~~~~~~~~cpp -using namespace rapidjson; - -void WriteJSONFile(FILE* fp, UTFType type, bool putBOM, const Document& d) { - char writeBuffer[256]; - FileWriteStream bos(fp, writeBuffer, sizeof(writeBuffer)); - - typedef AutoUTFOutputStream OutputStream; - OutputStream eos(bos, type, putBOM); - - Writer, AutoUTF<> > writer; - d.Accept(writer); -} -~~~~~~~~~~ - -`AutoUTFInputStream`/`AutoUTFOutputStream` 是比 `EncodedInputStream`/`EncodedOutputStream` 方便。但前者会产生一点运行期额外开销。 - -# 自定义流 {#CustomStream} - -除了内存/文件流,使用者可创建自行定义适配 RapidJSON API 的流类。例如,你可以创建网络流、从压缩文件读取的流等等。 - -RapidJSON 利用模板结合不同的类型。只要一个类包含所有所需的接口,就可以作为一个流。流的接合定义在 `rapidjson/rapidjson.h` 的注释里: - -~~~~~~~~~~cpp -concept Stream { - typename Ch; //!< 流的字符类型 - - //! 从流读取当前字符,不移动读取指针(read cursor) - Ch Peek() const; - - //! 从流读取当前字符,移动读取指针至下一字符。 - Ch Take(); - - //! 获取读取指针。 - //! \return 从开始以来所读过的字符数量。 - size_t Tell(); - - //! 从当前读取指针开始写入操作。 - //! \return 返回开始写入的指针。 - Ch* PutBegin(); - - //! 写入一个字符。 - void Put(Ch c); - - //! 清空缓冲区。 - void Flush(); - - //! 完成写作操作。 - //! \param begin PutBegin() 返回的开始写入指针。 - //! \return 已写入的字符数量。 - size_t PutEnd(Ch* begin); -} -~~~~~~~~~~ - -输入流必须实现 `Peek()`、`Take()` 及 `Tell()`。 -输出流必须实现 `Put()` 及 `Flush()`。 -`PutBegin()` 及 `PutEnd()` 是特殊的接口,仅用于原位(*in situ*)解析。一般的流不需实现它们。然而,即使接口不需用于某些流,仍然需要提供空实现,否则会产生编译错误。 - -## 例子:istream 的包装类 {#ExampleIStreamWrapper} - -以下的简单例子是 `std::istream` 的包装类,它只需现 3 个函数。 - -~~~~~~~~~~cpp -class MyIStreamWrapper { -public: - typedef char Ch; - - MyIStreamWrapper(std::istream& is) : is_(is) { - } - - Ch Peek() const { // 1 - int c = is_.peek(); - return c == std::char_traits::eof() ? '\0' : (Ch)c; - } - - Ch Take() { // 2 - int c = is_.get(); - return c == std::char_traits::eof() ? '\0' : (Ch)c; - } - - size_t Tell() const { return (size_t)is_.tellg(); } // 3 - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch) { assert(false); } - void Flush() { assert(false); } - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - MyIStreamWrapper(const MyIStreamWrapper&); - MyIStreamWrapper& operator=(const MyIStreamWrapper&); - - std::istream& is_; -}; -~~~~~~~~~~ - -使用者能用它来包装 `std::stringstream`、`std::ifstream` 的实例。 - -~~~~~~~~~~cpp -const char* json = "[1,2,3,4]"; -std::stringstream ss(json); -MyIStreamWrapper is(ss); - -Document d; -d.ParseStream(is); -~~~~~~~~~~ - -但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。 - -## 例子:ostream 的包装类 {#ExampleOStreamWrapper} - -以下的例子是 `std::istream` 的包装类,它只需实现 2 个函数。 - -~~~~~~~~~~cpp -class MyOStreamWrapper { -public: - typedef char Ch; - - OStreamWrapper(std::ostream& os) : os_(os) { - } - - Ch Peek() const { assert(false); return '\0'; } - Ch Take() { assert(false); return '\0'; } - size_t Tell() const { } - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch c) { os_.put(c); } // 1 - void Flush() { os_.flush(); } // 2 - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - MyOStreamWrapper(const MyOStreamWrapper&); - MyOStreamWrapper& operator=(const MyOStreamWrapper&); - - std::ostream& os_; -}; -~~~~~~~~~~ - -使用者能用它来包装 `std::stringstream`、`std::ofstream` 的实例。 - -~~~~~~~~~~cpp -Document d; -// ... - -std::stringstream ss; -MyOStreamWrapper os(ss); - -Writer writer(os); -d.Accept(writer); -~~~~~~~~~~ - -但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。 - -# 总结 {#Summary} - -本节描述了 RapidJSON 提供的各种流的类。内存流很简单。若 JSON 存储在文件中,文件流可减少 JSON 解析及生成所需的内存量。编码流在字节流和字符流之间作转换。最后,使用者可使用一个简单接口创建自定义的流。 diff --git a/rapidjson-lib/doc/tutorial.md b/rapidjson-lib/doc/tutorial.md deleted file mode 100644 index cb76b4b..0000000 --- a/rapidjson-lib/doc/tutorial.md +++ /dev/null @@ -1,536 +0,0 @@ -# Tutorial - -This tutorial introduces the basics of the Document Object Model(DOM) API. - -As shown in [Usage at a glance](@ref index), a JSON can be parsed into DOM, and then the DOM can be queried and modified easily, and finally be converted back to JSON. - -[TOC] - -# Value & Document {#ValueDocument} - -Each JSON value is stored in a type called `Value`. A `Document`, representing the DOM, contains the root `Value` of the DOM tree. All public types and functions of RapidJSON are defined in the `rapidjson` namespace. - -# Query Value {#QueryValue} - -In this section, we will use excerpt of `example/tutorial/tutorial.cpp`. - -Assumes we have a JSON stored in a C string (`const char* json`): -~~~~~~~~~~js -{ - "hello": "world", - "t": true , - "f": false, - "n": null, - "i": 123, - "pi": 3.1416, - "a": [1, 2, 3, 4] -} -~~~~~~~~~~ - -Parse it into a `Document`: -~~~~~~~~~~cpp -#include "rapidjson/document.h" - -using namespace rapidjson; - -// ... -Document document; -document.Parse(json); -~~~~~~~~~~ - -The JSON is now parsed into `document` as a *DOM tree*: - -![DOM in the tutorial](diagram/tutorial.png) - -Since the update to RFC 7159, the root of a conforming JSON document can be any JSON value. In earlier RFC 4627, only objects or arrays were allowed as root values. In this case, the root is an object. -~~~~~~~~~~cpp -assert(document.IsObject()); -~~~~~~~~~~ - -Let's query whether a `"hello"` member exists in the root object. Since a `Value` can contain different types of value, we may need to verify its type and use suitable API to obtain the value. In this example, `"hello"` member associates with a JSON string. -~~~~~~~~~~cpp -assert(document.HasMember("hello")); -assert(document["hello"].IsString()); -printf("hello = %s\n", document["hello"].GetString()); -~~~~~~~~~~ - -~~~~~~~~~~ -world -~~~~~~~~~~ - -JSON true/false values are represented as `bool`. -~~~~~~~~~~cpp -assert(document["t"].IsBool()); -printf("t = %s\n", document["t"].GetBool() ? "true" : "false"); -~~~~~~~~~~ - -~~~~~~~~~~ -true -~~~~~~~~~~ - -JSON null can be queryed by `IsNull()`. -~~~~~~~~~~cpp -printf("n = %s\n", document["n"].IsNull() ? "null" : "?"); -~~~~~~~~~~ - -~~~~~~~~~~ -null -~~~~~~~~~~ - -JSON number type represents all numeric values. However, C++ needs more specific type for manipulation. - -~~~~~~~~~~cpp -assert(document["i"].IsNumber()); - -// In this case, IsUint()/IsInt64()/IsUInt64() also return true. -assert(document["i"].IsInt()); -printf("i = %d\n", document["i"].GetInt()); -// Alternative (int)document["i"] - -assert(document["pi"].IsNumber()); -assert(document["pi"].IsDouble()); -printf("pi = %g\n", document["pi"].GetDouble()); -~~~~~~~~~~ - -~~~~~~~~~~ -i = 123 -pi = 3.1416 -~~~~~~~~~~ - -JSON array contains a number of elements. -~~~~~~~~~~cpp -// Using a reference for consecutive access is handy and faster. -const Value& a = document["a"]; -assert(a.IsArray()); -for (SizeType i = 0; i < a.Size(); i++) // Uses SizeType instead of size_t - printf("a[%d] = %d\n", i, a[i].GetInt()); -~~~~~~~~~~ - -~~~~~~~~~~ -a[0] = 1 -a[1] = 2 -a[2] = 3 -a[3] = 4 -~~~~~~~~~~ - -Note that, RapidJSON does not automatically convert values between JSON types. If a value is a string, it is invalid to call `GetInt()`, for example. In debug mode it will fail an assertion. In release mode, the behavior is undefined. - -In the following, details about querying individual types are discussed. - -## Query Array {#QueryArray} - -By default, `SizeType` is typedef of `unsigned`. In most systems, array is limited to store up to 2^32-1 elements. - -You may access the elements in array by integer literal, for example, `a[0]`, `a[1]`, `a[2]`. - -Array is similar to `std::vector`, instead of using indices, you may also use iterator to access all the elements. -~~~~~~~~~~cpp -for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) - printf("%d ", itr->GetInt()); -~~~~~~~~~~ - -And other familiar query functions: -* `SizeType Capacity() const` -* `bool Empty() const` - -### Range-based For Loop (New in v1.1.0) - -When C++11 is enabled, you can use range-based for loop to access all elements in an array. - -~~~~~~~~~~cpp -for (auto& v : a.GetArray()) - printf("%d ", v.GetInt()); -~~~~~~~~~~ - -## Query Object {#QueryObject} - -Similar to array, we can access all object members by iterator: - -~~~~~~~~~~cpp -static const char* kTypeNames[] = - { "Null", "False", "True", "Object", "Array", "String", "Number" }; - -for (Value::ConstMemberIterator itr = document.MemberBegin(); - itr != document.MemberEnd(); ++itr) -{ - printf("Type of member %s is %s\n", - itr->name.GetString(), kTypeNames[itr->value.GetType()]); -} -~~~~~~~~~~ - -~~~~~~~~~~ -Type of member hello is String -Type of member t is True -Type of member f is False -Type of member n is Null -Type of member i is Number -Type of member pi is Number -Type of member a is Array -~~~~~~~~~~ - -Note that, when `operator[](const char*)` cannot find the member, it will fail an assertion. - -If we are unsure whether a member exists, we need to call `HasMember()` before calling `operator[](const char*)`. However, this incurs two lookup. A better way is to call `FindMember()`, which can check the existence of member and obtain its value at once: - -~~~~~~~~~~cpp -Value::ConstMemberIterator itr = document.FindMember("hello"); -if (itr != document.MemberEnd()) - printf("%s\n", itr->value.GetString()); -~~~~~~~~~~ - -### Range-based For Loop (New in v1.1.0) - -When C++11 is enabled, you can use range-based for loop to access all members in an object. - -~~~~~~~~~~cpp -for (auto& m : document.GetObject()) - printf("Type of member %s is %s\n", - m.name.GetString(), kTypeNames[m.value.GetType()]); -~~~~~~~~~~ - -## Querying Number {#QueryNumber} - -JSON provide a single numerical type called Number. Number can be integer or real numbers. RFC 4627 says the range of Number is specified by parser. - -As C++ provides several integer and floating point number types, the DOM tries to handle these with widest possible range and good performance. - -When a Number is parsed, it is stored in the DOM as either one of the following type: - -Type | Description ------------|--------------------------------------- -`unsigned` | 32-bit unsigned integer -`int` | 32-bit signed integer -`uint64_t` | 64-bit unsigned integer -`int64_t` | 64-bit signed integer -`double` | 64-bit double precision floating point - -When querying a number, you can check whether the number can be obtained as target type: - -Checking | Obtaining -------------------|--------------------- -`bool IsNumber()` | N/A -`bool IsUint()` | `unsigned GetUint()` -`bool IsInt()` | `int GetInt()` -`bool IsUint64()` | `uint64_t GetUint64()` -`bool IsInt64()` | `int64_t GetInt64()` -`bool IsDouble()` | `double GetDouble()` - -Note that, an integer value may be obtained in various ways without conversion. For example, A value `x` containing 123 will make `x.IsInt() == x.IsUint() == x.IsInt64() == x.IsUint64() == true`. But a value `y` containing -3000000000 will only makes `x.IsInt64() == true`. - -When obtaining the numeric values, `GetDouble()` will convert internal integer representation to a `double`. Note that, `int` and `unsigned` can be safely convert to `double`, but `int64_t` and `uint64_t` may lose precision (since mantissa of `double` is only 52-bits). - -## Query String {#QueryString} - -In addition to `GetString()`, the `Value` class also contains `GetStringLength()`. Here explains why. - -According to RFC 4627, JSON strings can contain Unicode character `U+0000`, which must be escaped as `"\u0000"`. The problem is that, C/C++ often uses null-terminated string, which treats ``\0'` as the terminator symbol. - -To conform RFC 4627, RapidJSON supports string containing `U+0000`. If you need to handle this, you can use `GetStringLength()` API to obtain the correct length of string. - -For example, after parsing a the following JSON to `Document d`: - -~~~~~~~~~~js -{ "s" : "a\u0000b" } -~~~~~~~~~~ -The correct length of the value `"a\u0000b"` is 3. But `strlen()` returns 1. - -`GetStringLength()` can also improve performance, as user may often need to call `strlen()` for allocating buffer. - -Besides, `std::string` also support a constructor: - -~~~~~~~~~~cpp -string(const char* s, size_t count); -~~~~~~~~~~ - -which accepts the length of string as parameter. This constructor supports storing null character within the string, and should also provide better performance. - -## Comparing values - -You can use `==` and `!=` to compare values. Two values are equal if and only if they are have same type and contents. You can also compare values with primitive types. Here is an example. - -~~~~~~~~~~cpp -if (document["hello"] == document["n"]) /*...*/; // Compare values -if (document["hello"] == "world") /*...*/; // Compare value with literal string -if (document["i"] != 123) /*...*/; // Compare with integers -if (document["pi"] != 3.14) /*...*/; // Compare with double. -~~~~~~~~~~ - -Array/object compares their elements/members in order. They are equal if and only if their whole subtrees are equal. - -Note that, currently if an object contains duplicated named member, comparing equality with any object is always `false`. - -# Create/Modify Values {#CreateModifyValues} - -There are several ways to create values. After a DOM tree is created and/or modified, it can be saved as JSON again using `Writer`. - -## Change Value Type {#ChangeValueType} -When creating a Value or Document by default constructor, its type is Null. To change its type, call `SetXXX()` or assignment operator, for example: - -~~~~~~~~~~cpp -Document d; // Null -d.SetObject(); - -Value v; // Null -v.SetInt(10); -v = 10; // Shortcut, same as above -~~~~~~~~~~ - -### Overloaded Constructors -There are also overloaded constructors for several types: - -~~~~~~~~~~cpp -Value b(true); // calls Value(bool) -Value i(-123); // calls Value(int) -Value u(123u); // calls Value(unsigned) -Value d(1.5); // calls Value(double) -~~~~~~~~~~ - -To create empty object or array, you may use `SetObject()`/`SetArray()` after default constructor, or using the `Value(Type)` in one shot: - -~~~~~~~~~~cpp -Value o(kObjectType); -Value a(kArrayType); -~~~~~~~~~~ - -## Move Semantics {#MoveSemantics} - -A very special decision during design of RapidJSON is that, assignment of value does not copy the source value to destination value. Instead, the value from source is moved to the destination. For example, - -~~~~~~~~~~cpp -Value a(123); -Value b(456); -b = a; // a becomes a Null value, b becomes number 123. -~~~~~~~~~~ - -![Assignment with move semantics.](diagram/move1.png) - -Why? What is the advantage of this semantics? - -The simple answer is performance. For fixed size JSON types (Number, True, False, Null), copying them is fast and easy. However, For variable size JSON types (String, Array, Object), copying them will incur a lot of overheads. And these overheads are often unnoticed. Especially when we need to create temporary object, copy it to another variable, and then destruct it. - -For example, if normal *copy* semantics was used: - -~~~~~~~~~~cpp -Document d; -Value o(kObjectType); -{ - Value contacts(kArrayType); - // adding elements to contacts array. - // ... - o.AddMember("contacts", contacts, d.GetAllocator()); // deep clone contacts (may be with lots of allocations) - // destruct contacts. -} -~~~~~~~~~~ - -![Copy semantics makes a lots of copy operations.](diagram/move2.png) - -The object `o` needs to allocate a buffer of same size as contacts, makes a deep clone of it, and then finally contacts is destructed. This will incur a lot of unnecessary allocations/deallocations and memory copying. - -There are solutions to prevent actual copying these data, such as reference counting and garbage collection(GC). - -To make RapidJSON simple and fast, we chose to use *move* semantics for assignment. It is similar to `std::auto_ptr` which transfer ownership during assignment. Move is much faster and simpler, it just destructs the original value, `memcpy()` the source to destination, and finally sets the source as Null type. - -So, with move semantics, the above example becomes: - -~~~~~~~~~~cpp -Document d; -Value o(kObjectType); -{ - Value contacts(kArrayType); - // adding elements to contacts array. - o.AddMember("contacts", contacts, d.GetAllocator()); // just memcpy() of contacts itself to the value of new member (16 bytes) - // contacts became Null here. Its destruction is trivial. -} -~~~~~~~~~~ - -![Move semantics makes no copying.](diagram/move3.png) - -This is called move assignment operator in C++11. As RapidJSON supports C++03, it adopts move semantics using assignment operator, and all other modifying function like `AddMember()`, `PushBack()`. - -### Move semantics and temporary values {#TemporaryValues} - -Sometimes, it is convenient to construct a Value in place, before passing it to one of the "moving" functions, like `PushBack()` or `AddMember()`. As temporary objects can't be converted to proper Value references, the convenience function `Move()` is available: - -~~~~~~~~~~cpp -Value a(kArrayType); -Document::AllocatorType& allocator = document.GetAllocator(); -// a.PushBack(Value(42), allocator); // will not compile -a.PushBack(Value().SetInt(42), allocator); // fluent API -a.PushBack(Value(42).Move(), allocator); // same as above -~~~~~~~~~~ - -## Create String {#CreateString} -RapidJSON provide two strategies for storing string. - -1. copy-string: allocates a buffer, and then copy the source data into it. -2. const-string: simply store a pointer of string. - -Copy-string is always safe because it owns a copy of the data. Const-string can be used for storing string literal, and in-situ parsing which we will mentioned in Document section. - -To make memory allocation customizable, RapidJSON requires user to pass an instance of allocator, whenever an operation may require allocation. This design is needed to prevent storing a allocator (or Document) pointer per Value. - -Therefore, when we assign a copy-string, we call this overloaded `SetString()` with allocator: - -~~~~~~~~~~cpp -Document document; -Value author; -char buffer[10]; -int len = sprintf(buffer, "%s %s", "Milo", "Yip"); // dynamically created string. -author.SetString(buffer, len, document.GetAllocator()); -memset(buffer, 0, sizeof(buffer)); -// author.GetString() still contains "Milo Yip" after buffer is destroyed -~~~~~~~~~~ - -In this example, we get the allocator from a `Document` instance. This is a common idiom when using RapidJSON. But you may use other instances of allocator. - -Besides, the above `SetString()` requires length. This can handle null characters within a string. There is another `SetString()` overloaded function without the length parameter. And it assumes the input is null-terminated and calls a `strlen()`-like function to obtain the length. - -Finally, for string literal or string with safe life-cycle can use const-string version of `SetString()`, which lacks allocator parameter. For string literals (or constant character arrays), simply passing the literal as parameter is safe and efficient: - -~~~~~~~~~~cpp -Value s; -s.SetString("rapidjson"); // can contain null character, length derived at compile time -s = "rapidjson"; // shortcut, same as above -~~~~~~~~~~ - -For character pointer, the RapidJSON requires to mark it as safe before using it without copying. This can be achieved by using the `StringRef` function: - -~~~~~~~~~cpp -const char * cstr = getenv("USER"); -size_t cstr_len = ...; // in case length is available -Value s; -// s.SetString(cstr); // will not compile -s.SetString(StringRef(cstr)); // ok, assume safe lifetime, null-terminated -s = StringRef(cstr); // shortcut, same as above -s.SetString(StringRef(cstr,cstr_len)); // faster, can contain null character -s = StringRef(cstr,cstr_len); // shortcut, same as above - -~~~~~~~~~ - -## Modify Array {#ModifyArray} -Value with array type provides similar APIs as `std::vector`. - -* `Clear()` -* `Reserve(SizeType, Allocator&)` -* `Value& PushBack(Value&, Allocator&)` -* `template GenericValue& PushBack(T, Allocator&)` -* `Value& PopBack()` -* `ValueIterator Erase(ConstValueIterator pos)` -* `ValueIterator Erase(ConstValueIterator first, ConstValueIterator last)` - -Note that, `Reserve(...)` and `PushBack(...)` may allocate memory for the array elements, therefore require an allocator. - -Here is an example of `PushBack()`: - -~~~~~~~~~~cpp -Value a(kArrayType); -Document::AllocatorType& allocator = document.GetAllocator(); - -for (int i = 5; i <= 10; i++) - a.PushBack(i, allocator); // allocator is needed for potential realloc(). - -// Fluent interface -a.PushBack("Lua", allocator).PushBack("Mio", allocator); -~~~~~~~~~~ - -Differs from STL, `PushBack()`/`PopBack()` returns the array reference itself. This is called _fluent interface_. - -If you want to add a non-constant string or a string without sufficient lifetime (see [Create String](#CreateString)) to the array, you need to create a string Value by using the copy-string API. To avoid the need for an intermediate variable, you can use a [temporary value](#TemporaryValues) in place: - -~~~~~~~~~~cpp -// in-place Value parameter -contact.PushBack(Value("copy", document.GetAllocator()).Move(), // copy string - document.GetAllocator()); - -// explicit parameters -Value val("key", document.GetAllocator()); // copy string -contact.PushBack(val, document.GetAllocator()); -~~~~~~~~~~ - -## Modify Object {#ModifyObject} -Object is a collection of key-value pairs (members). Each key must be a string value. To modify an object, either add or remove members. THe following APIs are for adding members: - -* `Value& AddMember(Value&, Value&, Allocator& allocator)` -* `Value& AddMember(StringRefType, Value&, Allocator&)` -* `template Value& AddMember(StringRefType, T value, Allocator&)` - -Here is an example. - -~~~~~~~~~~cpp -Value contact(kObject); -contact.AddMember("name", "Milo", document.GetAllocator()); -contact.AddMember("married", true, document.GetAllocator()); -~~~~~~~~~~ - -The name parameter with `StringRefType` is similar to the interface of `SetString` function for string values. These overloads are used to avoid the need for copying the `name` string, as constant key names are very common in JSON objects. - -If you need to create a name from a non-constant string or a string without sufficient lifetime (see [Create String](#CreateString)), you need to create a string Value by using the copy-string API. To avoid the need for an intermediate variable, you can use a [temporary value](#TemporaryValues) in place: - -~~~~~~~~~~cpp -// in-place Value parameter -contact.AddMember(Value("copy", document.GetAllocator()).Move(), // copy string - Value().Move(), // null value - document.GetAllocator()); - -// explicit parameters -Value key("key", document.GetAllocator()); // copy string name -Value val(42); // some value -contact.AddMember(key, val, document.GetAllocator()); -~~~~~~~~~~ - -For removing members, there are several choices: - -* `bool RemoveMember(const Ch* name)`: Remove a member by search its name (linear time complexity). -* `bool RemoveMember(const Value& name)`: same as above but `name` is a Value. -* `MemberIterator RemoveMember(MemberIterator)`: Remove a member by iterator (_constant_ time complexity). -* `MemberIterator EraseMember(MemberIterator)`: similar to the above but it preserves order of members (linear time complexity). -* `MemberIterator EraseMember(MemberIterator first, MemberIterator last)`: remove a range of members, preserves order (linear time complexity). - -`MemberIterator RemoveMember(MemberIterator)` uses a "move-last" trick to achieve constant time complexity. Basically the member at iterator is destructed, and then the last element is moved to that position. So the order of the remaining members are changed. - -## Deep Copy Value {#DeepCopyValue} -If we really need to copy a DOM tree, we can use two APIs for deep copy: constructor with allocator, and `CopyFrom()`. - -~~~~~~~~~~cpp -Document d; -Document::AllocatorType& a = d.GetAllocator(); -Value v1("foo"); -// Value v2(v1); // not allowed - -Value v2(v1, a); // make a copy -assert(v1.IsString()); // v1 untouched -d.SetArray().PushBack(v1, a).PushBack(v2, a); -assert(v1.IsNull() && v2.IsNull()); // both moved to d - -v2.CopyFrom(d, a); // copy whole document to v2 -assert(d.IsArray() && d.Size() == 2); // d untouched -v1.SetObject().AddMember("array", v2, a); -d.PushBack(v1, a); -~~~~~~~~~~ - -## Swap Values {#SwapValues} - -`Swap()` is also provided. - -~~~~~~~~~~cpp -Value a(123); -Value b("Hello"); -a.Swap(b); -assert(a.IsString()); -assert(b.IsInt()); -~~~~~~~~~~ - -Swapping two DOM trees is fast (constant time), despite the complexity of the trees. - -# What's next {#WhatsNext} - -This tutorial shows the basics of DOM tree query and manipulation. There are several important concepts in RapidJSON: - -1. [Streams](doc/stream.md) are channels for reading/writing JSON, which can be a in-memory string, or file stream, etc. User can also create their streams. -2. [Encoding](doc/encoding.md) defines which character encoding is used in streams and memory. RapidJSON also provide Unicode conversion/validation internally. -3. [DOM](doc/dom.md)'s basics are already covered in this tutorial. Uncover more advanced features such as *in situ* parsing, other parsing options and advanced usages. -4. [SAX](doc/sax.md) is the foundation of parsing/generating facility in RapidJSON. Learn how to use `Reader`/`Writer` to implement even faster applications. Also try `PrettyWriter` to format the JSON. -5. [Performance](doc/performance.md) shows some in-house and third-party benchmarks. -6. [Internals](doc/internals.md) describes some internal designs and techniques of RapidJSON. - -You may also refer to the [FAQ](doc/faq.md), API documentation, examples and unit tests. diff --git a/rapidjson-lib/doc/tutorial.zh-cn.md b/rapidjson-lib/doc/tutorial.zh-cn.md deleted file mode 100644 index 61fb0b2..0000000 --- a/rapidjson-lib/doc/tutorial.zh-cn.md +++ /dev/null @@ -1,534 +0,0 @@ -# 教程 - -本教程简介文件对象模型(Document Object Model, DOM)API。 - -如 [用法一览](../readme.zh-cn.md#用法一览) 中所示,可以解析一个 JSON 至 DOM,然后就可以轻松查询及修改 DOM,并最终转换回 JSON。 - -[TOC] - -# Value 及 Document {#ValueDocument} - -每个 JSON 值都储存为 `Value` 类,而 `Document` 类则表示整个 DOM,它存储了一个 DOM 树的根 `Value`。RapidJSON 的所有公开类型及函数都在 `rapidjson` 命名空间中。 - -# 查询 Value {#QueryValue} - -在本节中,我们会使用到 `example/tutorial/tutorial.cpp` 中的代码片段。 - -假设我们用 C 语言的字符串储存一个 JSON(`const char* json`): -~~~~~~~~~~js -{ - "hello": "world", - "t": true , - "f": false, - "n": null, - "i": 123, - "pi": 3.1416, - "a": [1, 2, 3, 4] -} -~~~~~~~~~~ - -把它解析至一个 `Document`: -~~~~~~~~~~cpp -#include "rapidjson/document.h" - -using namespace rapidjson; - -// ... -Document document; -document.Parse(json); -~~~~~~~~~~ - -那么现在该 JSON 就会被解析至 `document` 中,成为一棵 *DOM 树 *: - -![教程中的 DOM](diagram/tutorial.png) - -自从 RFC 7159 作出更新,合法 JSON 文件的根可以是任何类型的 JSON 值。而在较早的 RFC 4627 中,根值只允许是 Object 或 Array。而在上述例子中,根是一个 Object。 -~~~~~~~~~~cpp -assert(document.IsObject()); -~~~~~~~~~~ - -让我们查询一下根 Object 中有没有 `"hello"` 成员。由于一个 `Value` 可包含不同类型的值,我们可能需要验证它的类型,并使用合适的 API 去获取其值。在此例中,`"hello"` 成员关联到一个 JSON String。 -~~~~~~~~~~cpp -assert(document.HasMember("hello")); -assert(document["hello"].IsString()); -printf("hello = %s\n", document["hello"].GetString()); -~~~~~~~~~~ - -~~~~~~~~~~ -world -~~~~~~~~~~ - -JSON True/False 值是以 `bool` 表示的。 -~~~~~~~~~~cpp -assert(document["t"].IsBool()); -printf("t = %s\n", document["t"].GetBool() ? "true" : "false"); -~~~~~~~~~~ - -~~~~~~~~~~ -true -~~~~~~~~~~ - -JSON Null 值可用 `IsNull()` 查询。 -~~~~~~~~~~cpp -printf("n = %s\n", document["n"].IsNull() ? "null" : "?"); -~~~~~~~~~~ - -~~~~~~~~~~ -null -~~~~~~~~~~ - -JSON Number 类型表示所有数值。然而,C++ 需要使用更专门的类型。 - -~~~~~~~~~~cpp -assert(document["i"].IsNumber()); - -// 在此情况下,IsUint()/IsInt64()/IsUInt64() 也会返回 true -assert(document["i"].IsInt()); -printf("i = %d\n", document["i"].GetInt()); -// 另一种用法: (int)document["i"] - -assert(document["pi"].IsNumber()); -assert(document["pi"].IsDouble()); -printf("pi = %g\n", document["pi"].GetDouble()); -~~~~~~~~~~ - -~~~~~~~~~~ -i = 123 -pi = 3.1416 -~~~~~~~~~~ - -JSON Array 包含一些元素。 -~~~~~~~~~~cpp -// 使用引用来连续访问,方便之余还更高效。 -const Value& a = document["a"]; -assert(a.IsArray()); -for (SizeType i = 0; i < a.Size(); i++) // 使用 SizeType 而不是 size_t - printf("a[%d] = %d\n", i, a[i].GetInt()); -~~~~~~~~~~ - -~~~~~~~~~~ -a[0] = 1 -a[1] = 2 -a[2] = 3 -a[3] = 4 -~~~~~~~~~~ - -注意,RapidJSON 并不自动转换各种 JSON 类型。例如,对一个 String 的 Value 调用 `GetInt()` 是非法的。在调试模式下,它会被断言失败。在发布模式下,其行为是未定义的。 - -以下将会讨论有关查询各类型的细节。 - -## 查询 Array {#QueryArray} - -缺省情况下,`SizeType` 是 `unsigned` 的 typedef。在多数系统中,Array 最多能存储 2^32-1 个元素。 - -你可以用整数字面量访问元素,如 `a[0]`、`a[1]`、`a[2]`。 - -Array 与 `std::vector` 相似,除了使用索引,也可使用迭代器来访问所有元素。 -~~~~~~~~~~cpp -for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) - printf("%d ", itr->GetInt()); -~~~~~~~~~~ - -还有一些熟悉的查询函数: -* `SizeType Capacity() const` -* `bool Empty() const` - -### 范围 for 循环 (v1.1.0 中的新功能) - -当使用 C++11 功能时,你可使用范围 for 循环去访问 Array 内的所有元素。 - -~~~~~~~~~~cpp -for (auto& v : a.GetArray()) - printf("%d ", v.GetInt()); -~~~~~~~~~~ - -## 查询 Object {#QueryObject} - -和 Array 相似,我们可以用迭代器去访问所有 Object 成员: - -~~~~~~~~~~cpp -static const char* kTypeNames[] = - { "Null", "False", "True", "Object", "Array", "String", "Number" }; - -for (Value::ConstMemberIterator itr = document.MemberBegin(); - itr != document.MemberEnd(); ++itr) -{ - printf("Type of member %s is %s\n", - itr->name.GetString(), kTypeNames[itr->value.GetType()]); -} -~~~~~~~~~~ - -~~~~~~~~~~ -Type of member hello is String -Type of member t is True -Type of member f is False -Type of member n is Null -Type of member i is Number -Type of member pi is Number -Type of member a is Array -~~~~~~~~~~ - -注意,当 `operator[](const char*)` 找不到成员,它会断言失败。 - -若我们不确定一个成员是否存在,便需要在调用 `operator[](const char*)` 前先调用 `HasMember()`。然而,这会导致两次查找。更好的做法是调用 `FindMember()`,它能同时检查成员是否存在并返回它的 Value: - -~~~~~~~~~~cpp -Value::ConstMemberIterator itr = document.FindMember("hello"); -if (itr != document.MemberEnd()) - printf("%s\n", itr->value.GetString()); -~~~~~~~~~~ - -### 范围 for 循环 (v1.1.0 中的新功能) - -当使用 C++11 功能时,你可使用范围 for 循环去访问 Object 内的所有成员。 - -~~~~~~~~~~cpp -for (auto& m : document.GetObject()) - printf("Type of member %s is %s\n", - m.name.GetString(), kTypeNames[m.value.GetType()]); -~~~~~~~~~~ - -## 查询 Number {#QueryNumber} - -JSON 只提供一种数值类型──Number。数字可以是整数或实数。RFC 4627 规定数字的范围由解析器指定。 - -由于 C++ 提供多种整数及浮点数类型,DOM 尝试尽量提供最广的范围及良好性能。 - -当解析一个 Number 时, 它会被存储在 DOM 之中,成为下列其中一个类型: - -类型 | 描述 ------------|--------------------------------------- -`unsigned` | 32 位无号整数 -`int` | 32 位有号整数 -`uint64_t` | 64 位无号整数 -`int64_t` | 64 位有号整数 -`double` | 64 位双精度浮点数 - -当查询一个 Number 时, 你可以检查该数字是否能以目标类型来提取: - -查检 | 提取 -------------------|--------------------- -`bool IsNumber()` | 不适用 -`bool IsUint()` | `unsigned GetUint()` -`bool IsInt()` | `int GetInt()` -`bool IsUint64()` | `uint64_t GetUint64()` -`bool IsInt64()` | `int64_t GetInt64()` -`bool IsDouble()` | `double GetDouble()` - -注意,一个整数可能用几种类型来提取,而无需转换。例如,一个名为 `x` 的 Value 包含 123,那么 `x.IsInt() == x.IsUint() == x.IsInt64() == x.IsUint64() == true`。但如果一个名为 `y` 的 Value 包含 -3000000000,那么仅会令 `x.IsInt64() == true`。 - -当要提取 Number 类型,`GetDouble()` 是会把内部整数的表示转换成 `double`。注意 `int` 和 `unsigned` 可以安全地转换至 `double`,但 `int64_t` 及 `uint64_t` 可能会丧失精度(因为 `double` 的尾数只有 52 位)。 - -## 查询 String {#QueryString} - -除了 `GetString()`,`Value` 类也有一个 `GetStringLength()`。这里会解释个中原因。 - -根据 RFC 4627,JSON String 可包含 Unicode 字符 `U+0000`,在 JSON 中会表示为 `"\u0000"`。问题是,C/C++ 通常使用空字符结尾字符串(null-terminated string),这种字符串把 ``\0'` 作为结束符号。 - -为了符合 RFC 4627,RapidJSON 支持包含 `U+0000` 的 String。若你需要处理这些 String,便可使用 `GetStringLength()` 去获得正确的字符串长度。 - -例如,当解析以下的 JSON 至 `Document d` 之后: - -~~~~~~~~~~js -{ "s" : "a\u0000b" } -~~~~~~~~~~ -`"a\u0000b"` 值的正确长度应该是 3。但 `strlen()` 会返回 1。 - -`GetStringLength()` 也可以提高性能,因为用户可能需要调用 `strlen()` 去分配缓冲。 - -此外,`std::string` 也支持这个构造函数: - -~~~~~~~~~~cpp -string(const char* s, size_t count); -~~~~~~~~~~ - -此构造函数接受字符串长度作为参数。它支持在字符串中存储空字符,也应该会有更好的性能。 - -## 比较两个 Value - -你可使用 `==` 及 `!=` 去比较两个 Value。当且仅当两个 Value 的类型及内容相同,它们才当作相等。你也可以比较 Value 和它的原生类型值。以下是一个例子。 - -~~~~~~~~~~cpp -if (document["hello"] == document["n"]) /*...*/; // 比较两个值 -if (document["hello"] == "world") /*...*/; // 与字符串家面量作比较 -if (document["i"] != 123) /*...*/; // 与整数作比较 -if (document["pi"] != 3.14) /*...*/; // 与 double 作比较 -~~~~~~~~~~ - -Array/Object 顺序以它们的元素/成员作比较。当且仅当它们的整个子树相等,它们才当作相等。 - -注意,现时若一个 Object 含有重复命名的成员,它与任何 Object 作比较都总会返回 `false`。 - -# 创建/修改值 {#CreateModifyValues} - -有多种方法去创建值。 当一个 DOM 树被创建或修改后,可使用 `Writer` 再次存储为 JSON。 - -## 改变 Value 类型 {#ChangeValueType} -当使用默认构造函数创建一个 Value 或 Document,它的类型便会是 Null。要改变其类型,需调用 `SetXXX()` 或赋值操作,例如: - -~~~~~~~~~~cpp -Document d; // Null -d.SetObject(); - -Value v; // Null -v.SetInt(10); -v = 10; // 简写,和上面的相同 -~~~~~~~~~~ - -### 构造函数的各个重载 -几个类型也有重载构造函数: - -~~~~~~~~~~cpp -Value b(true); // 调用 Value(bool) -Value i(-123); // 调用 Value(int) -Value u(123u); // 调用 Value(unsigned) -Value d(1.5); // 调用 Value(double) -~~~~~~~~~~ - -要重建空 Object 或 Array,可在默认构造函数后使用 `SetObject()`/`SetArray()`,或一次性使用 `Value(Type)`: - -~~~~~~~~~~cpp -Value o(kObjectType); -Value a(kArrayType); -~~~~~~~~~~ - -## 转移语意(Move Semantics) {#MoveSemantics} - -在设计 RapidJSON 时有一个非常特别的决定,就是 Value 赋值并不是把来源 Value 复制至目的 Value,而是把把来源 Value 转移(move)至目的 Value。例如: - -~~~~~~~~~~cpp -Value a(123); -Value b(456); -b = a; // a 变成 Null,b 变成数字 123。 -~~~~~~~~~~ - -![使用移动语意赋值。](diagram/move1.png) - -为什么?此语意有何优点? - -最简单的答案就是性能。对于固定大小的 JSON 类型(Number、True、False、Null),复制它们是简单快捷。然而,对于可变大小的 JSON 类型(String、Array、Object),复制它们会产生大量开销,而且这些开销常常不被察觉。尤其是当我们需要创建临时 Object,把它复制至另一变量,然后再析构它。 - -例如,若使用正常 * 复制 * 语意: - -~~~~~~~~~~cpp -Value o(kObjectType); -{ - Value contacts(kArrayType); - // 把元素加进 contacts 数组。 - // ... - o.AddMember("contacts", contacts, d.GetAllocator()); // 深度复制 contacts (可能有大量内存分配) - // 析构 contacts。 -} -~~~~~~~~~~ - -![复制语意产生大量的复制操作。](diagram/move2.png) - -那个 `o` Object 需要分配一个和 contacts 相同大小的缓冲区,对 conacts 做深度复制,并最终要析构 contacts。这样会产生大量无必要的内存分配/释放,以及内存复制。 - -有一些方案可避免实质地复制这些数据,例如引用计数(reference counting)、垃圾回收(garbage collection, GC)。 - -为了使 RapidJSON 简单及快速,我们选择了对赋值采用 * 转移 * 语意。这方法与 `std::auto_ptr` 相似,都是在赋值时转移拥有权。转移快得多简单得多,只需要析构原来的 Value,把来源 `memcpy()` 至目标,最后把来源设置为 Null 类型。 - -因此,使用转移语意后,上面的例子变成: - -~~~~~~~~~~cpp -Value o(kObjectType); -{ - Value contacts(kArrayType); - // adding elements to contacts array. - o.AddMember("contacts", contacts, d.GetAllocator()); // 只需 memcpy() contacts 本身至新成员的 Value(16 字节) - // contacts 在这里变成 Null。它的析构是平凡的。 -} -~~~~~~~~~~ - -![转移语意不需复制。](diagram/move3.png) - -在 C++11 中这称为转移赋值操作(move assignment operator)。由于 RapidJSON 支持 C++03,它在赋值操作采用转移语意,其它修改形函数如 `AddMember()`, `PushBack()` 也采用转移语意。 - -### 转移语意及临时值 {#TemporaryValues} - -有时候,我们想直接构造一个 Value 并传递给一个“转移”函数(如 `PushBack()`、`AddMember()`)。由于临时对象是不能转换为正常的 Value 引用,我们加入了一个方便的 `Move()` 函数: - -~~~~~~~~~~cpp -Value a(kArrayType); -Document::AllocatorType& allocator = document.GetAllocator(); -// a.PushBack(Value(42), allocator); // 不能通过编译 -a.PushBack(Value().SetInt(42), allocator); // fluent API -a.PushBack(Value(42).Move(), allocator); // 和上一行相同 -~~~~~~~~~~ - -## 创建 String {#CreateString} -RapidJSON 提供两个 String 的存储策略。 - -1. copy-string: 分配缓冲区,然后把来源数据复制至它。 -2. const-string: 简单地储存字符串的指针。 - -Copy-string 总是安全的,因为它拥有数据的克隆。Const-string 可用于存储字符串字面量,以及用于在 DOM 一节中将会提到的 in-situ 解析中。 - -为了让用户自定义内存分配方式,当一个操作可能需要内存分配时,RapidJSON 要求用户传递一个 allocator 实例作为 API 参数。此设计避免了在每个 Value 存储 allocator(或 document)的指针。 - -因此,当我们把一个 copy-string 赋值时, 调用含有 allocator 的 `SetString()` 重载函数: - -~~~~~~~~~~cpp -Document document; -Value author; -char buffer[10]; -int len = sprintf(buffer, "%s %s", "Milo", "Yip"); // 动态创建的字符串。 -author.SetString(buffer, len, document.GetAllocator()); -memset(buffer, 0, sizeof(buffer)); -// 清空 buffer 后 author.GetString() 仍然包含 "Milo Yip" -~~~~~~~~~~ - -在此例子中,我们使用 `Document` 实例的 allocator。这是使用 RapidJSON 时常用的惯用法。但你也可以用其他 allocator 实例。 - -另外,上面的 `SetString()` 需要长度参数。这个 API 能处理含有空字符的字符串。另一个 `SetString()` 重载函数没有长度参数,它假设输入是空字符结尾的,并会调用类似 `strlen()` 的函数去获取长度。 - -最后,对于字符串字面量或有安全生命周期的字符串,可以使用 const-string 版本的 `SetString()`,它没有 allocator 参数。对于字符串家面量(或字符数组常量),只需简单地传递字面量,又安全又高效: - -~~~~~~~~~~cpp -Value s; -s.SetString("rapidjson"); // 可包含空字符,长度在编译萁推导 -s = "rapidjson"; // 上行的缩写 -~~~~~~~~~~ - -对于字符指针,RapidJSON 需要作一个标记,代表它不复制也是安全的。可以使用 `StringRef` 函数: - -~~~~~~~~~cpp -const char * cstr = getenv("USER"); -size_t cstr_len = ...; // 如果有长度 -Value s; -// s.SetString(cstr); // 这不能通过编译 -s.SetString(StringRef(cstr)); // 可以,假设它的生命周期安全,并且是以空字符结尾的 -s = StringRef(cstr); // 上行的缩写 -s.SetString(StringRef(cstr, cstr_len));// 更快,可处理空字符 -s = StringRef(cstr, cstr_len); // 上行的缩写 - -~~~~~~~~~ - -## 修改 Array {#ModifyArray} -Array 类型的 Value 提供与 `std::vector` 相似的 API。 - -* `Clear()` -* `Reserve(SizeType, Allocator&)` -* `Value& PushBack(Value&, Allocator&)` -* `template GenericValue& PushBack(T, Allocator&)` -* `Value& PopBack()` -* `ValueIterator Erase(ConstValueIterator pos)` -* `ValueIterator Erase(ConstValueIterator first, ConstValueIterator last)` - -注意,`Reserve(...)` 及 `PushBack(...)` 可能会为数组元素分配内存,所以需要一个 allocator。 - -以下是 `PushBack()` 的例子: - -~~~~~~~~~~cpp -Value a(kArrayType); -Document::AllocatorType& allocator = document.GetAllocator(); - -for (int i = 5; i <= 10; i++) - a.PushBack(i, allocator); // 可能需要调用 realloc() 所以需要 allocator - -// 流畅接口(Fluent interface) -a.PushBack("Lua", allocator).PushBack("Mio", allocator); -~~~~~~~~~~ - -与 STL 不一样的是,`PushBack()`/`PopBack()` 返回 Array 本身的引用。这称为流畅接口(_fluent interface_)。 - -如果你想在 Array 中加入一个非常量字符串,或是一个没有足够生命周期的字符串(见 [Create String](#CreateString)),你需要使用 copy-string API 去创建一个 String。为了避免加入中间变量,可以就地使用一个 [临时值](#TemporaryValues): - -~~~~~~~~~~cpp -// 就地 Value 参数 -contact.PushBack(Value("copy", document.GetAllocator()).Move(), // copy string - document.GetAllocator()); - -// 显式 Value 参数 -Value val("key", document.GetAllocator()); // copy string -contact.PushBack(val, document.GetAllocator()); -~~~~~~~~~~ - -## 修改 Object {#ModifyObject} -Object 是键值对的集合。每个键必须为 String。要修改 Object,方法是增加或移除成员。以下的 API 用来增加城员: - -* `Value& AddMember(Value&, Value&, Allocator& allocator)` -* `Value& AddMember(StringRefType, Value&, Allocator&)` -* `template Value& AddMember(StringRefType, T value, Allocator&)` - -以下是一个例子。 - -~~~~~~~~~~cpp -Value contact(kObject); -contact.AddMember("name", "Milo", document.GetAllocator()); -contact.AddMember("married", true, document.GetAllocator()); -~~~~~~~~~~ - -使用 `StringRefType` 作为 name 参数的重载版本与字符串的 `SetString` 的接口相似。 这些重载是为了避免复制 `name` 字符串,因为 JSON object 中经常会使用常数键名。 - -如果你需要从非常数字符串或生命周期不足的字符串创建键名(见 [创建 String](#CreateString)),你需要使用 copy-string API。为了避免中间变量,可以就地使用 [临时值](#TemporaryValues): - -~~~~~~~~~~cpp -// 就地 Value 参数 -contact.AddMember(Value("copy", document.GetAllocator()).Move(), // copy string - Value().Move(), // null value - document.GetAllocator()); - -// 显式参数 -Value key("key", document.GetAllocator()); // copy string name -Value val(42); // 某 Value -contact.AddMember(key, val, document.GetAllocator()); -~~~~~~~~~~ - -移除成员有几个选择: - -* `bool RemoveMember(const Ch* name)`:使用键名来移除成员(线性时间复杂度)。 -* `bool RemoveMember(const Value& name)`:除了 `name` 是一个 Value,和上一行相同。 -* `MemberIterator RemoveMember(MemberIterator)`:使用迭代器移除成员(_ 常数 _ 时间复杂度)。 -* `MemberIterator EraseMember(MemberIterator)`:和上行相似但维持成员次序(线性时间复杂度)。 -* `MemberIterator EraseMember(MemberIterator first, MemberIterator last)`:移除一个范围内的成员,维持次序(线性时间复杂度)。 - -`MemberIterator RemoveMember(MemberIterator)` 使用了“转移最后”手法来达成常数时间复杂度。基本上就是析构迭代器位置的成员,然后把最后的成员转移至迭代器位置。因此,成员的次序会被改变。 - -## 深复制 Value {#DeepCopyValue} -若我们真的要复制一个 DOM 树,我们可使用两个 APIs 作深复制:含 allocator 的构造函数及 `CopyFrom()`。 - -~~~~~~~~~~cpp -Document d; -Document::AllocatorType& a = d.GetAllocator(); -Value v1("foo"); -// Value v2(v1); // 不容许 - -Value v2(v1, a); // 制造一个克隆 -assert(v1.IsString()); // v1 不变 -d.SetArray().PushBack(v1, a).PushBack(v2, a); -assert(v1.IsNull() && v2.IsNull()); // 两个都转移动 d - -v2.CopyFrom(d, a); // 把整个 document 复制至 v2 -assert(d.IsArray() && d.Size() == 2); // d 不变 -v1.SetObject().AddMember("array", v2, a); -d.PushBack(v1, a); -~~~~~~~~~~ - -## 交换 Value {#SwapValues} - -RapidJSON 也提供 `Swap()`。 - -~~~~~~~~~~cpp -Value a(123); -Value b("Hello"); -a.Swap(b); -assert(a.IsString()); -assert(b.IsInt()); -~~~~~~~~~~ - -无论两棵 DOM 树有多复杂,交换是很快的(常数时间)。 - -# 下一部分 {#WhatsNext} - -本教程展示了如何询查及修改 DOM 树。RapidJSON 还有一个重要概念: - -1. [流](doc/stream.zh-cn.md) 是读写 JSON 的通道。流可以是内存字符串、文件流等。用户也可以自定义流。 -2. [编码](doc/encoding.zh-cn.md) 定义在流或内存中使用的字符编码。RapidJSON 也在内部提供 Unicode 转换及校验功能。 -3. [DOM](doc/dom.zh-cn.md) 的基本功能已在本教程里介绍。还有更高级的功能,如原位(*in situ*)解析、其他解析选项及高级用法。 -4. [SAX](doc/sax.zh-cn.md) 是 RapidJSON 解析/生成功能的基础。学习使用 `Reader`/`Writer` 去实现更高性能的应用程序。也可以使用 `PrettyWriter` 去格式化 JSON。 -5. [性能](doc/performance.zh-cn.md) 展示一些我们做的及第三方的性能测试。 -6. [技术内幕](doc/internals.md) 讲述一些 RapidJSON 内部的设计及技术。 - -你也可以参考 [常见问题](doc/faq.zh-cn.md)、API 文档、例子及单元测试。 diff --git a/rapidjson-lib/docker/debian/Dockerfile b/rapidjson-lib/docker/debian/Dockerfile deleted file mode 100644 index 76f0235..0000000 --- a/rapidjson-lib/docker/debian/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -# BUILD: docker build -t rapidjson-debian . -# RUN: docker run -it -v "$PWD"/../..:/rapidjson rapidjson-debian - -FROM debian:jessie - -RUN apt-get update && apt-get install -y g++ cmake doxygen valgrind - -ENTRYPOINT ["/bin/bash"] diff --git a/rapidjson-lib/example/CMakeLists.txt b/rapidjson-lib/example/CMakeLists.txt deleted file mode 100644 index 4d448cc..0000000 --- a/rapidjson-lib/example/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -if(POLICY CMP0054) - cmake_policy(SET CMP0054 NEW) -endif() - -set(EXAMPLES - capitalize - condense - filterkey - filterkeydom - jsonx - messagereader - parsebyparts - pretty - prettyauto - schemavalidator - serialize - simpledom - simplereader - simplewriter - tutorial) - -include_directories("../include/") - -add_definitions(-D__STDC_FORMAT_MACROS) - -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Werror -Wall -Wextra -Weffc++ -Wswitch-default") -elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal -Wimplicit-fallthrough -Weverything") -endif() - -foreach (example ${EXAMPLES}) - add_executable(${example} ${example}/${example}.cpp) -endforeach() - -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - target_link_libraries(parsebyparts pthread) -endif() - -add_custom_target(examples ALL DEPENDS ${EXAMPLES}) diff --git a/rapidjson-lib/example/capitalize/capitalize.cpp b/rapidjson-lib/example/capitalize/capitalize.cpp deleted file mode 100644 index 7da37e9..0000000 --- a/rapidjson-lib/example/capitalize/capitalize.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// JSON condenser example - -// This example parses JSON from stdin with validation, -// and re-output the JSON content to stdout with all string capitalized, and without whitespace. - -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include -#include - -using namespace rapidjson; - -template -struct CapitalizeFilter { - CapitalizeFilter(OutputHandler& out) : out_(out), buffer_() {} - - bool Null() { return out_.Null(); } - bool Bool(bool b) { return out_.Bool(b); } - bool Int(int i) { return out_.Int(i); } - bool Uint(unsigned u) { return out_.Uint(u); } - bool Int64(int64_t i) { return out_.Int64(i); } - bool Uint64(uint64_t u) { return out_.Uint64(u); } - bool Double(double d) { return out_.Double(d); } - bool RawNumber(const char* str, SizeType length, bool copy) { return out_.RawNumber(str, length, copy); } - bool String(const char* str, SizeType length, bool) { - buffer_.clear(); - for (SizeType i = 0; i < length; i++) - buffer_.push_back(static_cast(std::toupper(str[i]))); - return out_.String(&buffer_.front(), length, true); // true = output handler need to copy the string - } - bool StartObject() { return out_.StartObject(); } - bool Key(const char* str, SizeType length, bool copy) { return String(str, length, copy); } - bool EndObject(SizeType memberCount) { return out_.EndObject(memberCount); } - bool StartArray() { return out_.StartArray(); } - bool EndArray(SizeType elementCount) { return out_.EndArray(elementCount); } - - OutputHandler& out_; - std::vector buffer_; - -private: - CapitalizeFilter(const CapitalizeFilter&); - CapitalizeFilter& operator=(const CapitalizeFilter&); -}; - -int main(int, char*[]) { - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - CapitalizeFilter > filter(writer); - if (!reader.Parse(is, filter)) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/condense/condense.cpp b/rapidjson-lib/example/condense/condense.cpp deleted file mode 100644 index 46dc350..0000000 --- a/rapidjson-lib/example/condense/condense.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// JSON condenser example - -// This example parses JSON text from stdin with validation, -// and re-output the JSON content to stdout without whitespace. - -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" - -using namespace rapidjson; - -int main(int, char*[]) { - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - if (!reader.Parse(is, writer)) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/filterkey/filterkey.cpp b/rapidjson-lib/example/filterkey/filterkey.cpp deleted file mode 100644 index c34a050..0000000 --- a/rapidjson-lib/example/filterkey/filterkey.cpp +++ /dev/null @@ -1,135 +0,0 @@ -// JSON filterkey example with SAX-style API. - -// This example parses JSON text from stdin with validation. -// During parsing, specified key will be filtered using a SAX handler. -// It re-output the JSON content to stdout without whitespace. - -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include - -using namespace rapidjson; - -// This handler forwards event into an output handler, with filtering the descendent events of specified key. -template -class FilterKeyHandler { -public: - typedef char Ch; - - FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) : - outputHandler_(outputHandler), keyString_(keyString), keyLength_(keyLength), filterValueDepth_(), filteredKeyCount_() - {} - - bool Null() { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Null() && EndValue(); } - bool Bool(bool b) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Bool(b) && EndValue(); } - bool Int(int i) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Int(i) && EndValue(); } - bool Uint(unsigned u) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Uint(u) && EndValue(); } - bool Int64(int64_t i) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Int64(i) && EndValue(); } - bool Uint64(uint64_t u) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Uint64(u) && EndValue(); } - bool Double(double d) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Double(d) && EndValue(); } - bool RawNumber(const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.RawNumber(str, len, copy) && EndValue(); } - bool String (const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.String (str, len, copy) && EndValue(); } - - bool StartObject() { - if (filterValueDepth_ > 0) { - filterValueDepth_++; - return true; - } - else { - filteredKeyCount_.push(0); - return outputHandler_.StartObject(); - } - } - - bool Key(const Ch* str, SizeType len, bool copy) { - if (filterValueDepth_ > 0) - return true; - else if (len == keyLength_ && std::memcmp(str, keyString_, len) == 0) { - filterValueDepth_ = 1; - return true; - } - else { - ++filteredKeyCount_.top(); - return outputHandler_.Key(str, len, copy); - } - } - - bool EndObject(SizeType) { - if (filterValueDepth_ > 0) { - filterValueDepth_--; - return EndValue(); - } - else { - // Use our own filtered memberCount - SizeType memberCount = filteredKeyCount_.top(); - filteredKeyCount_.pop(); - return outputHandler_.EndObject(memberCount) && EndValue(); - } - } - - bool StartArray() { - if (filterValueDepth_ > 0) { - filterValueDepth_++; - return true; - } - else - return outputHandler_.StartArray(); - } - - bool EndArray(SizeType elementCount) { - if (filterValueDepth_ > 0) { - filterValueDepth_--; - return EndValue(); - } - else - return outputHandler_.EndArray(elementCount) && EndValue(); - } - -private: - FilterKeyHandler(const FilterKeyHandler&); - FilterKeyHandler& operator=(const FilterKeyHandler&); - - bool EndValue() { - if (filterValueDepth_ == 1) // Just at the end of value after filtered key - filterValueDepth_ = 0; - return true; - } - - OutputHandler& outputHandler_; - const char* keyString_; - const SizeType keyLength_; - unsigned filterValueDepth_; - std::stack filteredKeyCount_; -}; - -int main(int argc, char* argv[]) { - if (argc != 2) { - fprintf(stderr, "filterkey key < input.json > output.json\n"); - return 1; - } - - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // Prepare Filter - FilterKeyHandler > filter(writer, argv[1], static_cast(strlen(argv[1]))); - - // JSON reader parse from the input stream, filter handler filters the events, and forward to writer. - // i.e. the events flow is: reader -> filter -> writer - if (!reader.Parse(is, filter)) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/filterkeydom/filterkeydom.cpp b/rapidjson-lib/example/filterkeydom/filterkeydom.cpp deleted file mode 100644 index 732cc81..0000000 --- a/rapidjson-lib/example/filterkeydom/filterkeydom.cpp +++ /dev/null @@ -1,170 +0,0 @@ -// JSON filterkey example which populates filtered SAX events into a Document. - -// This example parses JSON text from stdin with validation. -// During parsing, specified key will be filtered using a SAX handler. -// And finally the filtered events are used to populate a Document. -// As an example, the document is written to standard output. - -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include - -using namespace rapidjson; - -// This handler forwards event into an output handler, with filtering the descendent events of specified key. -template -class FilterKeyHandler { -public: - typedef char Ch; - - FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) : - outputHandler_(outputHandler), keyString_(keyString), keyLength_(keyLength), filterValueDepth_(), filteredKeyCount_() - {} - - bool Null() { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Null() && EndValue(); } - bool Bool(bool b) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Bool(b) && EndValue(); } - bool Int(int i) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Int(i) && EndValue(); } - bool Uint(unsigned u) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Uint(u) && EndValue(); } - bool Int64(int64_t i) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Int64(i) && EndValue(); } - bool Uint64(uint64_t u) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Uint64(u) && EndValue(); } - bool Double(double d) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Double(d) && EndValue(); } - bool RawNumber(const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.RawNumber(str, len, copy) && EndValue(); } - bool String (const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.String (str, len, copy) && EndValue(); } - - bool StartObject() { - if (filterValueDepth_ > 0) { - filterValueDepth_++; - return true; - } - else { - filteredKeyCount_.push(0); - return outputHandler_.StartObject(); - } - } - - bool Key(const Ch* str, SizeType len, bool copy) { - if (filterValueDepth_ > 0) - return true; - else if (len == keyLength_ && std::memcmp(str, keyString_, len) == 0) { - filterValueDepth_ = 1; - return true; - } - else { - ++filteredKeyCount_.top(); - return outputHandler_.Key(str, len, copy); - } - } - - bool EndObject(SizeType) { - if (filterValueDepth_ > 0) { - filterValueDepth_--; - return EndValue(); - } - else { - // Use our own filtered memberCount - SizeType memberCount = filteredKeyCount_.top(); - filteredKeyCount_.pop(); - return outputHandler_.EndObject(memberCount) && EndValue(); - } - } - - bool StartArray() { - if (filterValueDepth_ > 0) { - filterValueDepth_++; - return true; - } - else - return outputHandler_.StartArray(); - } - - bool EndArray(SizeType elementCount) { - if (filterValueDepth_ > 0) { - filterValueDepth_--; - return EndValue(); - } - else - return outputHandler_.EndArray(elementCount) && EndValue(); - } - -private: - FilterKeyHandler(const FilterKeyHandler&); - FilterKeyHandler& operator=(const FilterKeyHandler&); - - bool EndValue() { - if (filterValueDepth_ == 1) // Just at the end of value after filtered key - filterValueDepth_ = 0; - return true; - } - - OutputHandler& outputHandler_; - const char* keyString_; - const SizeType keyLength_; - unsigned filterValueDepth_; - std::stack filteredKeyCount_; -}; - -// Implements a generator for Document::Populate() -template -class FilterKeyReader { -public: - typedef char Ch; - - FilterKeyReader(InputStream& is, const Ch* keyString, SizeType keyLength) : - is_(is), keyString_(keyString), keyLength_(keyLength), parseResult_() - {} - - // SAX event flow: reader -> filter -> handler - template - bool operator()(Handler& handler) { - FilterKeyHandler filter(handler, keyString_, keyLength_); - Reader reader; - parseResult_ = reader.Parse(is_, filter); - return parseResult_; - } - - const ParseResult& GetParseResult() const { return parseResult_; } - -private: - FilterKeyReader(const FilterKeyReader&); - FilterKeyReader& operator=(const FilterKeyReader&); - - InputStream& is_; - const char* keyString_; - const SizeType keyLength_; - ParseResult parseResult_; -}; - -int main(int argc, char* argv[]) { - if (argc != 2) { - fprintf(stderr, "filterkeydom key < input.json > output.json\n"); - return 1; - } - - // Prepare input stream. - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare Filter - FilterKeyReader reader(is, argv[1], static_cast(strlen(argv[1]))); - - // Populates the filtered events from reader - Document document; - document.Populate(reader); - ParseResult pr = reader.GetParseResult(); - if (!pr) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(pr.Offset()), GetParseError_En(pr.Code())); - return 1; - } - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - Writer writer(os); - - // Write the document to standard output - document.Accept(writer); - return 0; -} diff --git a/rapidjson-lib/example/jsonx/jsonx.cpp b/rapidjson-lib/example/jsonx/jsonx.cpp deleted file mode 100644 index 1346b57..0000000 --- a/rapidjson-lib/example/jsonx/jsonx.cpp +++ /dev/null @@ -1,207 +0,0 @@ -// JSON to JSONx conversion exmaple, using SAX API. -// JSONx is an IBM standard format to represent JSON as XML. -// https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonx.html -// This example parses JSON text from stdin with validation, -// and convert to JSONx format to stdout. -// Need compile with -D__STDC_FORMAT_MACROS for defining PRId64 and PRIu64 macros. - -#include "rapidjson/reader.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" -#include - -using namespace rapidjson; - -// For simplicity, this example only read/write in UTF-8 encoding -template -class JsonxWriter { -public: - JsonxWriter(OutputStream& os) : os_(os), name_(), level_(0), hasName_(false) { - } - - bool Null() { - return WriteStartElement("null", true); - } - - bool Bool(bool b) { - return - WriteStartElement("boolean") && - WriteString(b ? "true" : "false") && - WriteEndElement("boolean"); - } - - bool Int(int i) { - char buffer[12]; - return WriteNumberElement(buffer, sprintf(buffer, "%d", i)); - } - - bool Uint(unsigned i) { - char buffer[11]; - return WriteNumberElement(buffer, sprintf(buffer, "%u", i)); - } - - bool Int64(int64_t i) { - char buffer[21]; - return WriteNumberElement(buffer, sprintf(buffer, "%" PRId64, i)); - } - - bool Uint64(uint64_t i) { - char buffer[21]; - return WriteNumberElement(buffer, sprintf(buffer, "%" PRIu64, i)); - } - - bool Double(double d) { - char buffer[30]; - return WriteNumberElement(buffer, sprintf(buffer, "%.17g", d)); - } - - bool RawNumber(const char* str, SizeType length, bool) { - return - WriteStartElement("number") && - WriteEscapedText(str, length) && - WriteEndElement("number"); - } - - bool String(const char* str, SizeType length, bool) { - return - WriteStartElement("string") && - WriteEscapedText(str, length) && - WriteEndElement("string"); - } - - bool StartObject() { - return WriteStartElement("object"); - } - - bool Key(const char* str, SizeType length, bool) { - // backup key to name_ - name_.Clear(); - for (SizeType i = 0; i < length; i++) - name_.Put(str[i]); - hasName_ = true; - return true; - } - - bool EndObject(SizeType) { - return WriteEndElement("object"); - } - - bool StartArray() { - return WriteStartElement("array"); - } - - bool EndArray(SizeType) { - return WriteEndElement("array"); - } - -private: - bool WriteString(const char* s) { - while (*s) - os_.Put(*s++); - return true; - } - - bool WriteEscapedAttributeValue(const char* s, size_t length) { - for (size_t i = 0; i < length; i++) { - switch (s[i]) { - case '&': WriteString("&"); break; - case '<': WriteString("<"); break; - case '"': WriteString("""); break; - default: os_.Put(s[i]); break; - } - } - return true; - } - - bool WriteEscapedText(const char* s, size_t length) { - for (size_t i = 0; i < length; i++) { - switch (s[i]) { - case '&': WriteString("&"); break; - case '<': WriteString("<"); break; - default: os_.Put(s[i]); break; - } - } - return true; - } - - bool WriteStartElement(const char* type, bool emptyElement = false) { - if (level_ == 0) - if (!WriteString("")) - return false; - - if (!WriteString(""); - else { - level_++; - return WriteString(">"); - } - } - - bool WriteEndElement(const char* type) { - if (!WriteString("")) - return false; - - // For the last end tag, flush the output stream. - if (--level_ == 0) - os_.Flush(); - - return true; - } - - bool WriteNumberElement(const char* buffer, int length) { - if (!WriteStartElement("number")) - return false; - for (int j = 0; j < length; j++) - os_.Put(buffer[j]); - return WriteEndElement("number"); - } - - OutputStream& os_; - StringBuffer name_; - unsigned level_; - bool hasName_; -}; - -int main(int, char*[]) { - // Prepare JSON reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare JSON writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - JsonxWriter writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - if (!reader.Parse(is, writer)) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/messagereader/messagereader.cpp b/rapidjson-lib/example/messagereader/messagereader.cpp deleted file mode 100644 index 3399bc9..0000000 --- a/rapidjson-lib/example/messagereader/messagereader.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// Reading a message JSON with Reader (SAX-style API). -// The JSON should be an object with key-string pairs. - -#include "rapidjson/reader.h" -#include "rapidjson/error/en.h" -#include -#include -#include - -using namespace std; -using namespace rapidjson; - -typedef map MessageMap; - -#if defined(__GNUC__) -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(effc++) -#endif - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(switch-enum) -#endif - -struct MessageHandler - : public BaseReaderHandler, MessageHandler> { - MessageHandler() : messages_(), state_(kExpectObjectStart), name_() {} - - bool StartObject() { - switch (state_) { - case kExpectObjectStart: - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool String(const char* str, SizeType length, bool) { - switch (state_) { - case kExpectNameOrObjectEnd: - name_ = string(str, length); - state_ = kExpectValue; - return true; - case kExpectValue: - messages_.insert(MessageMap::value_type(name_, string(str, length))); - state_ = kExpectNameOrObjectEnd; - return true; - default: - return false; - } - } - - bool EndObject(SizeType) { return state_ == kExpectNameOrObjectEnd; } - - bool Default() { return false; } // All other events are invalid. - - MessageMap messages_; - enum State { - kExpectObjectStart, - kExpectNameOrObjectEnd, - kExpectValue - }state_; - std::string name_; -}; - -#if defined(__GNUC__) -RAPIDJSON_DIAG_POP -#endif - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif - -static void ParseMessages(const char* json, MessageMap& messages) { - Reader reader; - MessageHandler handler; - StringStream ss(json); - if (reader.Parse(ss, handler)) - messages.swap(handler.messages_); // Only change it if success. - else { - ParseErrorCode e = reader.GetParseErrorCode(); - size_t o = reader.GetErrorOffset(); - cout << "Error: " << GetParseError_En(e) << endl;; - cout << " at offset " << o << " near '" << string(json).substr(o, 10) << "...'" << endl; - } -} - -int main() { - MessageMap messages; - - const char* json1 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\" }"; - cout << json1 << endl; - ParseMessages(json1, messages); - - for (MessageMap::const_iterator itr = messages.begin(); itr != messages.end(); ++itr) - cout << itr->first << ": " << itr->second << endl; - - cout << endl << "Parse a JSON with invalid schema." << endl; - const char* json2 = "{ \"greeting\" : \"Hello!\", \"farewell\" : \"bye-bye!\", \"foo\" : {} }"; - cout << json2 << endl; - ParseMessages(json2, messages); - - return 0; -} diff --git a/rapidjson-lib/example/parsebyparts/parsebyparts.cpp b/rapidjson-lib/example/parsebyparts/parsebyparts.cpp deleted file mode 100644 index 57eed00..0000000 --- a/rapidjson-lib/example/parsebyparts/parsebyparts.cpp +++ /dev/null @@ -1,173 +0,0 @@ -// Example of parsing JSON to document by parts. - -// Using C++11 threads -// Temporarily disable for clang (older version) due to incompatibility with libstdc++ -#if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700)) && !defined(__clang__) - -#include "rapidjson/document.h" -#include "rapidjson/error/en.h" -#include "rapidjson/writer.h" -#include "rapidjson/ostreamwrapper.h" -#include -#include -#include -#include - -using namespace rapidjson; - -template -class AsyncDocumentParser { -public: - AsyncDocumentParser(Document& d) - : stream_(*this) - , d_(d) - , parseThread_(&AsyncDocumentParser::Parse, this) - , mutex_() - , notEmpty_() - , finish_() - , completed_() - {} - - ~AsyncDocumentParser() { - if (!parseThread_.joinable()) - return; - - { - std::unique_lock lock(mutex_); - - // Wait until the buffer is read up (or parsing is completed) - while (!stream_.Empty() && !completed_) - finish_.wait(lock); - - // Automatically append '\0' as the terminator in the stream. - static const char terminator[] = ""; - stream_.src_ = terminator; - stream_.end_ = terminator + 1; - notEmpty_.notify_one(); // unblock the AsyncStringStream - } - - parseThread_.join(); - } - - void ParsePart(const char* buffer, size_t length) { - std::unique_lock lock(mutex_); - - // Wait until the buffer is read up (or parsing is completed) - while (!stream_.Empty() && !completed_) - finish_.wait(lock); - - // Stop further parsing if the parsing process is completed. - if (completed_) - return; - - // Set the buffer to stream and unblock the AsyncStringStream - stream_.src_ = buffer; - stream_.end_ = buffer + length; - notEmpty_.notify_one(); - } - -private: - void Parse() { - d_.ParseStream(stream_); - - // The stream may not be fully read, notify finish anyway to unblock ParsePart() - std::unique_lock lock(mutex_); - completed_ = true; // Parsing process is completed - finish_.notify_one(); // Unblock ParsePart() or destructor if they are waiting. - } - - struct AsyncStringStream { - typedef char Ch; - - AsyncStringStream(AsyncDocumentParser& parser) : parser_(parser), src_(), end_(), count_() {} - - char Peek() const { - std::unique_lock lock(parser_.mutex_); - - // If nothing in stream, block to wait. - while (Empty()) - parser_.notEmpty_.wait(lock); - - return *src_; - } - - char Take() { - std::unique_lock lock(parser_.mutex_); - - // If nothing in stream, block to wait. - while (Empty()) - parser_.notEmpty_.wait(lock); - - count_++; - char c = *src_++; - - // If all stream is read up, notify that the stream is finish. - if (Empty()) - parser_.finish_.notify_one(); - - return c; - } - - size_t Tell() const { return count_; } - - // Not implemented - char* PutBegin() { return 0; } - void Put(char) {} - void Flush() {} - size_t PutEnd(char*) { return 0; } - - bool Empty() const { return src_ == end_; } - - AsyncDocumentParser& parser_; - const char* src_; //!< Current read position. - const char* end_; //!< End of buffer - size_t count_; //!< Number of characters taken so far. - }; - - AsyncStringStream stream_; - Document& d_; - std::thread parseThread_; - std::mutex mutex_; - std::condition_variable notEmpty_; - std::condition_variable finish_; - bool completed_; -}; - -int main() { - Document d; - - { - AsyncDocumentParser<> parser(d); - - const char json1[] = " { \"hello\" : \"world\", \"t\" : tr"; - //const char json1[] = " { \"hello\" : \"world\", \"t\" : trX"; // Fot test parsing error - const char json2[] = "ue, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.14"; - const char json3[] = "16, \"a\":[1, 2, 3, 4] } "; - - parser.ParsePart(json1, sizeof(json1) - 1); - parser.ParsePart(json2, sizeof(json2) - 1); - parser.ParsePart(json3, sizeof(json3) - 1); - } - - if (d.HasParseError()) { - std::cout << "Error at offset " << d.GetErrorOffset() << ": " << GetParseError_En(d.GetParseError()) << std::endl; - return EXIT_FAILURE; - } - - // Stringify the JSON to cout - OStreamWrapper os(std::cout); - Writer writer(os); - d.Accept(writer); - std::cout << std::endl; - - return EXIT_SUCCESS; -} - -#else // Not supporting C++11 - -#include -int main() { - std::cout << "This example requires C++11 compiler" << std::endl; -} - -#endif diff --git a/rapidjson-lib/example/pretty/pretty.cpp b/rapidjson-lib/example/pretty/pretty.cpp deleted file mode 100644 index 2feff5d..0000000 --- a/rapidjson-lib/example/pretty/pretty.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// JSON pretty formatting example -// This example can only handle UTF-8. For handling other encodings, see prettyauto example. - -#include "rapidjson/reader.h" -#include "rapidjson/prettywriter.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/error/en.h" - -using namespace rapidjson; - -int main(int, char*[]) { - // Prepare reader and input stream. - Reader reader; - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - - // Prepare writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - PrettyWriter writer(os); - - // JSON reader parse from the input stream and let writer generate the output. - if (!reader.Parse(is, writer)) { - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/prettyauto/prettyauto.cpp b/rapidjson-lib/example/prettyauto/prettyauto.cpp deleted file mode 100644 index 1687bae..0000000 --- a/rapidjson-lib/example/prettyauto/prettyauto.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// JSON pretty formatting example -// This example can handle UTF-8/UTF-16LE/UTF-16BE/UTF-32LE/UTF-32BE. -// The input firstly convert to UTF8, and then write to the original encoding with pretty formatting. - -#include "rapidjson/reader.h" -#include "rapidjson/prettywriter.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/encodedstream.h" // NEW -#include "rapidjson/error/en.h" -#ifdef _WIN32 -#include -#include -#endif - -using namespace rapidjson; - -int main(int, char*[]) { -#ifdef _WIN32 - // Prevent Windows converting between CR+LF and LF - _setmode(_fileno(stdin), _O_BINARY); // NEW - _setmode(_fileno(stdout), _O_BINARY); // NEW -#endif - - // Prepare reader and input stream. - //Reader reader; - GenericReader, UTF8<> > reader; // CHANGED - char readBuffer[65536]; - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); - AutoUTFInputStream eis(is); // NEW - - // Prepare writer and output stream. - char writeBuffer[65536]; - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); - -#if 1 - // Use the same Encoding of the input. Also use BOM according to input. - typedef AutoUTFOutputStream OutputStream; // NEW - OutputStream eos(os, eis.GetType(), eis.HasBOM()); // NEW - PrettyWriter, AutoUTF > writer(eos); // CHANGED -#else - // You may also use static bound encoding type, such as output to UTF-16LE with BOM - typedef EncodedOutputStream,FileWriteStream> OutputStream; // NEW - OutputStream eos(os, true); // NEW - PrettyWriter, UTF16LE<> > writer(eos); // CHANGED -#endif - - // JSON reader parse from the input stream and let writer generate the output. - //if (!reader.Parse(is, writer)) { - if (!reader.Parse(eis, writer)) { // CHANGED - fprintf(stderr, "\nError(%u): %s\n", static_cast(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); - return 1; - } - - return 0; -} diff --git a/rapidjson-lib/example/schemavalidator/schemavalidator.cpp b/rapidjson-lib/example/schemavalidator/schemavalidator.cpp deleted file mode 100644 index ce36ea9..0000000 --- a/rapidjson-lib/example/schemavalidator/schemavalidator.cpp +++ /dev/null @@ -1,72 +0,0 @@ -// Schema Validator example - -// The example validates JSON text from stdin with a JSON schema specified in the argument. - -#include "rapidjson/error/en.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/schema.h" -#include "rapidjson/stringbuffer.h" - -using namespace rapidjson; - -int main(int argc, char *argv[]) { - if (argc != 2) { - fprintf(stderr, "Usage: schemavalidator schema.json < input.json\n"); - return EXIT_FAILURE; - } - - // Read a JSON schema from file into Document - Document d; - char buffer[4096]; - - { - FILE *fp = fopen(argv[1], "r"); - if (!fp) { - printf("Schema file '%s' not found\n", argv[1]); - return -1; - } - FileReadStream fs(fp, buffer, sizeof(buffer)); - d.ParseStream(fs); - if (d.HasParseError()) { - fprintf(stderr, "Schema file '%s' is not a valid JSON\n", argv[1]); - fprintf(stderr, "Error(offset %u): %s\n", - static_cast(d.GetErrorOffset()), - GetParseError_En(d.GetParseError())); - fclose(fp); - return EXIT_FAILURE; - } - fclose(fp); - } - - // Then convert the Document into SchemaDocument - SchemaDocument sd(d); - - // Use reader to parse the JSON in stdin, and forward SAX events to validator - SchemaValidator validator(sd); - Reader reader; - FileReadStream is(stdin, buffer, sizeof(buffer)); - if (!reader.Parse(is, validator) && reader.GetParseErrorCode() != kParseErrorTermination) { - // Schema validator error would cause kParseErrorTermination, which will handle it in next step. - fprintf(stderr, "Input is not a valid JSON\n"); - fprintf(stderr, "Error(offset %u): %s\n", - static_cast(reader.GetErrorOffset()), - GetParseError_En(reader.GetParseErrorCode())); - } - - // Check the validation result - if (validator.IsValid()) { - printf("Input JSON is valid.\n"); - return EXIT_SUCCESS; - } - else { - printf("Input JSON is invalid.\n"); - StringBuffer sb; - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb); - fprintf(stderr, "Invalid schema: %s\n", sb.GetString()); - fprintf(stderr, "Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword()); - sb.Clear(); - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb); - fprintf(stderr, "Invalid document: %s\n", sb.GetString()); - return EXIT_FAILURE; - } -} diff --git a/rapidjson-lib/example/serialize/serialize.cpp b/rapidjson-lib/example/serialize/serialize.cpp deleted file mode 100644 index 12d8715..0000000 --- a/rapidjson-lib/example/serialize/serialize.cpp +++ /dev/null @@ -1,173 +0,0 @@ -// Serialize example -// This example shows writing JSON string with writer directly. - -#include "rapidjson/prettywriter.h" // for stringify JSON -#include -#include -#include - -using namespace rapidjson; - -class Person { -public: - Person(const std::string& name, unsigned age) : name_(name), age_(age) {} - Person(const Person& rhs) : name_(rhs.name_), age_(rhs.age_) {} - virtual ~Person(); - - Person& operator=(const Person& rhs) { - name_ = rhs.name_; - age_ = rhs.age_; - return *this; - } - -protected: - template - void Serialize(Writer& writer) const { - // This base class just write out name-value pairs, without wrapping within an object. - writer.String("name"); -#if RAPIDJSON_HAS_STDSTRING - writer.String(name_); -#else - writer.String(name_.c_str(), static_cast(name_.length())); // Supplying length of string is faster. -#endif - writer.String("age"); - writer.Uint(age_); - } - -private: - std::string name_; - unsigned age_; -}; - -Person::~Person() { -} - -class Education { -public: - Education(const std::string& school, double GPA) : school_(school), GPA_(GPA) {} - Education(const Education& rhs) : school_(rhs.school_), GPA_(rhs.GPA_) {} - - template - void Serialize(Writer& writer) const { - writer.StartObject(); - - writer.String("school"); -#if RAPIDJSON_HAS_STDSTRING - writer.String(school_); -#else - writer.String(school_.c_str(), static_cast(school_.length())); -#endif - - writer.String("GPA"); - writer.Double(GPA_); - - writer.EndObject(); - } - -private: - std::string school_; - double GPA_; -}; - -class Dependent : public Person { -public: - Dependent(const std::string& name, unsigned age, Education* education = 0) : Person(name, age), education_(education) {} - Dependent(const Dependent& rhs) : Person(rhs), education_(0) { education_ = (rhs.education_ == 0) ? 0 : new Education(*rhs.education_); } - virtual ~Dependent(); - - Dependent& operator=(const Dependent& rhs) { - if (this == &rhs) - return *this; - delete education_; - education_ = (rhs.education_ == 0) ? 0 : new Education(*rhs.education_); - return *this; - } - - template - void Serialize(Writer& writer) const { - writer.StartObject(); - - Person::Serialize(writer); - - writer.String("education"); - if (education_) - education_->Serialize(writer); - else - writer.Null(); - - writer.EndObject(); - } - -private: - - Education *education_; -}; - -Dependent::~Dependent() { - delete education_; -} - -class Employee : public Person { -public: - Employee(const std::string& name, unsigned age, bool married) : Person(name, age), dependents_(), married_(married) {} - Employee(const Employee& rhs) : Person(rhs), dependents_(rhs.dependents_), married_(rhs.married_) {} - virtual ~Employee(); - - Employee& operator=(const Employee& rhs) { - static_cast(*this) = rhs; - dependents_ = rhs.dependents_; - married_ = rhs.married_; - return *this; - } - - void AddDependent(const Dependent& dependent) { - dependents_.push_back(dependent); - } - - template - void Serialize(Writer& writer) const { - writer.StartObject(); - - Person::Serialize(writer); - - writer.String("married"); - writer.Bool(married_); - - writer.String(("dependents")); - writer.StartArray(); - for (std::vector::const_iterator dependentItr = dependents_.begin(); dependentItr != dependents_.end(); ++dependentItr) - dependentItr->Serialize(writer); - writer.EndArray(); - - writer.EndObject(); - } - -private: - std::vector dependents_; - bool married_; -}; - -Employee::~Employee() { -} - -int main(int, char*[]) { - std::vector employees; - - employees.push_back(Employee("Milo YIP", 34, true)); - employees.back().AddDependent(Dependent("Lua YIP", 3, new Education("Happy Kindergarten", 3.5))); - employees.back().AddDependent(Dependent("Mio YIP", 1)); - - employees.push_back(Employee("Percy TSE", 30, false)); - - StringBuffer sb; - PrettyWriter writer(sb); - - writer.StartArray(); - for (std::vector::const_iterator employeeItr = employees.begin(); employeeItr != employees.end(); ++employeeItr) - employeeItr->Serialize(writer); - writer.EndArray(); - - puts(sb.GetString()); - - return 0; -} diff --git a/rapidjson-lib/example/simpledom/simpledom.cpp b/rapidjson-lib/example/simpledom/simpledom.cpp deleted file mode 100644 index 8038419..0000000 --- a/rapidjson-lib/example/simpledom/simpledom.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// JSON simple example -// This example does not handle errors. - -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; - -int main() { - // 1. Parse a JSON string into DOM. - const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; - Document d; - d.Parse(json); - - // 2. Modify it by DOM. - Value& s = d["stars"]; - s.SetInt(s.GetInt() + 1); - - // 3. Stringify the DOM - StringBuffer buffer; - Writer writer(buffer); - d.Accept(writer); - - // Output {"project":"rapidjson","stars":11} - std::cout << buffer.GetString() << std::endl; - return 0; -} diff --git a/rapidjson-lib/example/simplereader/simplereader.cpp b/rapidjson-lib/example/simplereader/simplereader.cpp deleted file mode 100644 index 5aae8a1..0000000 --- a/rapidjson-lib/example/simplereader/simplereader.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "rapidjson/reader.h" -#include - -using namespace rapidjson; -using namespace std; - -struct MyHandler { - bool Null() { cout << "Null()" << endl; return true; } - bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; } - bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; } - bool Uint(unsigned u) { cout << "Uint(" << u << ")" << endl; return true; } - bool Int64(int64_t i) { cout << "Int64(" << i << ")" << endl; return true; } - bool Uint64(uint64_t u) { cout << "Uint64(" << u << ")" << endl; return true; } - bool Double(double d) { cout << "Double(" << d << ")" << endl; return true; } - bool RawNumber(const char* str, SizeType length, bool copy) { - cout << "Number(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool String(const char* str, SizeType length, bool copy) { - cout << "String(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool StartObject() { cout << "StartObject()" << endl; return true; } - bool Key(const char* str, SizeType length, bool copy) { - cout << "Key(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl; - return true; - } - bool EndObject(SizeType memberCount) { cout << "EndObject(" << memberCount << ")" << endl; return true; } - bool StartArray() { cout << "StartArray()" << endl; return true; } - bool EndArray(SizeType elementCount) { cout << "EndArray(" << elementCount << ")" << endl; return true; } -}; - -int main() { - const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - - MyHandler handler; - Reader reader; - StringStream ss(json); - reader.Parse(ss, handler); - - return 0; -} diff --git a/rapidjson-lib/example/simplewriter/simplewriter.cpp b/rapidjson-lib/example/simplewriter/simplewriter.cpp deleted file mode 100644 index 8d1275c..0000000 --- a/rapidjson-lib/example/simplewriter/simplewriter.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; -using namespace std; - -int main() { - StringBuffer s; - Writer writer(s); - - writer.StartObject(); // Between StartObject()/EndObject(), - writer.Key("hello"); // output a key, - writer.String("world"); // follow by a value. - writer.Key("t"); - writer.Bool(true); - writer.Key("f"); - writer.Bool(false); - writer.Key("n"); - writer.Null(); - writer.Key("i"); - writer.Uint(123); - writer.Key("pi"); - writer.Double(3.1416); - writer.Key("a"); - writer.StartArray(); // Between StartArray()/EndArray(), - for (unsigned i = 0; i < 4; i++) - writer.Uint(i); // all values are elements of the array. - writer.EndArray(); - writer.EndObject(); - - // {"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]} - cout << s.GetString() << endl; - - return 0; -} diff --git a/rapidjson-lib/example/tutorial/tutorial.cpp b/rapidjson-lib/example/tutorial/tutorial.cpp deleted file mode 100644 index c8bfcc1..0000000 --- a/rapidjson-lib/example/tutorial/tutorial.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// Hello World example -// This example shows basic usage of DOM-style API. - -#include "rapidjson/document.h" // rapidjson's DOM-style API -#include "rapidjson/prettywriter.h" // for stringify JSON -#include - -using namespace rapidjson; -using namespace std; - -int main(int, char*[]) { - //////////////////////////////////////////////////////////////////////////// - // 1. Parse a JSON text string to a document. - - const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - printf("Original JSON:\n %s\n", json); - - Document document; // Default template parameter uses UTF8 and MemoryPoolAllocator. - -#if 0 - // "normal" parsing, decode strings to new buffers. Can use other input stream via ParseStream(). - if (document.Parse(json).HasParseError()) - return 1; -#else - // In-situ parsing, decode strings directly in the source string. Source must be string. - char buffer[sizeof(json)]; - memcpy(buffer, json, sizeof(json)); - if (document.ParseInsitu(buffer).HasParseError()) - return 1; -#endif - - printf("\nParsing to document succeeded.\n"); - - //////////////////////////////////////////////////////////////////////////// - // 2. Access values in document. - - printf("\nAccess values in document:\n"); - assert(document.IsObject()); // Document is a JSON value represents the root of DOM. Root can be either an object or array. - - assert(document.HasMember("hello")); - assert(document["hello"].IsString()); - printf("hello = %s\n", document["hello"].GetString()); - - // Since version 0.2, you can use single lookup to check the existing of member and its value: - Value::MemberIterator hello = document.FindMember("hello"); - assert(hello != document.MemberEnd()); - assert(hello->value.IsString()); - assert(strcmp("world", hello->value.GetString()) == 0); - (void)hello; - - assert(document["t"].IsBool()); // JSON true/false are bool. Can also uses more specific function IsTrue(). - printf("t = %s\n", document["t"].GetBool() ? "true" : "false"); - - assert(document["f"].IsBool()); - printf("f = %s\n", document["f"].GetBool() ? "true" : "false"); - - printf("n = %s\n", document["n"].IsNull() ? "null" : "?"); - - assert(document["i"].IsNumber()); // Number is a JSON type, but C++ needs more specific type. - assert(document["i"].IsInt()); // In this case, IsUint()/IsInt64()/IsUInt64() also return true. - printf("i = %d\n", document["i"].GetInt()); // Alternative (int)document["i"] - - assert(document["pi"].IsNumber()); - assert(document["pi"].IsDouble()); - printf("pi = %g\n", document["pi"].GetDouble()); - - { - const Value& a = document["a"]; // Using a reference for consecutive access is handy and faster. - assert(a.IsArray()); - for (SizeType i = 0; i < a.Size(); i++) // rapidjson uses SizeType instead of size_t. - printf("a[%d] = %d\n", i, a[i].GetInt()); - - int y = a[0].GetInt(); - (void)y; - - // Iterating array with iterators - printf("a = "); - for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) - printf("%d ", itr->GetInt()); - printf("\n"); - } - - // Iterating object members - static const char* kTypeNames[] = { "Null", "False", "True", "Object", "Array", "String", "Number" }; - for (Value::ConstMemberIterator itr = document.MemberBegin(); itr != document.MemberEnd(); ++itr) - printf("Type of member %s is %s\n", itr->name.GetString(), kTypeNames[itr->value.GetType()]); - - //////////////////////////////////////////////////////////////////////////// - // 3. Modify values in document. - - // Change i to a bigger number - { - uint64_t f20 = 1; // compute factorial of 20 - for (uint64_t j = 1; j <= 20; j++) - f20 *= j; - document["i"] = f20; // Alternate form: document["i"].SetUint64(f20) - assert(!document["i"].IsInt()); // No longer can be cast as int or uint. - } - - // Adding values to array. - { - Value& a = document["a"]; // This time we uses non-const reference. - Document::AllocatorType& allocator = document.GetAllocator(); - for (int i = 5; i <= 10; i++) - a.PushBack(i, allocator); // May look a bit strange, allocator is needed for potentially realloc. We normally uses the document's. - - // Fluent API - a.PushBack("Lua", allocator).PushBack("Mio", allocator); - } - - // Making string values. - - // This version of SetString() just store the pointer to the string. - // So it is for literal and string that exists within value's life-cycle. - { - document["hello"] = "rapidjson"; // This will invoke strlen() - // Faster version: - // document["hello"].SetString("rapidjson", 9); - } - - // This version of SetString() needs an allocator, which means it will allocate a new buffer and copy the the string into the buffer. - Value author; - { - char buffer2[10]; - int len = sprintf(buffer2, "%s %s", "Milo", "Yip"); // synthetic example of dynamically created string. - - author.SetString(buffer2, static_cast(len), document.GetAllocator()); - // Shorter but slower version: - // document["hello"].SetString(buffer, document.GetAllocator()); - - // Constructor version: - // Value author(buffer, len, document.GetAllocator()); - // Value author(buffer, document.GetAllocator()); - memset(buffer2, 0, sizeof(buffer2)); // For demonstration purpose. - } - // Variable 'buffer' is unusable now but 'author' has already made a copy. - document.AddMember("author", author, document.GetAllocator()); - - assert(author.IsNull()); // Move semantic for assignment. After this variable is assigned as a member, the variable becomes null. - - //////////////////////////////////////////////////////////////////////////// - // 4. Stringify JSON - - printf("\nModified JSON with reformatting:\n"); - StringBuffer sb; - PrettyWriter writer(sb); - document.Accept(writer); // Accept() traverses the DOM and generates Handler events. - puts(sb.GetString()); - - return 0; -} diff --git a/rapidjson-lib/include_dirs.js b/rapidjson-lib/include_dirs.js deleted file mode 100644 index b373e85..0000000 --- a/rapidjson-lib/include_dirs.js +++ /dev/null @@ -1,2 +0,0 @@ -var path = require('path'); -console.log(path.join(path.relative('.', __dirname), 'include')); diff --git a/rapidjson-lib/library.json b/rapidjson-lib/library.json deleted file mode 100644 index 47fd352..0000000 --- a/rapidjson-lib/library.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "RapidJSON", - "keywords": "json, sax, dom, parser, generator", - "description": "A fast JSON parser/generator for C++ with both SAX/DOM style API", - "include": "include", - "examples": "example/*/*.cpp", - "repository": - { - "type": "git", - "url": "https://github.com/miloyip/rapidjson" - } -} diff --git a/rapidjson-lib/package.json b/rapidjson-lib/package.json deleted file mode 100644 index cc6087a..0000000 --- a/rapidjson-lib/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "rapidjson", - "version": "1.0.4", - "description": "![](doc/logo/rapidjson.png)", - "main": "include_dirs.js", - "directories": { - "doc": "doc", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/miloyip/rapidjson.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/miloyip/rapidjson/issues" - }, - "homepage": "https://github.com/miloyip/rapidjson#readme" -} diff --git a/rapidjson-lib/rapidjson.autopkg b/rapidjson-lib/rapidjson.autopkg deleted file mode 100644 index 70eb0d8..0000000 --- a/rapidjson-lib/rapidjson.autopkg +++ /dev/null @@ -1,75 +0,0 @@ -nuget { - //Usage: Write-NuGetPackage rapidjson.autopkg -defines:MYVERSION=1.1.0 - //Be sure you are running Powershell 3.0 and have the CoApp powershell extensions installed properly. - nuspec { - id = rapidjson; - version : ${MYVERSION}; - title: "rapidjson"; - authors: {"https://github.com/miloyip/rapidjson/releases/tag/v1.1.0"}; - owners: {"@lsantos (github)"}; - licenseUrl: "https://github.com/miloyip/rapidjson/blob/master/license.txt"; - projectUrl: "https://github.com/miloyip/rapidjson/"; - iconUrl: "https://cdn1.iconfinder.com/data/icons/fatcow/32x32/json.png"; - requireLicenseAcceptance:false; - summary: @"A fast JSON parser/generator for C++ with both SAX/DOM style API"; - - // if you need to span several lines you can prefix a string with an @ symbol (exactly like c# does). - description: @"Rapidjson is an attempt to create the fastest JSON parser and generator. - - - Small but complete. Supports both SAX and DOM style API. SAX parser only a few hundred lines of code. - - Fast. In the order of magnitude of strlen(). Optionally supports SSE2/SSE4.2 for acceleration. - - Self-contained. Minimal dependency on standard libraries. No BOOST, not even STL. - - Compact. Each JSON value is 16 or 20 bytes for 32 or 64-bit machines respectively (excluding text string storage). With the custom memory allocator, parser allocates memory compactly during parsing. - - Full RFC4627 compliance. Supports UTF-8, UTF-16 and UTF-32. - - Support both in-situ parsing (directly decode strings into the source JSON text) and non-destructive parsing (decode strings into new buffers). - - Parse number to int/unsigned/int64_t/uint64_t/double depending on input - - Support custom memory allocation. Also, the default memory pool allocator can also be supplied with a user buffer (such as a buffer allocated on user's heap or - programme stack) to minimize allocation. - - As the name implies, rapidjson is inspired by rapidxml."; - - releaseNotes: @" -Added - Add Value::XXXMember(...) overloads for std::string (#335) - -Fixed - Include rapidjson.h for all internal/error headers. - Parsing some numbers incorrectly in full-precision mode (kFullPrecisionParseFlag) (#342) - Fix alignment of 64bit platforms (#328) - Fix MemoryPoolAllocator::Clear() to clear user-buffer (0691502) - -Changed - CMakeLists for include as a thirdparty in projects (#334, #337) - Change Document::ParseStream() to use stack allocator for Reader (ffbe386)"; - - copyright: "Copyright 2015"; - tags: { native, coapp, JSON, nativepackage }; - language: en-US; - }; - - dependencies { - packages : { - //TODO: Add dependecies here in [pkg.name]/[version] form per newline - //zlib/[1.2.8], - }; - } - - // the files that go into the content folders - files { - #defines { - SDK_ROOT = .\; - } - - // grab all the files in the include folder - // the folder that contains all the .h files will - // automatically get added to the Includes path. - nestedinclude += { - #destination = ${d_include}rapidjson; - "${SDK_ROOT}include\rapidjson\**\*.h" - }; - }; - - targets { - // We're trying to be standard about these sorts of thing. (Will help with config.h later :D) - //Defines += HAS_EQCORE; - }; -} \ No newline at end of file diff --git a/rapidjson-lib/readme.md b/rapidjson-lib/readme.md deleted file mode 100644 index 4a1d64d..0000000 --- a/rapidjson-lib/readme.md +++ /dev/null @@ -1,160 +0,0 @@ -![](doc/logo/rapidjson.png) - -![](https://img.shields.io/badge/release-v1.1.0-blue.png) - -## A fast JSON parser/generator for C++ with both SAX/DOM style API - -Tencent is pleased to support the open source community by making RapidJSON available. - -Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. - -* [RapidJSON GitHub](https://github.com/miloyip/rapidjson/) -* RapidJSON Documentation - * [English](http://rapidjson.org/) - * [简体中文](http://rapidjson.org/zh-cn/) - * [GitBook](https://www.gitbook.com/book/miloyip/rapidjson/) with downloadable PDF/EPUB/MOBI, without API reference. - -## Build status - -| [Linux][lin-link] | [Windows][win-link] | [Coveralls][cov-link] | -| :---------------: | :-----------------: | :-------------------: | -| ![lin-badge] | ![win-badge] | ![cov-badge] | - -[lin-badge]: https://travis-ci.org/miloyip/rapidjson.png?branch=master "Travis build status" -[lin-link]: https://travis-ci.org/miloyip/rapidjson "Travis build status" -[win-badge]: https://ci.appveyor.com/api/projects/status/u658dcuwxo14a8m9/branch/master "AppVeyor build status" -[win-link]: https://ci.appveyor.com/project/miloyip/rapidjson/branch/master "AppVeyor build status" -[cov-badge]: https://coveralls.io/repos/miloyip/rapidjson/badge.png?branch=master -[cov-link]: https://coveralls.io/r/miloyip/rapidjson?branch=master - -## Introduction - -RapidJSON is a JSON parser and generator for C++. It was inspired by [RapidXml](http://rapidxml.sourceforge.net/). - -* RapidJSON is **small** but **complete**. It supports both SAX and DOM style API. The SAX parser is only a half thousand lines of code. - -* RapidJSON is **fast**. Its performance can be comparable to `strlen()`. It also optionally supports SSE2/SSE4.2 for acceleration. - -* RapidJSON is **self-contained** and **header-only**. It does not depend on external libraries such as BOOST. It even does not depend on STL. - -* RapidJSON is **memory-friendly**. Each JSON value occupies exactly 16 bytes for most 32/64-bit machines (excluding text string). By default it uses a fast memory allocator, and the parser allocates memory compactly during parsing. - -* RapidJSON is **Unicode-friendly**. It supports UTF-8, UTF-16, UTF-32 (LE & BE), and their detection, validation and transcoding internally. For example, you can read a UTF-8 file and let RapidJSON transcode the JSON strings into UTF-16 in the DOM. It also supports surrogates and "\u0000" (null character). - -More features can be read [here](doc/features.md). - -JSON(JavaScript Object Notation) is a light-weight data exchange format. RapidJSON should be in fully compliance with RFC7159/ECMA-404, with optional support of relaxed syntax. More information about JSON can be obtained at -* [Introducing JSON](http://json.org/) -* [RFC7159: The JavaScript Object Notation (JSON) Data Interchange Format](http://www.ietf.org/rfc/rfc7159.txt) -* [Standard ECMA-404: The JSON Data Interchange Format](http://www.ecma-international.org/publications/standards/Ecma-404.htm) - -## Highlights in v1.1 (2016-8-25) - -* Added [JSON Pointer](doc/pointer.md) -* Added [JSON Schema](doc/schema.md) -* Added [relaxed JSON syntax](doc/dom.md) (comment, trailing comma, NaN/Infinity) -* Iterating array/object with [C++11 Range-based for loop](doc/tutorial.md) -* Reduce memory overhead of each `Value` from 24 bytes to 16 bytes in x86-64 architecture. - -For other changes please refer to [change log](CHANGELOG.md). - -## Compatibility - -RapidJSON is cross-platform. Some platform/compiler combinations which have been tested are shown as follows. -* Visual C++ 2008/2010/2013 on Windows (32/64-bit) -* GNU C++ 3.8.x on Cygwin -* Clang 3.4 on Mac OS X (32/64-bit) and iOS -* Clang 3.4 on Android NDK - -Users can build and run the unit tests on their platform/compiler. - -## Installation - -RapidJSON is a header-only C++ library. Just copy the `include/rapidjson` folder to system or project's include path. - -RapidJSON uses following software as its dependencies: -* [CMake](https://cmake.org/) as a general build tool -* (optional)[Doxygen](http://www.doxygen.org) to build documentation -* (optional)[googletest](https://github.com/google/googletest) for unit and performance testing - -To generate user documentation and run tests please proceed with the steps below: - -1. Execute `git submodule update --init` to get the files of thirdparty submodules (google test). -2. Create directory called `build` in rapidjson source directory. -3. Change to `build` directory and run `cmake ..` command to configure your build. Windows users can do the same with cmake-gui application. -4. On Windows, build the solution found in the build directory. On Linux, run `make` from the build directory. - -On successfull build you will find compiled test and example binaries in `bin` -directory. The generated documentation will be available in `doc/html` -directory of the build tree. To run tests after finished build please run `make -test` or `ctest` from your build tree. You can get detailed output using `ctest --V` command. - -It is possible to install library system-wide by running `make install` command -from the build tree with administrative privileges. This will install all files -according to system preferences. Once RapidJSON is installed, it is possible -to use it from other CMake projects by adding `find_package(RapidJSON)` line to -your CMakeLists.txt. - -## Usage at a glance - -This simple example parses a JSON string into a document (DOM), make a simple modification of the DOM, and finally stringify the DOM to a JSON string. - -~~~~~~~~~~cpp -// rapidjson/example/simpledom/simpledom.cpp` -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; - -int main() { - // 1. Parse a JSON string into DOM. - const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; - Document d; - d.Parse(json); - - // 2. Modify it by DOM. - Value& s = d["stars"]; - s.SetInt(s.GetInt() + 1); - - // 3. Stringify the DOM - StringBuffer buffer; - Writer writer(buffer); - d.Accept(writer); - - // Output {"project":"rapidjson","stars":11} - std::cout << buffer.GetString() << std::endl; - return 0; -} -~~~~~~~~~~ - -Note that this example did not handle potential errors. - -The following diagram shows the process. - -![simpledom](doc/diagram/simpledom.png) - -More [examples](https://github.com/miloyip/rapidjson/tree/master/example) are available: - -* DOM API - * [tutorial](https://github.com/miloyip/rapidjson/blob/master/example/tutorial/tutorial.cpp): Basic usage of DOM API. - -* SAX API - * [simplereader](https://github.com/miloyip/rapidjson/blob/master/example/simplereader/simplereader.cpp): Dumps all SAX events while parsing a JSON by `Reader`. - * [condense](https://github.com/miloyip/rapidjson/blob/master/example/condense/condense.cpp): A command line tool to rewrite a JSON, with all whitespaces removed. - * [pretty](https://github.com/miloyip/rapidjson/blob/master/example/pretty/pretty.cpp): A command line tool to rewrite a JSON with indents and newlines by `PrettyWriter`. - * [capitalize](https://github.com/miloyip/rapidjson/blob/master/example/capitalize/capitalize.cpp): A command line tool to capitalize strings in JSON. - * [messagereader](https://github.com/miloyip/rapidjson/blob/master/example/messagereader/messagereader.cpp): Parse a JSON message with SAX API. - * [serialize](https://github.com/miloyip/rapidjson/blob/master/example/serialize/serialize.cpp): Serialize a C++ object into JSON with SAX API. - * [jsonx](https://github.com/miloyip/rapidjson/blob/master/example/jsonx/jsonx.cpp): Implements a `JsonxWriter` which stringify SAX events into [JSONx](https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonx.html) (a kind of XML) format. The example is a command line tool which converts input JSON into JSONx format. - -* Schema - * [schemavalidator](https://github.com/miloyip/rapidjson/blob/master/example/schemavalidator/schemavalidator.cpp) : A command line tool to validate a JSON with a JSON schema. - -* Advanced - * [prettyauto](https://github.com/miloyip/rapidjson/blob/master/example/prettyauto/prettyauto.cpp): A modified version of [pretty](https://github.com/miloyip/rapidjson/blob/master/example/pretty/pretty.cpp) to automatically handle JSON with any UTF encodings. - * [parsebyparts](https://github.com/miloyip/rapidjson/blob/master/example/parsebyparts/parsebyparts.cpp): Implements an `AsyncDocumentParser` which can parse JSON in parts, using C++11 thread. - * [filterkey](https://github.com/miloyip/rapidjson/blob/master/example/filterkey/filterkey.cpp): A command line tool to remove all values with user-specified key. - * [filterkeydom](https://github.com/miloyip/rapidjson/blob/master/example/filterkeydom/filterkeydom.cpp): Same tool as above, but it demonstrates how to use a generator to populate a `Document`. diff --git a/rapidjson-lib/readme.zh-cn.md b/rapidjson-lib/readme.zh-cn.md deleted file mode 100644 index 74d267c..0000000 --- a/rapidjson-lib/readme.zh-cn.md +++ /dev/null @@ -1,152 +0,0 @@ -![](doc/logo/rapidjson.png) - -![](https://img.shields.io/badge/release-v1.1.0-blue.png) - -## 高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API - -Tencent is pleased to support the open source community by making RapidJSON available. - -Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. - -* [RapidJSON GitHub](https://github.com/miloyip/rapidjson/) -* RapidJSON 文档 - * [English](http://rapidjson.org/) - * [简体中文](http://rapidjson.org/zh-cn/) - * [GitBook](https://www.gitbook.com/book/miloyip/rapidjson/) 可下载 PDF/EPUB/MOBI,但不含 API 参考手册。 - -## Build 状态 - -| [Linux][lin-link] | [Windows][win-link] | [Coveralls][cov-link] | -| :---------------: | :-----------------: | :-------------------: | -| ![lin-badge] | ![win-badge] | ![cov-badge] | - -[lin-badge]: https://travis-ci.org/miloyip/rapidjson.png?branch=master "Travis build status" -[lin-link]: https://travis-ci.org/miloyip/rapidjson "Travis build status" -[win-badge]: https://ci.appveyor.com/api/projects/status/u658dcuwxo14a8m9/branch/master "AppVeyor build status" -[win-link]: https://ci.appveyor.com/project/miloyip/rapidjson/branch/master "AppVeyor build status" -[cov-badge]: https://coveralls.io/repos/miloyip/rapidjson/badge.png?branch=master -[cov-link]: https://coveralls.io/r/miloyip/rapidjson?branch=master - -## 简介 - -RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 [RapidXml](http://rapidxml.sourceforge.net/)。 - -* RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约 500 行代码。 - -* RapidJSON 快。它的性能可与 `strlen()` 相比。可支持 SSE2/SSE4.2 加速。 - -* RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至不依赖于 STL。 - -* RapidJSON 对内存友好。在大部分 32/64 位机器上,每个 JSON 值只占 16 字节(除字符串外)。它预设使用一个快速的内存分配器,令分析器可以紧凑地分配内存。 - -* RapidJSON 对 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并内部支持这些编码的检测、校验及转码。例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 `"\u0000"`(空字符)。 - -在 [这里](doc/features.zh-cn.md) 可读取更多特点。 - -JSON(JavaScript Object Notation)是一个轻量的数据交换格式。RapidJSON 应该完全遵从 RFC7159/ECMA-404,并支持可选的放宽语法。 关于 JSON 的更多信息可参考: -* [Introducing JSON](http://json.org/) -* [RFC7159: The JavaScript Object Notation (JSON) Data Interchange Format](http://www.ietf.org/rfc/rfc7159.txt) -* [Standard ECMA-404: The JSON Data Interchange Format](http://www.ecma-international.org/publications/standards/Ecma-404.htm) - -## v1.1 中的亮点 (2016-8-25) - -* 加入 [JSON Pointer](doc/pointer.zh-cn.md) 功能,可更简单地访问及更改 DOM。 -* 加入 [JSON Schema](doc/schema.zh-cn.md) 功能,可在解析或生成 JSON 时进行校验。 -* 加入 [放宽的 JSON 语法](doc/dom.zh-cn.md) (注释、尾随逗号、NaN/Infinity) -* 使用 [C++11 范围 for 循环](doc/tutorial.zh-cn.md) 去遍历 array 和 object。 -* 在 x86-64 架构下,缩减每个 `Value` 的内存开销从 24 字节至 16 字节。 - -其他改动请参考 [change log](CHANGELOG.md). - -## 兼容性 - -RapidJSON 是跨平台的。以下是一些曾测试的平台/编译器组合: -* Visual C++ 2008/2010/2013 在 Windows (32/64-bit) -* GNU C++ 3.8.x 在 Cygwin -* Clang 3.4 在 Mac OS X (32/64-bit) 及 iOS -* Clang 3.4 在 Android NDK - -用户也可以在他们的平台上生成及执行单元测试。 - -## 安装 - -RapidJSON 是只有头文件的 C++ 库。只需把 `include/rapidjson` 目录复制至系统或项目的 include 目录中。 - -RapidJSON 依赖于以下软件: -* [CMake](http://www.cmake.org) 作为通用生成工具 -* (optional)[Doxygen](http://www.doxygen.org) 用于生成文档 -* (optional)[googletest](https://code.google.com/p/googletest/) 用于单元及性能测试 - -生成测试及例子的步骤: - -1. 执行 `git submodule update --init` 去获取 thirdparty submodules (google test)。 -2. 在 rapidjson 目渌下,建立一个 `build` 目录。 -3. 在 `build` 目录下执行 `cmake ..` 命令以设置生成。Windows 用户可使用 cmake-gui 应用程序。 -4. 在 Windows 下,编译生成在 build 目录中的 solution。在 Linux 下,于 build 目录运行 `make`。 - -成功生成后,你会在 `bin` 的目录下找到编译后的测试及例子可执行文件。而生成的文档将位于 build 下的 `doc/html` 目录。要执行测试,请在 build 下执行 `make test` 或 `ctest`。使用 `ctest -V` 命令可获取详细的输出。 - -我们也可以把程序库安装至全系统中,只要在具管理權限下从 build 目录执行 `make install` 命令。这样会按系统的偏好设置安装所有文件。当安装 RapidJSON 后,其他的 CMake 项目需要使用它时,可以通过在 `CMakeLists.txt` 加入一句 `find_package(RapidJSON)`。 - -## 用法一览 - -此简单例子解析一个 JSON 字符串至一个 document (DOM),对 DOM 作出简单修改,最终把 DOM 转换(stringify)至 JSON 字符串。 - -~~~~~~~~~~cpp -// rapidjson/example/simpledom/simpledom.cpp` -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; - -int main() { - // 1. 把 JSON 解析至 DOM。 - const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; - Document d; - d.Parse(json); - - // 2. 利用 DOM 作出修改。 - Value& s = d["stars"]; - s.SetInt(s.GetInt() + 1); - - // 3. 把 DOM 转换(stringify)成 JSON。 - StringBuffer buffer; - Writer writer(buffer); - d.Accept(writer); - - // Output {"project":"rapidjson","stars":11} - std::cout << buffer.GetString() << std::endl; - return 0; -} -~~~~~~~~~~ - -注意此例子并没有处理潜在错误。 - -下图展示执行过程。 - -![simpledom](doc/diagram/simpledom.png) - -还有许多 [例子](https://github.com/miloyip/rapidjson/tree/master/example) 可供参考: - -* DOM API - * [tutorial](https://github.com/miloyip/rapidjson/blob/master/example/tutorial/tutorial.cpp): DOM API 的基本使用方法。 - -* SAX API - * [simplereader](https://github.com/miloyip/rapidjson/blob/master/example/simplereader/simplereader.cpp): 使用 `Reader` 解析 JSON 时,打印所有 SAX 事件。 - * [condense](https://github.com/miloyip/rapidjson/blob/master/example/condense/condense.cpp): 移除 JSON 中所有空白符的命令行工具。 - * [pretty](https://github.com/miloyip/rapidjson/blob/master/example/pretty/pretty.cpp): 为 JSON 加入缩进与换行的命令行工具,当中使用了 `PrettyWriter`。 - * [capitalize](https://github.com/miloyip/rapidjson/blob/master/example/capitalize/capitalize.cpp): 把 JSON 中所有字符串改为大写的命令行工具。 - * [messagereader](https://github.com/miloyip/rapidjson/blob/master/example/messagereader/messagereader.cpp): 使用 SAX API 去解析一个 JSON 报文。 - * [serialize](https://github.com/miloyip/rapidjson/blob/master/example/serialize/serialize.cpp): 使用 SAX API 去序列化 C++ 对象,生成 JSON。 - * [jsonx](https://github.com/miloyip/rapidjson/blob/master/example/jsonx/jsonx.cpp): 实现了一个 `JsonxWriter`,它能把 SAX 事件写成 [JSONx](https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonx.html)(一种 XML)格式。这个例子是把 JSON 输入转换成 JSONx 格式的命令行工具。 - -* Schema API - * [schemavalidator](https://github.com/miloyip/rapidjson/blob/master/example/schemavalidator/schemavalidator.cpp): 使用 JSON Schema 去校验 JSON 的命令行工具。 - -* 进阶 - * [prettyauto](https://github.com/miloyip/rapidjson/blob/master/example/prettyauto/prettyauto.cpp): [pretty](https://github.com/miloyip/rapidjson/blob/master/example/pretty/pretty.cpp) 的修改版本,可自动处理任何 UTF 编码的 JSON。 - * [parsebyparts](https://github.com/miloyip/rapidjson/blob/master/example/parsebyparts/parsebyparts.cpp): 这例子中的 `AsyncDocumentParser` 类使用 C++ 线程来逐段解析 JSON。 - * [filterkey](https://github.com/miloyip/rapidjson/blob/master/example/filterkey/filterkey.cpp): 移取使用者指定的键值的命令行工具。 - * [filterkeydom](https://github.com/miloyip/rapidjson/blob/master/example/filterkey/filterkey.cpp): 如上的工具,但展示如何使用生成器(generator)去填充一个 `Document`。 \ No newline at end of file diff --git a/rapidjson-lib/test/CMakeLists.txt b/rapidjson-lib/test/CMakeLists.txt deleted file mode 100644 index 11c1b04..0000000 --- a/rapidjson-lib/test/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -find_package(GTestSrc) - -IF(GTESTSRC_FOUND) - enable_testing() - - if (WIN32 AND (NOT CYGWIN) AND (NOT MINGW)) - set(gtest_disable_pthreads ON) - set(gtest_force_shared_crt ON) - endif() - - add_subdirectory(${GTEST_SOURCE_DIR} ${CMAKE_BINARY_DIR}/googletest) - include_directories(SYSTEM ${GTEST_INCLUDE_DIR}) - - set(TEST_LIBRARIES gtest gtest_main) - - add_custom_target(tests ALL) - add_subdirectory(perftest) - add_subdirectory(unittest) - -ENDIF(GTESTSRC_FOUND) diff --git a/rapidjson-lib/test/perftest/CMakeLists.txt b/rapidjson-lib/test/perftest/CMakeLists.txt deleted file mode 100644 index c33aae4..0000000 --- a/rapidjson-lib/test/perftest/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -set(PERFTEST_SOURCES - misctest.cpp - perftest.cpp - platformtest.cpp - rapidjsontest.cpp - schematest.cpp) - -add_executable(perftest ${PERFTEST_SOURCES}) -target_link_libraries(perftest ${TEST_LIBRARIES}) - -add_dependencies(tests perftest) - -find_program(CCACHE_FOUND ccache) -if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics") - endif() -endif(CCACHE_FOUND) - -IF(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug")) -add_test(NAME perftest - COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/perftest - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) -ENDIF() diff --git a/rapidjson-lib/test/perftest/misctest.cpp b/rapidjson-lib/test/perftest/misctest.cpp deleted file mode 100644 index aac8477..0000000 --- a/rapidjson-lib/test/perftest/misctest.cpp +++ /dev/null @@ -1,974 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "perftest.h" - -#if TEST_MISC - -#define __STDC_FORMAT_MACROS -#include "rapidjson/stringbuffer.h" - -#define protected public -#include "rapidjson/writer.h" -#undef private - -class Misc : public PerfTest { -}; - -// Copyright (c) 2008-2010 Bjoern Hoehrmann -// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. - -#define UTF8_ACCEPT 0 -#define UTF8_REJECT 12 - -static const unsigned char utf8d[] = { - // The first part of the table maps bytes to character classes that - // to reduce the size of the transition table and create bitmasks. - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, - - // The second part is a transition table that maps a combination - // of a state of the automaton and a character class to a state. - 0,12,24,36,60,96,84,12,12,12,48,72, 12,12,12,12,12,12,12,12,12,12,12,12, - 12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12, - 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12, - 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12, - 12,36,12,12,12,12,12,12,12,12,12,12, -}; - -static unsigned inline decode(unsigned* state, unsigned* codep, unsigned byte) { - unsigned type = utf8d[byte]; - - *codep = (*state != UTF8_ACCEPT) ? - (byte & 0x3fu) | (*codep << 6) : - (0xff >> type) & (byte); - - *state = utf8d[256 + *state + type]; - return *state; -} - -static bool IsUTF8(unsigned char* s) { - unsigned codepoint, state = 0; - - while (*s) - decode(&state, &codepoint, *s++); - - return state == UTF8_ACCEPT; -} - -TEST_F(Misc, Hoehrmann_IsUTF8) { - for (size_t i = 0; i < kTrialCount; i++) { - EXPECT_TRUE(IsUTF8((unsigned char*)json_)); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// CountDecimalDigit: Count number of decimal places - -inline unsigned CountDecimalDigit_naive(unsigned n) { - unsigned count = 1; - while (n >= 10) { - n /= 10; - count++; - } - return count; -} - -inline unsigned CountDecimalDigit_enroll4(unsigned n) { - unsigned count = 1; - while (n >= 10000) { - n /= 10000u; - count += 4; - } - if (n < 10) return count; - if (n < 100) return count + 1; - if (n < 1000) return count + 2; - return count + 3; -} - -inline unsigned CountDecimalDigit64_enroll4(uint64_t n) { - unsigned count = 1; - while (n >= 10000) { - n /= 10000u; - count += 4; - } - if (n < 10) return count; - if (n < 100) return count + 1; - if (n < 1000) return count + 2; - return count + 3; -} - -inline unsigned CountDecimalDigit_fast(unsigned n) { - static const uint32_t powers_of_10[] = { - 0, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000 - }; - -#if defined(_M_IX86) || defined(_M_X64) - unsigned long i = 0; - _BitScanReverse(&i, n | 1); - uint32_t t = (i + 1) * 1233 >> 12; -#elif defined(__GNUC__) - uint32_t t = (32 - __builtin_clz(n | 1)) * 1233 >> 12; -#else -#error -#endif - return t - (n < powers_of_10[t]) + 1; -} - -inline unsigned CountDecimalDigit64_fast(uint64_t n) { - static const uint64_t powers_of_10[] = { - 0, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000, - 10000000000, - 100000000000, - 1000000000000, - 10000000000000, - 100000000000000, - 1000000000000000, - 10000000000000000, - 100000000000000000, - 1000000000000000000, - 10000000000000000000U - }; - -#if defined(_M_IX86) - uint64_t m = n | 1; - unsigned long i = 0; - if (_BitScanReverse(&i, m >> 32)) - i += 32; - else - _BitScanReverse(&i, m & 0xFFFFFFFF); - uint32_t t = (i + 1) * 1233 >> 12; -#elif defined(_M_X64) - unsigned long i = 0; - _BitScanReverse64(&i, n | 1); - uint32_t t = (i + 1) * 1233 >> 12; -#elif defined(__GNUC__) - uint32_t t = (64 - __builtin_clzll(n | 1)) * 1233 >> 12; -#else -#error -#endif - - return t - (n < powers_of_10[t]) + 1; -} - -#if 0 -// Exhaustive, very slow -TEST_F(Misc, CountDecimalDigit_Verify) { - unsigned i = 0; - do { - if (i % (65536 * 256) == 0) - printf("%u\n", i); - ASSERT_EQ(CountDecimalDigit_enroll4(i), CountDecimalDigit_fast(i)); - i++; - } while (i != 0); -} - -static const unsigned kDigits10Trial = 1000000000u; -TEST_F(Misc, CountDecimalDigit_naive) { - unsigned sum = 0; - for (unsigned i = 0; i < kDigits10Trial; i++) - sum += CountDecimalDigit_naive(i); - printf("%u\n", sum); -} - -TEST_F(Misc, CountDecimalDigit_enroll4) { - unsigned sum = 0; - for (unsigned i = 0; i < kDigits10Trial; i++) - sum += CountDecimalDigit_enroll4(i); - printf("%u\n", sum); -} - -TEST_F(Misc, CountDecimalDigit_fast) { - unsigned sum = 0; - for (unsigned i = 0; i < kDigits10Trial; i++) - sum += CountDecimalDigit_fast(i); - printf("%u\n", sum); -} -#endif - -TEST_F(Misc, CountDecimalDigit64_VerifyFast) { - uint64_t i = 1, j; - do { - //printf("%" PRIu64 "\n", i); - ASSERT_EQ(CountDecimalDigit64_enroll4(i), CountDecimalDigit64_fast(i)); - j = i; - i *= 3; - } while (j < i); -} - -//////////////////////////////////////////////////////////////////////////////// -// integer-to-string conversion - -// https://gist.github.com/anonymous/7179097 -static const int randval[] ={ - 936116, 369532, 453755, -72860, 209713, 268347, 435278, -360266, -416287, -182064, - -644712, 944969, 640463, -366588, 471577, -69401, -744294, -505829, 923883, 831785, - -601136, -636767, -437054, 591718, 100758, 231907, -719038, 973540, -605220, 506659, - -871653, 462533, 764843, -919138, 404305, -630931, -288711, -751454, -173726, -718208, - 432689, -281157, 360737, 659827, 19174, -376450, 769984, -858198, 439127, 734703, - -683426, 7, 386135, 186997, -643900, -744422, -604708, -629545, 42313, -933592, - -635566, 182308, 439024, -367219, -73924, -516649, 421935, -470515, 413507, -78952, - -427917, -561158, 737176, 94538, 572322, 405217, 709266, -357278, -908099, -425447, - 601119, 750712, -862285, -177869, 900102, 384877, 157859, -641680, 503738, -702558, - 278225, 463290, 268378, -212840, 580090, 347346, -473985, -950968, -114547, -839893, - -738032, -789424, 409540, 493495, 432099, 119755, 905004, -174834, 338266, 234298, - 74641, -965136, -754593, 685273, 466924, 920560, 385062, 796402, -67229, 994864, - 376974, 299869, -647540, -128724, 469890, -163167, -547803, -743363, 486463, -621028, - 612288, 27459, -514224, 126342, -66612, 803409, -777155, -336453, -284002, 472451, - 342390, -163630, 908356, -456147, -825607, 268092, -974715, 287227, 227890, -524101, - 616370, -782456, 922098, -624001, -813690, 171605, -192962, 796151, 707183, -95696, - -23163, -721260, 508892, 430715, 791331, 482048, -996102, 863274, 275406, -8279, - -556239, -902076, 268647, -818565, 260069, -798232, -172924, -566311, -806503, -885992, - 813969, -78468, 956632, 304288, 494867, -508784, 381751, 151264, 762953, 76352, - 594902, 375424, 271700, -743062, 390176, 924237, 772574, 676610, 435752, -153847, - 3959, -971937, -294181, -538049, -344620, -170136, 19120, -703157, 868152, -657961, - -818631, 219015, -872729, -940001, -956570, 880727, -345910, 942913, -942271, -788115, - 225294, 701108, -517736, -416071, 281940, 488730, 942698, 711494, 838382, -892302, - -533028, 103052, 528823, 901515, 949577, 159364, 718227, -241814, -733661, -462928, - -495829, 165170, 513580, -629188, -509571, -459083, 198437, 77198, -644612, 811276, - -422298, -860842, -52584, 920369, 686424, -530667, -243476, 49763, 345866, -411960, - -114863, 470810, -302860, 683007, -509080, 2, -174981, -772163, -48697, 447770, - -268246, 213268, 269215, 78810, -236340, -639140, -864323, 505113, -986569, -325215, - 541859, 163070, -819998, -645161, -583336, 573414, 696417, -132375, 3, -294501, - 320435, 682591, 840008, 351740, 426951, 609354, 898154, -943254, 227321, -859793, - -727993, 44137, -497965, -782239, 14955, -746080, -243366, 9837, -233083, 606507, - -995864, -615287, -994307, 602715, 770771, -315040, 610860, 446102, -307120, 710728, - -590392, -230474, -762625, -637525, 134963, -202700, -766902, -985541, 218163, 682009, - 926051, 525156, -61195, 403211, -810098, 245539, -431733, 179998, -806533, 745943, - 447597, 131973, -187130, 826019, 286107, -937230, -577419, 20254, 681802, -340500, - 323080, 266283, -667617, 309656, 416386, 611863, 759991, -534257, 523112, -634892, - -169913, -204905, -909867, -882185, -944908, 741811, -717675, 967007, -317396, 407230, - -412805, 792905, 994873, 744793, -456797, 713493, 355232, 116900, -945199, 880539, - 342505, -580824, -262273, 982968, -349497, -735488, 311767, -455191, 570918, 389734, - -958386, 10262, -99267, 155481, 304210, 204724, 704367, -144893, -233664, -671441, - 896849, 408613, 762236, 322697, 981321, 688476, 13663, -970704, -379507, 896412, - 977084, 348869, 875948, 341348, 318710, 512081, 6163, 669044, 833295, 811883, - 708756, -802534, -536057, 608413, -389625, -694603, 541106, -110037, 720322, -540581, - 645420, 32980, 62442, 510157, -981870, -87093, -325960, -500494, -718291, -67889, - 991501, 374804, 769026, -978869, 294747, 714623, 413327, -199164, 671368, 804789, - -362507, 798196, -170790, -568895, -869379, 62020, -316693, -837793, 644994, -39341, - -417504, -243068, -957756, 99072, 622234, -739992, 225668, 8863, -505910, 82483, - -559244, 241572, 1315, -36175, -54990, 376813, -11, 162647, -688204, -486163, - -54934, -197470, 744223, -762707, 732540, 996618, 351561, -445933, -898491, 486531, - 456151, 15276, 290186, -817110, -52995, 313046, -452533, -96267, 94470, -500176, - -818026, -398071, -810548, -143325, -819741, 1338, -897676, -101577, -855445, 37309, - 285742, 953804, -777927, -926962, -811217, -936744, -952245, -802300, -490188, -964953, - -552279, 329142, -570048, -505756, 682898, -381089, -14352, 175138, 152390, -582268, - -485137, 717035, 805329, 239572, -730409, 209643, -184403, -385864, 675086, 819648, - 629058, -527109, -488666, -171981, 532788, 552441, 174666, 984921, 766514, 758787, - 716309, 338801, -978004, -412163, 876079, -734212, 789557, -160491, -522719, 56644, - -991, -286038, -53983, 663740, 809812, 919889, -717502, -137704, 220511, 184396, - -825740, -588447, 430870, 124309, 135956, 558662, -307087, -788055, -451328, 812260, - 931601, 324347, -482989, -117858, -278861, 189068, -172774, 929057, 293787, 198161, - -342386, -47173, 906555, -759955, -12779, 777604, -97869, 899320, 927486, -25284, - -848550, 259450, -485856, -17820, 88, 171400, 235492, -326783, -340793, 886886, - 112428, -246280, 5979, 648444, -114982, 991013, -56489, -9497, 419706, 632820, - -341664, 393926, -848977, -22538, 257307, 773731, -905319, 491153, 734883, -868212, - -951053, 644458, -580758, 764735, 584316, 297077, 28852, -397710, -953669, 201772, - 879050, -198237, -588468, 448102, -116837, 770007, -231812, 642906, -582166, -885828, - 9, 305082, -996577, 303559, 75008, -772956, -447960, 599825, -295552, 870739, - -386278, -950300, 485359, -457081, 629461, -850276, 550496, -451755, -620841, -11766, - -950137, 832337, 28711, -273398, -507197, 91921, -271360, -705991, -753220, -388968, - 967945, 340434, -320883, -662793, -554617, -574568, 477946, -6148, -129519, 689217, - 920020, -656315, -974523, -212525, 80921, -612532, 645096, 545655, 655713, -591631, - -307385, -816688, -618823, -113713, 526430, 673063, 735916, -809095, -850417, 639004, - 432281, -388185, 270708, 860146, -39902, -786157, -258180, -246169, -966720, -264957, - 548072, -306010, -57367, -635665, 933824, 70553, -989936, -488741, 72411, -452509, - 529831, 956277, 449019, -577850, -360986, -803418, 48833, 296073, 203430, 609591, - 715483, 470964, 658106, -718254, -96424, 790163, 334739, 181070, -373578, 5, - -435088, 329841, 330939, -256602, 394355, 912412, 231910, 927278, -661933, 788539, - -769664, -893274, -96856, 298205, 901043, -608122, -527430, 183618, -553963, -35246, - -393924, 948832, -483198, 594501, 35460, -407007, 93494, -336881, -634072, 984205, - -812161, 944664, -31062, 753872, 823933, -69566, 50445, 290147, 85134, 34706, - 551902, 405202, -991246, -84642, 154341, 316432, -695101, -651588, -5030, 137564, - -294665, 332541, 528307, -90572, -344923, 523766, -758498, -968047, 339028, 494578, - 593129, -725773, 31834, -718406, -208638, 159665, -2043, 673344, -442767, 75816, - 755442, 769257, -158730, -410272, 691688, 589550, -878398, -184121, 460679, 346312, - 294163, -544602, 653308, 254167, -276979, 52073, -892684, 887653, -41222, 983065, - -68258, -408799, -99069, -674069, -863635, -32890, 622757, -743862, 40872, -4837, - -967228, 522370, -903951, -818669, 524459, 514702, 925801, 20007, -299229, 579348, - 626021, 430089, 348139, -562692, -607728, -130606, -928451, -424793, -458647, -448892, - -312230, 143337, 109746, 880042, -339658, -785614, 938995, 540916, 118429, 661351, - -402967, 404729, -40918, -976535, 743230, 713110, 440182, -381314, -499252, 74613, - 193652, 912717, 491323, 583633, 324691, 459397, 281253, 195540, -2764, -888651, - 892449, 132663, -478373, -430002, -314551, 527826, 247165, 557966, 554778, 481531, - -946634, 431685, -769059, -348371, 174046, 184597, -354867, 584422, 227390, -850397, - -542924, -849093, -737769, 325359, 736314, 269101, 767940, 674809, 81413, -447458, - 445076, 189072, 906218, 502688, -718476, -863827, -731381, 100660, 623249, 710008, - 572060, 922203, 685740, 55096, 263394, -243695, -353910, -516788, 388471, 455165, - 844103, -643772, 363976, 268875, -899450, 104470, 104029, -238874, -274659, 732969, - -676443, 953291, -916289, -861849, -242344, 958083, -479593, -970395, 799831, 277841, - -243236, -283462, -201510, 166263, -259105, -575706, 878926, 891064, 895297, 655262, - -34807, -809833, -89281, 342585, 554920, 1, 902141, -333425, 139703, 852318, - -618438, 329498, -932596, -692836, -513372, 733656, -523411, 85779, 500478, -682697, - -502836, 138776, 156341, -420037, -557964, -556378, 710993, -50383, -877159, 916334, - 132996, 583516, -603392, -111615, -12288, -780214, 476780, 123327, 137607, 519956, - 745837, 17358, -158581, -53490 -}; -static const size_t randvalCount = sizeof(randval) / sizeof(randval[0]); -static const size_t kItoaTrialCount = 10000; - -static const char digits[201] = -"0001020304050607080910111213141516171819" -"2021222324252627282930313233343536373839" -"4041424344454647484950515253545556575859" -"6061626364656667686970717273747576777879" -"8081828384858687888990919293949596979899"; - -// Prevent code being optimized out -//#define OUTPUT_LENGTH(length) printf("", length) -#define OUTPUT_LENGTH(length) printf("%u\n", (unsigned)length) - -template -class Writer1 { -public: - Writer1() : os_() {} - Writer1(OutputStream& os) : os_(&os) {} - - void Reset(OutputStream& os) { - os_ = &os; - } - - bool WriteInt(int i) { - if (i < 0) { - os_->Put('-'); - i = -i; - } - return WriteUint((unsigned)i); - } - - bool WriteUint(unsigned u) { - char buffer[10]; - char *p = buffer; - do { - *p++ = char(u % 10) + '0'; - u /= 10; - } while (u > 0); - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - - bool WriteInt64(int64_t i64) { - if (i64 < 0) { - os_->Put('-'); - i64 = -i64; - } - WriteUint64((uint64_t)i64); - return true; - } - - bool WriteUint64(uint64_t u64) { - char buffer[20]; - char *p = buffer; - do { - *p++ = char(u64 % 10) + '0'; - u64 /= 10; - } while (u64 > 0); - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - -private: - OutputStream* os_; -}; - -template<> -bool Writer1::WriteUint(unsigned u) { - char buffer[10]; - char* p = buffer; - do { - *p++ = char(u % 10) + '0'; - u /= 10; - } while (u > 0); - - char* d = os_->Push(p - buffer); - do { - --p; - *d++ = *p; - } while (p != buffer); - return true; -} - -// Using digits LUT to reduce divsion/modulo -template -class Writer2 { -public: - Writer2() : os_() {} - Writer2(OutputStream& os) : os_(&os) {} - - void Reset(OutputStream& os) { - os_ = &os; - } - - bool WriteInt(int i) { - if (i < 0) { - os_->Put('-'); - i = -i; - } - return WriteUint((unsigned)i); - } - - bool WriteUint(unsigned u) { - char buffer[10]; - char* p = buffer; - while (u >= 100) { - const unsigned i = (u % 100) << 1; - u /= 100; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - if (u < 10) - *p++ = char(u) + '0'; - else { - const unsigned i = u << 1; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - - bool WriteInt64(int64_t i64) { - if (i64 < 0) { - os_->Put('-'); - i64 = -i64; - } - WriteUint64((uint64_t)i64); - return true; - } - - bool WriteUint64(uint64_t u64) { - char buffer[20]; - char* p = buffer; - while (u64 >= 100) { - const unsigned i = static_cast(u64 % 100) << 1; - u64 /= 100; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - if (u64 < 10) - *p++ = char(u64) + '0'; - else { - const unsigned i = static_cast(u64) << 1; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - -private: - OutputStream* os_; -}; - -// First pass to count digits -template -class Writer3 { -public: - Writer3() : os_() {} - Writer3(OutputStream& os) : os_(&os) {} - - void Reset(OutputStream& os) { - os_ = &os; - } - - bool WriteInt(int i) { - if (i < 0) { - os_->Put('-'); - i = -i; - } - return WriteUint((unsigned)i); - } - - bool WriteUint(unsigned u) { - char buffer[10]; - char *p = buffer; - do { - *p++ = char(u % 10) + '0'; - u /= 10; - } while (u > 0); - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - - bool WriteInt64(int64_t i64) { - if (i64 < 0) { - os_->Put('-'); - i64 = -i64; - } - WriteUint64((uint64_t)i64); - return true; - } - - bool WriteUint64(uint64_t u64) { - char buffer[20]; - char *p = buffer; - do { - *p++ = char(u64 % 10) + '0'; - u64 /= 10; - } while (u64 > 0); - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - -private: - void WriteUintReverse(char* d, unsigned u) { - do { - *--d = char(u % 10) + '0'; - u /= 10; - } while (u > 0); - } - - void WriteUint64Reverse(char* d, uint64_t u) { - do { - *--d = char(u % 10) + '0'; - u /= 10; - } while (u > 0); - } - - OutputStream* os_; -}; - -template<> -inline bool Writer3::WriteUint(unsigned u) { - unsigned digit = CountDecimalDigit_fast(u); - WriteUintReverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer3::WriteUint(unsigned u) { - unsigned digit = CountDecimalDigit_fast(u); - WriteUintReverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer3::WriteUint64(uint64_t u) { - unsigned digit = CountDecimalDigit64_fast(u); - WriteUint64Reverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer3::WriteUint64(uint64_t u) { - unsigned digit = CountDecimalDigit64_fast(u); - WriteUint64Reverse(os_->Push(digit) + digit, u); - return true; -} - -// Using digits LUT to reduce divsion/modulo, two passes -template -class Writer4 { -public: - Writer4() : os_() {} - Writer4(OutputStream& os) : os_(&os) {} - - void Reset(OutputStream& os) { - os_ = &os; - } - - bool WriteInt(int i) { - if (i < 0) { - os_->Put('-'); - i = -i; - } - return WriteUint((unsigned)i); - } - - bool WriteUint(unsigned u) { - char buffer[10]; - char* p = buffer; - while (u >= 100) { - const unsigned i = (u % 100) << 1; - u /= 100; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - if (u < 10) - *p++ = char(u) + '0'; - else { - const unsigned i = u << 1; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - - bool WriteInt64(int64_t i64) { - if (i64 < 0) { - os_->Put('-'); - i64 = -i64; - } - WriteUint64((uint64_t)i64); - return true; - } - - bool WriteUint64(uint64_t u64) { - char buffer[20]; - char* p = buffer; - while (u64 >= 100) { - const unsigned i = static_cast(u64 % 100) << 1; - u64 /= 100; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - if (u64 < 10) - *p++ = char(u64) + '0'; - else { - const unsigned i = static_cast(u64) << 1; - *p++ = digits[i + 1]; - *p++ = digits[i]; - } - - do { - --p; - os_->Put(*p); - } while (p != buffer); - return true; - } - -private: - void WriteUintReverse(char* d, unsigned u) { - while (u >= 100) { - const unsigned i = (u % 100) << 1; - u /= 100; - *--d = digits[i + 1]; - *--d = digits[i]; - } - if (u < 10) { - *--d = char(u) + '0'; - } - else { - const unsigned i = u << 1; - *--d = digits[i + 1]; - *--d = digits[i]; - } - } - - void WriteUint64Reverse(char* d, uint64_t u) { - while (u >= 100) { - const unsigned i = (u % 100) << 1; - u /= 100; - *--d = digits[i + 1]; - *--d = digits[i]; - } - if (u < 10) { - *--d = char(u) + '0'; - } - else { - const unsigned i = u << 1; - *--d = digits[i + 1]; - *--d = digits[i]; - } - } - - OutputStream* os_; -}; - -template<> -inline bool Writer4::WriteUint(unsigned u) { - unsigned digit = CountDecimalDigit_fast(u); - WriteUintReverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer4::WriteUint(unsigned u) { - unsigned digit = CountDecimalDigit_fast(u); - WriteUintReverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer4::WriteUint64(uint64_t u) { - unsigned digit = CountDecimalDigit64_fast(u); - WriteUint64Reverse(os_->Push(digit) + digit, u); - return true; -} - -template<> -inline bool Writer4::WriteUint64(uint64_t u) { - unsigned digit = CountDecimalDigit64_fast(u); - WriteUint64Reverse(os_->Push(digit) + digit, u); - return true; -} - -template -void itoa_Writer_StringBufferVerify() { - rapidjson::StringBuffer sb; - Writer writer(sb); - for (size_t j = 0; j < randvalCount; j++) { - char buffer[32]; - sprintf(buffer, "%d", randval[j]); - writer.WriteInt(randval[j]); - ASSERT_STREQ(buffer, sb.GetString()); - sb.Clear(); - } -} - -template -void itoa_Writer_InsituStringStreamVerify() { - Writer writer; - for (size_t j = 0; j < randvalCount; j++) { - char buffer[32]; - sprintf(buffer, "%d", randval[j]); - char buffer2[32]; - rapidjson::InsituStringStream ss(buffer2); - writer.Reset(ss); - char* begin = ss.PutBegin(); - writer.WriteInt(randval[j]); - ss.Put('\0'); - ss.PutEnd(begin); - ASSERT_STREQ(buffer, buffer2); - } -} - -template -void itoa_Writer_StringBuffer() { - size_t length = 0; - - rapidjson::StringBuffer sb; - Writer writer(sb); - - for (size_t i = 0; i < kItoaTrialCount; i++) { - for (size_t j = 0; j < randvalCount; j++) { - writer.WriteInt(randval[j]); - length += sb.GetSize(); - sb.Clear(); - } - } - OUTPUT_LENGTH(length); -} - -template -void itoa_Writer_InsituStringStream() { - size_t length = 0; - - char buffer[32]; - Writer writer; - for (size_t i = 0; i < kItoaTrialCount; i++) { - for (size_t j = 0; j < randvalCount; j++) { - rapidjson::InsituStringStream ss(buffer); - writer.Reset(ss); - char* begin = ss.PutBegin(); - writer.WriteInt(randval[j]); - length += ss.PutEnd(begin); - } - } - OUTPUT_LENGTH(length); -}; - -template -void itoa64_Writer_StringBufferVerify() { - rapidjson::StringBuffer sb; - Writer writer(sb); - for (size_t j = 0; j < randvalCount; j++) { - char buffer[32]; - int64_t x = randval[j] * randval[j]; - sprintf(buffer, "%" PRIi64, x); - writer.WriteInt64(x); - ASSERT_STREQ(buffer, sb.GetString()); - sb.Clear(); - } -} - -template -void itoa64_Writer_InsituStringStreamVerify() { - Writer writer; - for (size_t j = 0; j < randvalCount; j++) { - char buffer[32]; - int64_t x = randval[j] * randval[j]; - sprintf(buffer, "%" PRIi64, x); - char buffer2[32]; - rapidjson::InsituStringStream ss(buffer2); - writer.Reset(ss); - char* begin = ss.PutBegin(); - writer.WriteInt64(x); - ss.Put('\0'); - ss.PutEnd(begin); - ASSERT_STREQ(buffer, buffer2); - } -} - -template -void itoa64_Writer_StringBuffer() { - size_t length = 0; - - rapidjson::StringBuffer sb; - Writer writer(sb); - - for (size_t i = 0; i < kItoaTrialCount; i++) { - for (size_t j = 0; j < randvalCount; j++) { - writer.WriteInt64(randval[j] * randval[j]); - length += sb.GetSize(); - sb.Clear(); - } - } - OUTPUT_LENGTH(length); -} - -template -void itoa64_Writer_InsituStringStream() { - size_t length = 0; - - char buffer[32]; - Writer writer; - for (size_t i = 0; i < kItoaTrialCount; i++) { - for (size_t j = 0; j < randvalCount; j++) { - rapidjson::InsituStringStream ss(buffer); - writer.Reset(ss); - char* begin = ss.PutBegin(); - writer.WriteInt64(randval[j] * randval[j]); - length += ss.PutEnd(begin); - } - } - OUTPUT_LENGTH(length); -}; - -// Full specialization for InsituStringStream to prevent memory copying -// (normally we will not use InsituStringStream for writing, just for testing) - -namespace rapidjson { - -template<> -bool rapidjson::Writer::WriteInt(int i) { - char *buffer = os_->Push(11); - const char* end = internal::i32toa(i, buffer); - os_->Pop(11 - (end - buffer)); - return true; -} - -template<> -bool Writer::WriteUint(unsigned u) { - char *buffer = os_->Push(10); - const char* end = internal::u32toa(u, buffer); - os_->Pop(10 - (end - buffer)); - return true; -} - -template<> -bool Writer::WriteInt64(int64_t i64) { - char *buffer = os_->Push(21); - const char* end = internal::i64toa(i64, buffer); - os_->Pop(21 - (end - buffer)); - return true; -} - -template<> -bool Writer::WriteUint64(uint64_t u) { - char *buffer = os_->Push(20); - const char* end = internal::u64toa(u, buffer); - os_->Pop(20 - (end - buffer)); - return true; -} - -} // namespace rapidjson - -TEST_F(Misc, itoa_Writer_StringBufferVerify) { itoa_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa_Writer1_StringBufferVerify) { itoa_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa_Writer2_StringBufferVerify) { itoa_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa_Writer3_StringBufferVerify) { itoa_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa_Writer4_StringBufferVerify) { itoa_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa_Writer_InsituStringStreamVerify) { itoa_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa_Writer1_InsituStringStreamVerify) { itoa_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa_Writer2_InsituStringStreamVerify) { itoa_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa_Writer3_InsituStringStreamVerify) { itoa_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa_Writer4_InsituStringStreamVerify) { itoa_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa_Writer_StringBuffer) { itoa_Writer_StringBuffer >(); } -TEST_F(Misc, itoa_Writer1_StringBuffer) { itoa_Writer_StringBuffer >(); } -TEST_F(Misc, itoa_Writer2_StringBuffer) { itoa_Writer_StringBuffer >(); } -TEST_F(Misc, itoa_Writer3_StringBuffer) { itoa_Writer_StringBuffer >(); } -TEST_F(Misc, itoa_Writer4_StringBuffer) { itoa_Writer_StringBuffer >(); } -TEST_F(Misc, itoa_Writer_InsituStringStream) { itoa_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa_Writer1_InsituStringStream) { itoa_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa_Writer2_InsituStringStream) { itoa_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa_Writer3_InsituStringStream) { itoa_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa_Writer4_InsituStringStream) { itoa_Writer_InsituStringStream >(); } - -TEST_F(Misc, itoa64_Writer_StringBufferVerify) { itoa64_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa64_Writer1_StringBufferVerify) { itoa64_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa64_Writer2_StringBufferVerify) { itoa64_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa64_Writer3_StringBufferVerify) { itoa64_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa64_Writer4_StringBufferVerify) { itoa64_Writer_StringBufferVerify >(); } -TEST_F(Misc, itoa64_Writer_InsituStringStreamVerify) { itoa64_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa64_Writer1_InsituStringStreamVerify) { itoa64_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa64_Writer2_InsituStringStreamVerify) { itoa64_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa64_Writer3_InsituStringStreamVerify) { itoa64_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa64_Writer4_InsituStringStreamVerify) { itoa64_Writer_InsituStringStreamVerify >(); } -TEST_F(Misc, itoa64_Writer_StringBuffer) { itoa64_Writer_StringBuffer >(); } -TEST_F(Misc, itoa64_Writer1_StringBuffer) { itoa64_Writer_StringBuffer >(); } -TEST_F(Misc, itoa64_Writer2_StringBuffer) { itoa64_Writer_StringBuffer >(); } -TEST_F(Misc, itoa64_Writer3_StringBuffer) { itoa64_Writer_StringBuffer >(); } -TEST_F(Misc, itoa64_Writer4_StringBuffer) { itoa64_Writer_StringBuffer >(); } -TEST_F(Misc, itoa64_Writer_InsituStringStream) { itoa64_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa64_Writer1_InsituStringStream) { itoa64_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa64_Writer2_InsituStringStream) { itoa64_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa64_Writer3_InsituStringStream) { itoa64_Writer_InsituStringStream >(); } -TEST_F(Misc, itoa64_Writer4_InsituStringStream) { itoa64_Writer_InsituStringStream >(); } - -#endif // TEST_MISC diff --git a/rapidjson-lib/test/perftest/perftest.cpp b/rapidjson-lib/test/perftest/perftest.cpp deleted file mode 100644 index 4e79f1f..0000000 --- a/rapidjson-lib/test/perftest/perftest.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "perftest.h" - -int main(int argc, char **argv) { -#if _MSC_VER - _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); - //void *testWhetherMemoryLeakDetectionWorks = malloc(1); -#endif - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/rapidjson-lib/test/perftest/perftest.h b/rapidjson-lib/test/perftest/perftest.h deleted file mode 100644 index b098e41..0000000 --- a/rapidjson-lib/test/perftest/perftest.h +++ /dev/null @@ -1,182 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#ifndef PERFTEST_H_ -#define PERFTEST_H_ - -#define TEST_RAPIDJSON 1 -#define TEST_PLATFORM 0 -#define TEST_MISC 0 - -#define TEST_VERSION_CODE(x,y,z) \ - (((x)*100000) + ((y)*100) + (z)) - -// __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler. -// We use -march=native with gmake to enable -msse2 and -msse4.2, if supported. -#if defined(__SSE4_2__) -# define RAPIDJSON_SSE42 -#elif defined(__SSE2__) -# define RAPIDJSON_SSE2 -#endif - -#define RAPIDJSON_HAS_STDSTRING 1 - -//////////////////////////////////////////////////////////////////////////////// -// Google Test - -#ifdef __cplusplus - -// gtest indirectly included inttypes.h, without __STDC_CONSTANT_MACROS. -#ifndef __STDC_CONSTANT_MACROS -# define __STDC_CONSTANT_MACROS 1 // required by C++ standard -#endif - -#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) -#if defined(__clang__) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic push -#endif -#pragma GCC diagnostic ignored "-Weffc++" -#endif - -#include "gtest/gtest.h" - -#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic pop -#endif - -#ifdef _MSC_VER -#define _CRTDBG_MAP_ALLOC -#include -#pragma warning(disable : 4996) // 'function': was declared deprecated -#endif - -//! Base class for all performance tests -class PerfTest : public ::testing::Test { -public: - PerfTest() : filename_(), json_(), length_(), whitespace_(), whitespace_length_() {} - - virtual void SetUp() { - { - const char *paths[] = { - "data/sample.json", - "bin/data/sample.json", - "../bin/data/sample.json", - "../../bin/data/sample.json", - "../../../bin/data/sample.json" - }; - - FILE *fp = 0; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - fp = fopen(filename_ = paths[i], "rb"); - if (fp) - break; - } - ASSERT_TRUE(fp != 0); - - fseek(fp, 0, SEEK_END); - length_ = (size_t)ftell(fp); - fseek(fp, 0, SEEK_SET); - json_ = (char*)malloc(length_ + 1); - ASSERT_EQ(length_, fread(json_, 1, length_, fp)); - json_[length_] = '\0'; - fclose(fp); - } - - // whitespace test - { - whitespace_length_ = 1024 * 1024; - whitespace_ = (char *)malloc(whitespace_length_ + 4); - char *p = whitespace_; - for (size_t i = 0; i < whitespace_length_; i += 4) { - *p++ = ' '; - *p++ = '\n'; - *p++ = '\r'; - *p++ = '\t'; - } - *p++ = '['; - *p++ = '0'; - *p++ = ']'; - *p++ = '\0'; - } - - // types test - { - const char *typespaths[] = { - "data/types", - "bin/types", - "../bin/types", - "../../bin/types/", - "../../../bin/types" - }; - - const char* typesfilenames[] = { - "booleans.json", - "floats.json", - "guids.json", - "integers.json", - "mixed.json", - "nulls.json", - "paragraphs.json" - }; - - for (size_t j = 0; j < sizeof(typesfilenames) / sizeof(typesfilenames[0]); j++) { - types_[j] = 0; - for (size_t i = 0; i < sizeof(typespaths) / sizeof(typespaths[0]); i++) { - char filename[256]; - sprintf(filename, "%s/%s", typespaths[i], typesfilenames[j]); - if (FILE* fp = fopen(filename, "rb")) { - fseek(fp, 0, SEEK_END); - typesLength_[j] = (size_t)ftell(fp); - fseek(fp, 0, SEEK_SET); - types_[j] = (char*)malloc(typesLength_[j] + 1); - ASSERT_EQ(typesLength_[j], fread(types_[j], 1, typesLength_[j], fp)); - types_[j][typesLength_[j]] = '\0'; - fclose(fp); - break; - } - } - } - } - } - - virtual void TearDown() { - free(json_); - free(whitespace_); - json_ = 0; - whitespace_ = 0; - for (size_t i = 0; i < 7; i++) { - free(types_[i]); - types_[i] = 0; - } - } - -private: - PerfTest(const PerfTest&); - PerfTest& operator=(const PerfTest&); - -protected: - const char* filename_; - char *json_; - size_t length_; - char *whitespace_; - size_t whitespace_length_; - char *types_[7]; - size_t typesLength_[7]; - - static const size_t kTrialCount = 1000; -}; - -#endif // __cplusplus - -#endif // PERFTEST_H_ diff --git a/rapidjson-lib/test/perftest/platformtest.cpp b/rapidjson-lib/test/perftest/platformtest.cpp deleted file mode 100644 index bb905ca..0000000 --- a/rapidjson-lib/test/perftest/platformtest.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "perftest.h" - -// This file is for giving the performance characteristics of the platform (compiler/OS/CPU). - -#if TEST_PLATFORM - -#include -#include - -// Windows -#ifdef _WIN32 -#include -#endif - -// UNIX -#if defined(unix) || defined(__unix__) || defined(__unix) -#include -#ifdef _POSIX_MAPPED_FILES -#include -#endif -#endif - -class Platform : public PerfTest { -public: - virtual void SetUp() { - PerfTest::SetUp(); - - // temp buffer for testing - temp_ = (char *)malloc(length_ + 1); - memcpy(temp_, json_, length_); - checkSum_ = CheckSum(); - } - - char CheckSum() { - char c = 0; - for (size_t i = 0; i < length_; ++i) - c += temp_[i]; - return c; - } - - virtual void TearDown() { - PerfTest::TearDown(); - free(temp_); - } - -protected: - char *temp_; - char checkSum_; -}; - -TEST_F(Platform, CheckSum) { - for (int i = 0; i < kTrialCount; i++) - EXPECT_EQ(checkSum_, CheckSum()); -} - -TEST_F(Platform, strlen) { - for (int i = 0; i < kTrialCount; i++) { - size_t l = strlen(json_); - EXPECT_EQ(length_, l); - } -} - -TEST_F(Platform, memcmp) { - for (int i = 0; i < kTrialCount; i++) { - EXPECT_EQ(0, memcmp(temp_, json_, length_)); - } -} - -TEST_F(Platform, pow) { - double sum = 0; - for (int i = 0; i < kTrialCount * kTrialCount; i++) - sum += pow(10.0, i & 255); - EXPECT_GT(sum, 0.0); -} - -TEST_F(Platform, Whitespace_strlen) { - for (int i = 0; i < kTrialCount; i++) { - size_t l = strlen(whitespace_); - EXPECT_GT(l, whitespace_length_); - } -} - -TEST_F(Platform, Whitespace_strspn) { - for (int i = 0; i < kTrialCount; i++) { - size_t l = strspn(whitespace_, " \n\r\t"); - EXPECT_EQ(whitespace_length_, l); - } -} - -TEST_F(Platform, fread) { - for (int i = 0; i < kTrialCount; i++) { - FILE *fp = fopen(filename_, "rb"); - ASSERT_EQ(length_, fread(temp_, 1, length_, fp)); - EXPECT_EQ(checkSum_, CheckSum()); - fclose(fp); - } -} - -#ifdef _MSC_VER -TEST_F(Platform, read) { - for (int i = 0; i < kTrialCount; i++) { - int fd = _open(filename_, _O_BINARY | _O_RDONLY); - ASSERT_NE(-1, fd); - ASSERT_EQ(length_, _read(fd, temp_, length_)); - EXPECT_EQ(checkSum_, CheckSum()); - _close(fd); - } -} -#else -TEST_F(Platform, read) { - for (int i = 0; i < kTrialCount; i++) { - int fd = open(filename_, O_RDONLY); - ASSERT_NE(-1, fd); - ASSERT_EQ(length_, read(fd, temp_, length_)); - EXPECT_EQ(checkSum_, CheckSum()); - close(fd); - } -} -#endif - -#ifdef _WIN32 -TEST_F(Platform, MapViewOfFile) { - for (int i = 0; i < kTrialCount; i++) { - HANDLE file = CreateFile(filename_, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - ASSERT_NE(INVALID_HANDLE_VALUE, file); - HANDLE mapObject = CreateFileMapping(file, NULL, PAGE_READONLY, 0, length_, NULL); - ASSERT_NE(INVALID_HANDLE_VALUE, mapObject); - void *p = MapViewOfFile(mapObject, FILE_MAP_READ, 0, 0, length_); - ASSERT_TRUE(p != NULL); - EXPECT_EQ(checkSum_, CheckSum()); - ASSERT_TRUE(UnmapViewOfFile(p) == TRUE); - ASSERT_TRUE(CloseHandle(mapObject) == TRUE); - ASSERT_TRUE(CloseHandle(file) == TRUE); - } -} -#endif - -#ifdef _POSIX_MAPPED_FILES -TEST_F(Platform, mmap) { - for (int i = 0; i < kTrialCount; i++) { - int fd = open(filename_, O_RDONLY); - ASSERT_NE(-1, fd); - void *p = mmap(NULL, length_, PROT_READ, MAP_PRIVATE, fd, 0); - ASSERT_TRUE(p != NULL); - EXPECT_EQ(checkSum_, CheckSum()); - munmap(p, length_); - close(fd); - } -} -#endif - -#endif // TEST_PLATFORM diff --git a/rapidjson-lib/test/perftest/rapidjsontest.cpp b/rapidjson-lib/test/perftest/rapidjsontest.cpp deleted file mode 100644 index 675db31..0000000 --- a/rapidjson-lib/test/perftest/rapidjsontest.cpp +++ /dev/null @@ -1,441 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "perftest.h" - -#if TEST_RAPIDJSON - -#include "rapidjson/rapidjson.h" -#include "rapidjson/document.h" -#include "rapidjson/prettywriter.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/memorystream.h" - -#ifdef RAPIDJSON_SSE2 -#define SIMD_SUFFIX(name) name##_SSE2 -#elif defined(RAPIDJSON_SSE42) -#define SIMD_SUFFIX(name) name##_SSE42 -#else -#define SIMD_SUFFIX(name) name -#endif - -using namespace rapidjson; - -class RapidJson : public PerfTest { -public: - RapidJson() : temp_(), doc_() {} - - virtual void SetUp() { - PerfTest::SetUp(); - - // temp buffer for insitu parsing. - temp_ = (char *)malloc(length_ + 1); - - // Parse as a document - EXPECT_FALSE(doc_.Parse(json_).HasParseError()); - - for (size_t i = 0; i < 7; i++) - EXPECT_FALSE(typesDoc_[i].Parse(types_[i]).HasParseError()); - } - - virtual void TearDown() { - PerfTest::TearDown(); - free(temp_); - } - -private: - RapidJson(const RapidJson&); - RapidJson& operator=(const RapidJson&); - -protected: - char *temp_; - Document doc_; - Document typesDoc_[7]; -}; - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - InsituStringStream s(temp_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_ValidateEncoding)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - InsituStringStream s(temp_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringStream s(json_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -#define TEST_TYPED(index, Name)\ -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_##Name)) {\ - for (size_t i = 0; i < kTrialCount * 10; i++) {\ - StringStream s(types_[index]);\ - BaseReaderHandler<> h;\ - Reader reader;\ - EXPECT_TRUE(reader.Parse(s, h));\ - }\ -}\ -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_##Name)) {\ - for (size_t i = 0; i < kTrialCount * 10; i++) {\ - memcpy(temp_, types_[index], typesLength_[index] + 1);\ - InsituStringStream s(temp_);\ - BaseReaderHandler<> h;\ - Reader reader;\ - EXPECT_TRUE(reader.Parse(s, h));\ - }\ -} - -TEST_TYPED(0, Booleans) -TEST_TYPED(1, Floats) -TEST_TYPED(2, Guids) -TEST_TYPED(3, Integers) -TEST_TYPED(4, Mixed) -TEST_TYPED(5, Nulls) -TEST_TYPED(6, Paragraphs) - -#undef TEST_TYPED - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FullPrecision)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringStream s(json_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterative_DummyHandler)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringStream s(json_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativeInsitu_DummyHandler)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - InsituStringStream s(temp_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_ValidateEncoding)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringStream s(json_); - BaseReaderHandler<> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseInsitu_MemoryPoolAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - Document doc; - doc.ParseInsitu(temp_); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterativeInsitu_MemoryPoolAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - Document doc; - doc.ParseInsitu(temp_); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_MemoryPoolAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - Document doc; - doc.Parse(json_); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseLength_MemoryPoolAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - Document doc; - doc.Parse(json_, length_); - ASSERT_TRUE(doc.IsObject()); - } -} - -#if RAPIDJSON_HAS_STDSTRING -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseStdString_MemoryPoolAllocator)) { - const std::string s(json_, length_); - for (size_t i = 0; i < kTrialCount; i++) { - Document doc; - doc.Parse(s); - ASSERT_TRUE(doc.IsObject()); - } -} -#endif - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterative_MemoryPoolAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - Document doc; - doc.Parse(json_); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_CrtAllocator)) { - for (size_t i = 0; i < kTrialCount; i++) { - memcpy(temp_, json_, length_ + 1); - GenericDocument, CrtAllocator> doc; - doc.Parse(temp_); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseEncodedInputStream_MemoryStream)) { - for (size_t i = 0; i < kTrialCount; i++) { - MemoryStream ms(json_, length_); - EncodedInputStream, MemoryStream> is(ms); - Document doc; - doc.ParseStream<0, UTF8<> >(is); - ASSERT_TRUE(doc.IsObject()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseAutoUTFInputStream_MemoryStream)) { - for (size_t i = 0; i < kTrialCount; i++) { - MemoryStream ms(json_, length_); - AutoUTFInputStream is(ms); - Document doc; - doc.ParseStream<0, AutoUTF >(is); - ASSERT_TRUE(doc.IsObject()); - } -} - -template -size_t Traverse(const T& value) { - size_t count = 1; - switch(value.GetType()) { - case kObjectType: - for (typename T::ConstMemberIterator itr = value.MemberBegin(); itr != value.MemberEnd(); ++itr) { - count++; // name - count += Traverse(itr->value); - } - break; - - case kArrayType: - for (typename T::ConstValueIterator itr = value.Begin(); itr != value.End(); ++itr) - count += Traverse(*itr); - break; - - default: - // Do nothing. - break; - } - return count; -} - -TEST_F(RapidJson, DocumentTraverse) { - for (size_t i = 0; i < kTrialCount; i++) { - size_t count = Traverse(doc_); - EXPECT_EQ(4339u, count); - //if (i == 0) - // std::cout << count << std::endl; - } -} - -#ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(effc++) -#endif - -struct ValueCounter : public BaseReaderHandler<> { - ValueCounter() : count_(1) {} // root - - bool EndObject(SizeType memberCount) { count_ += memberCount * 2; return true; } - bool EndArray(SizeType elementCount) { count_ += elementCount; return true; } - - SizeType count_; -}; - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif - -TEST_F(RapidJson, DocumentAccept) { - for (size_t i = 0; i < kTrialCount; i++) { - ValueCounter counter; - doc_.Accept(counter); - EXPECT_EQ(4339u, counter.count_); - } -} - -struct NullStream { - typedef char Ch; - - NullStream() /*: length_(0)*/ {} - void Put(Ch) { /*++length_;*/ } - void Flush() {} - //size_t length_; -}; - -TEST_F(RapidJson, Writer_NullStream) { - for (size_t i = 0; i < kTrialCount; i++) { - NullStream s; - Writer writer(s); - doc_.Accept(writer); - //if (i == 0) - // std::cout << s.length_ << std::endl; - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringBuffer s(0, 1024 * 1024); - Writer writer(s); - doc_.Accept(writer); - const char* str = s.GetString(); - (void)str; - //if (i == 0) - // std::cout << strlen(str) << std::endl; - } -} - -#define TEST_TYPED(index, Name)\ -TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer_##Name)) {\ - for (size_t i = 0; i < kTrialCount * 10; i++) {\ - StringBuffer s(0, 1024 * 1024);\ - Writer writer(s);\ - typesDoc_[index].Accept(writer);\ - const char* str = s.GetString();\ - (void)str;\ - }\ -} - -TEST_TYPED(0, Booleans) -TEST_TYPED(1, Floats) -TEST_TYPED(2, Guids) -TEST_TYPED(3, Integers) -TEST_TYPED(4, Mixed) -TEST_TYPED(5, Nulls) -TEST_TYPED(6, Paragraphs) - -#undef TEST_TYPED - -TEST_F(RapidJson, SIMD_SUFFIX(PrettyWriter_StringBuffer)) { - for (size_t i = 0; i < kTrialCount; i++) { - StringBuffer s(0, 2048 * 1024); - PrettyWriter writer(s); - writer.SetIndent(' ', 1); - doc_.Accept(writer); - const char* str = s.GetString(); - (void)str; - //if (i == 0) - // std::cout << strlen(str) << std::endl; - } -} - -TEST_F(RapidJson, internal_Pow10) { - double sum = 0; - for (size_t i = 0; i < kTrialCount * kTrialCount; i++) - sum += internal::Pow10(int(i & 255)); - EXPECT_GT(sum, 0.0); -} - -TEST_F(RapidJson, SkipWhitespace_Basic) { - for (size_t i = 0; i < kTrialCount; i++) { - rapidjson::StringStream s(whitespace_); - while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek() == '\t') - s.Take(); - ASSERT_EQ('[', s.Peek()); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(SkipWhitespace)) { - for (size_t i = 0; i < kTrialCount; i++) { - rapidjson::StringStream s(whitespace_); - rapidjson::SkipWhitespace(s); - ASSERT_EQ('[', s.Peek()); - } -} - -TEST_F(RapidJson, SkipWhitespace_strspn) { - for (size_t i = 0; i < kTrialCount; i++) { - const char* s = whitespace_ + std::strspn(whitespace_, " \t\r\n"); - ASSERT_EQ('[', *s); - } -} - -TEST_F(RapidJson, UTF8_Validate) { - NullStream os; - - for (size_t i = 0; i < kTrialCount; i++) { - StringStream is(json_); - bool result = true; - while (is.Peek() != '\0') - result &= UTF8<>::Validate(is, os); - EXPECT_TRUE(result); - } -} - -TEST_F(RapidJson, FileReadStream) { - for (size_t i = 0; i < kTrialCount; i++) { - FILE *fp = fopen(filename_, "rb"); - char buffer[65536]; - FileReadStream s(fp, buffer, sizeof(buffer)); - while (s.Take() != '\0') - ; - fclose(fp); - } -} - -TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FileReadStream)) { - for (size_t i = 0; i < kTrialCount; i++) { - FILE *fp = fopen(filename_, "rb"); - char buffer[65536]; - FileReadStream s(fp, buffer, sizeof(buffer)); - BaseReaderHandler<> h; - Reader reader; - reader.Parse(s, h); - fclose(fp); - } -} - -TEST_F(RapidJson, StringBuffer) { - StringBuffer sb; - for (int i = 0; i < 32 * 1024 * 1024; i++) - sb.Put(i & 0x7f); -} - -#endif // TEST_RAPIDJSON diff --git a/rapidjson-lib/test/perftest/schematest.cpp b/rapidjson-lib/test/perftest/schematest.cpp deleted file mode 100644 index 468f5fe..0000000 --- a/rapidjson-lib/test/perftest/schematest.cpp +++ /dev/null @@ -1,216 +0,0 @@ -#include "perftest.h" - -#if TEST_RAPIDJSON - -#include "rapidjson/schema.h" -#include -#include -#include - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) - -using namespace rapidjson; - -template -static char* ReadFile(const char* filename, Allocator& allocator) { - const char *paths[] = { - "", - "bin/", - "../bin/", - "../../bin/", - "../../../bin/" - }; - char buffer[1024]; - FILE *fp = 0; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s%s", paths[i], filename); - fp = fopen(buffer, "rb"); - if (fp) - break; - } - - if (!fp) - return 0; - - fseek(fp, 0, SEEK_END); - size_t length = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - char* json = reinterpret_cast(allocator.Malloc(length + 1)); - size_t readLength = fread(json, 1, length, fp); - json[readLength] = '\0'; - fclose(fp); - return json; -} - -class Schema : public PerfTest { -public: - Schema() {} - - virtual void SetUp() { - PerfTest::SetUp(); - - const char* filenames[] = { - "additionalItems.json", - "additionalProperties.json", - "allOf.json", - "anyOf.json", - "default.json", - "definitions.json", - "dependencies.json", - "enum.json", - "items.json", - "maximum.json", - "maxItems.json", - "maxLength.json", - "maxProperties.json", - "minimum.json", - "minItems.json", - "minLength.json", - "minProperties.json", - "multipleOf.json", - "not.json", - "oneOf.json", - "pattern.json", - "patternProperties.json", - "properties.json", - "ref.json", - "refRemote.json", - "required.json", - "type.json", - "uniqueItems.json" - }; - - char jsonBuffer[65536]; - MemoryPoolAllocator<> jsonAllocator(jsonBuffer, sizeof(jsonBuffer)); - - for (size_t i = 0; i < ARRAY_SIZE(filenames); i++) { - char filename[FILENAME_MAX]; - sprintf(filename, "jsonschema/tests/draft4/%s", filenames[i]); - char* json = ReadFile(filename, jsonAllocator); - if (!json) { - printf("json test suite file %s not found", filename); - return; - } - - Document d; - d.Parse(json); - if (d.HasParseError()) { - printf("json test suite file %s has parse error", filename); - return; - } - - for (Value::ConstValueIterator schemaItr = d.Begin(); schemaItr != d.End(); ++schemaItr) { - std::string schemaDescription = (*schemaItr)["description"].GetString(); - if (IsExcludeTestSuite(schemaDescription)) - continue; - - TestSuite* ts = new TestSuite; - ts->schema = new SchemaDocument((*schemaItr)["schema"]); - - const Value& tests = (*schemaItr)["tests"]; - for (Value::ConstValueIterator testItr = tests.Begin(); testItr != tests.End(); ++testItr) { - if (IsExcludeTest(schemaDescription + ", " + (*testItr)["description"].GetString())) - continue; - - Document* d2 = new Document; - d2->CopyFrom((*testItr)["data"], d2->GetAllocator()); - ts->tests.push_back(d2); - } - testSuites.push_back(ts); - } - } - } - - virtual void TearDown() { - PerfTest::TearDown(); - for (TestSuiteList::const_iterator itr = testSuites.begin(); itr != testSuites.end(); ++itr) - delete *itr; - testSuites.clear(); - } - -private: - // Using the same exclusion in https://github.com/json-schema/JSON-Schema-Test-Suite - static bool IsExcludeTestSuite(const std::string& description) { - const char* excludeTestSuites[] = { - //lost failing these tests - "remote ref", - "remote ref, containing refs itself", - "fragment within remote ref", - "ref within remote ref", - "change resolution scope", - // these below were added to get jsck in the benchmarks) - "uniqueItems validation", - "valid definition", - "invalid definition" - }; - - for (size_t i = 0; i < ARRAY_SIZE(excludeTestSuites); i++) - if (excludeTestSuites[i] == description) - return true; - return false; - } - - // Using the same exclusion in https://github.com/json-schema/JSON-Schema-Test-Suite - static bool IsExcludeTest(const std::string& description) { - const char* excludeTests[] = { - //lots of validators fail these - "invalid definition, invalid definition schema", - "maxLength validation, two supplementary Unicode code points is long enough", - "minLength validation, one supplementary Unicode code point is not long enough", - //this is to get tv4 in the benchmarks - "heterogeneous enum validation, something else is invalid" - }; - - for (size_t i = 0; i < ARRAY_SIZE(excludeTests); i++) - if (excludeTests[i] == description) - return true; - return false; - } - - Schema(const Schema&); - Schema& operator=(const Schema&); - -protected: - typedef std::vector DocumentList; - - struct TestSuite { - TestSuite() : schema() {} - ~TestSuite() { - delete schema; - for (DocumentList::iterator itr = tests.begin(); itr != tests.end(); ++itr) - delete *itr; - } - SchemaDocument* schema; - DocumentList tests; - }; - - typedef std::vector TestSuiteList; - TestSuiteList testSuites; -}; - -TEST_F(Schema, TestSuite) { - char validatorBuffer[65536]; - MemoryPoolAllocator<> validatorAllocator(validatorBuffer, sizeof(validatorBuffer)); - - const int trialCount = 100000; - int testCount = 0; - clock_t start = clock(); - for (int i = 0; i < trialCount; i++) { - for (TestSuiteList::const_iterator itr = testSuites.begin(); itr != testSuites.end(); ++itr) { - const TestSuite& ts = **itr; - GenericSchemaValidator >, MemoryPoolAllocator<> > validator(*ts.schema, &validatorAllocator); - for (DocumentList::const_iterator testItr = ts.tests.begin(); testItr != ts.tests.end(); ++testItr) { - validator.Reset(); - (*testItr)->Accept(validator); - testCount++; - } - validatorAllocator.Clear(); - } - } - clock_t end = clock(); - double duration = double(end - start) / CLOCKS_PER_SEC; - printf("%d trials in %f s -> %f trials per sec\n", trialCount, duration, trialCount / duration); - printf("%d tests per trial\n", testCount / trialCount); -} - -#endif diff --git a/rapidjson-lib/test/unittest/CMakeLists.txt b/rapidjson-lib/test/unittest/CMakeLists.txt deleted file mode 100644 index b3204d6..0000000 --- a/rapidjson-lib/test/unittest/CMakeLists.txt +++ /dev/null @@ -1,92 +0,0 @@ -include(CheckCXXCompilerFlag) - -set(UNITTEST_SOURCES - allocatorstest.cpp - bigintegertest.cpp - documenttest.cpp - dtoatest.cpp - encodedstreamtest.cpp - encodingstest.cpp - fwdtest.cpp - filestreamtest.cpp - itoatest.cpp - istreamwrappertest.cpp - jsoncheckertest.cpp - namespacetest.cpp - pointertest.cpp - prettywritertest.cpp - ostreamwrappertest.cpp - readertest.cpp - regextest.cpp - schematest.cpp - simdtest.cpp - strfunctest.cpp - stringbuffertest.cpp - strtodtest.cpp - unittest.cpp - valuetest.cpp - writertest.cpp) - -find_program(CCACHE_FOUND ccache) -if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics") - endif() -endif(CCACHE_FOUND) - -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal") -elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal -Wimplicit-fallthrough -Weverything") - # If the user is running a newer version of Clang that includes the - # -Wdouble-promotion, we will ignore that warning. - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.7) - CHECK_CXX_COMPILER_FLAG("-Wno-double-promotion" HAS_NO_DOUBLE_PROMOTION) - if (HAS_NO_DOUBLE_PROMOTION) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion") - endif() - endif() -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - # Force to always compile with /W4 - if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") - string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - endif() - - # Force to always compile with /WX - if(CMAKE_CXX_FLAGS MATCHES "/WX-") - string(REGEX REPLACE "/WX-" "/WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") - endif() -endif() - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRAPIDJSON_HAS_STDSTRING=1") - -add_library(namespacetest STATIC namespacetest.cpp) - -add_executable(unittest ${UNITTEST_SOURCES}) -target_link_libraries(unittest ${TEST_LIBRARIES} namespacetest) - -add_dependencies(tests unittest) - -add_test(NAME unittest - COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) - -if(NOT MSVC) - # Not running SIMD.* unit test cases for Valgrind - add_test(NAME valgrind_unittest - COMMAND valgrind --leak-check=full --error-exitcode=1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest --gtest_filter=-SIMD.* - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) - - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_test(NAME symbol_check - COMMAND sh -c "objdump -t -C libnamespacetest.a | grep rapidjson ; test $? -ne 0" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - endif(CMAKE_BUILD_TYPE STREQUAL "Debug") - -endif(NOT MSVC) diff --git a/rapidjson-lib/test/unittest/allocatorstest.cpp b/rapidjson-lib/test/unittest/allocatorstest.cpp deleted file mode 100644 index a5958de..0000000 --- a/rapidjson-lib/test/unittest/allocatorstest.cpp +++ /dev/null @@ -1,102 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/allocators.h" - -using namespace rapidjson; - -template -void TestAllocator(Allocator& a) { - EXPECT_TRUE(a.Malloc(0) == 0); - - uint8_t* p = static_cast(a.Malloc(100)); - EXPECT_TRUE(p != 0); - for (size_t i = 0; i < 100; i++) - p[i] = static_cast(i); - - // Expand - uint8_t* q = static_cast(a.Realloc(p, 100, 200)); - EXPECT_TRUE(q != 0); - for (size_t i = 0; i < 100; i++) - EXPECT_EQ(i, q[i]); - for (size_t i = 100; i < 200; i++) - q[i] = static_cast(i); - - // Shrink - uint8_t *r = static_cast(a.Realloc(q, 200, 150)); - EXPECT_TRUE(r != 0); - for (size_t i = 0; i < 150; i++) - EXPECT_EQ(i, r[i]); - - Allocator::Free(r); - - // Realloc to zero size - EXPECT_TRUE(a.Realloc(a.Malloc(1), 1, 0) == 0); -} - -TEST(Allocator, CrtAllocator) { - CrtAllocator a; - TestAllocator(a); -} - -TEST(Allocator, MemoryPoolAllocator) { - MemoryPoolAllocator<> a; - TestAllocator(a); - - for (size_t i = 1; i < 1000; i++) { - EXPECT_TRUE(a.Malloc(i) != 0); - EXPECT_LE(a.Size(), a.Capacity()); - } -} - -TEST(Allocator, Alignment) { -#if RAPIDJSON_64BIT == 1 - EXPECT_EQ(RAPIDJSON_UINT64_C2(0x00000000, 0x00000000), RAPIDJSON_ALIGN(0)); - for (uint64_t i = 1; i < 8; i++) { - EXPECT_EQ(RAPIDJSON_UINT64_C2(0x00000000, 0x00000008), RAPIDJSON_ALIGN(i)); - EXPECT_EQ(RAPIDJSON_UINT64_C2(0x00000000, 0x00000010), RAPIDJSON_ALIGN(RAPIDJSON_UINT64_C2(0x00000000, 0x00000008) + i)); - EXPECT_EQ(RAPIDJSON_UINT64_C2(0x00000001, 0x00000000), RAPIDJSON_ALIGN(RAPIDJSON_UINT64_C2(0x00000000, 0xFFFFFFF8) + i)); - EXPECT_EQ(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFF8), RAPIDJSON_ALIGN(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFF0) + i)); - } -#else - EXPECT_EQ(0u, RAPIDJSON_ALIGN(0u)); - for (uint32_t i = 1; i < 4; i++) { - EXPECT_EQ(4u, RAPIDJSON_ALIGN(i)); - EXPECT_EQ(8u, RAPIDJSON_ALIGN(4u + i)); - EXPECT_EQ(0xFFFFFFF8u, RAPIDJSON_ALIGN(0xFFFFFFF4u + i)); - EXPECT_EQ(0xFFFFFFFCu, RAPIDJSON_ALIGN(0xFFFFFFF8u + i)); - } -#endif -} - -TEST(Allocator, Issue399) { - MemoryPoolAllocator<> a; - void* p = a.Malloc(100); - void* q = a.Realloc(p, 100, 200); - EXPECT_EQ(p, q); - - // exhuasive testing - for (size_t j = 1; j < 32; j++) { - a.Clear(); - a.Malloc(j); // some unaligned size - p = a.Malloc(1); - for (size_t i = 1; i < 1024; i++) { - q = a.Realloc(p, i, i + 1); - EXPECT_EQ(p, q); - p = q; - } - } -} diff --git a/rapidjson-lib/test/unittest/bigintegertest.cpp b/rapidjson-lib/test/unittest/bigintegertest.cpp deleted file mode 100644 index a68e144..0000000 --- a/rapidjson-lib/test/unittest/bigintegertest.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/internal/biginteger.h" - -using namespace rapidjson::internal; - -#define BIGINTEGER_LITERAL(s) BigInteger(s, sizeof(s) - 1) - -static const BigInteger kZero(0); -static const BigInteger kOne(1); -static const BigInteger kUint64Max = BIGINTEGER_LITERAL("18446744073709551615"); -static const BigInteger kTwo64 = BIGINTEGER_LITERAL("18446744073709551616"); - -TEST(BigInteger, Constructor) { - EXPECT_TRUE(kZero.IsZero()); - EXPECT_TRUE(kZero == kZero); - EXPECT_TRUE(kZero == BIGINTEGER_LITERAL("0")); - EXPECT_TRUE(kZero == BIGINTEGER_LITERAL("00")); - - const BigInteger a(123); - EXPECT_TRUE(a == a); - EXPECT_TRUE(a == BIGINTEGER_LITERAL("123")); - EXPECT_TRUE(a == BIGINTEGER_LITERAL("0123")); - - EXPECT_EQ(2u, kTwo64.GetCount()); - EXPECT_EQ(0u, kTwo64.GetDigit(0)); - EXPECT_EQ(1u, kTwo64.GetDigit(1)); -} - -TEST(BigInteger, AddUint64) { - BigInteger a = kZero; - a += 0u; - EXPECT_TRUE(kZero == a); - - a += 1u; - EXPECT_TRUE(kOne == a); - - a += 1u; - EXPECT_TRUE(BigInteger(2) == a); - - EXPECT_TRUE(BigInteger(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)) == kUint64Max); - BigInteger b = kUint64Max; - b += 1u; - EXPECT_TRUE(kTwo64 == b); - b += RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF); - EXPECT_TRUE(BIGINTEGER_LITERAL("36893488147419103231") == b); -} - -TEST(BigInteger, MultiplyUint64) { - BigInteger a = kZero; - a *= static_cast (0); - EXPECT_TRUE(kZero == a); - a *= static_cast (123); - EXPECT_TRUE(kZero == a); - - BigInteger b = kOne; - b *= static_cast(1); - EXPECT_TRUE(kOne == b); - b *= static_cast(0); - EXPECT_TRUE(kZero == b); - - BigInteger c(123); - c *= static_cast(456u); - EXPECT_TRUE(BigInteger(123u * 456u) == c); - c *= RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF); - EXPECT_TRUE(BIGINTEGER_LITERAL("1034640981606221330982120") == c); - c *= RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF); - EXPECT_TRUE(BIGINTEGER_LITERAL("19085757395861596536664473018420572782123800") == c); -} - -TEST(BigInteger, MultiplyUint32) { - BigInteger a = kZero; - a *= static_cast (0); - EXPECT_TRUE(kZero == a); - a *= static_cast (123); - EXPECT_TRUE(kZero == a); - - BigInteger b = kOne; - b *= static_cast(1); - EXPECT_TRUE(kOne == b); - b *= static_cast(0); - EXPECT_TRUE(kZero == b); - - BigInteger c(123); - c *= static_cast(456u); - EXPECT_TRUE(BigInteger(123u * 456u) == c); - c *= 0xFFFFFFFFu; - EXPECT_TRUE(BIGINTEGER_LITERAL("240896125641960") == c); - c *= 0xFFFFFFFFu; - EXPECT_TRUE(BIGINTEGER_LITERAL("1034640981124429079698200") == c); -} - -TEST(BigInteger, LeftShift) { - BigInteger a = kZero; - a <<= 1; - EXPECT_TRUE(kZero == a); - a <<= 64; - EXPECT_TRUE(kZero == a); - - a = BigInteger(123); - a <<= 0; - EXPECT_TRUE(BigInteger(123) == a); - a <<= 1; - EXPECT_TRUE(BigInteger(246) == a); - a <<= 64; - EXPECT_TRUE(BIGINTEGER_LITERAL("4537899042132549697536") == a); - a <<= 99; - EXPECT_TRUE(BIGINTEGER_LITERAL("2876235222267216943024851750785644982682875244576768") == a); -} - -TEST(BigInteger, Compare) { - EXPECT_EQ(0, kZero.Compare(kZero)); - EXPECT_EQ(1, kOne.Compare(kZero)); - EXPECT_EQ(-1, kZero.Compare(kOne)); - EXPECT_EQ(0, kUint64Max.Compare(kUint64Max)); - EXPECT_EQ(0, kTwo64.Compare(kTwo64)); - EXPECT_EQ(-1, kUint64Max.Compare(kTwo64)); - EXPECT_EQ(1, kTwo64.Compare(kUint64Max)); -} diff --git a/rapidjson-lib/test/unittest/documenttest.cpp b/rapidjson-lib/test/unittest/documenttest.cpp deleted file mode 100644 index ecd4b79..0000000 --- a/rapidjson-lib/test/unittest/documenttest.cpp +++ /dev/null @@ -1,652 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/stringbuffer.h" -#include -#include - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(c++98-compat) -RAPIDJSON_DIAG_OFF(missing-variable-declarations) -#endif - -using namespace rapidjson; - -template -void ParseCheck(DocumentType& doc) { - typedef typename DocumentType::ValueType ValueType; - - EXPECT_FALSE(doc.HasParseError()); - if (doc.HasParseError()) - printf("Error: %d at %zu\n", static_cast(doc.GetParseError()), doc.GetErrorOffset()); - EXPECT_TRUE(static_cast(doc)); - - EXPECT_TRUE(doc.IsObject()); - - EXPECT_TRUE(doc.HasMember("hello")); - const ValueType& hello = doc["hello"]; - EXPECT_TRUE(hello.IsString()); - EXPECT_STREQ("world", hello.GetString()); - - EXPECT_TRUE(doc.HasMember("t")); - const ValueType& t = doc["t"]; - EXPECT_TRUE(t.IsTrue()); - - EXPECT_TRUE(doc.HasMember("f")); - const ValueType& f = doc["f"]; - EXPECT_TRUE(f.IsFalse()); - - EXPECT_TRUE(doc.HasMember("n")); - const ValueType& n = doc["n"]; - EXPECT_TRUE(n.IsNull()); - - EXPECT_TRUE(doc.HasMember("i")); - const ValueType& i = doc["i"]; - EXPECT_TRUE(i.IsNumber()); - EXPECT_EQ(123, i.GetInt()); - - EXPECT_TRUE(doc.HasMember("pi")); - const ValueType& pi = doc["pi"]; - EXPECT_TRUE(pi.IsNumber()); - EXPECT_DOUBLE_EQ(3.1416, pi.GetDouble()); - - EXPECT_TRUE(doc.HasMember("a")); - const ValueType& a = doc["a"]; - EXPECT_TRUE(a.IsArray()); - EXPECT_EQ(4u, a.Size()); - for (SizeType j = 0; j < 4; j++) - EXPECT_EQ(j + 1, a[j].GetUint()); -} - -template -void ParseTest() { - typedef GenericDocument, Allocator, StackAllocator> DocumentType; - DocumentType doc; - - const char* json = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - - doc.Parse(json); - ParseCheck(doc); - - doc.SetNull(); - StringStream s(json); - doc.template ParseStream<0>(s); - ParseCheck(doc); - - doc.SetNull(); - char *buffer = strdup(json); - doc.ParseInsitu(buffer); - ParseCheck(doc); - free(buffer); - - // Parse(const Ch*, size_t) - size_t length = strlen(json); - buffer = reinterpret_cast(malloc(length * 2)); - memcpy(buffer, json, length); - memset(buffer + length, 'X', length); -#if RAPIDJSON_HAS_STDSTRING - std::string s2(buffer, length); // backup buffer -#endif - doc.SetNull(); - doc.Parse(buffer, length); - free(buffer); - ParseCheck(doc); - -#if RAPIDJSON_HAS_STDSTRING - // Parse(std::string) - doc.SetNull(); - doc.Parse(s2); - ParseCheck(doc); -#endif -} - -TEST(Document, Parse) { - ParseTest, CrtAllocator>(); - ParseTest, MemoryPoolAllocator<> >(); - ParseTest >(); - ParseTest(); -} - -TEST(Document, UnchangedOnParseError) { - Document doc; - doc.SetArray().PushBack(0, doc.GetAllocator()); - - ParseResult err = doc.Parse("{]"); - EXPECT_TRUE(doc.HasParseError()); - EXPECT_EQ(err.Code(), doc.GetParseError()); - EXPECT_EQ(err.Offset(), doc.GetErrorOffset()); - EXPECT_TRUE(doc.IsArray()); - EXPECT_EQ(doc.Size(), 1u); - - err = doc.Parse("{}"); - EXPECT_FALSE(doc.HasParseError()); - EXPECT_FALSE(err.IsError()); - EXPECT_EQ(err.Code(), doc.GetParseError()); - EXPECT_EQ(err.Offset(), doc.GetErrorOffset()); - EXPECT_TRUE(doc.IsObject()); - EXPECT_EQ(doc.MemberCount(), 0u); -} - -static FILE* OpenEncodedFile(const char* filename) { - const char *paths[] = { - "encodings", - "bin/encodings", - "../bin/encodings", - "../../bin/encodings", - "../../../bin/encodings" - }; - char buffer[1024]; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s/%s", paths[i], filename); - FILE *fp = fopen(buffer, "rb"); - if (fp) - return fp; - } - return 0; -} - -TEST(Document, Parse_Encoding) { - const char* json = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "; - - typedef GenericDocument > DocumentType; - DocumentType doc; - - // Parse(const SourceEncoding::Ch*) - // doc.Parse >(json); - // EXPECT_FALSE(doc.HasParseError()); - // EXPECT_EQ(0, StrCmp(doc[L"hello"].GetString(), L"world")); - - // Parse(const SourceEncoding::Ch*, size_t) - size_t length = strlen(json); - char* buffer = reinterpret_cast(malloc(length * 2)); - memcpy(buffer, json, length); - memset(buffer + length, 'X', length); -#if RAPIDJSON_HAS_STDSTRING - std::string s2(buffer, length); // backup buffer -#endif - doc.SetNull(); - doc.Parse >(buffer, length); - free(buffer); - EXPECT_FALSE(doc.HasParseError()); - if (doc.HasParseError()) - printf("Error: %d at %zu\n", static_cast(doc.GetParseError()), doc.GetErrorOffset()); - EXPECT_EQ(0, StrCmp(doc[L"hello"].GetString(), L"world")); - -#if RAPIDJSON_HAS_STDSTRING - // Parse(std::string) - doc.SetNull(); - -#if defined(_MSC_VER) && _MSC_VER < 1800 - doc.Parse >(s2.c_str()); // VS2010 or below cannot handle templated function overloading. Use const char* instead. -#else - doc.Parse >(s2); -#endif - EXPECT_FALSE(doc.HasParseError()); - EXPECT_EQ(0, StrCmp(doc[L"hello"].GetString(), L"world")); -#endif -} - -TEST(Document, ParseStream_EncodedInputStream) { - // UTF8 -> UTF16 - FILE* fp = OpenEncodedFile("utf8.json"); - char buffer[256]; - FileReadStream bis(fp, buffer, sizeof(buffer)); - EncodedInputStream, FileReadStream> eis(bis); - - GenericDocument > d; - d.ParseStream<0, UTF8<> >(eis); - EXPECT_FALSE(d.HasParseError()); - - fclose(fp); - - wchar_t expected[] = L"I can eat glass and it doesn't hurt me."; - GenericValue >& v = d[L"en"]; - EXPECT_TRUE(v.IsString()); - EXPECT_EQ(sizeof(expected) / sizeof(wchar_t) - 1, v.GetStringLength()); - EXPECT_EQ(0, StrCmp(expected, v.GetString())); - - // UTF16 -> UTF8 in memory - StringBuffer bos; - typedef EncodedOutputStream, StringBuffer> OutputStream; - OutputStream eos(bos, false); // Not writing BOM - { - Writer, UTF8<> > writer(eos); - d.Accept(writer); - } - - // Condense the original file and compare. - fp = OpenEncodedFile("utf8.json"); - FileReadStream is(fp, buffer, sizeof(buffer)); - Reader reader; - StringBuffer bos2; - Writer writer2(bos2); - reader.Parse(is, writer2); - fclose(fp); - - EXPECT_EQ(bos.GetSize(), bos2.GetSize()); - EXPECT_EQ(0, memcmp(bos.GetString(), bos2.GetString(), bos2.GetSize())); -} - -TEST(Document, ParseStream_AutoUTFInputStream) { - // Any -> UTF8 - FILE* fp = OpenEncodedFile("utf32be.json"); - char buffer[256]; - FileReadStream bis(fp, buffer, sizeof(buffer)); - AutoUTFInputStream eis(bis); - - Document d; - d.ParseStream<0, AutoUTF >(eis); - EXPECT_FALSE(d.HasParseError()); - - fclose(fp); - - char expected[] = "I can eat glass and it doesn't hurt me."; - Value& v = d["en"]; - EXPECT_TRUE(v.IsString()); - EXPECT_EQ(sizeof(expected) - 1, v.GetStringLength()); - EXPECT_EQ(0, StrCmp(expected, v.GetString())); - - // UTF8 -> UTF8 in memory - StringBuffer bos; - Writer writer(bos); - d.Accept(writer); - - // Condense the original file and compare. - fp = OpenEncodedFile("utf8.json"); - FileReadStream is(fp, buffer, sizeof(buffer)); - Reader reader; - StringBuffer bos2; - Writer writer2(bos2); - reader.Parse(is, writer2); - fclose(fp); - - EXPECT_EQ(bos.GetSize(), bos2.GetSize()); - EXPECT_EQ(0, memcmp(bos.GetString(), bos2.GetString(), bos2.GetSize())); -} - -TEST(Document, Swap) { - Document d1; - Document::AllocatorType& a = d1.GetAllocator(); - - d1.SetArray().PushBack(1, a).PushBack(2, a); - - Value o; - o.SetObject().AddMember("a", 1, a); - - // Swap between Document and Value - // d1.Swap(o); // doesn't compile - o.Swap(d1); - EXPECT_TRUE(d1.IsObject()); - EXPECT_TRUE(o.IsArray()); - - // Swap between Document and Document - Document d2; - d2.SetArray().PushBack(3, a); - d1.Swap(d2); - EXPECT_TRUE(d1.IsArray()); - EXPECT_TRUE(d2.IsObject()); - EXPECT_EQ(&d2.GetAllocator(), &a); - - // reset value - Value().Swap(d1); - EXPECT_TRUE(d1.IsNull()); - - // reset document, including allocator - Document().Swap(d2); - EXPECT_TRUE(d2.IsNull()); - EXPECT_NE(&d2.GetAllocator(), &a); - - // testing std::swap compatibility - d1.SetBool(true); - using std::swap; - swap(d1, d2); - EXPECT_TRUE(d1.IsNull()); - EXPECT_TRUE(d2.IsTrue()); - - swap(o, d2); - EXPECT_TRUE(o.IsTrue()); - EXPECT_TRUE(d2.IsArray()); -} - - -// This should be slow due to assignment in inner-loop. -struct OutputStringStream : public std::ostringstream { - typedef char Ch; - - virtual ~OutputStringStream(); - - void Put(char c) { - put(c); - } - void Flush() {} -}; - -OutputStringStream::~OutputStringStream() {} - -TEST(Document, AcceptWriter) { - Document doc; - doc.Parse(" { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "); - - OutputStringStream os; - Writer writer(os); - doc.Accept(writer); - - EXPECT_EQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,4]}", os.str()); -} - -TEST(Document, UserBuffer) { - typedef GenericDocument, MemoryPoolAllocator<>, MemoryPoolAllocator<> > DocumentType; - char valueBuffer[4096]; - char parseBuffer[1024]; - MemoryPoolAllocator<> valueAllocator(valueBuffer, sizeof(valueBuffer)); - MemoryPoolAllocator<> parseAllocator(parseBuffer, sizeof(parseBuffer)); - DocumentType doc(&valueAllocator, sizeof(parseBuffer) / 2, &parseAllocator); - doc.Parse(" { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } "); - EXPECT_FALSE(doc.HasParseError()); - EXPECT_LE(valueAllocator.Size(), sizeof(valueBuffer)); - EXPECT_LE(parseAllocator.Size(), sizeof(parseBuffer)); - - // Cover MemoryPoolAllocator::Capacity() - EXPECT_LE(valueAllocator.Size(), valueAllocator.Capacity()); - EXPECT_LE(parseAllocator.Size(), parseAllocator.Capacity()); -} - -// Issue 226: Value of string type should not point to NULL -TEST(Document, AssertAcceptInvalidNameType) { - Document doc; - doc.SetObject(); - doc.AddMember("a", 0, doc.GetAllocator()); - doc.FindMember("a")->name.SetNull(); // Change name to non-string type. - - OutputStringStream os; - Writer writer(os); - ASSERT_THROW(doc.Accept(writer), AssertException); -} - -// Issue 44: SetStringRaw doesn't work with wchar_t -TEST(Document, UTF16_Document) { - GenericDocument< UTF16<> > json; - json.Parse(L"[{\"created_at\":\"Wed Oct 30 17:13:20 +0000 2012\"}]"); - - ASSERT_TRUE(json.IsArray()); - GenericValue< UTF16<> >& v = json[0]; - ASSERT_TRUE(v.IsObject()); - - GenericValue< UTF16<> >& s = v[L"created_at"]; - ASSERT_TRUE(s.IsString()); - - EXPECT_EQ(0, memcmp(L"Wed Oct 30 17:13:20 +0000 2012", s.GetString(), (s.GetStringLength() + 1) * sizeof(wchar_t))); -} - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - -#if 0 // Many old compiler does not support these. Turn it off temporaily. - -#include - -TEST(Document, Traits) { - static_assert(std::is_constructible::value, ""); - static_assert(std::is_default_constructible::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_constructible::value, ""); -#endif - static_assert(std::is_move_constructible::value, ""); - - static_assert(!std::is_nothrow_constructible::value, ""); - static_assert(!std::is_nothrow_default_constructible::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_nothrow_copy_constructible::value, ""); - static_assert(std::is_nothrow_move_constructible::value, ""); -#endif - - static_assert(std::is_assignable::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_assignable::value, ""); -#endif - static_assert(std::is_move_assignable::value, ""); - -#ifndef _MSC_VER - static_assert(std::is_nothrow_assignable::value, ""); -#endif - static_assert(!std::is_nothrow_copy_assignable::value, ""); -#ifndef _MSC_VER - static_assert(std::is_nothrow_move_assignable::value, ""); -#endif - - static_assert( std::is_destructible::value, ""); -#ifndef _MSC_VER - static_assert(std::is_nothrow_destructible::value, ""); -#endif -} - -#endif - -template -struct DocumentMove: public ::testing::Test { -}; - -typedef ::testing::Types< CrtAllocator, MemoryPoolAllocator<> > MoveAllocatorTypes; -TYPED_TEST_CASE(DocumentMove, MoveAllocatorTypes); - -TYPED_TEST(DocumentMove, MoveConstructor) { - typedef TypeParam Allocator; - typedef GenericDocument, Allocator> D; - Allocator allocator; - - D a(&allocator); - a.Parse("[\"one\", \"two\", \"three\"]"); - EXPECT_FALSE(a.HasParseError()); - EXPECT_TRUE(a.IsArray()); - EXPECT_EQ(3u, a.Size()); - EXPECT_EQ(&a.GetAllocator(), &allocator); - - // Document b(a); // does not compile (!is_copy_constructible) - D b(std::move(a)); - EXPECT_TRUE(a.IsNull()); - EXPECT_TRUE(b.IsArray()); - EXPECT_EQ(3u, b.Size()); - EXPECT_THROW(a.GetAllocator(), AssertException); - EXPECT_EQ(&b.GetAllocator(), &allocator); - - b.Parse("{\"Foo\": \"Bar\", \"Baz\": 42}"); - EXPECT_FALSE(b.HasParseError()); - EXPECT_TRUE(b.IsObject()); - EXPECT_EQ(2u, b.MemberCount()); - - // Document c = a; // does not compile (!is_copy_constructible) - D c = std::move(b); - EXPECT_TRUE(b.IsNull()); - EXPECT_TRUE(c.IsObject()); - EXPECT_EQ(2u, c.MemberCount()); - EXPECT_THROW(b.GetAllocator(), AssertException); - EXPECT_EQ(&c.GetAllocator(), &allocator); -} - -TYPED_TEST(DocumentMove, MoveConstructorParseError) { - typedef TypeParam Allocator; - typedef GenericDocument, Allocator> D; - - ParseResult noError; - D a; - a.Parse("{ 4 = 4]"); - ParseResult error(a.GetParseError(), a.GetErrorOffset()); - EXPECT_TRUE(a.HasParseError()); - EXPECT_NE(error.Code(), noError.Code()); - EXPECT_NE(error.Offset(), noError.Offset()); - - D b(std::move(a)); - EXPECT_FALSE(a.HasParseError()); - EXPECT_TRUE(b.HasParseError()); - EXPECT_EQ(a.GetParseError(), noError.Code()); - EXPECT_EQ(b.GetParseError(), error.Code()); - EXPECT_EQ(a.GetErrorOffset(), noError.Offset()); - EXPECT_EQ(b.GetErrorOffset(), error.Offset()); - - D c(std::move(b)); - EXPECT_FALSE(b.HasParseError()); - EXPECT_TRUE(c.HasParseError()); - EXPECT_EQ(b.GetParseError(), noError.Code()); - EXPECT_EQ(c.GetParseError(), error.Code()); - EXPECT_EQ(b.GetErrorOffset(), noError.Offset()); - EXPECT_EQ(c.GetErrorOffset(), error.Offset()); -} - -// This test does not properly use parsing, just for testing. -// It must call ClearStack() explicitly to prevent memory leak. -// But here we cannot as ClearStack() is private. -#if 0 -TYPED_TEST(DocumentMove, MoveConstructorStack) { - typedef TypeParam Allocator; - typedef UTF8<> Encoding; - typedef GenericDocument Document; - - Document a; - size_t defaultCapacity = a.GetStackCapacity(); - - // Trick Document into getting GetStackCapacity() to return non-zero - typedef GenericReader Reader; - Reader reader(&a.GetAllocator()); - GenericStringStream is("[\"one\", \"two\", \"three\"]"); - reader.template Parse(is, a); - size_t capacity = a.GetStackCapacity(); - EXPECT_GT(capacity, 0u); - - Document b(std::move(a)); - EXPECT_EQ(a.GetStackCapacity(), defaultCapacity); - EXPECT_EQ(b.GetStackCapacity(), capacity); - - Document c = std::move(b); - EXPECT_EQ(b.GetStackCapacity(), defaultCapacity); - EXPECT_EQ(c.GetStackCapacity(), capacity); -} -#endif - -TYPED_TEST(DocumentMove, MoveAssignment) { - typedef TypeParam Allocator; - typedef GenericDocument, Allocator> D; - Allocator allocator; - - D a(&allocator); - a.Parse("[\"one\", \"two\", \"three\"]"); - EXPECT_FALSE(a.HasParseError()); - EXPECT_TRUE(a.IsArray()); - EXPECT_EQ(3u, a.Size()); - EXPECT_EQ(&a.GetAllocator(), &allocator); - - // Document b; b = a; // does not compile (!is_copy_assignable) - D b; - b = std::move(a); - EXPECT_TRUE(a.IsNull()); - EXPECT_TRUE(b.IsArray()); - EXPECT_EQ(3u, b.Size()); - EXPECT_THROW(a.GetAllocator(), AssertException); - EXPECT_EQ(&b.GetAllocator(), &allocator); - - b.Parse("{\"Foo\": \"Bar\", \"Baz\": 42}"); - EXPECT_FALSE(b.HasParseError()); - EXPECT_TRUE(b.IsObject()); - EXPECT_EQ(2u, b.MemberCount()); - - // Document c; c = a; // does not compile (see static_assert) - D c; - c = std::move(b); - EXPECT_TRUE(b.IsNull()); - EXPECT_TRUE(c.IsObject()); - EXPECT_EQ(2u, c.MemberCount()); - EXPECT_THROW(b.GetAllocator(), AssertException); - EXPECT_EQ(&c.GetAllocator(), &allocator); -} - -TYPED_TEST(DocumentMove, MoveAssignmentParseError) { - typedef TypeParam Allocator; - typedef GenericDocument, Allocator> D; - - ParseResult noError; - D a; - a.Parse("{ 4 = 4]"); - ParseResult error(a.GetParseError(), a.GetErrorOffset()); - EXPECT_TRUE(a.HasParseError()); - EXPECT_NE(error.Code(), noError.Code()); - EXPECT_NE(error.Offset(), noError.Offset()); - - D b; - b = std::move(a); - EXPECT_FALSE(a.HasParseError()); - EXPECT_TRUE(b.HasParseError()); - EXPECT_EQ(a.GetParseError(), noError.Code()); - EXPECT_EQ(b.GetParseError(), error.Code()); - EXPECT_EQ(a.GetErrorOffset(), noError.Offset()); - EXPECT_EQ(b.GetErrorOffset(), error.Offset()); - - D c; - c = std::move(b); - EXPECT_FALSE(b.HasParseError()); - EXPECT_TRUE(c.HasParseError()); - EXPECT_EQ(b.GetParseError(), noError.Code()); - EXPECT_EQ(c.GetParseError(), error.Code()); - EXPECT_EQ(b.GetErrorOffset(), noError.Offset()); - EXPECT_EQ(c.GetErrorOffset(), error.Offset()); -} - -// This test does not properly use parsing, just for testing. -// It must call ClearStack() explicitly to prevent memory leak. -// But here we cannot as ClearStack() is private. -#if 0 -TYPED_TEST(DocumentMove, MoveAssignmentStack) { - typedef TypeParam Allocator; - typedef UTF8<> Encoding; - typedef GenericDocument D; - - D a; - size_t defaultCapacity = a.GetStackCapacity(); - - // Trick Document into getting GetStackCapacity() to return non-zero - typedef GenericReader Reader; - Reader reader(&a.GetAllocator()); - GenericStringStream is("[\"one\", \"two\", \"three\"]"); - reader.template Parse(is, a); - size_t capacity = a.GetStackCapacity(); - EXPECT_GT(capacity, 0u); - - D b; - b = std::move(a); - EXPECT_EQ(a.GetStackCapacity(), defaultCapacity); - EXPECT_EQ(b.GetStackCapacity(), capacity); - - D c; - c = std::move(b); - EXPECT_EQ(b.GetStackCapacity(), defaultCapacity); - EXPECT_EQ(c.GetStackCapacity(), capacity); -} -#endif - -#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS - -// Issue 22: Memory corruption via operator= -// Fixed by making unimplemented assignment operator private. -//TEST(Document, Assignment) { -// Document d1; -// Document d2; -// d1 = d2; -//} - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/dtoatest.cpp b/rapidjson-lib/test/unittest/dtoatest.cpp deleted file mode 100644 index afd76eb..0000000 --- a/rapidjson-lib/test/unittest/dtoatest.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/internal/dtoa.h" - -#ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(type-limits) -#endif - -using namespace rapidjson::internal; - -TEST(dtoa, normal) { - char buffer[30]; - -#define TEST_DTOA(d, a)\ - *dtoa(d, buffer) = '\0';\ - EXPECT_STREQ(a, buffer) - - TEST_DTOA(0.0, "0.0"); - TEST_DTOA(-0.0, "-0.0"); - TEST_DTOA(1.0, "1.0"); - TEST_DTOA(-1.0, "-1.0"); - TEST_DTOA(1.2345, "1.2345"); - TEST_DTOA(1.2345678, "1.2345678"); - TEST_DTOA(0.123456789012, "0.123456789012"); - TEST_DTOA(1234567.8, "1234567.8"); - TEST_DTOA(-79.39773355813419, "-79.39773355813419"); - TEST_DTOA(0.000001, "0.000001"); - TEST_DTOA(0.0000001, "1e-7"); - TEST_DTOA(1e30, "1e30"); - TEST_DTOA(1.234567890123456e30, "1.234567890123456e30"); - TEST_DTOA(5e-324, "5e-324"); // Min subnormal positive double - TEST_DTOA(2.225073858507201e-308, "2.225073858507201e-308"); // Max subnormal positive double - TEST_DTOA(2.2250738585072014e-308, "2.2250738585072014e-308"); // Min normal positive double - TEST_DTOA(1.7976931348623157e308, "1.7976931348623157e308"); // Max double - -#undef TEST_DTOA -} - -TEST(dtoa, maxDecimalPlaces) { - char buffer[30]; - -#define TEST_DTOA(m, d, a)\ - *dtoa(d, buffer, m) = '\0';\ - EXPECT_STREQ(a, buffer) - - TEST_DTOA(3, 0.0, "0.0"); - TEST_DTOA(1, 0.0, "0.0"); - TEST_DTOA(3, -0.0, "-0.0"); - TEST_DTOA(3, 1.0, "1.0"); - TEST_DTOA(3, -1.0, "-1.0"); - TEST_DTOA(3, 1.2345, "1.234"); - TEST_DTOA(2, 1.2345, "1.23"); - TEST_DTOA(1, 1.2345, "1.2"); - TEST_DTOA(3, 1.2345678, "1.234"); - TEST_DTOA(3, 1.0001, "1.0"); - TEST_DTOA(2, 1.0001, "1.0"); - TEST_DTOA(1, 1.0001, "1.0"); - TEST_DTOA(3, 0.123456789012, "0.123"); - TEST_DTOA(2, 0.123456789012, "0.12"); - TEST_DTOA(1, 0.123456789012, "0.1"); - TEST_DTOA(4, 0.0001, "0.0001"); - TEST_DTOA(3, 0.0001, "0.0"); - TEST_DTOA(2, 0.0001, "0.0"); - TEST_DTOA(1, 0.0001, "0.0"); - TEST_DTOA(3, 1234567.8, "1234567.8"); - TEST_DTOA(3, 1e30, "1e30"); - TEST_DTOA(3, 5e-324, "0.0"); // Min subnormal positive double - TEST_DTOA(3, 2.225073858507201e-308, "0.0"); // Max subnormal positive double - TEST_DTOA(3, 2.2250738585072014e-308, "0.0"); // Min normal positive double - TEST_DTOA(3, 1.7976931348623157e308, "1.7976931348623157e308"); // Max double - TEST_DTOA(5, -0.14000000000000001, "-0.14"); - TEST_DTOA(4, -0.14000000000000001, "-0.14"); - TEST_DTOA(3, -0.14000000000000001, "-0.14"); - TEST_DTOA(3, -0.10000000000000001, "-0.1"); - TEST_DTOA(2, -0.10000000000000001, "-0.1"); - TEST_DTOA(1, -0.10000000000000001, "-0.1"); - -#undef TEST_DTOA -} - - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/encodedstreamtest.cpp b/rapidjson-lib/test/unittest/encodedstreamtest.cpp deleted file mode 100644 index bc234d3..0000000 --- a/rapidjson-lib/test/unittest/encodedstreamtest.cpp +++ /dev/null @@ -1,313 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/memorystream.h" -#include "rapidjson/memorybuffer.h" - -using namespace rapidjson; - -class EncodedStreamTest : public ::testing::Test { -public: - EncodedStreamTest() : json_(), length_() {} - virtual ~EncodedStreamTest(); - - virtual void SetUp() { - json_ = ReadFile("utf8.json", true, &length_); - } - - virtual void TearDown() { - free(json_); - json_ = 0; - } - -private: - EncodedStreamTest(const EncodedStreamTest&); - EncodedStreamTest& operator=(const EncodedStreamTest&); - -protected: - static FILE* Open(const char* filename) { - const char *paths[] = { - "encodings", - "bin/encodings", - "../bin/encodings", - "../../bin/encodings", - "../../../bin/encodings" - }; - char buffer[1024]; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s/%s", paths[i], filename); - FILE *fp = fopen(buffer, "rb"); - if (fp) - return fp; - } - return 0; - } - - static char *ReadFile(const char* filename, bool appendPath, size_t* outLength) { - FILE *fp = appendPath ? Open(filename) : fopen(filename, "rb"); - - if (!fp) { - *outLength = 0; - return 0; - } - - fseek(fp, 0, SEEK_END); - *outLength = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - char* buffer = static_cast(malloc(*outLength + 1)); - size_t readLength = fread(buffer, 1, *outLength, fp); - buffer[readLength] = '\0'; - fclose(fp); - return buffer; - } - - template - void TestEncodedInputStream(const char* filename) { - // Test FileReadStream - { - char buffer[16]; - FILE *fp = Open(filename); - ASSERT_TRUE(fp != 0); - FileReadStream fs(fp, buffer, sizeof(buffer)); - EncodedInputStream eis(fs); - StringStream s(json_); - - while (eis.Peek() != '\0') { - unsigned expected, actual; - EXPECT_TRUE(UTF8<>::Decode(s, &expected)); - EXPECT_TRUE(MemoryEncoding::Decode(eis, &actual)); - EXPECT_EQ(expected, actual); - } - EXPECT_EQ('\0', s.Peek()); - fclose(fp); - } - - // Test MemoryStream - { - size_t size; - char* data = ReadFile(filename, true, &size); - MemoryStream ms(data, size); - EncodedInputStream eis(ms); - StringStream s(json_); - - while (eis.Peek() != '\0') { - unsigned expected, actual; - EXPECT_TRUE(UTF8<>::Decode(s, &expected)); - EXPECT_TRUE(MemoryEncoding::Decode(eis, &actual)); - EXPECT_EQ(expected, actual); - } - EXPECT_EQ('\0', s.Peek()); - free(data); - EXPECT_EQ(size, eis.Tell()); - } - } - - void TestAutoUTFInputStream(const char *filename, bool expectHasBOM) { - // Test FileReadStream - { - char buffer[16]; - FILE *fp = Open(filename); - ASSERT_TRUE(fp != 0); - FileReadStream fs(fp, buffer, sizeof(buffer)); - AutoUTFInputStream eis(fs); - EXPECT_EQ(expectHasBOM, eis.HasBOM()); - StringStream s(json_); - while (eis.Peek() != '\0') { - unsigned expected, actual; - EXPECT_TRUE(UTF8<>::Decode(s, &expected)); - EXPECT_TRUE(AutoUTF::Decode(eis, &actual)); - EXPECT_EQ(expected, actual); - } - EXPECT_EQ('\0', s.Peek()); - fclose(fp); - } - - // Test MemoryStream - { - size_t size; - char* data = ReadFile(filename, true, &size); - MemoryStream ms(data, size); - AutoUTFInputStream eis(ms); - EXPECT_EQ(expectHasBOM, eis.HasBOM()); - StringStream s(json_); - - while (eis.Peek() != '\0') { - unsigned expected, actual; - EXPECT_TRUE(UTF8<>::Decode(s, &expected)); - EXPECT_TRUE(AutoUTF::Decode(eis, &actual)); - EXPECT_EQ(expected, actual); - } - EXPECT_EQ('\0', s.Peek()); - free(data); - EXPECT_EQ(size, eis.Tell()); - } - } - - template - void TestEncodedOutputStream(const char* expectedFilename, bool putBOM) { - // Test FileWriteStream - { - char filename[L_tmpnam]; - FILE* fp = TempFile(filename); - char buffer[16]; - FileWriteStream os(fp, buffer, sizeof(buffer)); - EncodedOutputStream eos(os, putBOM); - StringStream s(json_); - while (s.Peek() != '\0') { - bool success = Transcoder, MemoryEncoding>::Transcode(s, eos); - EXPECT_TRUE(success); - } - eos.Flush(); - fclose(fp); - EXPECT_TRUE(CompareFile(filename, expectedFilename)); - remove(filename); - } - - // Test MemoryBuffer - { - MemoryBuffer mb; - EncodedOutputStream eos(mb, putBOM); - StringStream s(json_); - while (s.Peek() != '\0') { - bool success = Transcoder, MemoryEncoding>::Transcode(s, eos); - EXPECT_TRUE(success); - } - eos.Flush(); - EXPECT_TRUE(CompareBufferFile(mb.GetBuffer(), mb.GetSize(), expectedFilename)); - } - } - - void TestAutoUTFOutputStream(UTFType type, bool putBOM, const char *expectedFilename) { - // Test FileWriteStream - { - char filename[L_tmpnam]; - FILE* fp = TempFile(filename); - - char buffer[16]; - FileWriteStream os(fp, buffer, sizeof(buffer)); - AutoUTFOutputStream eos(os, type, putBOM); - StringStream s(json_); - while (s.Peek() != '\0') { - bool success = Transcoder, AutoUTF >::Transcode(s, eos); - EXPECT_TRUE(success); - } - eos.Flush(); - fclose(fp); - EXPECT_TRUE(CompareFile(filename, expectedFilename)); - remove(filename); - } - - // Test MemoryBuffer - { - MemoryBuffer mb; - AutoUTFOutputStream eos(mb, type, putBOM); - StringStream s(json_); - while (s.Peek() != '\0') { - bool success = Transcoder, AutoUTF >::Transcode(s, eos); - EXPECT_TRUE(success); - } - eos.Flush(); - EXPECT_TRUE(CompareBufferFile(mb.GetBuffer(), mb.GetSize(), expectedFilename)); - } - } - - bool CompareFile(const char* filename, const char* expectedFilename) { - size_t actualLength, expectedLength; - char* actualBuffer = ReadFile(filename, false, &actualLength); - char* expectedBuffer = ReadFile(expectedFilename, true, &expectedLength); - bool ret = (expectedLength == actualLength) && memcmp(expectedBuffer, actualBuffer, actualLength) == 0; - free(actualBuffer); - free(expectedBuffer); - return ret; - } - - bool CompareBufferFile(const char* actualBuffer, size_t actualLength, const char* expectedFilename) { - size_t expectedLength; - char* expectedBuffer = ReadFile(expectedFilename, true, &expectedLength); - bool ret = (expectedLength == actualLength) && memcmp(expectedBuffer, actualBuffer, actualLength) == 0; - free(expectedBuffer); - return ret; - } - - char *json_; - size_t length_; -}; - -EncodedStreamTest::~EncodedStreamTest() {} - -TEST_F(EncodedStreamTest, EncodedInputStream) { - TestEncodedInputStream, UTF8<> >("utf8.json"); - TestEncodedInputStream, UTF8<> >("utf8bom.json"); - TestEncodedInputStream, UTF16<> >("utf16le.json"); - TestEncodedInputStream, UTF16<> >("utf16lebom.json"); - TestEncodedInputStream, UTF16<> >("utf16be.json"); - TestEncodedInputStream, UTF16<> >("utf16bebom.json"); - TestEncodedInputStream, UTF32<> >("utf32le.json"); - TestEncodedInputStream, UTF32<> >("utf32lebom.json"); - TestEncodedInputStream, UTF32<> >("utf32be.json"); - TestEncodedInputStream, UTF32<> >("utf32bebom.json"); -} - -TEST_F(EncodedStreamTest, AutoUTFInputStream) { - TestAutoUTFInputStream("utf8.json", false); - TestAutoUTFInputStream("utf8bom.json", true); - TestAutoUTFInputStream("utf16le.json", false); - TestAutoUTFInputStream("utf16lebom.json",true); - TestAutoUTFInputStream("utf16be.json", false); - TestAutoUTFInputStream("utf16bebom.json",true); - TestAutoUTFInputStream("utf32le.json", false); - TestAutoUTFInputStream("utf32lebom.json",true); - TestAutoUTFInputStream("utf32be.json", false); - TestAutoUTFInputStream("utf32bebom.json", true); - - { - // Auto detection fail, use user defined UTF type - const char json[] = "{ }"; - MemoryStream ms(json, sizeof(json)); - AutoUTFInputStream eis(ms, kUTF8); - EXPECT_FALSE(eis.HasBOM()); - EXPECT_EQ(kUTF8, eis.GetType()); - } -} - -TEST_F(EncodedStreamTest, EncodedOutputStream) { - TestEncodedOutputStream, UTF8<> >("utf8.json", false); - TestEncodedOutputStream, UTF8<> >("utf8bom.json", true); - TestEncodedOutputStream, UTF16<> >("utf16le.json", false); - TestEncodedOutputStream, UTF16<> >("utf16lebom.json",true); - TestEncodedOutputStream, UTF16<> >("utf16be.json", false); - TestEncodedOutputStream, UTF16<> >("utf16bebom.json",true); - TestEncodedOutputStream, UTF32<> >("utf32le.json", false); - TestEncodedOutputStream, UTF32<> >("utf32lebom.json",true); - TestEncodedOutputStream, UTF32<> >("utf32be.json", false); - TestEncodedOutputStream, UTF32<> >("utf32bebom.json",true); -} - -TEST_F(EncodedStreamTest, AutoUTFOutputStream) { - TestAutoUTFOutputStream(kUTF8, false, "utf8.json"); - TestAutoUTFOutputStream(kUTF8, true, "utf8bom.json"); - TestAutoUTFOutputStream(kUTF16LE, false, "utf16le.json"); - TestAutoUTFOutputStream(kUTF16LE, true, "utf16lebom.json"); - TestAutoUTFOutputStream(kUTF16BE, false, "utf16be.json"); - TestAutoUTFOutputStream(kUTF16BE, true, "utf16bebom.json"); - TestAutoUTFOutputStream(kUTF32LE, false, "utf32le.json"); - TestAutoUTFOutputStream(kUTF32LE, true, "utf32lebom.json"); - TestAutoUTFOutputStream(kUTF32BE, false, "utf32be.json"); - TestAutoUTFOutputStream(kUTF32BE, true, "utf32bebom.json"); -} diff --git a/rapidjson-lib/test/unittest/encodingstest.cpp b/rapidjson-lib/test/unittest/encodingstest.cpp deleted file mode 100644 index 67b0391..0000000 --- a/rapidjson-lib/test/unittest/encodingstest.cpp +++ /dev/null @@ -1,451 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/stringbuffer.h" - -using namespace rapidjson; - -// Verification of encoders/decoders with Hoehrmann's UTF8 decoder - -// http://www.unicode.org/Public/UNIDATA/Blocks.txt -static const unsigned kCodepointRanges[] = { - 0x0000, 0x007F, // Basic Latin - 0x0080, 0x00FF, // Latin-1 Supplement - 0x0100, 0x017F, // Latin Extended-A - 0x0180, 0x024F, // Latin Extended-B - 0x0250, 0x02AF, // IPA Extensions - 0x02B0, 0x02FF, // Spacing Modifier Letters - 0x0300, 0x036F, // Combining Diacritical Marks - 0x0370, 0x03FF, // Greek and Coptic - 0x0400, 0x04FF, // Cyrillic - 0x0500, 0x052F, // Cyrillic Supplement - 0x0530, 0x058F, // Armenian - 0x0590, 0x05FF, // Hebrew - 0x0600, 0x06FF, // Arabic - 0x0700, 0x074F, // Syriac - 0x0750, 0x077F, // Arabic Supplement - 0x0780, 0x07BF, // Thaana - 0x07C0, 0x07FF, // NKo - 0x0800, 0x083F, // Samaritan - 0x0840, 0x085F, // Mandaic - 0x0900, 0x097F, // Devanagari - 0x0980, 0x09FF, // Bengali - 0x0A00, 0x0A7F, // Gurmukhi - 0x0A80, 0x0AFF, // Gujarati - 0x0B00, 0x0B7F, // Oriya - 0x0B80, 0x0BFF, // Tamil - 0x0C00, 0x0C7F, // Telugu - 0x0C80, 0x0CFF, // Kannada - 0x0D00, 0x0D7F, // Malayalam - 0x0D80, 0x0DFF, // Sinhala - 0x0E00, 0x0E7F, // Thai - 0x0E80, 0x0EFF, // Lao - 0x0F00, 0x0FFF, // Tibetan - 0x1000, 0x109F, // Myanmar - 0x10A0, 0x10FF, // Georgian - 0x1100, 0x11FF, // Hangul Jamo - 0x1200, 0x137F, // Ethiopic - 0x1380, 0x139F, // Ethiopic Supplement - 0x13A0, 0x13FF, // Cherokee - 0x1400, 0x167F, // Unified Canadian Aboriginal Syllabics - 0x1680, 0x169F, // Ogham - 0x16A0, 0x16FF, // Runic - 0x1700, 0x171F, // Tagalog - 0x1720, 0x173F, // Hanunoo - 0x1740, 0x175F, // Buhid - 0x1760, 0x177F, // Tagbanwa - 0x1780, 0x17FF, // Khmer - 0x1800, 0x18AF, // Mongolian - 0x18B0, 0x18FF, // Unified Canadian Aboriginal Syllabics Extended - 0x1900, 0x194F, // Limbu - 0x1950, 0x197F, // Tai Le - 0x1980, 0x19DF, // New Tai Lue - 0x19E0, 0x19FF, // Khmer Symbols - 0x1A00, 0x1A1F, // Buginese - 0x1A20, 0x1AAF, // Tai Tham - 0x1B00, 0x1B7F, // Balinese - 0x1B80, 0x1BBF, // Sundanese - 0x1BC0, 0x1BFF, // Batak - 0x1C00, 0x1C4F, // Lepcha - 0x1C50, 0x1C7F, // Ol Chiki - 0x1CD0, 0x1CFF, // Vedic Extensions - 0x1D00, 0x1D7F, // Phonetic Extensions - 0x1D80, 0x1DBF, // Phonetic Extensions Supplement - 0x1DC0, 0x1DFF, // Combining Diacritical Marks Supplement - 0x1E00, 0x1EFF, // Latin Extended Additional - 0x1F00, 0x1FFF, // Greek Extended - 0x2000, 0x206F, // General Punctuation - 0x2070, 0x209F, // Superscripts and Subscripts - 0x20A0, 0x20CF, // Currency Symbols - 0x20D0, 0x20FF, // Combining Diacritical Marks for Symbols - 0x2100, 0x214F, // Letterlike Symbols - 0x2150, 0x218F, // Number Forms - 0x2190, 0x21FF, // Arrows - 0x2200, 0x22FF, // Mathematical Operators - 0x2300, 0x23FF, // Miscellaneous Technical - 0x2400, 0x243F, // Control Pictures - 0x2440, 0x245F, // Optical Character Recognition - 0x2460, 0x24FF, // Enclosed Alphanumerics - 0x2500, 0x257F, // Box Drawing - 0x2580, 0x259F, // Block Elements - 0x25A0, 0x25FF, // Geometric Shapes - 0x2600, 0x26FF, // Miscellaneous Symbols - 0x2700, 0x27BF, // Dingbats - 0x27C0, 0x27EF, // Miscellaneous Mathematical Symbols-A - 0x27F0, 0x27FF, // Supplemental Arrows-A - 0x2800, 0x28FF, // Braille Patterns - 0x2900, 0x297F, // Supplemental Arrows-B - 0x2980, 0x29FF, // Miscellaneous Mathematical Symbols-B - 0x2A00, 0x2AFF, // Supplemental Mathematical Operators - 0x2B00, 0x2BFF, // Miscellaneous Symbols and Arrows - 0x2C00, 0x2C5F, // Glagolitic - 0x2C60, 0x2C7F, // Latin Extended-C - 0x2C80, 0x2CFF, // Coptic - 0x2D00, 0x2D2F, // Georgian Supplement - 0x2D30, 0x2D7F, // Tifinagh - 0x2D80, 0x2DDF, // Ethiopic Extended - 0x2DE0, 0x2DFF, // Cyrillic Extended-A - 0x2E00, 0x2E7F, // Supplemental Punctuation - 0x2E80, 0x2EFF, // CJK Radicals Supplement - 0x2F00, 0x2FDF, // Kangxi Radicals - 0x2FF0, 0x2FFF, // Ideographic Description Characters - 0x3000, 0x303F, // CJK Symbols and Punctuation - 0x3040, 0x309F, // Hiragana - 0x30A0, 0x30FF, // Katakana - 0x3100, 0x312F, // Bopomofo - 0x3130, 0x318F, // Hangul Compatibility Jamo - 0x3190, 0x319F, // Kanbun - 0x31A0, 0x31BF, // Bopomofo Extended - 0x31C0, 0x31EF, // CJK Strokes - 0x31F0, 0x31FF, // Katakana Phonetic Extensions - 0x3200, 0x32FF, // Enclosed CJK Letters and Months - 0x3300, 0x33FF, // CJK Compatibility - 0x3400, 0x4DBF, // CJK Unified Ideographs Extension A - 0x4DC0, 0x4DFF, // Yijing Hexagram Symbols - 0x4E00, 0x9FFF, // CJK Unified Ideographs - 0xA000, 0xA48F, // Yi Syllables - 0xA490, 0xA4CF, // Yi Radicals - 0xA4D0, 0xA4FF, // Lisu - 0xA500, 0xA63F, // Vai - 0xA640, 0xA69F, // Cyrillic Extended-B - 0xA6A0, 0xA6FF, // Bamum - 0xA700, 0xA71F, // Modifier Tone Letters - 0xA720, 0xA7FF, // Latin Extended-D - 0xA800, 0xA82F, // Syloti Nagri - 0xA830, 0xA83F, // Common Indic Number Forms - 0xA840, 0xA87F, // Phags-pa - 0xA880, 0xA8DF, // Saurashtra - 0xA8E0, 0xA8FF, // Devanagari Extended - 0xA900, 0xA92F, // Kayah Li - 0xA930, 0xA95F, // Rejang - 0xA960, 0xA97F, // Hangul Jamo Extended-A - 0xA980, 0xA9DF, // Javanese - 0xAA00, 0xAA5F, // Cham - 0xAA60, 0xAA7F, // Myanmar Extended-A - 0xAA80, 0xAADF, // Tai Viet - 0xAB00, 0xAB2F, // Ethiopic Extended-A - 0xABC0, 0xABFF, // Meetei Mayek - 0xAC00, 0xD7AF, // Hangul Syllables - 0xD7B0, 0xD7FF, // Hangul Jamo Extended-B - //0xD800, 0xDB7F, // High Surrogates - //0xDB80, 0xDBFF, // High Private Use Surrogates - //0xDC00, 0xDFFF, // Low Surrogates - 0xE000, 0xF8FF, // Private Use Area - 0xF900, 0xFAFF, // CJK Compatibility Ideographs - 0xFB00, 0xFB4F, // Alphabetic Presentation Forms - 0xFB50, 0xFDFF, // Arabic Presentation Forms-A - 0xFE00, 0xFE0F, // Variation Selectors - 0xFE10, 0xFE1F, // Vertical Forms - 0xFE20, 0xFE2F, // Combining Half Marks - 0xFE30, 0xFE4F, // CJK Compatibility Forms - 0xFE50, 0xFE6F, // Small Form Variants - 0xFE70, 0xFEFF, // Arabic Presentation Forms-B - 0xFF00, 0xFFEF, // Halfwidth and Fullwidth Forms - 0xFFF0, 0xFFFF, // Specials - 0x10000, 0x1007F, // Linear B Syllabary - 0x10080, 0x100FF, // Linear B Ideograms - 0x10100, 0x1013F, // Aegean Numbers - 0x10140, 0x1018F, // Ancient Greek Numbers - 0x10190, 0x101CF, // Ancient Symbols - 0x101D0, 0x101FF, // Phaistos Disc - 0x10280, 0x1029F, // Lycian - 0x102A0, 0x102DF, // Carian - 0x10300, 0x1032F, // Old Italic - 0x10330, 0x1034F, // Gothic - 0x10380, 0x1039F, // Ugaritic - 0x103A0, 0x103DF, // Old Persian - 0x10400, 0x1044F, // Deseret - 0x10450, 0x1047F, // Shavian - 0x10480, 0x104AF, // Osmanya - 0x10800, 0x1083F, // Cypriot Syllabary - 0x10840, 0x1085F, // Imperial Aramaic - 0x10900, 0x1091F, // Phoenician - 0x10920, 0x1093F, // Lydian - 0x10A00, 0x10A5F, // Kharoshthi - 0x10A60, 0x10A7F, // Old South Arabian - 0x10B00, 0x10B3F, // Avestan - 0x10B40, 0x10B5F, // Inscriptional Parthian - 0x10B60, 0x10B7F, // Inscriptional Pahlavi - 0x10C00, 0x10C4F, // Old Turkic - 0x10E60, 0x10E7F, // Rumi Numeral Symbols - 0x11000, 0x1107F, // Brahmi - 0x11080, 0x110CF, // Kaithi - 0x12000, 0x123FF, // Cuneiform - 0x12400, 0x1247F, // Cuneiform Numbers and Punctuation - 0x13000, 0x1342F, // Egyptian Hieroglyphs - 0x16800, 0x16A3F, // Bamum Supplement - 0x1B000, 0x1B0FF, // Kana Supplement - 0x1D000, 0x1D0FF, // Byzantine Musical Symbols - 0x1D100, 0x1D1FF, // Musical Symbols - 0x1D200, 0x1D24F, // Ancient Greek Musical Notation - 0x1D300, 0x1D35F, // Tai Xuan Jing Symbols - 0x1D360, 0x1D37F, // Counting Rod Numerals - 0x1D400, 0x1D7FF, // Mathematical Alphanumeric Symbols - 0x1F000, 0x1F02F, // Mahjong Tiles - 0x1F030, 0x1F09F, // Domino Tiles - 0x1F0A0, 0x1F0FF, // Playing Cards - 0x1F100, 0x1F1FF, // Enclosed Alphanumeric Supplement - 0x1F200, 0x1F2FF, // Enclosed Ideographic Supplement - 0x1F300, 0x1F5FF, // Miscellaneous Symbols And Pictographs - 0x1F600, 0x1F64F, // Emoticons - 0x1F680, 0x1F6FF, // Transport And Map Symbols - 0x1F700, 0x1F77F, // Alchemical Symbols - 0x20000, 0x2A6DF, // CJK Unified Ideographs Extension B - 0x2A700, 0x2B73F, // CJK Unified Ideographs Extension C - 0x2B740, 0x2B81F, // CJK Unified Ideographs Extension D - 0x2F800, 0x2FA1F, // CJK Compatibility Ideographs Supplement - 0xE0000, 0xE007F, // Tags - 0xE0100, 0xE01EF, // Variation Selectors Supplement - 0xF0000, 0xFFFFF, // Supplementary Private Use Area-A - 0x100000, 0x10FFFF, // Supplementary Private Use Area-B - 0xFFFFFFFF -}; - -// Copyright (c) 2008-2010 Bjoern Hoehrmann -// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. - -#define UTF8_ACCEPT 0u - -static const unsigned char utf8d[] = { - // The first part of the table maps bytes to character classes that - // to reduce the size of the transition table and create bitmasks. - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8, - - // The second part is a transition table that maps a combination - // of a state of the automaton and a character class to a state. - 0,12,24,36,60,96,84,12,12,12,48,72, 12,12,12,12,12,12,12,12,12,12,12,12, - 12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12, - 12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12, - 12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12, - 12,36,12,12,12,12,12,12,12,12,12,12, -}; - -static unsigned inline decode(unsigned* state, unsigned* codep, unsigned byte) { - unsigned type = utf8d[byte]; - - *codep = (*state != UTF8_ACCEPT) ? - (byte & 0x3fu) | (*codep << 6) : - (0xff >> type) & (byte); - - *state = utf8d[256 + *state + type]; - return *state; -} - -//static bool IsUTF8(unsigned char* s) { -// unsigned codepoint, state = 0; -// -// while (*s) -// decode(&state, &codepoint, *s++); -// -// return state == UTF8_ACCEPT; -//} - -TEST(EncodingsTest, UTF8) { - StringBuffer os, os2; - for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) { - for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) { - os.Clear(); - UTF8<>::Encode(os, codepoint); - const char* encodedStr = os.GetString(); - - // Decode with Hoehrmann - { - unsigned decodedCodepoint = 0; - unsigned state = 0; - - unsigned decodedCount = 0; - for (const char* s = encodedStr; *s; ++s) - if (!decode(&state, &decodedCodepoint, static_cast(*s))) { - EXPECT_EQ(codepoint, decodedCodepoint); - decodedCount++; - } - - if (*encodedStr) { // This decoder cannot handle U+0000 - EXPECT_EQ(1u, decodedCount); // Should only contain one code point - } - - EXPECT_EQ(UTF8_ACCEPT, state); - if (UTF8_ACCEPT != state) - std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl; - } - - // Decode - { - StringStream is(encodedStr); - unsigned decodedCodepoint; - bool result = UTF8<>::Decode(is, &decodedCodepoint); - EXPECT_TRUE(result); - EXPECT_EQ(codepoint, decodedCodepoint); - if (!result || codepoint != decodedCodepoint) - std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl; - } - - // Validate - { - StringStream is(encodedStr); - os2.Clear(); - bool result = UTF8<>::Validate(is, os2); - EXPECT_TRUE(result); - EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString())); - } - } - } -} - -TEST(EncodingsTest, UTF16) { - GenericStringBuffer > os, os2; - GenericStringBuffer > utf8os; - for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) { - for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) { - os.Clear(); - UTF16<>::Encode(os, codepoint); - const UTF16<>::Ch* encodedStr = os.GetString(); - - // Encode with Hoehrmann's code - if (codepoint != 0) // cannot handle U+0000 - { - // encode with UTF8<> first - utf8os.Clear(); - UTF8<>::Encode(utf8os, codepoint); - - // transcode from UTF8 to UTF16 with Hoehrmann's code - unsigned decodedCodepoint = 0; - unsigned state = 0; - UTF16<>::Ch buffer[3], *p = &buffer[0]; - for (const char* s = utf8os.GetString(); *s; ++s) { - if (!decode(&state, &decodedCodepoint, static_cast(*s))) - break; - } - - if (codepoint <= 0xFFFF) - *p++ = static_cast::Ch>(decodedCodepoint); - else { - // Encode code points above U+FFFF as surrogate pair. - *p++ = static_cast::Ch>(0xD7C0 + (decodedCodepoint >> 10)); - *p++ = static_cast::Ch>(0xDC00 + (decodedCodepoint & 0x3FF)); - } - *p++ = '\0'; - - EXPECT_EQ(0, StrCmp(buffer, encodedStr)); - } - - // Decode - { - GenericStringStream > is(encodedStr); - unsigned decodedCodepoint; - bool result = UTF16<>::Decode(is, &decodedCodepoint); - EXPECT_TRUE(result); - EXPECT_EQ(codepoint, decodedCodepoint); - if (!result || codepoint != decodedCodepoint) - std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl; - } - - // Validate - { - GenericStringStream > is(encodedStr); - os2.Clear(); - bool result = UTF16<>::Validate(is, os2); - EXPECT_TRUE(result); - EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString())); - } - } - } -} - -TEST(EncodingsTest, UTF32) { - GenericStringBuffer > os, os2; - for (const unsigned* range = kCodepointRanges; *range != 0xFFFFFFFF; range += 2) { - for (unsigned codepoint = range[0]; codepoint <= range[1]; ++codepoint) { - os.Clear(); - UTF32<>::Encode(os, codepoint); - const UTF32<>::Ch* encodedStr = os.GetString(); - - // Decode - { - GenericStringStream > is(encodedStr); - unsigned decodedCodepoint; - bool result = UTF32<>::Decode(is, &decodedCodepoint); - EXPECT_TRUE(result); - EXPECT_EQ(codepoint, decodedCodepoint); - if (!result || codepoint != decodedCodepoint) - std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl; - } - - // Validate - { - GenericStringStream > is(encodedStr); - os2.Clear(); - bool result = UTF32<>::Validate(is, os2); - EXPECT_TRUE(result); - EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString())); - } - } - } -} - -TEST(EncodingsTest, ASCII) { - StringBuffer os, os2; - for (unsigned codepoint = 0; codepoint < 128; codepoint++) { - os.Clear(); - ASCII<>::Encode(os, codepoint); - const ASCII<>::Ch* encodedStr = os.GetString(); - { - StringStream is(encodedStr); - unsigned decodedCodepoint; - bool result = ASCII<>::Decode(is, &decodedCodepoint); - if (!result || codepoint != decodedCodepoint) - std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl; - } - - // Validate - { - StringStream is(encodedStr); - os2.Clear(); - bool result = ASCII<>::Validate(is, os2); - EXPECT_TRUE(result); - EXPECT_EQ(0, StrCmp(encodedStr, os2.GetString())); - } - } -} diff --git a/rapidjson-lib/test/unittest/filestreamtest.cpp b/rapidjson-lib/test/unittest/filestreamtest.cpp deleted file mode 100644 index a38133f..0000000 --- a/rapidjson-lib/test/unittest/filestreamtest.cpp +++ /dev/null @@ -1,112 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/encodedstream.h" - -using namespace rapidjson; - -class FileStreamTest : public ::testing::Test { -public: - FileStreamTest() : filename_(), json_(), length_() {} - virtual ~FileStreamTest(); - - virtual void SetUp() { - const char *paths[] = { - "data/sample.json", - "bin/data/sample.json", - "../bin/data/sample.json", - "../../bin/data/sample.json", - "../../../bin/data/sample.json" - }; - FILE* fp = 0; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - fp = fopen(paths[i], "rb"); - if (fp) { - filename_ = paths[i]; - break; - } - } - ASSERT_TRUE(fp != 0); - - fseek(fp, 0, SEEK_END); - length_ = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - json_ = static_cast(malloc(length_ + 1)); - size_t readLength = fread(json_, 1, length_, fp); - json_[readLength] = '\0'; - fclose(fp); - } - - virtual void TearDown() { - free(json_); - json_ = 0; - } - -private: - FileStreamTest(const FileStreamTest&); - FileStreamTest& operator=(const FileStreamTest&); - -protected: - const char* filename_; - char *json_; - size_t length_; -}; - -FileStreamTest::~FileStreamTest() {} - -TEST_F(FileStreamTest, FileReadStream) { - FILE *fp = fopen(filename_, "rb"); - ASSERT_TRUE(fp != 0); - char buffer[65536]; - FileReadStream s(fp, buffer, sizeof(buffer)); - - for (size_t i = 0; i < length_; i++) { - EXPECT_EQ(json_[i], s.Peek()); - EXPECT_EQ(json_[i], s.Peek()); // 2nd time should be the same - EXPECT_EQ(json_[i], s.Take()); - } - - EXPECT_EQ(length_, s.Tell()); - EXPECT_EQ('\0', s.Peek()); - - fclose(fp); -} - -TEST_F(FileStreamTest, FileWriteStream) { - char filename[L_tmpnam]; - FILE* fp = TempFile(filename); - - char buffer[65536]; - FileWriteStream os(fp, buffer, sizeof(buffer)); - for (size_t i = 0; i < length_; i++) - os.Put(json_[i]); - os.Flush(); - fclose(fp); - - // Read it back to verify - fp = fopen(filename, "rb"); - FileReadStream is(fp, buffer, sizeof(buffer)); - - for (size_t i = 0; i < length_; i++) - EXPECT_EQ(json_[i], is.Take()); - - EXPECT_EQ(length_, is.Tell()); - fclose(fp); - - //std::cout << filename << std::endl; - remove(filename); -} diff --git a/rapidjson-lib/test/unittest/fwdtest.cpp b/rapidjson-lib/test/unittest/fwdtest.cpp deleted file mode 100644 index 4f32684..0000000 --- a/rapidjson-lib/test/unittest/fwdtest.cpp +++ /dev/null @@ -1,227 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -// Using forward declared types here. - -#include "rapidjson/fwd.h" - -#ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(effc++) -#endif - -using namespace rapidjson; - -struct Foo { - Foo(); - ~Foo(); - - // encodings.h - UTF8* utf8; - UTF16* utf16; - UTF16BE* utf16be; - UTF16LE* utf16le; - UTF32* utf32; - UTF32BE* utf32be; - UTF32LE* utf32le; - ASCII* ascii; - AutoUTF* autoutf; - Transcoder, UTF8 >* transcoder; - - // allocators.h - CrtAllocator* crtallocator; - MemoryPoolAllocator* memorypoolallocator; - - // stream.h - StringStream* stringstream; - InsituStringStream* insitustringstream; - - // stringbuffer.h - StringBuffer* stringbuffer; - - // // filereadstream.h - // FileReadStream* filereadstream; - - // // filewritestream.h - // FileWriteStream* filewritestream; - - // memorybuffer.h - MemoryBuffer* memorybuffer; - - // memorystream.h - MemoryStream* memorystream; - - // reader.h - BaseReaderHandler, void>* basereaderhandler; - Reader* reader; - - // writer.h - Writer, UTF8, CrtAllocator, 0>* writer; - - // prettywriter.h - PrettyWriter, UTF8, CrtAllocator, 0>* prettywriter; - - // document.h - Value* value; - Document* document; - - // pointer.h - Pointer* pointer; - - // schema.h - SchemaDocument* schemadocument; - SchemaValidator* schemavalidator; - - // char buffer[16]; -}; - -// Using type definitions here. - -#include "rapidjson/stringbuffer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/memorybuffer.h" -#include "rapidjson/memorystream.h" -#include "rapidjson/document.h" // -> reader.h -#include "rapidjson/writer.h" -#include "rapidjson/prettywriter.h" -#include "rapidjson/schema.h" // -> pointer.h - -Foo::Foo() : - // encodings.h - utf8(RAPIDJSON_NEW(UTF8<>)), - utf16(RAPIDJSON_NEW(UTF16<>)), - utf16be(RAPIDJSON_NEW(UTF16BE<>)), - utf16le(RAPIDJSON_NEW(UTF16LE<>)), - utf32(RAPIDJSON_NEW(UTF32<>)), - utf32be(RAPIDJSON_NEW(UTF32BE<>)), - utf32le(RAPIDJSON_NEW(UTF32LE<>)), - ascii(RAPIDJSON_NEW(ASCII<>)), - autoutf(RAPIDJSON_NEW(AutoUTF)), - transcoder(RAPIDJSON_NEW((Transcoder, UTF8<> >))), - - // allocators.h - crtallocator(RAPIDJSON_NEW(CrtAllocator)), - memorypoolallocator(RAPIDJSON_NEW(MemoryPoolAllocator<>)), - - // stream.h - stringstream(RAPIDJSON_NEW(StringStream(0))), - insitustringstream(RAPIDJSON_NEW(InsituStringStream(0))), - - // stringbuffer.h - stringbuffer(RAPIDJSON_NEW(StringBuffer)), - - // // filereadstream.h - // filereadstream(RAPIDJSON_NEW(FileReadStream(stdout, buffer, sizeof(buffer)))), - - // // filewritestream.h - // filewritestream(RAPIDJSON_NEW(FileWriteStream(stdout, buffer, sizeof(buffer)))), - - // memorybuffer.h - memorybuffer(RAPIDJSON_NEW(MemoryBuffer)), - - // memorystream.h - memorystream(RAPIDJSON_NEW(MemoryStream(0, 0))), - - // reader.h - basereaderhandler(RAPIDJSON_NEW((BaseReaderHandler, void>))), - reader(RAPIDJSON_NEW(Reader)), - - // writer.h - writer(RAPIDJSON_NEW((Writer))), - - // prettywriter.h - prettywriter(RAPIDJSON_NEW((PrettyWriter))), - - // document.h - value(RAPIDJSON_NEW(Value)), - document(RAPIDJSON_NEW(Document)), - - // pointer.h - pointer(RAPIDJSON_NEW(Pointer)), - - // schema.h - schemadocument(RAPIDJSON_NEW(SchemaDocument(*document))), - schemavalidator(RAPIDJSON_NEW(SchemaValidator(*schemadocument))) -{ - -} - -Foo::~Foo() { - // encodings.h - RAPIDJSON_DELETE(utf8); - RAPIDJSON_DELETE(utf16); - RAPIDJSON_DELETE(utf16be); - RAPIDJSON_DELETE(utf16le); - RAPIDJSON_DELETE(utf32); - RAPIDJSON_DELETE(utf32be); - RAPIDJSON_DELETE(utf32le); - RAPIDJSON_DELETE(ascii); - RAPIDJSON_DELETE(autoutf); - RAPIDJSON_DELETE(transcoder); - - // allocators.h - RAPIDJSON_DELETE(crtallocator); - RAPIDJSON_DELETE(memorypoolallocator); - - // stream.h - RAPIDJSON_DELETE(stringstream); - RAPIDJSON_DELETE(insitustringstream); - - // stringbuffer.h - RAPIDJSON_DELETE(stringbuffer); - - // // filereadstream.h - // RAPIDJSON_DELETE(filereadstream); - - // // filewritestream.h - // RAPIDJSON_DELETE(filewritestream); - - // memorybuffer.h - RAPIDJSON_DELETE(memorybuffer); - - // memorystream.h - RAPIDJSON_DELETE(memorystream); - - // reader.h - RAPIDJSON_DELETE(basereaderhandler); - RAPIDJSON_DELETE(reader); - - // writer.h - RAPIDJSON_DELETE(writer); - - // prettywriter.h - RAPIDJSON_DELETE(prettywriter); - - // document.h - RAPIDJSON_DELETE(value); - RAPIDJSON_DELETE(document); - - // pointer.h - RAPIDJSON_DELETE(pointer); - - // schema.h - RAPIDJSON_DELETE(schemadocument); - RAPIDJSON_DELETE(schemavalidator); -} - -TEST(Fwd, Fwd) { - Foo f; -} - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/istreamwrappertest.cpp b/rapidjson-lib/test/unittest/istreamwrappertest.cpp deleted file mode 100644 index 9d6fbcf..0000000 --- a/rapidjson-lib/test/unittest/istreamwrappertest.cpp +++ /dev/null @@ -1,181 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/istreamwrapper.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/document.h" -#include -#include - -#ifdef _MSC_VER -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(4702) // unreachable code -#endif - -using namespace rapidjson; -using namespace std; - -template -static void TestStringStream() { - typedef typename StringStreamType::char_type Ch; - - { - StringStreamType iss; - BasicIStreamWrapper is(iss); - EXPECT_EQ(0, is.Tell()); - if (sizeof(Ch) == 1) { - EXPECT_EQ(0, is.Peek4()); - EXPECT_EQ(0, is.Tell()); - } - EXPECT_EQ(0, is.Peek()); - EXPECT_EQ(0, is.Take()); - EXPECT_EQ(0, is.Tell()); - } - - { - Ch s[] = { 'A', 'B', 'C', '\0' }; - StringStreamType iss(s); - BasicIStreamWrapper is(iss); - EXPECT_EQ(0, is.Tell()); - if (sizeof(Ch) == 1) { - EXPECT_EQ(0, is.Peek4()); // less than 4 bytes - } - for (int i = 0; i < 3; i++) { - EXPECT_EQ(static_cast(i), is.Tell()); - EXPECT_EQ('A' + i, is.Peek()); - EXPECT_EQ('A' + i, is.Peek()); - EXPECT_EQ('A' + i, is.Take()); - } - EXPECT_EQ(3, is.Tell()); - EXPECT_EQ(0, is.Peek()); - EXPECT_EQ(0, is.Take()); - } - - { - Ch s[] = { 'A', 'B', 'C', 'D', 'E', '\0' }; - StringStreamType iss(s); - BasicIStreamWrapper is(iss); - if (sizeof(Ch) == 1) { - const Ch* c = is.Peek4(); - for (int i = 0; i < 4; i++) - EXPECT_EQ('A' + i, c[i]); - EXPECT_EQ(0, is.Tell()); - } - for (int i = 0; i < 5; i++) { - EXPECT_EQ(static_cast(i), is.Tell()); - EXPECT_EQ('A' + i, is.Peek()); - EXPECT_EQ('A' + i, is.Peek()); - EXPECT_EQ('A' + i, is.Take()); - } - EXPECT_EQ(5, is.Tell()); - EXPECT_EQ(0, is.Peek()); - EXPECT_EQ(0, is.Take()); - } -} - -TEST(IStreamWrapper, istringstream) { - TestStringStream(); -} - -TEST(IStreamWrapper, stringstream) { - TestStringStream(); -} - -TEST(IStreamWrapper, wistringstream) { - TestStringStream(); -} - -TEST(IStreamWrapper, wstringstream) { - TestStringStream(); -} - -template -static bool Open(FileStreamType& fs, const char* filename) { - const char *paths[] = { - "encodings", - "bin/encodings", - "../bin/encodings", - "../../bin/encodings", - "../../../bin/encodings" - }; - char buffer[1024]; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s/%s", paths[i], filename); - fs.open(buffer, ios_base::in | ios_base::binary); - if (fs.is_open()) - return true; - } - return false; -} - -TEST(IStreamWrapper, ifstream) { - ifstream ifs; - ASSERT_TRUE(Open(ifs, "utf8bom.json")); - IStreamWrapper isw(ifs); - EncodedInputStream, IStreamWrapper> eis(isw); - Document d; - EXPECT_TRUE(!d.ParseStream(eis).HasParseError()); - EXPECT_TRUE(d.IsObject()); - EXPECT_EQ(5, d.MemberCount()); -} - -TEST(IStreamWrapper, fstream) { - fstream fs; - ASSERT_TRUE(Open(fs, "utf8bom.json")); - IStreamWrapper isw(fs); - EncodedInputStream, IStreamWrapper> eis(isw); - Document d; - EXPECT_TRUE(!d.ParseStream(eis).HasParseError()); - EXPECT_TRUE(d.IsObject()); - EXPECT_EQ(5, d.MemberCount()); -} - -// wifstream/wfstream only works on C++11 with codecvt_utf16 -// But many C++11 library still not have it. -#if 0 -#include - -TEST(IStreamWrapper, wifstream) { - wifstream ifs; - ASSERT_TRUE(Open(ifs, "utf16bebom.json")); - ifs.imbue(std::locale(ifs.getloc(), - new std::codecvt_utf16)); - WIStreamWrapper isw(ifs); - GenericDocument > d; - d.ParseStream, WIStreamWrapper>(isw); - EXPECT_TRUE(!d.HasParseError()); - EXPECT_TRUE(d.IsObject()); - EXPECT_EQ(5, d.MemberCount()); -} - -TEST(IStreamWrapper, wfstream) { - wfstream fs; - ASSERT_TRUE(Open(fs, "utf16bebom.json")); - fs.imbue(std::locale(fs.getloc(), - new std::codecvt_utf16)); - WIStreamWrapper isw(fs); - GenericDocument > d; - d.ParseStream, WIStreamWrapper>(isw); - EXPECT_TRUE(!d.HasParseError()); - EXPECT_TRUE(d.IsObject()); - EXPECT_EQ(5, d.MemberCount()); -} - -#endif - -#ifdef _MSC_VER -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/itoatest.cpp b/rapidjson-lib/test/unittest/itoatest.cpp deleted file mode 100644 index b752a6a..0000000 --- a/rapidjson-lib/test/unittest/itoatest.cpp +++ /dev/null @@ -1,160 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/internal/itoa.h" - -#ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(type-limits) -#endif - -using namespace rapidjson::internal; - -template -struct Traits { -}; - -template <> -struct Traits { - enum { kBufferSize = 11 }; - enum { kMaxDigit = 10 }; - static uint32_t Negate(uint32_t x) { return x; } -}; - -template <> -struct Traits { - enum { kBufferSize = 12 }; - enum { kMaxDigit = 10 }; - static int32_t Negate(int32_t x) { return -x; } -}; - -template <> -struct Traits { - enum { kBufferSize = 21 }; - enum { kMaxDigit = 20 }; - static uint64_t Negate(uint64_t x) { return x; } -}; - -template <> -struct Traits { - enum { kBufferSize = 22 }; - enum { kMaxDigit = 20 }; - static int64_t Negate(int64_t x) { return -x; } -}; - -template -static void VerifyValue(T value, void(*f)(T, char*), char* (*g)(T, char*)) { - char buffer1[Traits::kBufferSize]; - char buffer2[Traits::kBufferSize]; - - f(value, buffer1); - *g(value, buffer2) = '\0'; - - - EXPECT_STREQ(buffer1, buffer2); -} - -template -static void Verify(void(*f)(T, char*), char* (*g)(T, char*)) { - // Boundary cases - VerifyValue(0, f, g); - VerifyValue(std::numeric_limits::min(), f, g); - VerifyValue(std::numeric_limits::max(), f, g); - - // 2^n - 1, 2^n, 10^n - 1, 10^n until overflow - for (uint32_t power = 2; power <= 10; power += 8) { - T i = 1, last; - do { - VerifyValue(i - 1, f, g); - VerifyValue(i, f, g); - if (std::numeric_limits::min() < 0) { - VerifyValue(Traits::Negate(i), f, g); - VerifyValue(Traits::Negate(i + 1), f, g); - } - last = i; - if (i > static_cast(std::numeric_limits::max() / static_cast(power))) - break; - i *= power; - } while (last < i); - } -} - -static void u32toa_naive(uint32_t value, char* buffer) { - char temp[10]; - char *p = temp; - do { - *p++ = static_cast(char(value % 10) + '0'); - value /= 10; - } while (value > 0); - - do { - *buffer++ = *--p; - } while (p != temp); - - *buffer = '\0'; -} - -static void i32toa_naive(int32_t value, char* buffer) { - uint32_t u = static_cast(value); - if (value < 0) { - *buffer++ = '-'; - u = ~u + 1; - } - u32toa_naive(u, buffer); -} - -static void u64toa_naive(uint64_t value, char* buffer) { - char temp[20]; - char *p = temp; - do { - *p++ = static_cast(char(value % 10) + '0'); - value /= 10; - } while (value > 0); - - do { - *buffer++ = *--p; - } while (p != temp); - - *buffer = '\0'; -} - -static void i64toa_naive(int64_t value, char* buffer) { - uint64_t u = static_cast(value); - if (value < 0) { - *buffer++ = '-'; - u = ~u + 1; - } - u64toa_naive(u, buffer); -} - -TEST(itoa, u32toa) { - Verify(u32toa_naive, u32toa); -} - -TEST(itoa, i32toa) { - Verify(i32toa_naive, i32toa); -} - -TEST(itoa, u64toa) { - Verify(u64toa_naive, u64toa); -} - -TEST(itoa, i64toa) { - Verify(i64toa_naive, i64toa); -} - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/jsoncheckertest.cpp b/rapidjson-lib/test/unittest/jsoncheckertest.cpp deleted file mode 100644 index bea788d..0000000 --- a/rapidjson-lib/test/unittest/jsoncheckertest.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/document.h" - -using namespace rapidjson; - -static char* ReadFile(const char* filename, size_t& length) { - const char *paths[] = { - "jsonchecker", - "bin/jsonchecker", - "../bin/jsonchecker", - "../../bin/jsonchecker", - "../../../bin/jsonchecker" - }; - char buffer[1024]; - FILE *fp = 0; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s/%s", paths[i], filename); - fp = fopen(buffer, "rb"); - if (fp) - break; - } - - if (!fp) - return 0; - - fseek(fp, 0, SEEK_END); - length = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - char* json = static_cast(malloc(length + 1)); - size_t readLength = fread(json, 1, length, fp); - json[readLength] = '\0'; - fclose(fp); - return json; -} - -TEST(JsonChecker, Reader) { - char filename[256]; - - // jsonchecker/failXX.json - for (int i = 1; i <= 33; i++) { - if (i == 1) // fail1.json is valid in rapidjson, which has no limitation on type of root element (RFC 7159). - continue; - if (i == 18) // fail18.json is valid in rapidjson, which has no limitation on depth of nesting. - continue; - - sprintf(filename, "fail%d.json", i); - size_t length; - char* json = ReadFile(filename, length); - if (!json) { - printf("jsonchecker file %s not found", filename); - ADD_FAILURE(); - continue; - } - - GenericDocument, CrtAllocator> document; // Use Crt allocator to check exception-safety (no memory leak) - document.Parse(json); - EXPECT_TRUE(document.HasParseError()); - - document.Parse(json); - EXPECT_TRUE(document.HasParseError()); - - free(json); - } - - // passX.json - for (int i = 1; i <= 3; i++) { - sprintf(filename, "pass%d.json", i); - size_t length; - char* json = ReadFile(filename, length); - if (!json) { - printf("jsonchecker file %s not found", filename); - continue; - } - - GenericDocument, CrtAllocator> document; // Use Crt allocator to check exception-safety (no memory leak) - document.Parse(json); - EXPECT_FALSE(document.HasParseError()); - - document.Parse(json); - EXPECT_FALSE(document.HasParseError()); - - free(json); - } -} diff --git a/rapidjson-lib/test/unittest/namespacetest.cpp b/rapidjson-lib/test/unittest/namespacetest.cpp deleted file mode 100644 index 1814724..0000000 --- a/rapidjson-lib/test/unittest/namespacetest.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -// test another instantiation of RapidJSON in a different namespace - -#define RAPIDJSON_NAMESPACE my::rapid::json -#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapid { namespace json { -#define RAPIDJSON_NAMESPACE_END } } } - -// include lots of RapidJSON files - -#include "rapidjson/document.h" -#include "rapidjson/writer.h" -#include "rapidjson/filereadstream.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/stringbuffer.h" - -static const char json[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,4]}"; - -TEST(NamespaceTest,Using) { - using namespace RAPIDJSON_NAMESPACE; - typedef GenericDocument, CrtAllocator> DocumentType; - DocumentType doc; - - doc.Parse(json); - EXPECT_TRUE(!doc.HasParseError()); -} - -TEST(NamespaceTest,Direct) { - typedef RAPIDJSON_NAMESPACE::Document Document; - typedef RAPIDJSON_NAMESPACE::Reader Reader; - typedef RAPIDJSON_NAMESPACE::StringStream StringStream; - typedef RAPIDJSON_NAMESPACE::StringBuffer StringBuffer; - typedef RAPIDJSON_NAMESPACE::Writer WriterType; - - StringStream s(json); - StringBuffer buffer; - WriterType writer(buffer); - buffer.ShrinkToFit(); - Reader reader; - reader.Parse(s, writer); - - EXPECT_STREQ(json, buffer.GetString()); - EXPECT_EQ(sizeof(json)-1, buffer.GetSize()); - EXPECT_TRUE(writer.IsComplete()); - - Document doc; - doc.Parse(buffer.GetString()); - EXPECT_TRUE(!doc.HasParseError()); - - buffer.Clear(); - writer.Reset(buffer); - doc.Accept(writer); - EXPECT_STREQ(json, buffer.GetString()); - EXPECT_TRUE(writer.IsComplete()); -} diff --git a/rapidjson-lib/test/unittest/ostreamwrappertest.cpp b/rapidjson-lib/test/unittest/ostreamwrappertest.cpp deleted file mode 100644 index b1d1cd8..0000000 --- a/rapidjson-lib/test/unittest/ostreamwrappertest.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/ostreamwrapper.h" -#include "rapidjson/encodedstream.h" -#include "rapidjson/document.h" -#include -#include - -using namespace rapidjson; -using namespace std; - -template -static void TestStringStream() { - typedef typename StringStreamType::char_type Ch; - - Ch s[] = { 'A', 'B', 'C', '\0' }; - StringStreamType oss(s); - BasicOStreamWrapper os(oss); - for (size_t i = 0; i < 3; i++) - os.Put(s[i]); - os.Flush(); - for (size_t i = 0; i < 3; i++) - EXPECT_EQ(s[i], oss.str()[i]); -} - -TEST(OStreamWrapper, ostringstream) { - TestStringStream(); -} - -TEST(OStreamWrapper, stringstream) { - TestStringStream(); -} - -TEST(OStreamWrapper, wostringstream) { - TestStringStream(); -} - -TEST(OStreamWrapper, wstringstream) { - TestStringStream(); -} - -TEST(OStreamWrapper, cout) { - OStreamWrapper os(cout); - const char* s = "Hello World!\n"; - while (*s) - os.Put(*s++); - os.Flush(); -} - -template -static void TestFileStream() { - char filename[L_tmpnam]; - FILE* fp = TempFile(filename); - fclose(fp); - - const char* s = "Hello World!\n"; - { - ofstream ofs(filename, ios::out | ios::binary); - BasicOStreamWrapper osw(ofs); - for (const char* p = s; *p; p++) - osw.Put(*p); - osw.Flush(); - } - - fp = fopen(filename, "r"); - for (const char* p = s; *p; p++) - EXPECT_EQ(*p, static_cast(fgetc(fp))); - fclose(fp); -} - -TEST(OStreamWrapper, ofstream) { - TestFileStream(); -} - -TEST(OStreamWrapper, fstream) { - TestFileStream(); -} diff --git a/rapidjson-lib/test/unittest/pointertest.cpp b/rapidjson-lib/test/unittest/pointertest.cpp deleted file mode 100644 index dbddbed..0000000 --- a/rapidjson-lib/test/unittest/pointertest.cpp +++ /dev/null @@ -1,1524 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/pointer.h" -#include "rapidjson/stringbuffer.h" -#include - -using namespace rapidjson; - -static const char kJson[] = "{\n" -" \"foo\":[\"bar\", \"baz\"],\n" -" \"\" : 0,\n" -" \"a/b\" : 1,\n" -" \"c%d\" : 2,\n" -" \"e^f\" : 3,\n" -" \"g|h\" : 4,\n" -" \"i\\\\j\" : 5,\n" -" \"k\\\"l\" : 6,\n" -" \" \" : 7,\n" -" \"m~n\" : 8\n" -"}"; - -TEST(Pointer, DefaultConstructor) { - Pointer p; - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(0u, p.GetTokenCount()); -} - -TEST(Pointer, Parse) { - { - Pointer p(""); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(0u, p.GetTokenCount()); - } - - { - Pointer p("/"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(0u, p.GetTokens()[0].length); - EXPECT_STREQ("", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - { - Pointer p("/foo"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - #if RAPIDJSON_HAS_STDSTRING - { - Pointer p(std::string("/foo")); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - #endif - - { - Pointer p("/foo/0"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(2u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - EXPECT_EQ(1u, p.GetTokens()[1].length); - EXPECT_STREQ("0", p.GetTokens()[1].name); - EXPECT_EQ(0u, p.GetTokens()[1].index); - } - - { - // Unescape ~1 - Pointer p("/a~1b"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("a/b", p.GetTokens()[0].name); - } - - { - // Unescape ~0 - Pointer p("/m~0n"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("m~n", p.GetTokens()[0].name); - } - - { - // empty name - Pointer p("/"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(0u, p.GetTokens()[0].length); - EXPECT_STREQ("", p.GetTokens()[0].name); - } - - { - // empty and non-empty name - Pointer p("//a"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(2u, p.GetTokenCount()); - EXPECT_EQ(0u, p.GetTokens()[0].length); - EXPECT_STREQ("", p.GetTokens()[0].name); - EXPECT_EQ(1u, p.GetTokens()[1].length); - EXPECT_STREQ("a", p.GetTokens()[1].name); - } - - { - // Null characters - Pointer p("/\0\0", 3); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(2u, p.GetTokens()[0].length); - EXPECT_EQ('\0', p.GetTokens()[0].name[0]); - EXPECT_EQ('\0', p.GetTokens()[0].name[1]); - EXPECT_EQ('\0', p.GetTokens()[0].name[2]); - } - - { - // Valid index - Pointer p("/123"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("123", p.GetTokens()[0].name); - EXPECT_EQ(123u, p.GetTokens()[0].index); - } - - { - // Invalid index (with leading zero) - Pointer p("/01"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("01", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - if (sizeof(SizeType) == 4) { - // Invalid index (overflow) - Pointer p("/4294967296"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("4294967296", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - { - // kPointerParseErrorTokenMustBeginWithSolidus - Pointer p(" "); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorTokenMustBeginWithSolidus, p.GetParseErrorCode()); - EXPECT_EQ(0u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidEscape - Pointer p("/~"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidEscape, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidEscape - Pointer p("/~2"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidEscape, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } -} - -TEST(Pointer, Parse_URIFragment) { - { - Pointer p("#"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(0u, p.GetTokenCount()); - } - - { - Pointer p("#/foo"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - } - - { - Pointer p("#/foo/0"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(2u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - EXPECT_EQ(1u, p.GetTokens()[1].length); - EXPECT_STREQ("0", p.GetTokens()[1].name); - EXPECT_EQ(0u, p.GetTokens()[1].index); - } - - { - // Unescape ~1 - Pointer p("#/a~1b"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("a/b", p.GetTokens()[0].name); - } - - { - // Unescape ~0 - Pointer p("#/m~0n"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("m~n", p.GetTokens()[0].name); - } - - { - // empty name - Pointer p("#/"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(0u, p.GetTokens()[0].length); - EXPECT_STREQ("", p.GetTokens()[0].name); - } - - { - // empty and non-empty name - Pointer p("#//a"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(2u, p.GetTokenCount()); - EXPECT_EQ(0u, p.GetTokens()[0].length); - EXPECT_STREQ("", p.GetTokens()[0].name); - EXPECT_EQ(1u, p.GetTokens()[1].length); - EXPECT_STREQ("a", p.GetTokens()[1].name); - } - - { - // Null characters - Pointer p("#/%00%00"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(2u, p.GetTokens()[0].length); - EXPECT_EQ('\0', p.GetTokens()[0].name[0]); - EXPECT_EQ('\0', p.GetTokens()[0].name[1]); - EXPECT_EQ('\0', p.GetTokens()[0].name[2]); - } - - { - // Percentage Escapes - EXPECT_STREQ("c%d", Pointer("#/c%25d").GetTokens()[0].name); - EXPECT_STREQ("e^f", Pointer("#/e%5Ef").GetTokens()[0].name); - EXPECT_STREQ("g|h", Pointer("#/g%7Ch").GetTokens()[0].name); - EXPECT_STREQ("i\\j", Pointer("#/i%5Cj").GetTokens()[0].name); - EXPECT_STREQ("k\"l", Pointer("#/k%22l").GetTokens()[0].name); - EXPECT_STREQ(" ", Pointer("#/%20").GetTokens()[0].name); - } - - { - // Valid index - Pointer p("#/123"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("123", p.GetTokens()[0].name); - EXPECT_EQ(123u, p.GetTokens()[0].index); - } - - { - // Invalid index (with leading zero) - Pointer p("#/01"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("01", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - if (sizeof(SizeType) == 4) { - // Invalid index (overflow) - Pointer p("#/4294967296"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("4294967296", p.GetTokens()[0].name); - EXPECT_EQ(kPointerInvalidIndex, p.GetTokens()[0].index); - } - - { - // Decode UTF-8 perecent encoding to UTF-8 - Pointer p("#/%C2%A2"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_STREQ("\xC2\xA2", p.GetTokens()[0].name); - } - - { - // Decode UTF-8 perecent encoding to UTF-16 - GenericPointer > > p(L"#/%C2%A2"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(static_cast::Ch>(0x00A2), p.GetTokens()[0].name[0]); - EXPECT_EQ(1u, p.GetTokens()[0].length); - } - - { - // Decode UTF-8 perecent encoding to UTF-16 - GenericPointer > > p(L"#/%E2%82%AC"); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(1u, p.GetTokenCount()); - EXPECT_EQ(static_cast::Ch>(0x20AC), p.GetTokens()[0].name[0]); - EXPECT_EQ(1u, p.GetTokens()[0].length); - } - - { - // kPointerParseErrorTokenMustBeginWithSolidus - Pointer p("# "); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorTokenMustBeginWithSolidus, p.GetParseErrorCode()); - EXPECT_EQ(1u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidEscape - Pointer p("#/~"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidEscape, p.GetParseErrorCode()); - EXPECT_EQ(3u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidEscape - Pointer p("#/~2"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidEscape, p.GetParseErrorCode()); - EXPECT_EQ(3u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidPercentEncoding - Pointer p("#/%"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidPercentEncoding, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidPercentEncoding (invalid hex) - Pointer p("#/%g0"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidPercentEncoding, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidPercentEncoding (invalid hex) - Pointer p("#/%0g"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidPercentEncoding, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorInvalidPercentEncoding (incomplete UTF-8 sequence) - Pointer p("#/%C2"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorInvalidPercentEncoding, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorCharacterMustPercentEncode - Pointer p("#/ "); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorCharacterMustPercentEncode, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } - - { - // kPointerParseErrorCharacterMustPercentEncode - Pointer p("#/\n"); - EXPECT_FALSE(p.IsValid()); - EXPECT_EQ(kPointerParseErrorCharacterMustPercentEncode, p.GetParseErrorCode()); - EXPECT_EQ(2u, p.GetParseErrorOffset()); - } -} - -TEST(Pointer, Stringify) { - // Test by roundtrip - const char* sources[] = { - "", - "/foo", - "/foo/0", - "/", - "/a~1b", - "/c%d", - "/e^f", - "/g|h", - "/i\\j", - "/k\"l", - "/ ", - "/m~0n", - "/\xC2\xA2", - "/\xE2\x82\xAC", - "/\xF0\x9D\x84\x9E" - }; - - for (size_t i = 0; i < sizeof(sources) / sizeof(sources[0]); i++) { - Pointer p(sources[i]); - StringBuffer s; - EXPECT_TRUE(p.Stringify(s)); - EXPECT_STREQ(sources[i], s.GetString()); - - // Stringify to URI fragment - StringBuffer s2; - EXPECT_TRUE(p.StringifyUriFragment(s2)); - Pointer p2(s2.GetString(), s2.GetSize()); - EXPECT_TRUE(p2.IsValid()); - EXPECT_TRUE(p == p2); - } - - { - // Strigify to URI fragment with an invalid UTF-8 sequence - Pointer p("/\xC2"); - StringBuffer s; - EXPECT_FALSE(p.StringifyUriFragment(s)); - } -} - -// Construct a Pointer with static tokens, no dynamic allocation involved. -#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex } -#define INDEX(i) { #i, sizeof(#i) - 1, i } - -static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(0) }; // equivalent to "/foo/0" - -#undef NAME -#undef INDEX - -TEST(Pointer, ConstructorWithToken) { - Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); - EXPECT_TRUE(p.IsValid()); - EXPECT_EQ(2u, p.GetTokenCount()); - EXPECT_EQ(3u, p.GetTokens()[0].length); - EXPECT_STREQ("foo", p.GetTokens()[0].name); - EXPECT_EQ(1u, p.GetTokens()[1].length); - EXPECT_STREQ("0", p.GetTokens()[1].name); - EXPECT_EQ(0u, p.GetTokens()[1].index); -} - -TEST(Pointer, CopyConstructor) { - { - Pointer p("/foo/0"); - Pointer q(p); - EXPECT_TRUE(q.IsValid()); - EXPECT_EQ(2u, q.GetTokenCount()); - EXPECT_EQ(3u, q.GetTokens()[0].length); - EXPECT_STREQ("foo", q.GetTokens()[0].name); - EXPECT_EQ(1u, q.GetTokens()[1].length); - EXPECT_STREQ("0", q.GetTokens()[1].name); - EXPECT_EQ(0u, q.GetTokens()[1].index); - } - - // Static tokens - { - Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); - Pointer q(p); - EXPECT_TRUE(q.IsValid()); - EXPECT_EQ(2u, q.GetTokenCount()); - EXPECT_EQ(3u, q.GetTokens()[0].length); - EXPECT_STREQ("foo", q.GetTokens()[0].name); - EXPECT_EQ(1u, q.GetTokens()[1].length); - EXPECT_STREQ("0", q.GetTokens()[1].name); - EXPECT_EQ(0u, q.GetTokens()[1].index); - } -} - -TEST(Pointer, Assignment) { - { - Pointer p("/foo/0"); - Pointer q; - q = p; - EXPECT_TRUE(q.IsValid()); - EXPECT_EQ(2u, q.GetTokenCount()); - EXPECT_EQ(3u, q.GetTokens()[0].length); - EXPECT_STREQ("foo", q.GetTokens()[0].name); - EXPECT_EQ(1u, q.GetTokens()[1].length); - EXPECT_STREQ("0", q.GetTokens()[1].name); - EXPECT_EQ(0u, q.GetTokens()[1].index); - q = q; - EXPECT_TRUE(q.IsValid()); - EXPECT_EQ(2u, q.GetTokenCount()); - EXPECT_EQ(3u, q.GetTokens()[0].length); - EXPECT_STREQ("foo", q.GetTokens()[0].name); - EXPECT_EQ(1u, q.GetTokens()[1].length); - EXPECT_STREQ("0", q.GetTokens()[1].name); - EXPECT_EQ(0u, q.GetTokens()[1].index); - } - - // Static tokens - { - Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0])); - Pointer q; - q = p; - EXPECT_TRUE(q.IsValid()); - EXPECT_EQ(2u, q.GetTokenCount()); - EXPECT_EQ(3u, q.GetTokens()[0].length); - EXPECT_STREQ("foo", q.GetTokens()[0].name); - EXPECT_EQ(1u, q.GetTokens()[1].length); - EXPECT_STREQ("0", q.GetTokens()[1].name); - EXPECT_EQ(0u, q.GetTokens()[1].index); - } -} - -TEST(Pointer, Append) { - { - Pointer p; - Pointer q = p.Append("foo"); - EXPECT_TRUE(Pointer("/foo") == q); - q = q.Append(1234); - EXPECT_TRUE(Pointer("/foo/1234") == q); - q = q.Append(""); - EXPECT_TRUE(Pointer("/foo/1234/") == q); - } - - { - Pointer p; - Pointer q = p.Append(Value("foo").Move()); - EXPECT_TRUE(Pointer("/foo") == q); - q = q.Append(Value(1234).Move()); - EXPECT_TRUE(Pointer("/foo/1234") == q); - q = q.Append(Value(kStringType).Move()); - EXPECT_TRUE(Pointer("/foo/1234/") == q); - } - -#if RAPIDJSON_HAS_STDSTRING - { - Pointer p; - Pointer q = p.Append(std::string("foo")); - EXPECT_TRUE(Pointer("/foo") == q); - } -#endif -} - -TEST(Pointer, Equality) { - EXPECT_TRUE(Pointer("/foo/0") == Pointer("/foo/0")); - EXPECT_FALSE(Pointer("/foo/0") == Pointer("/foo/1")); - EXPECT_FALSE(Pointer("/foo/0") == Pointer("/foo/0/1")); - EXPECT_FALSE(Pointer("/foo/0") == Pointer("a")); - EXPECT_FALSE(Pointer("a") == Pointer("a")); // Invalid always not equal -} - -TEST(Pointer, Inequality) { - EXPECT_FALSE(Pointer("/foo/0") != Pointer("/foo/0")); - EXPECT_TRUE(Pointer("/foo/0") != Pointer("/foo/1")); - EXPECT_TRUE(Pointer("/foo/0") != Pointer("/foo/0/1")); - EXPECT_TRUE(Pointer("/foo/0") != Pointer("a")); - EXPECT_TRUE(Pointer("a") != Pointer("a")); // Invalid always not equal -} - -TEST(Pointer, Create) { - Document d; - { - Value* v = &Pointer("").Create(d, d.GetAllocator()); - EXPECT_EQ(&d, v); - } - { - Value* v = &Pointer("/foo").Create(d, d.GetAllocator()); - EXPECT_EQ(&d["foo"], v); - } - { - Value* v = &Pointer("/foo/0").Create(d, d.GetAllocator()); - EXPECT_EQ(&d["foo"][0], v); - } - { - Value* v = &Pointer("/foo/-").Create(d, d.GetAllocator()); - EXPECT_EQ(&d["foo"][1], v); - } - - { - Value* v = &Pointer("/foo/-/-").Create(d, d.GetAllocator()); - // "foo/-" is a newly created null value x. - // "foo/-/-" finds that x is not an array, it converts x to empty object - // and treats - as "-" member name - EXPECT_EQ(&d["foo"][2]["-"], v); - } - - { - // Document with no allocator - Value* v = &Pointer("/foo/-").Create(d); - EXPECT_EQ(&d["foo"][3], v); - } - - { - // Value (not document) must give allocator - Value* v = &Pointer("/-").Create(d["foo"], d.GetAllocator()); - EXPECT_EQ(&d["foo"][4], v); - } -} - -TEST(Pointer, Get) { - Document d; - d.Parse(kJson); - - EXPECT_EQ(&d, Pointer("").Get(d)); - EXPECT_EQ(&d["foo"], Pointer("/foo").Get(d)); - EXPECT_EQ(&d["foo"][0], Pointer("/foo/0").Get(d)); - EXPECT_EQ(&d[""], Pointer("/").Get(d)); - EXPECT_EQ(&d["a/b"], Pointer("/a~1b").Get(d)); - EXPECT_EQ(&d["c%d"], Pointer("/c%d").Get(d)); - EXPECT_EQ(&d["e^f"], Pointer("/e^f").Get(d)); - EXPECT_EQ(&d["g|h"], Pointer("/g|h").Get(d)); - EXPECT_EQ(&d["i\\j"], Pointer("/i\\j").Get(d)); - EXPECT_EQ(&d["k\"l"], Pointer("/k\"l").Get(d)); - EXPECT_EQ(&d[" "], Pointer("/ ").Get(d)); - EXPECT_EQ(&d["m~n"], Pointer("/m~0n").Get(d)); - EXPECT_TRUE(Pointer("/abc").Get(d) == 0); - size_t unresolvedTokenIndex; - EXPECT_TRUE(Pointer("/foo/2").Get(d, &unresolvedTokenIndex) == 0); // Out of boundary - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(Pointer("/foo/a").Get(d, &unresolvedTokenIndex) == 0); // "/foo" is an array, cannot query by "a" - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(Pointer("/foo/0/0").Get(d, &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); - EXPECT_TRUE(Pointer("/foo/0/a").Get(d, &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); -} - -TEST(Pointer, GetWithDefault) { - Document d; - d.Parse(kJson); - - // Value version - Document::AllocatorType& a = d.GetAllocator(); - const Value v("qux"); - EXPECT_TRUE(Value("bar") == Pointer("/foo/0").GetWithDefault(d, v, a)); - EXPECT_TRUE(Value("baz") == Pointer("/foo/1").GetWithDefault(d, v, a)); - EXPECT_TRUE(Value("qux") == Pointer("/foo/2").GetWithDefault(d, v, a)); - EXPECT_TRUE(Value("last") == Pointer("/foo/-").GetWithDefault(d, Value("last").Move(), a)); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(Pointer("/foo/null").GetWithDefault(d, Value().Move(), a).IsNull()); - EXPECT_TRUE(Pointer("/foo/null").GetWithDefault(d, "x", a).IsNull()); - - // Generic version - EXPECT_EQ(-1, Pointer("/foo/int").GetWithDefault(d, -1, a).GetInt()); - EXPECT_EQ(-1, Pointer("/foo/int").GetWithDefault(d, -2, a).GetInt()); - EXPECT_EQ(0x87654321, Pointer("/foo/uint").GetWithDefault(d, 0x87654321, a).GetUint()); - EXPECT_EQ(0x87654321, Pointer("/foo/uint").GetWithDefault(d, 0x12345678, a).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, Pointer("/foo/int64").GetWithDefault(d, i64, a).GetInt64()); - EXPECT_EQ(i64, Pointer("/foo/int64").GetWithDefault(d, i64 + 1, a).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, Pointer("/foo/uint64").GetWithDefault(d, u64, a).GetUint64()); - EXPECT_EQ(u64, Pointer("/foo/uint64").GetWithDefault(d, u64 - 1, a).GetUint64()); - - EXPECT_TRUE(Pointer("/foo/true").GetWithDefault(d, true, a).IsTrue()); - EXPECT_TRUE(Pointer("/foo/true").GetWithDefault(d, false, a).IsTrue()); - - EXPECT_TRUE(Pointer("/foo/false").GetWithDefault(d, false, a).IsFalse()); - EXPECT_TRUE(Pointer("/foo/false").GetWithDefault(d, true, a).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", Pointer("/foo/hello").GetWithDefault(d, "Hello", a).GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", Pointer("/foo/world").GetWithDefault(d, buffer, a).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", Pointer("/foo/C++").GetWithDefault(d, std::string("C++"), a).GetString()); -#endif -} - -TEST(Pointer, GetWithDefault_NoAllocator) { - Document d; - d.Parse(kJson); - - // Value version - const Value v("qux"); - EXPECT_TRUE(Value("bar") == Pointer("/foo/0").GetWithDefault(d, v)); - EXPECT_TRUE(Value("baz") == Pointer("/foo/1").GetWithDefault(d, v)); - EXPECT_TRUE(Value("qux") == Pointer("/foo/2").GetWithDefault(d, v)); - EXPECT_TRUE(Value("last") == Pointer("/foo/-").GetWithDefault(d, Value("last").Move())); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(Pointer("/foo/null").GetWithDefault(d, Value().Move()).IsNull()); - EXPECT_TRUE(Pointer("/foo/null").GetWithDefault(d, "x").IsNull()); - - // Generic version - EXPECT_EQ(-1, Pointer("/foo/int").GetWithDefault(d, -1).GetInt()); - EXPECT_EQ(-1, Pointer("/foo/int").GetWithDefault(d, -2).GetInt()); - EXPECT_EQ(0x87654321, Pointer("/foo/uint").GetWithDefault(d, 0x87654321).GetUint()); - EXPECT_EQ(0x87654321, Pointer("/foo/uint").GetWithDefault(d, 0x12345678).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, Pointer("/foo/int64").GetWithDefault(d, i64).GetInt64()); - EXPECT_EQ(i64, Pointer("/foo/int64").GetWithDefault(d, i64 + 1).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, Pointer("/foo/uint64").GetWithDefault(d, u64).GetUint64()); - EXPECT_EQ(u64, Pointer("/foo/uint64").GetWithDefault(d, u64 - 1).GetUint64()); - - EXPECT_TRUE(Pointer("/foo/true").GetWithDefault(d, true).IsTrue()); - EXPECT_TRUE(Pointer("/foo/true").GetWithDefault(d, false).IsTrue()); - - EXPECT_TRUE(Pointer("/foo/false").GetWithDefault(d, false).IsFalse()); - EXPECT_TRUE(Pointer("/foo/false").GetWithDefault(d, true).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", Pointer("/foo/hello").GetWithDefault(d, "Hello").GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", Pointer("/foo/world").GetWithDefault(d, buffer).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", Pointer("/foo/C++").GetWithDefault(d, std::string("C++")).GetString()); -#endif -} - -TEST(Pointer, Set) { - Document d; - d.Parse(kJson); - Document::AllocatorType& a = d.GetAllocator(); - - // Value version - Pointer("/foo/0").Set(d, Value(123).Move(), a); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - Pointer("/foo/-").Set(d, Value(456).Move(), a); - EXPECT_EQ(456, d["foo"][2].GetInt()); - - Pointer("/foo/null").Set(d, Value().Move(), a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], a); - Pointer("/clone").Set(d, foo, a); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - Pointer("/foo/int").Set(d, -1, a); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - Pointer("/foo/uint").Set(d, 0x87654321, a); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - Pointer("/foo/int64").Set(d, i64, a); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - Pointer("/foo/uint64").Set(d, u64, a); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - Pointer("/foo/true").Set(d, true, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - Pointer("/foo/false").Set(d, false, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - Pointer("/foo/hello").Set(d, "Hello", a); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - Pointer("/foo/world").Set(d, buffer, a); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - Pointer("/foo/c++").Set(d, std::string("C++"), a); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, Set_NoAllocator) { - Document d; - d.Parse(kJson); - - // Value version - Pointer("/foo/0").Set(d, Value(123).Move()); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - Pointer("/foo/-").Set(d, Value(456).Move()); - EXPECT_EQ(456, d["foo"][2].GetInt()); - - Pointer("/foo/null").Set(d, Value().Move()); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], d.GetAllocator()); - Pointer("/clone").Set(d, foo); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - Pointer("/foo/int").Set(d, -1); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - Pointer("/foo/uint").Set(d, 0x87654321); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - Pointer("/foo/int64").Set(d, i64); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - Pointer("/foo/uint64").Set(d, u64); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - Pointer("/foo/true").Set(d, true); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - Pointer("/foo/false").Set(d, false); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - Pointer("/foo/hello").Set(d, "Hello"); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - Pointer("/foo/world").Set(d, buffer); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - Pointer("/foo/c++").Set(d, std::string("C++")); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, Swap) { - Document d; - d.Parse(kJson); - Document::AllocatorType& a = d.GetAllocator(); - Pointer("/foo/0").Swap(d, *Pointer("/foo/1").Get(d), a); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_STREQ("bar", d["foo"][1].GetString()); -} - -TEST(Pointer, Swap_NoAllocator) { - Document d; - d.Parse(kJson); - Pointer("/foo/0").Swap(d, *Pointer("/foo/1").Get(d)); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_STREQ("bar", d["foo"][1].GetString()); -} - -TEST(Pointer, Erase) { - Document d; - d.Parse(kJson); - - EXPECT_FALSE(Pointer("").Erase(d)); - EXPECT_FALSE(Pointer("/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/nonexist/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/foo/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/foo/nonexist/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/foo/0/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/foo/0/nonexist/nonexist").Erase(d)); - EXPECT_FALSE(Pointer("/foo/2/nonexist").Erase(d)); - EXPECT_TRUE(Pointer("/foo/0").Erase(d)); - EXPECT_EQ(1u, d["foo"].Size()); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_TRUE(Pointer("/foo/0").Erase(d)); - EXPECT_TRUE(d["foo"].Empty()); - EXPECT_TRUE(Pointer("/foo").Erase(d)); - EXPECT_TRUE(Pointer("/foo").Get(d) == 0); - - Pointer("/a/0/b/0").Create(d); - - EXPECT_TRUE(Pointer("/a/0/b/0").Get(d) != 0); - EXPECT_TRUE(Pointer("/a/0/b/0").Erase(d)); - EXPECT_TRUE(Pointer("/a/0/b/0").Get(d) == 0); - - EXPECT_TRUE(Pointer("/a/0/b").Get(d) != 0); - EXPECT_TRUE(Pointer("/a/0/b").Erase(d)); - EXPECT_TRUE(Pointer("/a/0/b").Get(d) == 0); - - EXPECT_TRUE(Pointer("/a/0").Get(d) != 0); - EXPECT_TRUE(Pointer("/a/0").Erase(d)); - EXPECT_TRUE(Pointer("/a/0").Get(d) == 0); - - EXPECT_TRUE(Pointer("/a").Get(d) != 0); - EXPECT_TRUE(Pointer("/a").Erase(d)); - EXPECT_TRUE(Pointer("/a").Get(d) == 0); -} - -TEST(Pointer, CreateValueByPointer) { - Document d; - Document::AllocatorType& a = d.GetAllocator(); - - { - Value& v = CreateValueByPointer(d, Pointer("/foo/0"), a); - EXPECT_EQ(&d["foo"][0], &v); - } - { - Value& v = CreateValueByPointer(d, "/foo/1", a); - EXPECT_EQ(&d["foo"][1], &v); - } -} - -TEST(Pointer, CreateValueByPointer_NoAllocator) { - Document d; - - { - Value& v = CreateValueByPointer(d, Pointer("/foo/0")); - EXPECT_EQ(&d["foo"][0], &v); - } - { - Value& v = CreateValueByPointer(d, "/foo/1"); - EXPECT_EQ(&d["foo"][1], &v); - } -} - -TEST(Pointer, GetValueByPointer) { - Document d; - d.Parse(kJson); - - EXPECT_EQ(&d["foo"][0], GetValueByPointer(d, Pointer("/foo/0"))); - EXPECT_EQ(&d["foo"][0], GetValueByPointer(d, "/foo/0")); - - size_t unresolvedTokenIndex; - EXPECT_TRUE(GetValueByPointer(d, "/foo/2", &unresolvedTokenIndex) == 0); // Out of boundary - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(d, "/foo/a", &unresolvedTokenIndex) == 0); // "/foo" is an array, cannot query by "a" - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(d, "/foo/0/0", &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(d, "/foo/0/a", &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); - - // const version - const Value& v = d; - EXPECT_EQ(&d["foo"][0], GetValueByPointer(v, Pointer("/foo/0"))); - EXPECT_EQ(&d["foo"][0], GetValueByPointer(v, "/foo/0")); - - EXPECT_TRUE(GetValueByPointer(v, "/foo/2", &unresolvedTokenIndex) == 0); // Out of boundary - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(v, "/foo/a", &unresolvedTokenIndex) == 0); // "/foo" is an array, cannot query by "a" - EXPECT_EQ(1, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(v, "/foo/0/0", &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); - EXPECT_TRUE(GetValueByPointer(v, "/foo/0/a", &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query - EXPECT_EQ(2, unresolvedTokenIndex); - -} - -TEST(Pointer, GetValueByPointerWithDefault_Pointer) { - Document d; - d.Parse(kJson); - - Document::AllocatorType& a = d.GetAllocator(); - const Value v("qux"); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, Pointer("/foo/0"), v, a)); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, Pointer("/foo/0"), v, a)); - EXPECT_TRUE(Value("baz") == GetValueByPointerWithDefault(d, Pointer("/foo/1"), v, a)); - EXPECT_TRUE(Value("qux") == GetValueByPointerWithDefault(d, Pointer("/foo/2"), v, a)); - EXPECT_TRUE(Value("last") == GetValueByPointerWithDefault(d, Pointer("/foo/-"), Value("last").Move(), a)); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/null"), Value().Move(), a).IsNull()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/null"), "x", a).IsNull()); - - // Generic version - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, Pointer("/foo/int"), -1, a).GetInt()); - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, Pointer("/foo/int"), -2, a).GetInt()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, Pointer("/foo/uint"), 0x87654321, a).GetUint()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, Pointer("/foo/uint"), 0x12345678, a).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, Pointer("/foo/int64"), i64, a).GetInt64()); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, Pointer("/foo/int64"), i64 + 1, a).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, Pointer("/foo/uint64"), u64, a).GetUint64()); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, Pointer("/foo/uint64"), u64 - 1, a).GetUint64()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/true"), true, a).IsTrue()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/true"), false, a).IsTrue()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/false"), false, a).IsFalse()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/false"), true, a).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", GetValueByPointerWithDefault(d, Pointer("/foo/hello"), "Hello", a).GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", GetValueByPointerWithDefault(d, Pointer("/foo/world"), buffer, a).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, Pointer("/foo/world"))->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", GetValueByPointerWithDefault(d, Pointer("/foo/C++"), std::string("C++"), a).GetString()); -#endif -} - -TEST(Pointer, GetValueByPointerWithDefault_String) { - Document d; - d.Parse(kJson); - - Document::AllocatorType& a = d.GetAllocator(); - const Value v("qux"); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, "/foo/0", v, a)); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, "/foo/0", v, a)); - EXPECT_TRUE(Value("baz") == GetValueByPointerWithDefault(d, "/foo/1", v, a)); - EXPECT_TRUE(Value("qux") == GetValueByPointerWithDefault(d, "/foo/2", v, a)); - EXPECT_TRUE(Value("last") == GetValueByPointerWithDefault(d, "/foo/-", Value("last").Move(), a)); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/null", Value().Move(), a).IsNull()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/null", "x", a).IsNull()); - - // Generic version - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, "/foo/int", -1, a).GetInt()); - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, "/foo/int", -2, a).GetInt()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, "/foo/uint", 0x87654321, a).GetUint()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, "/foo/uint", 0x12345678, a).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, "/foo/int64", i64, a).GetInt64()); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, "/foo/int64", i64 + 1, a).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, "/foo/uint64", u64, a).GetUint64()); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, "/foo/uint64", u64 - 1, a).GetUint64()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/true", true, a).IsTrue()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/true", false, a).IsTrue()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/false", false, a).IsFalse()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/false", true, a).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", GetValueByPointerWithDefault(d, "/foo/hello", "Hello", a).GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", GetValueByPointerWithDefault(d, "/foo/world", buffer, a).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", GetValueByPointerWithDefault(d, "/foo/C++", std::string("C++"), a).GetString()); -#endif -} - -TEST(Pointer, GetValueByPointerWithDefault_Pointer_NoAllocator) { - Document d; - d.Parse(kJson); - - const Value v("qux"); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, Pointer("/foo/0"), v)); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, Pointer("/foo/0"), v)); - EXPECT_TRUE(Value("baz") == GetValueByPointerWithDefault(d, Pointer("/foo/1"), v)); - EXPECT_TRUE(Value("qux") == GetValueByPointerWithDefault(d, Pointer("/foo/2"), v)); - EXPECT_TRUE(Value("last") == GetValueByPointerWithDefault(d, Pointer("/foo/-"), Value("last").Move())); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/null"), Value().Move()).IsNull()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/null"), "x").IsNull()); - - // Generic version - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, Pointer("/foo/int"), -1).GetInt()); - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, Pointer("/foo/int"), -2).GetInt()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, Pointer("/foo/uint"), 0x87654321).GetUint()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, Pointer("/foo/uint"), 0x12345678).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, Pointer("/foo/int64"), i64).GetInt64()); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, Pointer("/foo/int64"), i64 + 1).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, Pointer("/foo/uint64"), u64).GetUint64()); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, Pointer("/foo/uint64"), u64 - 1).GetUint64()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/true"), true).IsTrue()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/true"), false).IsTrue()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/false"), false).IsFalse()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, Pointer("/foo/false"), true).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", GetValueByPointerWithDefault(d, Pointer("/foo/hello"), "Hello").GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", GetValueByPointerWithDefault(d, Pointer("/foo/world"), buffer).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, Pointer("/foo/world"))->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", GetValueByPointerWithDefault(d, Pointer("/foo/C++"), std::string("C++")).GetString()); -#endif -} - -TEST(Pointer, GetValueByPointerWithDefault_String_NoAllocator) { - Document d; - d.Parse(kJson); - - const Value v("qux"); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, "/foo/0", v)); - EXPECT_TRUE(Value("bar") == GetValueByPointerWithDefault(d, "/foo/0", v)); - EXPECT_TRUE(Value("baz") == GetValueByPointerWithDefault(d, "/foo/1", v)); - EXPECT_TRUE(Value("qux") == GetValueByPointerWithDefault(d, "/foo/2", v)); - EXPECT_TRUE(Value("last") == GetValueByPointerWithDefault(d, "/foo/-", Value("last").Move())); - EXPECT_STREQ("last", d["foo"][3].GetString()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/null", Value().Move()).IsNull()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/null", "x").IsNull()); - - // Generic version - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, "/foo/int", -1).GetInt()); - EXPECT_EQ(-1, GetValueByPointerWithDefault(d, "/foo/int", -2).GetInt()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, "/foo/uint", 0x87654321).GetUint()); - EXPECT_EQ(0x87654321, GetValueByPointerWithDefault(d, "/foo/uint", 0x12345678).GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, "/foo/int64", i64).GetInt64()); - EXPECT_EQ(i64, GetValueByPointerWithDefault(d, "/foo/int64", i64 + 1).GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, "/foo/uint64", u64).GetUint64()); - EXPECT_EQ(u64, GetValueByPointerWithDefault(d, "/foo/uint64", u64 - 1).GetUint64()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/true", true).IsTrue()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/true", false).IsTrue()); - - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/false", false).IsFalse()); - EXPECT_TRUE(GetValueByPointerWithDefault(d, "/foo/false", true).IsFalse()); - - // StringRef version - EXPECT_STREQ("Hello", GetValueByPointerWithDefault(d, "/foo/hello", "Hello").GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - EXPECT_STREQ("World", GetValueByPointerWithDefault(d, "/foo/world", buffer).GetString()); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("C++", GetValueByPointerWithDefault(d, Pointer("/foo/C++"), std::string("C++")).GetString()); -#endif -} - -TEST(Pointer, SetValueByPointer_Pointer) { - Document d; - d.Parse(kJson); - Document::AllocatorType& a = d.GetAllocator(); - - // Value version - SetValueByPointer(d, Pointer("/foo/0"), Value(123).Move(), a); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - SetValueByPointer(d, Pointer("/foo/null"), Value().Move(), a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], d.GetAllocator()); - SetValueByPointer(d, Pointer("/clone"), foo, a); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - SetValueByPointer(d, Pointer("/foo/int"), -1, a); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - SetValueByPointer(d, Pointer("/foo/uint"), 0x87654321, a); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - SetValueByPointer(d, Pointer("/foo/int64"), i64, a); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - SetValueByPointer(d, Pointer("/foo/uint64"), u64, a); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - SetValueByPointer(d, Pointer("/foo/true"), true, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - SetValueByPointer(d, Pointer("/foo/false"), false, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - SetValueByPointer(d, Pointer("/foo/hello"), "Hello", a); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - SetValueByPointer(d, Pointer("/foo/world"), buffer, a); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - SetValueByPointer(d, Pointer("/foo/c++"), std::string("C++"), a); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, SetValueByPointer_String) { - Document d; - d.Parse(kJson); - Document::AllocatorType& a = d.GetAllocator(); - - // Value version - SetValueByPointer(d, "/foo/0", Value(123).Move(), a); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - SetValueByPointer(d, "/foo/null", Value().Move(), a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], d.GetAllocator()); - SetValueByPointer(d, "/clone", foo, a); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - SetValueByPointer(d, "/foo/int", -1, a); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - SetValueByPointer(d, "/foo/uint", 0x87654321, a); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - SetValueByPointer(d, "/foo/int64", i64, a); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - SetValueByPointer(d, "/foo/uint64", u64, a); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - SetValueByPointer(d, "/foo/true", true, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - SetValueByPointer(d, "/foo/false", false, a); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - SetValueByPointer(d, "/foo/hello", "Hello", a); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - SetValueByPointer(d, "/foo/world", buffer, a); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - SetValueByPointer(d, "/foo/c++", std::string("C++"), a); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, SetValueByPointer_Pointer_NoAllocator) { - Document d; - d.Parse(kJson); - - // Value version - SetValueByPointer(d, Pointer("/foo/0"), Value(123).Move()); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - SetValueByPointer(d, Pointer("/foo/null"), Value().Move()); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], d.GetAllocator()); - SetValueByPointer(d, Pointer("/clone"), foo); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - SetValueByPointer(d, Pointer("/foo/int"), -1); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - SetValueByPointer(d, Pointer("/foo/uint"), 0x87654321); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - SetValueByPointer(d, Pointer("/foo/int64"), i64); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - SetValueByPointer(d, Pointer("/foo/uint64"), u64); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - SetValueByPointer(d, Pointer("/foo/true"), true); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - SetValueByPointer(d, Pointer("/foo/false"), false); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - SetValueByPointer(d, Pointer("/foo/hello"), "Hello"); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - SetValueByPointer(d, Pointer("/foo/world"), buffer); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - SetValueByPointer(d, Pointer("/foo/c++"), std::string("C++")); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, SetValueByPointer_String_NoAllocator) { - Document d; - d.Parse(kJson); - - // Value version - SetValueByPointer(d, "/foo/0", Value(123).Move()); - EXPECT_EQ(123, d["foo"][0].GetInt()); - - SetValueByPointer(d, "/foo/null", Value().Move()); - EXPECT_TRUE(GetValueByPointer(d, "/foo/null")->IsNull()); - - // Const Value version - const Value foo(d["foo"], d.GetAllocator()); - SetValueByPointer(d, "/clone", foo); - EXPECT_EQ(foo, *GetValueByPointer(d, "/clone")); - - // Generic version - SetValueByPointer(d, "/foo/int", -1); - EXPECT_EQ(-1, GetValueByPointer(d, "/foo/int")->GetInt()); - - SetValueByPointer(d, "/foo/uint", 0x87654321); - EXPECT_EQ(0x87654321, GetValueByPointer(d, "/foo/uint")->GetUint()); - - const int64_t i64 = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0)); - SetValueByPointer(d, "/foo/int64", i64); - EXPECT_EQ(i64, GetValueByPointer(d, "/foo/int64")->GetInt64()); - - const uint64_t u64 = RAPIDJSON_UINT64_C2(0xFFFFFFFFF, 0xFFFFFFFFF); - SetValueByPointer(d, "/foo/uint64", u64); - EXPECT_EQ(u64, GetValueByPointer(d, "/foo/uint64")->GetUint64()); - - SetValueByPointer(d, "/foo/true", true); - EXPECT_TRUE(GetValueByPointer(d, "/foo/true")->IsTrue()); - - SetValueByPointer(d, "/foo/false", false); - EXPECT_TRUE(GetValueByPointer(d, "/foo/false")->IsFalse()); - - // StringRef version - SetValueByPointer(d, "/foo/hello", "Hello"); - EXPECT_STREQ("Hello", GetValueByPointer(d, "/foo/hello")->GetString()); - - // Copy string version - { - char buffer[256]; - strcpy(buffer, "World"); - SetValueByPointer(d, "/foo/world", buffer); - memset(buffer, 0, sizeof(buffer)); - } - EXPECT_STREQ("World", GetValueByPointer(d, "/foo/world")->GetString()); - -#if RAPIDJSON_HAS_STDSTRING - SetValueByPointer(d, "/foo/c++", std::string("C++")); - EXPECT_STREQ("C++", GetValueByPointer(d, "/foo/c++")->GetString()); -#endif -} - -TEST(Pointer, SwapValueByPointer) { - Document d; - d.Parse(kJson); - Document::AllocatorType& a = d.GetAllocator(); - SwapValueByPointer(d, Pointer("/foo/0"), *GetValueByPointer(d, "/foo/1"), a); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_STREQ("bar", d["foo"][1].GetString()); - - SwapValueByPointer(d, "/foo/0", *GetValueByPointer(d, "/foo/1"), a); - EXPECT_STREQ("bar", d["foo"][0].GetString()); - EXPECT_STREQ("baz", d["foo"][1].GetString()); -} - -TEST(Pointer, SwapValueByPointer_NoAllocator) { - Document d; - d.Parse(kJson); - SwapValueByPointer(d, Pointer("/foo/0"), *GetValueByPointer(d, "/foo/1")); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_STREQ("bar", d["foo"][1].GetString()); - - SwapValueByPointer(d, "/foo/0", *GetValueByPointer(d, "/foo/1")); - EXPECT_STREQ("bar", d["foo"][0].GetString()); - EXPECT_STREQ("baz", d["foo"][1].GetString()); -} - -TEST(Pointer, EraseValueByPointer_Pointer) { - Document d; - d.Parse(kJson); - - EXPECT_FALSE(EraseValueByPointer(d, Pointer(""))); - EXPECT_FALSE(Pointer("/foo/nonexist").Erase(d)); - EXPECT_TRUE(EraseValueByPointer(d, Pointer("/foo/0"))); - EXPECT_EQ(1u, d["foo"].Size()); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_TRUE(EraseValueByPointer(d, Pointer("/foo/0"))); - EXPECT_TRUE(d["foo"].Empty()); - EXPECT_TRUE(EraseValueByPointer(d, Pointer("/foo"))); - EXPECT_TRUE(Pointer("/foo").Get(d) == 0); -} - -TEST(Pointer, EraseValueByPointer_String) { - Document d; - d.Parse(kJson); - - EXPECT_FALSE(EraseValueByPointer(d, "")); - EXPECT_FALSE(Pointer("/foo/nonexist").Erase(d)); - EXPECT_TRUE(EraseValueByPointer(d, "/foo/0")); - EXPECT_EQ(1u, d["foo"].Size()); - EXPECT_STREQ("baz", d["foo"][0].GetString()); - EXPECT_TRUE(EraseValueByPointer(d, "/foo/0")); - EXPECT_TRUE(d["foo"].Empty()); - EXPECT_TRUE(EraseValueByPointer(d, "/foo")); - EXPECT_TRUE(Pointer("/foo").Get(d) == 0); -} - -TEST(Pointer, Ambiguity) { - { - Document d; - d.Parse("{\"0\" : [123]}"); - EXPECT_EQ(123, Pointer("/0/0").Get(d)->GetInt()); - Pointer("/0/a").Set(d, 456); // Change array [123] to object {456} - EXPECT_EQ(456, Pointer("/0/a").Get(d)->GetInt()); - } - - { - Document d; - EXPECT_FALSE(d.Parse("[{\"0\": 123}]").HasParseError()); - EXPECT_EQ(123, Pointer("/0/0").Get(d)->GetInt()); - Pointer("/0/1").Set(d, 456); // 1 is treated as "1" to index object - EXPECT_EQ(123, Pointer("/0/0").Get(d)->GetInt()); - EXPECT_EQ(456, Pointer("/0/1").Get(d)->GetInt()); - } -} - -// https://github.com/miloyip/rapidjson/issues/483 -namespace myjson { - -class MyAllocator -{ -public: - static const bool kNeedFree = true; - void * Malloc(size_t _size) { return malloc(_size); } - void * Realloc(void *_org_p, size_t _org_size, size_t _new_size) { (void)_org_size; return realloc(_org_p, _new_size); } - static void Free(void *_p) { return free(_p); } -}; - -typedef rapidjson::GenericDocument< - rapidjson::UTF8<>, - rapidjson::MemoryPoolAllocator< MyAllocator >, - MyAllocator - > Document; - -typedef rapidjson::GenericPointer< - ::myjson::Document::ValueType, - MyAllocator - > Pointer; - -typedef ::myjson::Document::ValueType Value; - -} - -TEST(Pointer, Issue483) { - std::string mystr, path; - myjson::Document document; - myjson::Value value(rapidjson::kStringType); - value.SetString(mystr.c_str(), static_cast(mystr.length()), document.GetAllocator()); - myjson::Pointer(path.c_str()).Set(document, value, document.GetAllocator()); -} diff --git a/rapidjson-lib/test/unittest/prettywritertest.cpp b/rapidjson-lib/test/unittest/prettywritertest.cpp deleted file mode 100644 index a372f79..0000000 --- a/rapidjson-lib/test/unittest/prettywritertest.cpp +++ /dev/null @@ -1,203 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/reader.h" -#include "rapidjson/prettywriter.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/filewritestream.h" - -using namespace rapidjson; - -static const char kJson[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,-1],\"u64\":1234567890123456789,\"i64\":-1234567890123456789}"; -static const char kPrettyJson[] = -"{\n" -" \"hello\": \"world\",\n" -" \"t\": true,\n" -" \"f\": false,\n" -" \"n\": null,\n" -" \"i\": 123,\n" -" \"pi\": 3.1416,\n" -" \"a\": [\n" -" 1,\n" -" 2,\n" -" 3,\n" -" -1\n" -" ],\n" -" \"u64\": 1234567890123456789,\n" -" \"i64\": -1234567890123456789\n" -"}"; - -static const char kPrettyJson_FormatOptions_SLA[] = -"{\n" -" \"hello\": \"world\",\n" -" \"t\": true,\n" -" \"f\": false,\n" -" \"n\": null,\n" -" \"i\": 123,\n" -" \"pi\": 3.1416,\n" -" \"a\": [1, 2, 3, -1],\n" -" \"u64\": 1234567890123456789,\n" -" \"i64\": -1234567890123456789\n" -"}"; - -TEST(PrettyWriter, Basic) { - StringBuffer buffer; - PrettyWriter writer(buffer); - Reader reader; - StringStream s(kJson); - reader.Parse(s, writer); - EXPECT_STREQ(kPrettyJson, buffer.GetString()); -} - -TEST(PrettyWriter, FormatOptions) { - StringBuffer buffer; - PrettyWriter writer(buffer); - writer.SetFormatOptions(kFormatSingleLineArray); - Reader reader; - StringStream s(kJson); - reader.Parse(s, writer); - EXPECT_STREQ(kPrettyJson_FormatOptions_SLA, buffer.GetString()); -} - -TEST(PrettyWriter, SetIndent) { - StringBuffer buffer; - PrettyWriter writer(buffer); - writer.SetIndent('\t', 1); - Reader reader; - StringStream s(kJson); - reader.Parse(s, writer); - EXPECT_STREQ( - "{\n" - "\t\"hello\": \"world\",\n" - "\t\"t\": true,\n" - "\t\"f\": false,\n" - "\t\"n\": null,\n" - "\t\"i\": 123,\n" - "\t\"pi\": 3.1416,\n" - "\t\"a\": [\n" - "\t\t1,\n" - "\t\t2,\n" - "\t\t3,\n" - "\t\t-1\n" - "\t],\n" - "\t\"u64\": 1234567890123456789,\n" - "\t\"i64\": -1234567890123456789\n" - "}", - buffer.GetString()); -} - -TEST(PrettyWriter, String) { - StringBuffer buffer; - PrettyWriter writer(buffer); - EXPECT_TRUE(writer.StartArray()); - EXPECT_TRUE(writer.String("Hello\n")); - EXPECT_TRUE(writer.EndArray()); - EXPECT_STREQ("[\n \"Hello\\n\"\n]", buffer.GetString()); -} - -#if RAPIDJSON_HAS_STDSTRING -TEST(PrettyWriter, String_STDSTRING) { - StringBuffer buffer; - PrettyWriter writer(buffer); - EXPECT_TRUE(writer.StartArray()); - EXPECT_TRUE(writer.String(std::string("Hello\n"))); - EXPECT_TRUE(writer.EndArray()); - EXPECT_STREQ("[\n \"Hello\\n\"\n]", buffer.GetString()); -} -#endif - -#include - -class OStreamWrapper { -public: - typedef char Ch; - - OStreamWrapper(std::ostream& os) : os_(os) {} - - Ch Peek() const { assert(false); return '\0'; } - Ch Take() { assert(false); return '\0'; } - size_t Tell() const { return 0; } - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch c) { os_.put(c); } - void Flush() { os_.flush(); } - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - OStreamWrapper(const OStreamWrapper&); - OStreamWrapper& operator=(const OStreamWrapper&); - - std::ostream& os_; -}; - -// For covering PutN() generic version -TEST(PrettyWriter, OStreamWrapper) { - StringStream s(kJson); - - std::stringstream ss; - OStreamWrapper os(ss); - - PrettyWriter writer(os); - - Reader reader; - reader.Parse(s, writer); - - std::string actual = ss.str(); - EXPECT_STREQ(kPrettyJson, actual.c_str()); -} - -// For covering FileWriteStream::PutN() -TEST(PrettyWriter, FileWriteStream) { - char filename[L_tmpnam]; - FILE* fp = TempFile(filename); - char buffer[16]; - FileWriteStream os(fp, buffer, sizeof(buffer)); - PrettyWriter writer(os); - Reader reader; - StringStream s(kJson); - reader.Parse(s, writer); - fclose(fp); - - fp = fopen(filename, "rb"); - fseek(fp, 0, SEEK_END); - size_t size = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - char* json = static_cast(malloc(size + 1)); - size_t readLength = fread(json, 1, size, fp); - json[readLength] = '\0'; - fclose(fp); - remove(filename); - EXPECT_STREQ(kPrettyJson, json); - free(json); -} - -TEST(PrettyWriter, RawValue) { - StringBuffer buffer; - PrettyWriter writer(buffer); - writer.StartObject(); - writer.Key("a"); - writer.Int(1); - writer.Key("raw"); - const char json[] = "[\"Hello\\nWorld\", 123.456]"; - writer.RawValue(json, strlen(json), kArrayType); - writer.EndObject(); - EXPECT_TRUE(writer.IsComplete()); - EXPECT_STREQ( - "{\n" - " \"a\": 1,\n" - " \"raw\": [\"Hello\\nWorld\", 123.456]\n" // no indentation within raw value - "}", - buffer.GetString()); -} diff --git a/rapidjson-lib/test/unittest/readertest.cpp b/rapidjson-lib/test/unittest/readertest.cpp deleted file mode 100644 index 64a1f9c..0000000 --- a/rapidjson-lib/test/unittest/readertest.cpp +++ /dev/null @@ -1,1844 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/reader.h" -#include "rapidjson/internal/dtoa.h" -#include "rapidjson/internal/itoa.h" -#include "rapidjson/memorystream.h" - -#include - -using namespace rapidjson; - -RAPIDJSON_DIAG_PUSH -#ifdef __GNUC__ -RAPIDJSON_DIAG_OFF(effc++) -RAPIDJSON_DIAG_OFF(float-equal) -RAPIDJSON_DIAG_OFF(missing-noreturn) -#if __GNUC__ >= 7 -RAPIDJSON_DIAG_OFF(dangling-else) -#endif -#endif // __GNUC__ - -#ifdef __clang__ -RAPIDJSON_DIAG_OFF(variadic-macros) -RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) -#endif - -template -struct ParseBoolHandler : BaseReaderHandler, ParseBoolHandler > { - ParseBoolHandler() : step_(0) {} - bool Default() { ADD_FAILURE(); return false; } - // gcc 4.8.x generates warning in EXPECT_EQ(bool, bool) on this gtest version. - // Workaround with EXPECT_TRUE(). - bool Bool(bool b) { /*EXPECT_EQ(expect, b); */EXPECT_TRUE(expect == b); ++step_; return true; } - - unsigned step_; -}; - -TEST(Reader, ParseTrue) { - StringStream s("true"); - ParseBoolHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(1u, h.step_); -} - -TEST(Reader, ParseFalse) { - StringStream s("false"); - ParseBoolHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(1u, h.step_); -} - -struct ParseIntHandler : BaseReaderHandler, ParseIntHandler> { - ParseIntHandler() : step_(0), actual_() {} - bool Default() { ADD_FAILURE(); return false; } - bool Int(int i) { actual_ = i; step_++; return true; } - - unsigned step_; - int actual_; -}; - -struct ParseUintHandler : BaseReaderHandler, ParseUintHandler> { - ParseUintHandler() : step_(0), actual_() {} - bool Default() { ADD_FAILURE(); return false; } - bool Uint(unsigned i) { actual_ = i; step_++; return true; } - - unsigned step_; - unsigned actual_; -}; - -struct ParseInt64Handler : BaseReaderHandler, ParseInt64Handler> { - ParseInt64Handler() : step_(0), actual_() {} - bool Default() { ADD_FAILURE(); return false; } - bool Int64(int64_t i) { actual_ = i; step_++; return true; } - - unsigned step_; - int64_t actual_; -}; - -struct ParseUint64Handler : BaseReaderHandler, ParseUint64Handler> { - ParseUint64Handler() : step_(0), actual_() {} - bool Default() { ADD_FAILURE(); return false; } - bool Uint64(uint64_t i) { actual_ = i; step_++; return true; } - - unsigned step_; - uint64_t actual_; -}; - -struct ParseDoubleHandler : BaseReaderHandler, ParseDoubleHandler> { - ParseDoubleHandler() : step_(0), actual_() {} - bool Default() { ADD_FAILURE(); return false; } - bool Double(double d) { actual_ = d; step_++; return true; } - - unsigned step_; - double actual_; -}; - -TEST(Reader, ParseNumber_Integer) { -#define TEST_INTEGER(Handler, str, x) \ - { \ - StringStream s(str); \ - Handler h; \ - Reader reader; \ - reader.Parse(s, h); \ - EXPECT_EQ(1u, h.step_); \ - EXPECT_EQ(x, h.actual_); \ - } - - TEST_INTEGER(ParseUintHandler, "0", 0u); - TEST_INTEGER(ParseUintHandler, "123", 123u); - TEST_INTEGER(ParseUintHandler, "2147483648", 2147483648u); // 2^31 - 1 (cannot be stored in int) - TEST_INTEGER(ParseUintHandler, "4294967295", 4294967295u); - - TEST_INTEGER(ParseIntHandler, "-123", -123); - TEST_INTEGER(ParseIntHandler, "-2147483648", static_cast(0x80000000)); // -2^31 (min of int) - - TEST_INTEGER(ParseUint64Handler, "4294967296", RAPIDJSON_UINT64_C2(1, 0)); // 2^32 (max of unsigned + 1, force to use uint64_t) - TEST_INTEGER(ParseUint64Handler, "18446744073709551615", RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)); // 2^64 - 1 (max of uint64_t) - - TEST_INTEGER(ParseInt64Handler, "-2147483649", static_cast(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x7FFFFFFF))); // -2^31 -1 (min of int - 1, force to use int64_t) - TEST_INTEGER(ParseInt64Handler, "-9223372036854775808", static_cast(RAPIDJSON_UINT64_C2(0x80000000, 0x00000000))); // -2^63 (min of int64_t) - - // Random test for uint32_t/int32_t - { - union { - uint32_t u; - int32_t i; - }u; - Random r; - - for (unsigned i = 0; i < 100000; i++) { - u.u = r(); - - char buffer[32]; - *internal::u32toa(u.u, buffer) = '\0'; - TEST_INTEGER(ParseUintHandler, buffer, u.u); - - if (u.i < 0) { - *internal::i32toa(u.i, buffer) = '\0'; - TEST_INTEGER(ParseIntHandler, buffer, u.i); - } - } - } - - // Random test for uint64_t/int64_t - { - union { - uint64_t u; - int64_t i; - }u; - Random r; - - for (unsigned i = 0; i < 100000; i++) { - u.u = uint64_t(r()) << 32; - u.u |= r(); - - char buffer[32]; - if (u.u > uint64_t(4294967295u)) { - *internal::u64toa(u.u, buffer) = '\0'; - TEST_INTEGER(ParseUint64Handler, buffer, u.u); - } - - if (u.i < -int64_t(2147483648u)) { - *internal::i64toa(u.i, buffer) = '\0'; - TEST_INTEGER(ParseInt64Handler, buffer, u.i); - } - } - } -#undef TEST_INTEGER -} - -template -static void TestParseDouble() { -#define TEST_DOUBLE(fullPrecision, str, x) \ - { \ - StringStream s(str); \ - ParseDoubleHandler h; \ - Reader reader; \ - ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); \ - EXPECT_EQ(1u, h.step_); \ - internal::Double e(x), a(h.actual_); \ - if (fullPrecision) { \ - EXPECT_EQ(e.Uint64Value(), a.Uint64Value()); \ - if (e.Uint64Value() != a.Uint64Value()) \ - printf(" String: %s\n Actual: %.17g\nExpected: %.17g\n", str, h.actual_, x); \ - } \ - else { \ - EXPECT_EQ(e.Sign(), a.Sign()); /* for 0.0 != -0.0 */ \ - EXPECT_DOUBLE_EQ(x, h.actual_); \ - } \ - } - - TEST_DOUBLE(fullPrecision, "0.0", 0.0); - TEST_DOUBLE(fullPrecision, "-0.0", -0.0); // For checking issue #289 - TEST_DOUBLE(fullPrecision, "1.0", 1.0); - TEST_DOUBLE(fullPrecision, "-1.0", -1.0); - TEST_DOUBLE(fullPrecision, "1.5", 1.5); - TEST_DOUBLE(fullPrecision, "-1.5", -1.5); - TEST_DOUBLE(fullPrecision, "3.1416", 3.1416); - TEST_DOUBLE(fullPrecision, "1E10", 1E10); - TEST_DOUBLE(fullPrecision, "1e10", 1e10); - TEST_DOUBLE(fullPrecision, "1E+10", 1E+10); - TEST_DOUBLE(fullPrecision, "1E-10", 1E-10); - TEST_DOUBLE(fullPrecision, "-1E10", -1E10); - TEST_DOUBLE(fullPrecision, "-1e10", -1e10); - TEST_DOUBLE(fullPrecision, "-1E+10", -1E+10); - TEST_DOUBLE(fullPrecision, "-1E-10", -1E-10); - TEST_DOUBLE(fullPrecision, "1.234E+10", 1.234E+10); - TEST_DOUBLE(fullPrecision, "1.234E-10", 1.234E-10); - TEST_DOUBLE(fullPrecision, "1.79769e+308", 1.79769e+308); - TEST_DOUBLE(fullPrecision, "2.22507e-308", 2.22507e-308); - TEST_DOUBLE(fullPrecision, "-1.79769e+308", -1.79769e+308); - TEST_DOUBLE(fullPrecision, "-2.22507e-308", -2.22507e-308); - TEST_DOUBLE(fullPrecision, "4.9406564584124654e-324", 4.9406564584124654e-324); // minimum denormal - TEST_DOUBLE(fullPrecision, "2.2250738585072009e-308", 2.2250738585072009e-308); // Max subnormal double - TEST_DOUBLE(fullPrecision, "2.2250738585072014e-308", 2.2250738585072014e-308); // Min normal positive double - TEST_DOUBLE(fullPrecision, "1.7976931348623157e+308", 1.7976931348623157e+308); // Max double - TEST_DOUBLE(fullPrecision, "1e-10000", 0.0); // must underflow - TEST_DOUBLE(fullPrecision, "18446744073709551616", 18446744073709551616.0); // 2^64 (max of uint64_t + 1, force to use double) - TEST_DOUBLE(fullPrecision, "-9223372036854775809", -9223372036854775809.0); // -2^63 - 1(min of int64_t + 1, force to use double) - TEST_DOUBLE(fullPrecision, "0.9868011474609375", 0.9868011474609375); // https://github.com/miloyip/rapidjson/issues/120 - TEST_DOUBLE(fullPrecision, "123e34", 123e34); // Fast Path Cases In Disguise - TEST_DOUBLE(fullPrecision, "45913141877270640000.0", 45913141877270640000.0); - TEST_DOUBLE(fullPrecision, "2.2250738585072011e-308", 2.2250738585072011e-308); // http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/ - TEST_DOUBLE(fullPrecision, "1e-00011111111111", 0.0); // Issue #313 - TEST_DOUBLE(fullPrecision, "-1e-00011111111111", -0.0); - TEST_DOUBLE(fullPrecision, "1e-214748363", 0.0); // Maximum supported negative exponent - TEST_DOUBLE(fullPrecision, "1e-214748364", 0.0); - TEST_DOUBLE(fullPrecision, "1e-21474836311", 0.0); - TEST_DOUBLE(fullPrecision, "0.017976931348623157e+310", 1.7976931348623157e+308); // Max double in another form - - // Since - // abs((2^-1022 - 2^-1074) - 2.2250738585072012e-308) = 3.109754131239141401123495768877590405345064751974375599... �� 10^-324 - // abs((2^-1022) - 2.2250738585072012e-308) = 1.830902327173324040642192159804623318305533274168872044... �� 10 ^ -324 - // So 2.2250738585072012e-308 should round to 2^-1022 = 2.2250738585072014e-308 - TEST_DOUBLE(fullPrecision, "2.2250738585072012e-308", 2.2250738585072014e-308); // http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/ - - // More closer to normal/subnormal boundary - // boundary = 2^-1022 - 2^-1075 = 2.225073858507201136057409796709131975934819546351645648... �� 10^-308 - TEST_DOUBLE(fullPrecision, "2.22507385850720113605740979670913197593481954635164564e-308", 2.2250738585072009e-308); - TEST_DOUBLE(fullPrecision, "2.22507385850720113605740979670913197593481954635164565e-308", 2.2250738585072014e-308); - - // 1.0 is in (1.0 - 2^-54, 1.0 + 2^-53) - // 1.0 - 2^-54 = 0.999999999999999944488848768742172978818416595458984375 - TEST_DOUBLE(fullPrecision, "0.999999999999999944488848768742172978818416595458984375", 1.0); // round to even - TEST_DOUBLE(fullPrecision, "0.999999999999999944488848768742172978818416595458984374", 0.99999999999999989); // previous double - TEST_DOUBLE(fullPrecision, "0.999999999999999944488848768742172978818416595458984376", 1.0); // next double - // 1.0 + 2^-53 = 1.00000000000000011102230246251565404236316680908203125 - TEST_DOUBLE(fullPrecision, "1.00000000000000011102230246251565404236316680908203125", 1.0); // round to even - TEST_DOUBLE(fullPrecision, "1.00000000000000011102230246251565404236316680908203124", 1.0); // previous double - TEST_DOUBLE(fullPrecision, "1.00000000000000011102230246251565404236316680908203126", 1.00000000000000022); // next double - - // Numbers from https://github.com/floitsch/double-conversion/blob/master/test/cctest/test-strtod.cc - - TEST_DOUBLE(fullPrecision, "72057594037927928.0", 72057594037927928.0); - TEST_DOUBLE(fullPrecision, "72057594037927936.0", 72057594037927936.0); - TEST_DOUBLE(fullPrecision, "72057594037927932.0", 72057594037927936.0); - TEST_DOUBLE(fullPrecision, "7205759403792793199999e-5", 72057594037927928.0); - TEST_DOUBLE(fullPrecision, "7205759403792793200001e-5", 72057594037927936.0); - - TEST_DOUBLE(fullPrecision, "9223372036854774784.0", 9223372036854774784.0); - TEST_DOUBLE(fullPrecision, "9223372036854775808.0", 9223372036854775808.0); - TEST_DOUBLE(fullPrecision, "9223372036854775296.0", 9223372036854775808.0); - TEST_DOUBLE(fullPrecision, "922337203685477529599999e-5", 9223372036854774784.0); - TEST_DOUBLE(fullPrecision, "922337203685477529600001e-5", 9223372036854775808.0); - - TEST_DOUBLE(fullPrecision, "10141204801825834086073718800384", 10141204801825834086073718800384.0); - TEST_DOUBLE(fullPrecision, "10141204801825835211973625643008", 10141204801825835211973625643008.0); - TEST_DOUBLE(fullPrecision, "10141204801825834649023672221696", 10141204801825835211973625643008.0); - TEST_DOUBLE(fullPrecision, "1014120480182583464902367222169599999e-5", 10141204801825834086073718800384.0); - TEST_DOUBLE(fullPrecision, "1014120480182583464902367222169600001e-5", 10141204801825835211973625643008.0); - - TEST_DOUBLE(fullPrecision, "5708990770823838890407843763683279797179383808", 5708990770823838890407843763683279797179383808.0); - TEST_DOUBLE(fullPrecision, "5708990770823839524233143877797980545530986496", 5708990770823839524233143877797980545530986496.0); - TEST_DOUBLE(fullPrecision, "5708990770823839207320493820740630171355185152", 5708990770823839524233143877797980545530986496.0); - TEST_DOUBLE(fullPrecision, "5708990770823839207320493820740630171355185151999e-3", 5708990770823838890407843763683279797179383808.0); - TEST_DOUBLE(fullPrecision, "5708990770823839207320493820740630171355185152001e-3", 5708990770823839524233143877797980545530986496.0); - - { - char n1e308[310]; // '1' followed by 308 '0' - n1e308[0] = '1'; - for (int i = 1; i < 309; i++) - n1e308[i] = '0'; - n1e308[309] = '\0'; - TEST_DOUBLE(fullPrecision, n1e308, 1E308); - } - - // Cover trimming - TEST_DOUBLE(fullPrecision, -"2.22507385850720113605740979670913197593481954635164564802342610972482222202107694551652952390813508" -"7914149158913039621106870086438694594645527657207407820621743379988141063267329253552286881372149012" -"9811224514518898490572223072852551331557550159143974763979834118019993239625482890171070818506906306" -"6665599493827577257201576306269066333264756530000924588831643303777979186961204949739037782970490505" -"1080609940730262937128958950003583799967207254304360284078895771796150945516748243471030702609144621" -"5722898802581825451803257070188608721131280795122334262883686223215037756666225039825343359745688844" -"2390026549819838548794829220689472168983109969836584681402285424333066033985088644580400103493397042" -"7567186443383770486037861622771738545623065874679014086723327636718751234567890123456789012345678901" -"e-308", - 2.2250738585072014e-308); - - { - static const unsigned count = 100; // Tested with 1000000 locally - Random r; - Reader reader; // Reusing reader to prevent heap allocation - - // Exhaustively test different exponents with random significant - for (uint64_t exp = 0; exp < 2047; exp++) { - ; - for (unsigned i = 0; i < count; i++) { - // Need to call r() in two statements for cross-platform coherent sequence. - uint64_t u = (exp << 52) | uint64_t(r() & 0x000FFFFF) << 32; - u |= uint64_t(r()); - internal::Double d = internal::Double(u); - - char buffer[32]; - *internal::dtoa(d.Value(), buffer) = '\0'; - - StringStream s(buffer); - ParseDoubleHandler h; - ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); - EXPECT_EQ(1u, h.step_); - internal::Double a(h.actual_); - if (fullPrecision) { - EXPECT_EQ(d.Uint64Value(), a.Uint64Value()); - if (d.Uint64Value() != a.Uint64Value()) - printf(" String: %s\n Actual: %.17g\nExpected: %.17g\n", buffer, h.actual_, d.Value()); - } - else { - EXPECT_EQ(d.Sign(), a.Sign()); // for 0.0 != -0.0 - EXPECT_DOUBLE_EQ(d.Value(), h.actual_); - } - } - } - } - - // Issue #340 - TEST_DOUBLE(fullPrecision, "7.450580596923828e-9", 7.450580596923828e-9); - { - internal::Double d(1.0); - for (int i = 0; i < 324; i++) { - char buffer[32]; - *internal::dtoa(d.Value(), buffer) = '\0'; - - StringStream s(buffer); - ParseDoubleHandler h; - Reader reader; - ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); - EXPECT_EQ(1u, h.step_); - internal::Double a(h.actual_); - if (fullPrecision) { - EXPECT_EQ(d.Uint64Value(), a.Uint64Value()); - if (d.Uint64Value() != a.Uint64Value()) - printf(" String: %s\n Actual: %.17g\nExpected: %.17g\n", buffer, h.actual_, d.Value()); - } - else { - EXPECT_EQ(d.Sign(), a.Sign()); // for 0.0 != -0.0 - EXPECT_DOUBLE_EQ(d.Value(), h.actual_); - } - - - d = d.Value() * 0.5; - } - } -#undef TEST_DOUBLE -} - -TEST(Reader, ParseNumber_NormalPrecisionDouble) { - TestParseDouble(); -} - -TEST(Reader, ParseNumber_FullPrecisionDouble) { - TestParseDouble(); -} - -TEST(Reader, ParseNumber_NormalPrecisionError) { - static unsigned count = 1000000; - Random r; - - double ulpSum = 0.0; - double ulpMax = 0.0; - for (unsigned i = 0; i < count; i++) { - internal::Double e, a; - do { - // Need to call r() in two statements for cross-platform coherent sequence. - uint64_t u = uint64_t(r()) << 32; - u |= uint64_t(r()); - e = u; - } while (e.IsNan() || e.IsInf() || !e.IsNormal()); - - char buffer[32]; - *internal::dtoa(e.Value(), buffer) = '\0'; - - StringStream s(buffer); - ParseDoubleHandler h; - Reader reader; - ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); - EXPECT_EQ(1u, h.step_); - - a = h.actual_; - uint64_t bias1 = e.ToBias(); - uint64_t bias2 = a.ToBias(); - double ulp = static_cast(bias1 >= bias2 ? bias1 - bias2 : bias2 - bias1); - ulpMax = std::max(ulpMax, ulp); - ulpSum += ulp; - } - printf("ULP Average = %g, Max = %g \n", ulpSum / count, ulpMax); -} - -TEST(Reader, ParseNumber_Error) { -#define TEST_NUMBER_ERROR(errorCode, str, errorOffset, streamPos) \ - { \ - char buffer[1001]; \ - sprintf(buffer, "%s", str); \ - InsituStringStream s(buffer); \ - BaseReaderHandler<> h; \ - Reader reader; \ - EXPECT_FALSE(reader.Parse(s, h)); \ - EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ - EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ - EXPECT_EQ(streamPos, s.Tell());\ - } - - // Number too big to be stored in double. - { - char n1e309[311]; // '1' followed by 309 '0' - n1e309[0] = '1'; - for (int i = 1; i < 310; i++) - n1e309[i] = '0'; - n1e309[310] = '\0'; - TEST_NUMBER_ERROR(kParseErrorNumberTooBig, n1e309, 0, 309); - } - TEST_NUMBER_ERROR(kParseErrorNumberTooBig, "1e309", 0, 5); - - // Miss fraction part in number. - TEST_NUMBER_ERROR(kParseErrorNumberMissFraction, "1.", 2, 2); - TEST_NUMBER_ERROR(kParseErrorNumberMissFraction, "1.a", 2, 2); - - // Miss exponent in number. - TEST_NUMBER_ERROR(kParseErrorNumberMissExponent, "1e", 2, 2); - TEST_NUMBER_ERROR(kParseErrorNumberMissExponent, "1e_", 2, 2); - -#undef TEST_NUMBER_ERROR -} - -template -struct ParseStringHandler : BaseReaderHandler > { - ParseStringHandler() : str_(0), length_(0), copy_() {} - ~ParseStringHandler() { EXPECT_TRUE(str_ != 0); if (copy_) free(const_cast(str_)); } - - ParseStringHandler(const ParseStringHandler&); - ParseStringHandler& operator=(const ParseStringHandler&); - - bool Default() { ADD_FAILURE(); return false; } - bool String(const typename Encoding::Ch* str, size_t length, bool copy) { - EXPECT_EQ(0, str_); - if (copy) { - str_ = static_cast(malloc((length + 1) * sizeof(typename Encoding::Ch))); - memcpy(const_cast(str_), str, (length + 1) * sizeof(typename Encoding::Ch)); - } - else - str_ = str; - length_ = length; - copy_ = copy; - return true; - } - - const typename Encoding::Ch* str_; - size_t length_; - bool copy_; -}; - -TEST(Reader, ParseString) { -#define TEST_STRING(Encoding, e, x) \ - { \ - Encoding::Ch* buffer = StrDup(x); \ - GenericInsituStringStream is(buffer); \ - ParseStringHandler h; \ - GenericReader reader; \ - reader.Parse(is, h); \ - EXPECT_EQ(0, StrCmp(e, h.str_)); \ - EXPECT_EQ(StrLen(e), h.length_); \ - free(buffer); \ - GenericStringStream s(x); \ - ParseStringHandler h2; \ - GenericReader reader2; \ - reader2.Parse(s, h2); \ - EXPECT_EQ(0, StrCmp(e, h2.str_)); \ - EXPECT_EQ(StrLen(e), h2.length_); \ - } - - // String constant L"\xXX" can only specify character code in bytes, which is not endianness-neutral. - // And old compiler does not support u"" and U"" string literal. So here specify string literal by array of Ch. - // In addition, GCC 4.8 generates -Wnarrowing warnings when character code >= 128 are assigned to signed integer types. - // Therefore, utype is added for declaring unsigned array, and then cast it to Encoding::Ch. -#define ARRAY(...) { __VA_ARGS__ } -#define TEST_STRINGARRAY(Encoding, utype, array, x) \ - { \ - static const utype ue[] = array; \ - static const Encoding::Ch* e = reinterpret_cast(&ue[0]); \ - TEST_STRING(Encoding, e, x); \ - } - -#define TEST_STRINGARRAY2(Encoding, utype, earray, xarray) \ - { \ - static const utype ue[] = earray; \ - static const utype xe[] = xarray; \ - static const Encoding::Ch* e = reinterpret_cast(&ue[0]); \ - static const Encoding::Ch* x = reinterpret_cast(&xe[0]); \ - TEST_STRING(Encoding, e, x); \ - } - - TEST_STRING(UTF8<>, "", "\"\""); - TEST_STRING(UTF8<>, "Hello", "\"Hello\""); - TEST_STRING(UTF8<>, "Hello\nWorld", "\"Hello\\nWorld\""); - TEST_STRING(UTF8<>, "\"\\/\b\f\n\r\t", "\"\\\"\\\\/\\b\\f\\n\\r\\t\""); - TEST_STRING(UTF8<>, "\x24", "\"\\u0024\""); // Dollar sign U+0024 - TEST_STRING(UTF8<>, "\xC2\xA2", "\"\\u00A2\""); // Cents sign U+00A2 - TEST_STRING(UTF8<>, "\xE2\x82\xAC", "\"\\u20AC\""); // Euro sign U+20AC - TEST_STRING(UTF8<>, "\xF0\x9D\x84\x9E", "\"\\uD834\\uDD1E\""); // G clef sign U+1D11E - - // UTF16 - TEST_STRING(UTF16<>, L"", L"\"\""); - TEST_STRING(UTF16<>, L"Hello", L"\"Hello\""); - TEST_STRING(UTF16<>, L"Hello\nWorld", L"\"Hello\\nWorld\""); - TEST_STRING(UTF16<>, L"\"\\/\b\f\n\r\t", L"\"\\\"\\\\/\\b\\f\\n\\r\\t\""); - TEST_STRINGARRAY(UTF16<>, wchar_t, ARRAY(0x0024, 0x0000), L"\"\\u0024\""); - TEST_STRINGARRAY(UTF16<>, wchar_t, ARRAY(0x00A2, 0x0000), L"\"\\u00A2\""); // Cents sign U+00A2 - TEST_STRINGARRAY(UTF16<>, wchar_t, ARRAY(0x20AC, 0x0000), L"\"\\u20AC\""); // Euro sign U+20AC - TEST_STRINGARRAY(UTF16<>, wchar_t, ARRAY(0xD834, 0xDD1E, 0x0000), L"\"\\uD834\\uDD1E\""); // G clef sign U+1D11E - - // UTF32 - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY('\0'), ARRAY('\"', '\"', '\0')); - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY('H', 'e', 'l', 'l', 'o', '\0'), ARRAY('\"', 'H', 'e', 'l', 'l', 'o', '\"', '\0')); - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY('H', 'e', 'l', 'l', 'o', '\n', 'W', 'o', 'r', 'l', 'd', '\0'), ARRAY('\"', 'H', 'e', 'l', 'l', 'o', '\\', 'n', 'W', 'o', 'r', 'l', 'd', '\"', '\0')); - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY('\"', '\\', '/', '\b', '\f', '\n', '\r', '\t', '\0'), ARRAY('\"', '\\', '\"', '\\', '\\', '/', '\\', 'b', '\\', 'f', '\\', 'n', '\\', 'r', '\\', 't', '\"', '\0')); - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY(0x00024, 0x0000), ARRAY('\"', '\\', 'u', '0', '0', '2', '4', '\"', '\0')); - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY(0x000A2, 0x0000), ARRAY('\"', '\\', 'u', '0', '0', 'A', '2', '\"', '\0')); // Cents sign U+00A2 - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY(0x020AC, 0x0000), ARRAY('\"', '\\', 'u', '2', '0', 'A', 'C', '\"', '\0')); // Euro sign U+20AC - TEST_STRINGARRAY2(UTF32<>, unsigned, ARRAY(0x1D11E, 0x0000), ARRAY('\"', '\\', 'u', 'D', '8', '3', '4', '\\', 'u', 'D', 'D', '1', 'E', '\"', '\0')); // G clef sign U+1D11E - -#undef TEST_STRINGARRAY -#undef ARRAY -#undef TEST_STRING - - // Support of null character in string - { - StringStream s("\"Hello\\u0000World\""); - const char e[] = "Hello\0World"; - ParseStringHandler > h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(0, memcmp(e, h.str_, h.length_ + 1)); - EXPECT_EQ(11u, h.length_); - } -} - -TEST(Reader, ParseString_Transcoding) { - const char* x = "\"Hello\""; - const wchar_t* e = L"Hello"; - GenericStringStream > is(x); - GenericReader, UTF16<> > reader; - ParseStringHandler > h; - reader.Parse(is, h); - EXPECT_EQ(0, StrCmp::Ch>(e, h.str_)); - EXPECT_EQ(StrLen(e), h.length_); -} - -TEST(Reader, ParseString_TranscodingWithValidation) { - const char* x = "\"Hello\""; - const wchar_t* e = L"Hello"; - GenericStringStream > is(x); - GenericReader, UTF16<> > reader; - ParseStringHandler > h; - reader.Parse(is, h); - EXPECT_EQ(0, StrCmp::Ch>(e, h.str_)); - EXPECT_EQ(StrLen(e), h.length_); -} - -TEST(Reader, ParseString_NonDestructive) { - StringStream s("\"Hello\\nWorld\""); - ParseStringHandler > h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(0, StrCmp("Hello\nWorld", h.str_)); - EXPECT_EQ(11u, h.length_); -} - -template -ParseErrorCode TestString(const typename Encoding::Ch* str) { - GenericStringStream s(str); - BaseReaderHandler h; - GenericReader reader; - reader.template Parse(s, h); - return reader.GetParseErrorCode(); -} - -TEST(Reader, ParseString_Error) { -#define TEST_STRING_ERROR(errorCode, str, errorOffset, streamPos)\ -{\ - GenericStringStream > s(str);\ - BaseReaderHandler > h;\ - GenericReader , UTF8<> > reader;\ - reader.Parse(s, h);\ - EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ - EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ - EXPECT_EQ(streamPos, s.Tell());\ -} - -#define ARRAY(...) { __VA_ARGS__ } -#define TEST_STRINGENCODING_ERROR(Encoding, TargetEncoding, utype, array) \ - { \ - static const utype ue[] = array; \ - static const Encoding::Ch* e = reinterpret_cast(&ue[0]); \ - EXPECT_EQ(kParseErrorStringInvalidEncoding, TestString(e));\ - /* decode error */\ - GenericStringStream s(e);\ - BaseReaderHandler h;\ - GenericReader reader;\ - reader.Parse(s, h);\ - EXPECT_EQ(kParseErrorStringInvalidEncoding, reader.GetParseErrorCode());\ - } - - // Invalid escape character in string. - TEST_STRING_ERROR(kParseErrorStringEscapeInvalid, "[\"\\a\"]", 2, 3); - - // Incorrect hex digit after \\u escape in string. - TEST_STRING_ERROR(kParseErrorStringUnicodeEscapeInvalidHex, "[\"\\uABCG\"]", 2, 7); - - // Quotation in \\u escape in string (Issue #288) - TEST_STRING_ERROR(kParseErrorStringUnicodeEscapeInvalidHex, "[\"\\uaaa\"]", 2, 7); - TEST_STRING_ERROR(kParseErrorStringUnicodeEscapeInvalidHex, "[\"\\uD800\\uFFF\"]", 2, 13); - - // The surrogate pair in string is invalid. - TEST_STRING_ERROR(kParseErrorStringUnicodeSurrogateInvalid, "[\"\\uD800X\"]", 2, 8); - TEST_STRING_ERROR(kParseErrorStringUnicodeSurrogateInvalid, "[\"\\uD800\\uFFFF\"]", 2, 14); - - // Missing a closing quotation mark in string. - TEST_STRING_ERROR(kParseErrorStringMissQuotationMark, "[\"Test]", 7, 7); - - // http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt - - // 3 Malformed sequences - - // 3.1 Unexpected continuation bytes - { - char e[] = { '[', '\"', 0, '\"', ']', '\0' }; - for (unsigned char c = 0x80u; c <= 0xBFu; c++) { - e[2] = static_cast(c); - ParseErrorCode error = TestString >(e); - EXPECT_EQ(kParseErrorStringInvalidEncoding, error); - if (error != kParseErrorStringInvalidEncoding) - std::cout << static_cast(c) << std::endl; - } - } - - // 3.2 Lonely start characters, 3.5 Impossible bytes - { - char e[] = { '[', '\"', 0, ' ', '\"', ']', '\0' }; - for (unsigned c = 0xC0u; c <= 0xFFu; c++) { - e[2] = static_cast(c); - int streamPos; - if (c <= 0xC1u) - streamPos = 3; // 0xC0 - 0xC1 - else if (c <= 0xDFu) - streamPos = 4; // 0xC2 - 0xDF - else if (c <= 0xEFu) - streamPos = 5; // 0xE0 - 0xEF - else if (c <= 0xF4u) - streamPos = 6; // 0xF0 - 0xF4 - else - streamPos = 3; // 0xF5 - 0xFF - TEST_STRING_ERROR(kParseErrorStringInvalidEncoding, e, 2, streamPos); - } - } - - // 4 Overlong sequences - - // 4.1 Examples of an overlong ASCII character - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xC0u, 0xAFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xE0u, 0x80u, 0xAFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xF0u, 0x80u, 0x80u, 0xAFu, '\"', ']', '\0')); - - // 4.2 Maximum overlong sequences - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xC1u, 0xBFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xE0u, 0x9Fu, 0xBFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xF0u, 0x8Fu, 0xBFu, 0xBFu, '\"', ']', '\0')); - - // 4.3 Overlong representation of the NUL character - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xC0u, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xE0u, 0x80u, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xF0u, 0x80u, 0x80u, 0x80u, '\"', ']', '\0')); - - // 5 Illegal code positions - - // 5.1 Single UTF-16 surrogates - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xA0u, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xADu, 0xBFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xAEu, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xAFu, 0xBFu, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xB0u, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xBEu, 0x80u, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF8<>, UTF16<>, unsigned char, ARRAY('[', '\"', 0xEDu, 0xBFu, 0xBFu, '\"', ']', '\0')); - - // Malform UTF-16 sequences - TEST_STRINGENCODING_ERROR(UTF16<>, UTF8<>, wchar_t, ARRAY('[', '\"', 0xDC00, 0xDC00, '\"', ']', '\0')); - TEST_STRINGENCODING_ERROR(UTF16<>, UTF8<>, wchar_t, ARRAY('[', '\"', 0xD800, 0xD800, '\"', ']', '\0')); - - // Malform UTF-32 sequence - TEST_STRINGENCODING_ERROR(UTF32<>, UTF8<>, unsigned, ARRAY('[', '\"', 0x110000, '\"', ']', '\0')); - - // Malform ASCII sequence - TEST_STRINGENCODING_ERROR(ASCII<>, UTF8<>, char, ARRAY('[', '\"', char(0x80u), '\"', ']', '\0')); - -#undef ARRAY -#undef TEST_STRINGARRAY_ERROR -} - -template -struct ParseArrayHandler : BaseReaderHandler, ParseArrayHandler > { - ParseArrayHandler() : step_(0) {} - - bool Default() { ADD_FAILURE(); return false; } - bool Uint(unsigned i) { EXPECT_EQ(step_, i); step_++; return true; } - bool StartArray() { EXPECT_EQ(0u, step_); step_++; return true; } - bool EndArray(SizeType) { step_++; return true; } - - unsigned step_; -}; - -TEST(Reader, ParseEmptyArray) { - char *json = StrDup("[ ] "); - InsituStringStream s(json); - ParseArrayHandler<0> h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(2u, h.step_); - free(json); -} - -TEST(Reader, ParseArray) { - char *json = StrDup("[1, 2, 3, 4]"); - InsituStringStream s(json); - ParseArrayHandler<4> h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(6u, h.step_); - free(json); -} - -TEST(Reader, ParseArray_Error) { -#define TEST_ARRAY_ERROR(errorCode, str, errorOffset) \ - { \ - int streamPos = errorOffset; \ - char buffer[1001]; \ - strncpy(buffer, str, 1000); \ - InsituStringStream s(buffer); \ - BaseReaderHandler<> h; \ - GenericReader, UTF8<>, CrtAllocator> reader; \ - EXPECT_FALSE(reader.Parse(s, h)); \ - EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ - EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ - EXPECT_EQ(streamPos, s.Tell());\ - } - - // Missing a comma or ']' after an array element. - TEST_ARRAY_ERROR(kParseErrorArrayMissCommaOrSquareBracket, "[1", 2); - TEST_ARRAY_ERROR(kParseErrorArrayMissCommaOrSquareBracket, "[1}", 2); - TEST_ARRAY_ERROR(kParseErrorArrayMissCommaOrSquareBracket, "[1 2]", 3); - - // Array cannot have a trailing comma (without kParseTrailingCommasFlag); - // a value must follow a comma - TEST_ARRAY_ERROR(kParseErrorValueInvalid, "[1,]", 3); - -#undef TEST_ARRAY_ERROR -} - -struct ParseObjectHandler : BaseReaderHandler, ParseObjectHandler> { - ParseObjectHandler() : step_(0) {} - - bool Default() { ADD_FAILURE(); return false; } - bool Null() { EXPECT_EQ(8u, step_); step_++; return true; } - bool Bool(bool b) { - switch(step_) { - case 4: EXPECT_TRUE(b); step_++; return true; - case 6: EXPECT_FALSE(b); step_++; return true; - default: ADD_FAILURE(); return false; - } - } - bool Int(int i) { - switch(step_) { - case 10: EXPECT_EQ(123, i); step_++; return true; - case 15: EXPECT_EQ(1, i); step_++; return true; - case 16: EXPECT_EQ(2, i); step_++; return true; - case 17: EXPECT_EQ(3, i); step_++; return true; - default: ADD_FAILURE(); return false; - } - } - bool Uint(unsigned i) { return Int(static_cast(i)); } - bool Double(double d) { EXPECT_EQ(12u, step_); EXPECT_DOUBLE_EQ(3.1416, d); step_++; return true; } - bool String(const char* str, size_t, bool) { - switch(step_) { - case 1: EXPECT_STREQ("hello", str); step_++; return true; - case 2: EXPECT_STREQ("world", str); step_++; return true; - case 3: EXPECT_STREQ("t", str); step_++; return true; - case 5: EXPECT_STREQ("f", str); step_++; return true; - case 7: EXPECT_STREQ("n", str); step_++; return true; - case 9: EXPECT_STREQ("i", str); step_++; return true; - case 11: EXPECT_STREQ("pi", str); step_++; return true; - case 13: EXPECT_STREQ("a", str); step_++; return true; - default: ADD_FAILURE(); return false; - } - } - bool StartObject() { EXPECT_EQ(0u, step_); step_++; return true; } - bool EndObject(SizeType memberCount) { EXPECT_EQ(19u, step_); EXPECT_EQ(7u, memberCount); step_++; return true; } - bool StartArray() { EXPECT_EQ(14u, step_); step_++; return true; } - bool EndArray(SizeType elementCount) { EXPECT_EQ(18u, step_); EXPECT_EQ(3u, elementCount); step_++; return true; } - - unsigned step_; -}; - -TEST(Reader, ParseObject) { - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] } "; - - // Insitu - { - char* json2 = StrDup(json); - InsituStringStream s(json2); - ParseObjectHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(20u, h.step_); - free(json2); - } - - // Normal - { - StringStream s(json); - ParseObjectHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(20u, h.step_); - } -} - -struct ParseEmptyObjectHandler : BaseReaderHandler, ParseEmptyObjectHandler> { - ParseEmptyObjectHandler() : step_(0) {} - - bool Default() { ADD_FAILURE(); return false; } - bool StartObject() { EXPECT_EQ(0u, step_); step_++; return true; } - bool EndObject(SizeType) { EXPECT_EQ(1u, step_); step_++; return true; } - - unsigned step_; -}; - -TEST(Reader, Parse_EmptyObject) { - StringStream s("{ } "); - ParseEmptyObjectHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(2u, h.step_); -} - -struct ParseMultipleRootHandler : BaseReaderHandler, ParseMultipleRootHandler> { - ParseMultipleRootHandler() : step_(0) {} - - bool Default() { ADD_FAILURE(); return false; } - bool StartObject() { EXPECT_EQ(0u, step_); step_++; return true; } - bool EndObject(SizeType) { EXPECT_EQ(1u, step_); step_++; return true; } - bool StartArray() { EXPECT_EQ(2u, step_); step_++; return true; } - bool EndArray(SizeType) { EXPECT_EQ(3u, step_); step_++; return true; } - - unsigned step_; -}; - -template -void TestMultipleRoot() { - StringStream s("{}[] a"); - ParseMultipleRootHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(2u, h.step_); - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(4u, h.step_); - EXPECT_EQ(' ', s.Take()); - EXPECT_EQ('a', s.Take()); -} - -TEST(Reader, Parse_MultipleRoot) { - TestMultipleRoot(); -} - -TEST(Reader, ParseIterative_MultipleRoot) { - TestMultipleRoot(); -} - -template -void TestInsituMultipleRoot() { - char* buffer = strdup("{}[] a"); - InsituStringStream s(buffer); - ParseMultipleRootHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(2u, h.step_); - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(4u, h.step_); - EXPECT_EQ(' ', s.Take()); - EXPECT_EQ('a', s.Take()); - free(buffer); -} - -TEST(Reader, ParseInsitu_MultipleRoot) { - TestInsituMultipleRoot(); -} - -TEST(Reader, ParseInsituIterative_MultipleRoot) { - TestInsituMultipleRoot(); -} - -#define TEST_ERROR(errorCode, str, errorOffset) \ - { \ - int streamPos = errorOffset; \ - char buffer[1001]; \ - strncpy(buffer, str, 1000); \ - InsituStringStream s(buffer); \ - BaseReaderHandler<> h; \ - Reader reader; \ - EXPECT_FALSE(reader.Parse(s, h)); \ - EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ - EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ - EXPECT_EQ(streamPos, s.Tell());\ - } - -TEST(Reader, ParseDocument_Error) { - // The document is empty. - TEST_ERROR(kParseErrorDocumentEmpty, "", 0); - TEST_ERROR(kParseErrorDocumentEmpty, " ", 1); - TEST_ERROR(kParseErrorDocumentEmpty, " \n", 2); - - // The document root must not follow by other values. - TEST_ERROR(kParseErrorDocumentRootNotSingular, "[] 0", 3); - TEST_ERROR(kParseErrorDocumentRootNotSingular, "{} 0", 3); - TEST_ERROR(kParseErrorDocumentRootNotSingular, "null []", 5); - TEST_ERROR(kParseErrorDocumentRootNotSingular, "0 {}", 2); -} - -TEST(Reader, ParseValue_Error) { - // Invalid value. - TEST_ERROR(kParseErrorValueInvalid, "nulL", 3); - TEST_ERROR(kParseErrorValueInvalid, "truE", 3); - TEST_ERROR(kParseErrorValueInvalid, "falsE", 4); - TEST_ERROR(kParseErrorValueInvalid, "a]", 0); - TEST_ERROR(kParseErrorValueInvalid, ".1", 0); -} - -TEST(Reader, ParseObject_Error) { - // Missing a name for object member. - TEST_ERROR(kParseErrorObjectMissName, "{1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{null:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{true:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{false:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{1:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{[]:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{{}:1}", 1); - TEST_ERROR(kParseErrorObjectMissName, "{xyz:1}", 1); - - // Missing a colon after a name of object member. - TEST_ERROR(kParseErrorObjectMissColon, "{\"a\" 1}", 5); - TEST_ERROR(kParseErrorObjectMissColon, "{\"a\",1}", 4); - - // Must be a comma or '}' after an object member - TEST_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, "{\"a\":1]", 6); - - // Object cannot have a trailing comma (without kParseTrailingCommasFlag); - // an object member name must follow a comma - TEST_ERROR(kParseErrorObjectMissName, "{\"a\":1,}", 7); - - // This tests that MemoryStream is checking the length in Peek(). - { - MemoryStream ms("{\"a\"", 1); - BaseReaderHandler<> h; - Reader reader; - EXPECT_FALSE(reader.Parse(ms, h)); - EXPECT_EQ(kParseErrorObjectMissName, reader.GetParseErrorCode()); - } -} - -#undef TEST_ERROR - -TEST(Reader, SkipWhitespace) { - StringStream ss(" A \t\tB\n \n\nC\r\r \rD \t\n\r E"); - const char* expected = "ABCDE"; - for (size_t i = 0; i < 5; i++) { - SkipWhitespace(ss); - EXPECT_EQ(expected[i], ss.Take()); - } -} - -// Test implementing a stream without copy stream optimization. -// Clone from GenericStringStream except that copy constructor is disabled. -template -class CustomStringStream { -public: - typedef typename Encoding::Ch Ch; - - CustomStringStream(const Ch *src) : src_(src), head_(src) {} - - Ch Peek() const { return *src_; } - Ch Take() { return *src_++; } - size_t Tell() const { return static_cast(src_ - head_); } - - Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; } - void Put(Ch) { RAPIDJSON_ASSERT(false); } - void Flush() { RAPIDJSON_ASSERT(false); } - size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; } - -private: - // Prohibit copy constructor & assignment operator. - CustomStringStream(const CustomStringStream&); - CustomStringStream& operator=(const CustomStringStream&); - - const Ch* src_; //!< Current read position. - const Ch* head_; //!< Original head of the string. -}; - -// If the following code is compiled, it should generate compilation error as predicted. -// Because CustomStringStream<> is not copyable via making copy constructor private. -#if 0 -namespace rapidjson { - -template -struct StreamTraits > { - enum { copyOptimization = 1 }; -}; - -} // namespace rapidjson -#endif - -TEST(Reader, CustomStringStream) { - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] } "; - CustomStringStream > s(json); - ParseObjectHandler h; - Reader reader; - reader.Parse(s, h); - EXPECT_EQ(20u, h.step_); -} - -#include - -class IStreamWrapper { -public: - typedef char Ch; - - IStreamWrapper(std::istream& is) : is_(is) {} - - Ch Peek() const { - int c = is_.peek(); - return c == std::char_traits::eof() ? '\0' : static_cast(c); - } - - Ch Take() { - int c = is_.get(); - return c == std::char_traits::eof() ? '\0' : static_cast(c); - } - - size_t Tell() const { return static_cast(is_.tellg()); } - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch) { assert(false); } - void Flush() { assert(false); } - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - IStreamWrapper(const IStreamWrapper&); - IStreamWrapper& operator=(const IStreamWrapper&); - - std::istream& is_; -}; - -TEST(Reader, Parse_IStreamWrapper_StringStream) { - const char* json = "[1,2,3,4]"; - - std::stringstream ss(json); - IStreamWrapper is(ss); - - Reader reader; - ParseArrayHandler<4> h; - reader.Parse(is, h); - EXPECT_FALSE(reader.HasParseError()); -} - -// Test iterative parsing. - -#define TESTERRORHANDLING(text, errorCode, offset)\ -{\ - int streamPos = offset; \ - StringStream json(text); \ - BaseReaderHandler<> handler; \ - Reader reader; \ - reader.Parse(json, handler); \ - EXPECT_TRUE(reader.HasParseError()); \ - EXPECT_EQ(errorCode, reader.GetParseErrorCode()); \ - EXPECT_EQ(offset, reader.GetErrorOffset()); \ - EXPECT_EQ(streamPos, json.Tell()); \ -} - -TEST(Reader, IterativeParsing_ErrorHandling) { - TESTERRORHANDLING("{\"a\": a}", kParseErrorValueInvalid, 6u); - - TESTERRORHANDLING("", kParseErrorDocumentEmpty, 0u); - TESTERRORHANDLING("{}{}", kParseErrorDocumentRootNotSingular, 2u); - - TESTERRORHANDLING("{1}", kParseErrorObjectMissName, 1u); - TESTERRORHANDLING("{\"a\", 1}", kParseErrorObjectMissColon, 4u); - TESTERRORHANDLING("{\"a\"}", kParseErrorObjectMissColon, 4u); - TESTERRORHANDLING("{\"a\": 1", kParseErrorObjectMissCommaOrCurlyBracket, 7u); - TESTERRORHANDLING("[1 2 3]", kParseErrorArrayMissCommaOrSquareBracket, 3u); - TESTERRORHANDLING("{\"a: 1", kParseErrorStringMissQuotationMark, 6u); - TESTERRORHANDLING("{\"a\":}", kParseErrorValueInvalid, 5u); - TESTERRORHANDLING("{\"a\":]", kParseErrorValueInvalid, 5u); - TESTERRORHANDLING("[1,2,}", kParseErrorValueInvalid, 5u); - TESTERRORHANDLING("[}]", kParseErrorValueInvalid, 1u); - TESTERRORHANDLING("[,]", kParseErrorValueInvalid, 1u); - TESTERRORHANDLING("[1,,]", kParseErrorValueInvalid, 3u); - - // Trailing commas are not allowed without kParseTrailingCommasFlag - TESTERRORHANDLING("{\"a\": 1,}", kParseErrorObjectMissName, 8u); - TESTERRORHANDLING("[1,2,3,]", kParseErrorValueInvalid, 7u); - - // Any JSON value can be a valid root element in RFC7159. - TESTERRORHANDLING("\"ab", kParseErrorStringMissQuotationMark, 3u); - TESTERRORHANDLING("truE", kParseErrorValueInvalid, 3u); - TESTERRORHANDLING("False", kParseErrorValueInvalid, 0u); - TESTERRORHANDLING("true, false", kParseErrorDocumentRootNotSingular, 4u); - TESTERRORHANDLING("false, false", kParseErrorDocumentRootNotSingular, 5u); - TESTERRORHANDLING("nulL", kParseErrorValueInvalid, 3u); - TESTERRORHANDLING("null , null", kParseErrorDocumentRootNotSingular, 5u); - TESTERRORHANDLING("1a", kParseErrorDocumentRootNotSingular, 1u); -} - -template > -struct IterativeParsingReaderHandler { - typedef typename Encoding::Ch Ch; - - const static int LOG_NULL = -1; - const static int LOG_BOOL = -2; - const static int LOG_INT = -3; - const static int LOG_UINT = -4; - const static int LOG_INT64 = -5; - const static int LOG_UINT64 = -6; - const static int LOG_DOUBLE = -7; - const static int LOG_STRING = -8; - const static int LOG_STARTOBJECT = -9; - const static int LOG_KEY = -10; - const static int LOG_ENDOBJECT = -11; - const static int LOG_STARTARRAY = -12; - const static int LOG_ENDARRAY = -13; - - const static size_t LogCapacity = 256; - int Logs[LogCapacity]; - size_t LogCount; - - IterativeParsingReaderHandler() : LogCount(0) { - } - - bool Null() { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_NULL; return true; } - - bool Bool(bool) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_BOOL; return true; } - - bool Int(int) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_INT; return true; } - - bool Uint(unsigned) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_INT; return true; } - - bool Int64(int64_t) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_INT64; return true; } - - bool Uint64(uint64_t) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_UINT64; return true; } - - bool Double(double) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_DOUBLE; return true; } - - bool RawNumber(const Ch*, SizeType, bool) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_STRING; return true; } - - bool String(const Ch*, SizeType, bool) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_STRING; return true; } - - bool StartObject() { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_STARTOBJECT; return true; } - - bool Key (const Ch*, SizeType, bool) { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_KEY; return true; } - - bool EndObject(SizeType c) { - RAPIDJSON_ASSERT(LogCount < LogCapacity); - Logs[LogCount++] = LOG_ENDOBJECT; - Logs[LogCount++] = static_cast(c); - return true; - } - - bool StartArray() { RAPIDJSON_ASSERT(LogCount < LogCapacity); Logs[LogCount++] = LOG_STARTARRAY; return true; } - - bool EndArray(SizeType c) { - RAPIDJSON_ASSERT(LogCount < LogCapacity); - Logs[LogCount++] = LOG_ENDARRAY; - Logs[LogCount++] = static_cast(c); - return true; - } -}; - -TEST(Reader, IterativeParsing_General) { - { - StringStream is("[1, {\"k\": [1, 2]}, null, false, true, \"string\", 1.2]"); - Reader reader; - IterativeParsingReaderHandler<> handler; - - ParseResult r = reader.Parse(is, handler); - - EXPECT_FALSE(r.IsError()); - EXPECT_FALSE(reader.HasParseError()); - - int e[] = { - handler.LOG_STARTARRAY, - handler.LOG_INT, - handler.LOG_STARTOBJECT, - handler.LOG_KEY, - handler.LOG_STARTARRAY, - handler.LOG_INT, - handler.LOG_INT, - handler.LOG_ENDARRAY, 2, - handler.LOG_ENDOBJECT, 1, - handler.LOG_NULL, - handler.LOG_BOOL, - handler.LOG_BOOL, - handler.LOG_STRING, - handler.LOG_DOUBLE, - handler.LOG_ENDARRAY, 7 - }; - - EXPECT_EQ(sizeof(e) / sizeof(int), handler.LogCount); - - for (size_t i = 0; i < handler.LogCount; ++i) { - EXPECT_EQ(e[i], handler.Logs[i]) << "i = " << i; - } - } -} - -TEST(Reader, IterativeParsing_Count) { - { - StringStream is("[{}, {\"k\": 1}, [1], []]"); - Reader reader; - IterativeParsingReaderHandler<> handler; - - ParseResult r = reader.Parse(is, handler); - - EXPECT_FALSE(r.IsError()); - EXPECT_FALSE(reader.HasParseError()); - - int e[] = { - handler.LOG_STARTARRAY, - handler.LOG_STARTOBJECT, - handler.LOG_ENDOBJECT, 0, - handler.LOG_STARTOBJECT, - handler.LOG_KEY, - handler.LOG_INT, - handler.LOG_ENDOBJECT, 1, - handler.LOG_STARTARRAY, - handler.LOG_INT, - handler.LOG_ENDARRAY, 1, - handler.LOG_STARTARRAY, - handler.LOG_ENDARRAY, 0, - handler.LOG_ENDARRAY, 4 - }; - - EXPECT_EQ(sizeof(e) / sizeof(int), handler.LogCount); - - for (size_t i = 0; i < handler.LogCount; ++i) { - EXPECT_EQ(e[i], handler.Logs[i]) << "i = " << i; - } - } -} - -// Test iterative parsing on kParseErrorTermination. -struct HandlerTerminateAtStartObject : public IterativeParsingReaderHandler<> { - bool StartObject() { return false; } -}; - -struct HandlerTerminateAtStartArray : public IterativeParsingReaderHandler<> { - bool StartArray() { return false; } -}; - -struct HandlerTerminateAtEndObject : public IterativeParsingReaderHandler<> { - bool EndObject(SizeType) { return false; } -}; - -struct HandlerTerminateAtEndArray : public IterativeParsingReaderHandler<> { - bool EndArray(SizeType) { return false; } -}; - -TEST(Reader, IterativeParsing_ShortCircuit) { - { - HandlerTerminateAtStartObject handler; - Reader reader; - StringStream is("[1, {}]"); - - ParseResult r = reader.Parse(is, handler); - - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(4u, r.Offset()); - } - - { - HandlerTerminateAtStartArray handler; - Reader reader; - StringStream is("{\"a\": []}"); - - ParseResult r = reader.Parse(is, handler); - - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(6u, r.Offset()); - } - - { - HandlerTerminateAtEndObject handler; - Reader reader; - StringStream is("[1, {}]"); - - ParseResult r = reader.Parse(is, handler); - - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(5u, r.Offset()); - } - - { - HandlerTerminateAtEndArray handler; - Reader reader; - StringStream is("{\"a\": []}"); - - ParseResult r = reader.Parse(is, handler); - - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(7u, r.Offset()); - } -} - -// For covering BaseReaderHandler default functions -TEST(Reader, BaseReaderHandler_Default) { - BaseReaderHandler<> h; - Reader reader; - StringStream is("[null, true, -1, 1, -1234567890123456789, 1234567890123456789, 3.14, \"s\", { \"a\" : 1 }]"); - EXPECT_TRUE(reader.Parse(is, h)); -} - -template -struct TerminateHandler { - bool Null() { return e != 0; } - bool Bool(bool) { return e != 1; } - bool Int(int) { return e != 2; } - bool Uint(unsigned) { return e != 3; } - bool Int64(int64_t) { return e != 4; } - bool Uint64(uint64_t) { return e != 5; } - bool Double(double) { return e != 6; } - bool RawNumber(const char*, SizeType, bool) { return e != 7; } - bool String(const char*, SizeType, bool) { return e != 8; } - bool StartObject() { return e != 9; } - bool Key(const char*, SizeType, bool) { return e != 10; } - bool EndObject(SizeType) { return e != 11; } - bool StartArray() { return e != 12; } - bool EndArray(SizeType) { return e != 13; } -}; - -#define TEST_TERMINATION(e, json)\ -{\ - Reader reader;\ - TerminateHandler h;\ - StringStream is(json);\ - EXPECT_FALSE(reader.Parse(is, h));\ - EXPECT_EQ(kParseErrorTermination, reader.GetParseErrorCode());\ -} - -TEST(Reader, ParseTerminationByHandler) { - TEST_TERMINATION(0, "[null"); - TEST_TERMINATION(1, "[true"); - TEST_TERMINATION(1, "[false"); - TEST_TERMINATION(2, "[-1"); - TEST_TERMINATION(3, "[1"); - TEST_TERMINATION(4, "[-1234567890123456789"); - TEST_TERMINATION(5, "[1234567890123456789"); - TEST_TERMINATION(6, "[0.5]"); - // RawNumber() is never called - TEST_TERMINATION(8, "[\"a\""); - TEST_TERMINATION(9, "[{"); - TEST_TERMINATION(10, "[{\"a\""); - TEST_TERMINATION(11, "[{}"); - TEST_TERMINATION(11, "[{\"a\":1}"); // non-empty object - TEST_TERMINATION(12, "{\"a\":["); - TEST_TERMINATION(13, "{\"a\":[]"); - TEST_TERMINATION(13, "{\"a\":[1]"); // non-empty array -} - -TEST(Reader, ParseComments) { - const char* json = - "// Here is a one-line comment.\n" - "{// And here's another one\n" - " /*And here's an in-line one.*/\"hello\" : \"world\"," - " \"t\" :/* And one with '*' symbol*/true ," - "/* A multiline comment\n" - " goes here*/" - " \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3]" - "}/*And the last one to be sure */"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); -} - -TEST(Reader, ParseEmptyInlineComment) { - const char* json = "{/**/\"hello\" : \"world\", \"t\" : true, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); -} - -TEST(Reader, ParseEmptyOnelineComment) { - const char* json = "{//\n\"hello\" : \"world\", \"t\" : true, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); -} - -TEST(Reader, ParseMultipleCommentsInARow) { - const char* json = - "{/* first comment *//* second */\n" - "/* third */ /*fourth*/// last one\n" - "\"hello\" : \"world\", \"t\" : true, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); -} - -TEST(Reader, InlineCommentsAreDisabledByDefault) { - { - const char* json = "{/* Inline comment. */\"hello\" : \"world\", \"t\" : true, \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - } - - { - const char* json = - "{\"hello\" : /* Multiline comment starts here\n" - " continues here\n" - " and ends here */\"world\", \"t\" :true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - } -} - -TEST(Reader, OnelineCommentsAreDisabledByDefault) { - const char* json = "{// One-line comment\n\"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); -} - -TEST(Reader, EofAfterOneLineComment) { - const char* json = "{\"hello\" : \"world\" // EOF is here -->\0 \n}"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - EXPECT_EQ(kParseErrorObjectMissCommaOrCurlyBracket, reader.GetParseErrorCode()); -} - -TEST(Reader, IncompleteMultilineComment) { - const char* json = "{\"hello\" : \"world\" /* EOF is here -->\0 */}"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - EXPECT_EQ(kParseErrorUnspecificSyntaxError, reader.GetParseErrorCode()); -} - -TEST(Reader, IncompleteMultilineComment2) { - const char* json = "{\"hello\" : \"world\" /* *\0 */}"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - EXPECT_EQ(kParseErrorUnspecificSyntaxError, reader.GetParseErrorCode()); -} - -TEST(Reader, UnrecognizedComment) { - const char* json = "{\"hello\" : \"world\" /! }"; - - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_FALSE(reader.Parse(s, h)); - EXPECT_EQ(kParseErrorUnspecificSyntaxError, reader.GetParseErrorCode()); -} - -struct NumbersAsStringsHandler { - bool Null() { return true; } - bool Bool(bool) { return true; } - bool Int(int) { return true; } - bool Uint(unsigned) { return true; } - bool Int64(int64_t) { return true; } - bool Uint64(uint64_t) { return true; } - bool Double(double) { return true; } - // 'str' is not null-terminated - bool RawNumber(const char* str, SizeType length, bool) { - EXPECT_TRUE(str != 0); - EXPECT_TRUE(expected_len_ == length); - EXPECT_TRUE(strncmp(str, expected_, length) == 0); - return true; - } - bool String(const char*, SizeType, bool) { return true; } - bool StartObject() { return true; } - bool Key(const char*, SizeType, bool) { return true; } - bool EndObject(SizeType) { return true; } - bool StartArray() { return true; } - bool EndArray(SizeType) { return true; } - - NumbersAsStringsHandler(const char* expected) - : expected_(expected) - , expected_len_(strlen(expected)) {} - - const char* expected_; - size_t expected_len_; -}; - -TEST(Reader, NumbersAsStrings) { - { - const char* json = "{ \"pi\": 3.1416 } "; - StringStream s(json); - NumbersAsStringsHandler h("3.1416"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } - { - char* json = StrDup("{ \"pi\": 3.1416 } "); - InsituStringStream s(json); - NumbersAsStringsHandler h("3.1416"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - free(json); - } - { - const char* json = "{ \"gigabyte\": 1.0e9 } "; - StringStream s(json); - NumbersAsStringsHandler h("1.0e9"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } - { - char* json = StrDup("{ \"gigabyte\": 1.0e9 } "); - InsituStringStream s(json); - NumbersAsStringsHandler h("1.0e9"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - free(json); - } - { - const char* json = "{ \"pi\": 314.159e-2 } "; - StringStream s(json); - NumbersAsStringsHandler h("314.159e-2"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } - { - char* json = StrDup("{ \"gigabyte\": 314.159e-2 } "); - InsituStringStream s(json); - NumbersAsStringsHandler h("314.159e-2"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - free(json); - } - { - const char* json = "{ \"negative\": -1.54321 } "; - StringStream s(json); - NumbersAsStringsHandler h("-1.54321"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } - { - char* json = StrDup("{ \"negative\": -1.54321 } "); - InsituStringStream s(json); - NumbersAsStringsHandler h("-1.54321"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - free(json); - } - { - const char* json = "{ \"pi\": 314.159e-2 } "; - std::stringstream ss(json); - IStreamWrapper s(ss); - NumbersAsStringsHandler h("314.159e-2"); - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - } -} - -template -void TestTrailingCommas() { - { - StringStream s("[1,2,3,]"); - ParseArrayHandler<3> h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(5u, h.step_); - } - { - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false," - "\"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3],}"; - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); - } - { - // whitespace around trailing commas - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false," - "\"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3\n,\n]\n,\n} "; - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); - } - { - // comments around trailing commas - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null," - "\"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3/*test*/,/*test*/]/*test*/,/*test*/}"; - StringStream s(json); - ParseObjectHandler h; - Reader reader; - EXPECT_TRUE(reader.Parse(s, h)); - EXPECT_EQ(20u, h.step_); - } -} - -TEST(Reader, TrailingCommas) { - TestTrailingCommas(); -} - -TEST(Reader, TrailingCommasIterative) { - TestTrailingCommas(); -} - -template -void TestMultipleTrailingCommaErrors() { - // only a single trailing comma is allowed. - { - StringStream s("[1,2,3,,]"); - ParseArrayHandler<3> h; - Reader reader; - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorValueInvalid, r.Code()); - EXPECT_EQ(7u, r.Offset()); - } - { - const char* json = "{ \"hello\" : \"world\", \"t\" : true , \"f\" : false," - "\"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3,],,}"; - StringStream s(json); - ParseObjectHandler h; - Reader reader; - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorObjectMissName, r.Code()); - EXPECT_EQ(95u, r.Offset()); - } -} - -TEST(Reader, MultipleTrailingCommaErrors) { - TestMultipleTrailingCommaErrors(); -} - -TEST(Reader, MultipleTrailingCommaErrorsIterative) { - TestMultipleTrailingCommaErrors(); -} - -template -void TestEmptyExceptForCommaErrors() { - // not allowed even with trailing commas enabled; the - // trailing comma must follow a value. - { - StringStream s("[,]"); - ParseArrayHandler<3> h; - Reader reader; - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorValueInvalid, r.Code()); - EXPECT_EQ(1u, r.Offset()); - } - { - StringStream s("{,}"); - ParseObjectHandler h; - Reader reader; - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorObjectMissName, r.Code()); - EXPECT_EQ(1u, r.Offset()); - } -} - -TEST(Reader, EmptyExceptForCommaErrors) { - TestEmptyExceptForCommaErrors(); -} - -TEST(Reader, EmptyExceptForCommaErrorsIterative) { - TestEmptyExceptForCommaErrors(); -} - -template -void TestTrailingCommaHandlerTermination() { - { - HandlerTerminateAtEndArray h; - Reader reader; - StringStream s("[1,2,3,]"); - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(7u, r.Offset()); - } - { - HandlerTerminateAtEndObject h; - Reader reader; - StringStream s("{\"t\": true, \"f\": false,}"); - ParseResult r = reader.Parse(s, h); - EXPECT_TRUE(reader.HasParseError()); - EXPECT_EQ(kParseErrorTermination, r.Code()); - EXPECT_EQ(23u, r.Offset()); - } -} - -TEST(Reader, TrailingCommaHandlerTermination) { - TestTrailingCommaHandlerTermination(); -} - -TEST(Reader, TrailingCommaHandlerTerminationIterative) { - TestTrailingCommaHandlerTermination(); -} - -TEST(Reader, ParseNanAndInfinity) { -#define TEST_NAN_INF(str, x) \ - { \ - { \ - StringStream s(str); \ - ParseDoubleHandler h; \ - Reader reader; \ - ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); \ - EXPECT_EQ(1u, h.step_); \ - internal::Double e(x), a(h.actual_); \ - EXPECT_EQ(e.IsNan(), a.IsNan()); \ - EXPECT_EQ(e.IsInf(), a.IsInf()); \ - if (!e.IsNan()) \ - EXPECT_EQ(e.Sign(), a.Sign()); \ - } \ - { \ - const char* json = "{ \"naninfdouble\": " str " } "; \ - StringStream s(json); \ - NumbersAsStringsHandler h(str); \ - Reader reader; \ - EXPECT_TRUE(reader.Parse(s, h)); \ - } \ - { \ - char* json = StrDup("{ \"naninfdouble\": " str " } "); \ - InsituStringStream s(json); \ - NumbersAsStringsHandler h(str); \ - Reader reader; \ - EXPECT_TRUE(reader.Parse(s, h)); \ - free(json); \ - } \ - } -#define TEST_NAN_INF_ERROR(errorCode, str, errorOffset) \ - { \ - int streamPos = errorOffset; \ - char buffer[1001]; \ - strncpy(buffer, str, 1000); \ - InsituStringStream s(buffer); \ - BaseReaderHandler<> h; \ - Reader reader; \ - EXPECT_FALSE(reader.Parse(s, h)); \ - EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ - EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ - EXPECT_EQ(streamPos, s.Tell());\ - } - - double nan = std::numeric_limits::quiet_NaN(); - double inf = std::numeric_limits::infinity(); - - TEST_NAN_INF("NaN", nan); - TEST_NAN_INF("-NaN", nan); - TEST_NAN_INF("Inf", inf); - TEST_NAN_INF("Infinity", inf); - TEST_NAN_INF("-Inf", -inf); - TEST_NAN_INF("-Infinity", -inf); - TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "nan", 1); - TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "-nan", 1); - TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "NAN", 1); - TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "-Infinty", 6); - -#undef TEST_NAN_INF_ERROR -#undef TEST_NAN_INF -} - -RAPIDJSON_DIAG_POP diff --git a/rapidjson-lib/test/unittest/regextest.cpp b/rapidjson-lib/test/unittest/regextest.cpp deleted file mode 100644 index 4fb5b22..0000000 --- a/rapidjson-lib/test/unittest/regextest.cpp +++ /dev/null @@ -1,592 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/internal/regex.h" - -using namespace rapidjson::internal; - -TEST(Regex, Single) { - Regex re("a"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("b")); -} - -TEST(Regex, Concatenation) { - Regex re("abc"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abc")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ab")); - EXPECT_FALSE(re.Match("abcd")); -} - -TEST(Regex, Alternation1) { - Regex re("abab|abbb"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abab")); - EXPECT_TRUE(re.Match("abbb")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("ab")); - EXPECT_FALSE(re.Match("ababa")); - EXPECT_FALSE(re.Match("abb")); - EXPECT_FALSE(re.Match("abbbb")); -} - -TEST(Regex, Alternation2) { - Regex re("a|b|c"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("c")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("aa")); - EXPECT_FALSE(re.Match("ab")); -} - -TEST(Regex, Parenthesis1) { - Regex re("(ab)c"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abc")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ab")); - EXPECT_FALSE(re.Match("abcd")); -} - -TEST(Regex, Parenthesis2) { - Regex re("a(bc)"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abc")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ab")); - EXPECT_FALSE(re.Match("abcd")); -} - -TEST(Regex, Parenthesis3) { - Regex re("(a|b)(c|d)"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ac")); - EXPECT_TRUE(re.Match("ad")); - EXPECT_TRUE(re.Match("bc")); - EXPECT_TRUE(re.Match("bd")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("ab")); - EXPECT_FALSE(re.Match("cd")); -} - -TEST(Regex, ZeroOrOne1) { - Regex re("a?"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("")); - EXPECT_TRUE(re.Match("a")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, ZeroOrOne2) { - Regex re("a?b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("ab")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("aa")); - EXPECT_FALSE(re.Match("bb")); - EXPECT_FALSE(re.Match("ba")); -} - -TEST(Regex, ZeroOrOne3) { - Regex re("ab?"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("ab")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("aa")); - EXPECT_FALSE(re.Match("bb")); - EXPECT_FALSE(re.Match("ba")); -} - -TEST(Regex, ZeroOrOne4) { - Regex re("a?b?"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("")); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("ab")); - EXPECT_FALSE(re.Match("aa")); - EXPECT_FALSE(re.Match("bb")); - EXPECT_FALSE(re.Match("ba")); - EXPECT_FALSE(re.Match("abc")); -} - -TEST(Regex, ZeroOrOne5) { - Regex re("a(ab)?b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aabb")); - EXPECT_FALSE(re.Match("aab")); - EXPECT_FALSE(re.Match("abb")); -} - -TEST(Regex, ZeroOrMore1) { - Regex re("a*"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("")); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("aa")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ab")); -} - -TEST(Regex, ZeroOrMore2) { - Regex re("a*b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aab")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("bb")); -} - -TEST(Regex, ZeroOrMore3) { - Regex re("a*b*"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("")); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("aa")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("bb")); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aabb")); - EXPECT_FALSE(re.Match("ba")); -} - -TEST(Regex, ZeroOrMore4) { - Regex re("a(ab)*b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aabb")); - EXPECT_TRUE(re.Match("aababb")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, OneOrMore1) { - Regex re("a+"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("aa")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ab")); -} - -TEST(Regex, OneOrMore2) { - Regex re("a+b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aab")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("b")); -} - -TEST(Regex, OneOrMore3) { - Regex re("a+b+"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ab")); - EXPECT_TRUE(re.Match("aab")); - EXPECT_TRUE(re.Match("abb")); - EXPECT_TRUE(re.Match("aabb")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("ba")); -} - -TEST(Regex, OneOrMore4) { - Regex re("a(ab)+b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("aabb")); - EXPECT_TRUE(re.Match("aababb")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("ab")); -} - -TEST(Regex, QuantifierExact1) { - Regex re("ab{3}c"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbc")); - EXPECT_FALSE(re.Match("ac")); - EXPECT_FALSE(re.Match("abc")); - EXPECT_FALSE(re.Match("abbc")); - EXPECT_FALSE(re.Match("abbbbc")); -} - -TEST(Regex, QuantifierExact2) { - Regex re("a(bc){3}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abcbcbcd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abcd")); - EXPECT_FALSE(re.Match("abcbcd")); - EXPECT_FALSE(re.Match("abcbcbcbcd")); -} - -TEST(Regex, QuantifierExact3) { - Regex re("a(b|c){3}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbd")); - EXPECT_TRUE(re.Match("acccd")); - EXPECT_TRUE(re.Match("abcbd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abbd")); - EXPECT_FALSE(re.Match("accccd")); - EXPECT_FALSE(re.Match("abbbbd")); -} - -TEST(Regex, QuantifierMin1) { - Regex re("ab{3,}c"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbc")); - EXPECT_TRUE(re.Match("abbbbc")); - EXPECT_TRUE(re.Match("abbbbbc")); - EXPECT_FALSE(re.Match("ac")); - EXPECT_FALSE(re.Match("abc")); - EXPECT_FALSE(re.Match("abbc")); -} - -TEST(Regex, QuantifierMin2) { - Regex re("a(bc){3,}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abcbcbcd")); - EXPECT_TRUE(re.Match("abcbcbcbcd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abcd")); - EXPECT_FALSE(re.Match("abcbcd")); -} - -TEST(Regex, QuantifierMin3) { - Regex re("a(b|c){3,}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbd")); - EXPECT_TRUE(re.Match("acccd")); - EXPECT_TRUE(re.Match("abcbd")); - EXPECT_TRUE(re.Match("accccd")); - EXPECT_TRUE(re.Match("abbbbd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abbd")); -} - -TEST(Regex, QuantifierMinMax1) { - Regex re("ab{3,5}c"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbc")); - EXPECT_TRUE(re.Match("abbbbc")); - EXPECT_TRUE(re.Match("abbbbbc")); - EXPECT_FALSE(re.Match("ac")); - EXPECT_FALSE(re.Match("abc")); - EXPECT_FALSE(re.Match("abbc")); - EXPECT_FALSE(re.Match("abbbbbbc")); -} - -TEST(Regex, QuantifierMinMax2) { - Regex re("a(bc){3,5}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abcbcbcd")); - EXPECT_TRUE(re.Match("abcbcbcbcd")); - EXPECT_TRUE(re.Match("abcbcbcbcbcd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abcd")); - EXPECT_FALSE(re.Match("abcbcd")); - EXPECT_FALSE(re.Match("abcbcbcbcbcbcd")); -} - -TEST(Regex, QuantifierMinMax3) { - Regex re("a(b|c){3,5}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("abbbd")); - EXPECT_TRUE(re.Match("acccd")); - EXPECT_TRUE(re.Match("abcbd")); - EXPECT_TRUE(re.Match("accccd")); - EXPECT_TRUE(re.Match("abbbbd")); - EXPECT_TRUE(re.Match("acccccd")); - EXPECT_TRUE(re.Match("abbbbbd")); - EXPECT_FALSE(re.Match("ad")); - EXPECT_FALSE(re.Match("abbd")); - EXPECT_FALSE(re.Match("accccccd")); - EXPECT_FALSE(re.Match("abbbbbbd")); -} - -// Issue538 -TEST(Regex, QuantifierMinMax4) { - Regex re("a(b|c){0,3}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ad")); - EXPECT_TRUE(re.Match("abd")); - EXPECT_TRUE(re.Match("acd")); - EXPECT_TRUE(re.Match("abbd")); - EXPECT_TRUE(re.Match("accd")); - EXPECT_TRUE(re.Match("abcd")); - EXPECT_TRUE(re.Match("abbbd")); - EXPECT_TRUE(re.Match("acccd")); - EXPECT_FALSE(re.Match("abbbbd")); - EXPECT_FALSE(re.Match("add")); - EXPECT_FALSE(re.Match("accccd")); - EXPECT_FALSE(re.Match("abcbcd")); -} - -// Issue538 -TEST(Regex, QuantifierMinMax5) { - Regex re("a(b|c){0,}d"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("ad")); - EXPECT_TRUE(re.Match("abd")); - EXPECT_TRUE(re.Match("acd")); - EXPECT_TRUE(re.Match("abbd")); - EXPECT_TRUE(re.Match("accd")); - EXPECT_TRUE(re.Match("abcd")); - EXPECT_TRUE(re.Match("abbbd")); - EXPECT_TRUE(re.Match("acccd")); - EXPECT_TRUE(re.Match("abbbbd")); - EXPECT_TRUE(re.Match("accccd")); - EXPECT_TRUE(re.Match("abcbcd")); - EXPECT_FALSE(re.Match("add")); - EXPECT_FALSE(re.Match("aad")); -} - -#define EURO "\xE2\x82\xAC" // "\xE2\x82\xAC" is UTF-8 sequence of Euro sign U+20AC - -TEST(Regex, Unicode) { - Regex re("a" EURO "+b"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a" EURO "b")); - EXPECT_TRUE(re.Match("a" EURO EURO "b")); - EXPECT_FALSE(re.Match("a?b")); - EXPECT_FALSE(re.Match("a" EURO "\xAC" "b")); // unaware of UTF-8 will match -} - -TEST(Regex, AnyCharacter) { - Regex re("."); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match(EURO)); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, CharacterRange1) { - Regex re("[abc]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("c")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("`")); - EXPECT_FALSE(re.Match("d")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, CharacterRange2) { - Regex re("[^abc]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("`")); - EXPECT_TRUE(re.Match("d")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("c")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, CharacterRange3) { - Regex re("[a-c]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("b")); - EXPECT_TRUE(re.Match("c")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("`")); - EXPECT_FALSE(re.Match("d")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, CharacterRange4) { - Regex re("[^a-c]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("`")); - EXPECT_TRUE(re.Match("d")); - EXPECT_FALSE(re.Match("a")); - EXPECT_FALSE(re.Match("b")); - EXPECT_FALSE(re.Match("c")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("aa")); -} - -TEST(Regex, CharacterRange5) { - Regex re("[-]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("-")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("a")); -} - -TEST(Regex, CharacterRange6) { - Regex re("[a-]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("-")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("`")); - EXPECT_FALSE(re.Match("b")); -} - -TEST(Regex, CharacterRange7) { - Regex re("[-a]"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("a")); - EXPECT_TRUE(re.Match("-")); - EXPECT_FALSE(re.Match("")); - EXPECT_FALSE(re.Match("`")); - EXPECT_FALSE(re.Match("b")); -} - -TEST(Regex, CharacterRange8) { - Regex re("[a-zA-Z0-9]*"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("Milo")); - EXPECT_TRUE(re.Match("MT19937")); - EXPECT_TRUE(re.Match("43")); - EXPECT_FALSE(re.Match("a_b")); - EXPECT_FALSE(re.Match("!")); -} - -TEST(Regex, Search) { - Regex re("abc"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Search("abc")); - EXPECT_TRUE(re.Search("_abc")); - EXPECT_TRUE(re.Search("abc_")); - EXPECT_TRUE(re.Search("_abc_")); - EXPECT_TRUE(re.Search("__abc__")); - EXPECT_TRUE(re.Search("abcabc")); - EXPECT_FALSE(re.Search("a")); - EXPECT_FALSE(re.Search("ab")); - EXPECT_FALSE(re.Search("bc")); - EXPECT_FALSE(re.Search("cba")); -} - -TEST(Regex, Search_BeginAnchor) { - Regex re("^abc"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Search("abc")); - EXPECT_TRUE(re.Search("abc_")); - EXPECT_TRUE(re.Search("abcabc")); - EXPECT_FALSE(re.Search("_abc")); - EXPECT_FALSE(re.Search("_abc_")); - EXPECT_FALSE(re.Search("a")); - EXPECT_FALSE(re.Search("ab")); - EXPECT_FALSE(re.Search("bc")); - EXPECT_FALSE(re.Search("cba")); -} - -TEST(Regex, Search_EndAnchor) { - Regex re("abc$"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Search("abc")); - EXPECT_TRUE(re.Search("_abc")); - EXPECT_TRUE(re.Search("abcabc")); - EXPECT_FALSE(re.Search("abc_")); - EXPECT_FALSE(re.Search("_abc_")); - EXPECT_FALSE(re.Search("a")); - EXPECT_FALSE(re.Search("ab")); - EXPECT_FALSE(re.Search("bc")); - EXPECT_FALSE(re.Search("cba")); -} - -TEST(Regex, Search_BothAnchor) { - Regex re("^abc$"); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Search("abc")); - EXPECT_FALSE(re.Search("")); - EXPECT_FALSE(re.Search("a")); - EXPECT_FALSE(re.Search("b")); - EXPECT_FALSE(re.Search("ab")); - EXPECT_FALSE(re.Search("abcd")); -} - -TEST(Regex, Escape) { - const char* s = "\\^\\$\\|\\(\\)\\?\\*\\+\\.\\[\\]\\{\\}\\\\\\f\\n\\r\\t\\v[\\b][\\[][\\]]"; - Regex re(s); - ASSERT_TRUE(re.IsValid()); - EXPECT_TRUE(re.Match("^$|()?*+.[]{}\\\x0C\n\r\t\x0B\b[]")); - EXPECT_FALSE(re.Match(s)); // Not escaping -} - -TEST(Regex, Invalid) { -#define TEST_INVALID(s) \ - {\ - Regex re(s);\ - EXPECT_FALSE(re.IsValid());\ - } - - TEST_INVALID(""); - TEST_INVALID("a|"); - TEST_INVALID("()"); - TEST_INVALID(")"); - TEST_INVALID("(a))"); - TEST_INVALID("(a|)"); - TEST_INVALID("(a||b)"); - TEST_INVALID("(|b)"); - TEST_INVALID("?"); - TEST_INVALID("*"); - TEST_INVALID("+"); - TEST_INVALID("{"); - TEST_INVALID("{}"); - TEST_INVALID("a{a}"); - TEST_INVALID("a{0}"); - TEST_INVALID("a{-1}"); - TEST_INVALID("a{}"); - // TEST_INVALID("a{0,}"); // Support now - TEST_INVALID("a{,0}"); - TEST_INVALID("a{1,0}"); - TEST_INVALID("a{-1,0}"); - TEST_INVALID("a{-1,1}"); - TEST_INVALID("a{4294967296}"); // overflow of unsigned - TEST_INVALID("a{1a}"); - TEST_INVALID("["); - TEST_INVALID("[]"); - TEST_INVALID("[^]"); - TEST_INVALID("[\\a]"); - TEST_INVALID("\\a"); - -#undef TEST_INVALID -} - -TEST(Regex, Issue538) { - Regex re("^[0-9]+(\\\\.[0-9]+){0,2}"); - EXPECT_TRUE(re.IsValid()); -} - -TEST(Regex, Issue583) { - Regex re("[0-9]{99999}"); - ASSERT_TRUE(re.IsValid()); -} - -#undef EURO diff --git a/rapidjson-lib/test/unittest/schematest.cpp b/rapidjson-lib/test/unittest/schematest.cpp deleted file mode 100644 index d75b1e5..0000000 --- a/rapidjson-lib/test/unittest/schematest.cpp +++ /dev/null @@ -1,1313 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/schema.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/writer.h" - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(variadic-macros) -#endif - -using namespace rapidjson; - -#define TEST_HASHER(json1, json2, expected) \ -{\ - Document d1, d2;\ - d1.Parse(json1);\ - ASSERT_FALSE(d1.HasParseError());\ - d2.Parse(json2);\ - ASSERT_FALSE(d2.HasParseError());\ - internal::Hasher h1, h2;\ - d1.Accept(h1);\ - d2.Accept(h2);\ - ASSERT_TRUE(h1.IsValid());\ - ASSERT_TRUE(h2.IsValid());\ - /*printf("%s: 0x%016llx\n%s: 0x%016llx\n\n", json1, h1.GetHashCode(), json2, h2.GetHashCode());*/\ - EXPECT_TRUE(expected == (h1.GetHashCode() == h2.GetHashCode()));\ -} - -TEST(SchemaValidator, Hasher) { - TEST_HASHER("null", "null", true); - - TEST_HASHER("true", "true", true); - TEST_HASHER("false", "false", true); - TEST_HASHER("true", "false", false); - TEST_HASHER("false", "true", false); - TEST_HASHER("true", "null", false); - TEST_HASHER("false", "null", false); - - TEST_HASHER("1", "1", true); - TEST_HASHER("2147483648", "2147483648", true); // 2^31 can only be fit in unsigned - TEST_HASHER("-2147483649", "-2147483649", true); // -2^31 - 1 can only be fit in int64_t - TEST_HASHER("2147483648", "2147483648", true); // 2^31 can only be fit in unsigned - TEST_HASHER("4294967296", "4294967296", true); // 2^32 can only be fit in int64_t - TEST_HASHER("9223372036854775808", "9223372036854775808", true); // 2^63 can only be fit in uint64_t - TEST_HASHER("1.5", "1.5", true); - TEST_HASHER("1", "1.0", true); - TEST_HASHER("1", "-1", false); - TEST_HASHER("0.0", "-0.0", false); - TEST_HASHER("1", "true", false); - TEST_HASHER("0", "false", false); - TEST_HASHER("0", "null", false); - - TEST_HASHER("\"\"", "\"\"", true); - TEST_HASHER("\"\"", "\"\\u0000\"", false); - TEST_HASHER("\"Hello\"", "\"Hello\"", true); - TEST_HASHER("\"Hello\"", "\"World\"", false); - TEST_HASHER("\"Hello\"", "null", false); - TEST_HASHER("\"Hello\\u0000\"", "\"Hello\"", false); - TEST_HASHER("\"\"", "null", false); - TEST_HASHER("\"\"", "true", false); - TEST_HASHER("\"\"", "false", false); - - TEST_HASHER("[]", "[ ]", true); - TEST_HASHER("[1, true, false]", "[1, true, false]", true); - TEST_HASHER("[1, true, false]", "[1, true]", false); - TEST_HASHER("[1, 2]", "[2, 1]", false); - TEST_HASHER("[[1], 2]", "[[1, 2]]", false); - TEST_HASHER("[1, 2]", "[1, [2]]", false); - TEST_HASHER("[]", "null", false); - TEST_HASHER("[]", "true", false); - TEST_HASHER("[]", "false", false); - TEST_HASHER("[]", "0", false); - TEST_HASHER("[]", "0.0", false); - TEST_HASHER("[]", "\"\"", false); - - TEST_HASHER("{}", "{ }", true); - TEST_HASHER("{\"a\":1}", "{\"a\":1}", true); - TEST_HASHER("{\"a\":1}", "{\"b\":1}", false); - TEST_HASHER("{\"a\":1}", "{\"a\":2}", false); - TEST_HASHER("{\"a\":1, \"b\":2}", "{\"b\":2, \"a\":1}", true); // Member order insensitive - TEST_HASHER("{}", "null", false); - TEST_HASHER("{}", "false", false); - TEST_HASHER("{}", "true", false); - TEST_HASHER("{}", "0", false); - TEST_HASHER("{}", "0.0", false); - TEST_HASHER("{}", "\"\"", false); -} - -// Test cases following http://spacetelescope.github.io/understanding-json-schema - -#define VALIDATE(schema, json, expected) \ -{\ - SchemaValidator validator(schema);\ - Document d;\ - /*printf("\n%s\n", json);*/\ - d.Parse(json);\ - EXPECT_FALSE(d.HasParseError());\ - EXPECT_TRUE(expected == d.Accept(validator));\ - EXPECT_TRUE(expected == validator.IsValid());\ - if ((expected) && !validator.IsValid()) {\ - StringBuffer sb;\ - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);\ - printf("Invalid schema: %s\n", sb.GetString());\ - printf("Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword());\ - sb.Clear();\ - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb);\ - printf("Invalid document: %s\n", sb.GetString());\ - }\ -} - -#define INVALIDATE(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer) \ -{\ - SchemaValidator validator(schema);\ - Document d;\ - /*printf("\n%s\n", json);*/\ - d.Parse(json);\ - EXPECT_FALSE(d.HasParseError());\ - EXPECT_FALSE(d.Accept(validator));\ - EXPECT_FALSE(validator.IsValid());\ - if (validator.GetInvalidSchemaPointer() != Pointer(invalidSchemaPointer)) {\ - StringBuffer sb;\ - validator.GetInvalidSchemaPointer().Stringify(sb);\ - printf("GetInvalidSchemaPointer() Expected: %s Actual: %s\n", invalidSchemaPointer, sb.GetString());\ - ADD_FAILURE();\ - }\ - ASSERT_TRUE(validator.GetInvalidSchemaKeyword() != 0);\ - if (strcmp(validator.GetInvalidSchemaKeyword(), invalidSchemaKeyword) != 0) {\ - printf("GetInvalidSchemaKeyword() Expected: %s Actual %s\n", invalidSchemaKeyword, validator.GetInvalidSchemaKeyword());\ - ADD_FAILURE();\ - }\ - if (validator.GetInvalidDocumentPointer() != Pointer(invalidDocumentPointer)) {\ - StringBuffer sb;\ - validator.GetInvalidDocumentPointer().Stringify(sb);\ - printf("GetInvalidDocumentPointer() Expected: %s Actual: %s\n", invalidDocumentPointer, sb.GetString());\ - ADD_FAILURE();\ - }\ -} - -TEST(SchemaValidator, Typeless) { - Document sd; - sd.Parse("{}"); - SchemaDocument s(sd); - - VALIDATE(s, "42", true); - VALIDATE(s, "\"I'm a string\"", true); - VALIDATE(s, "{ \"an\": [ \"arbitrarily\", \"nested\" ], \"data\": \"structure\" }", true); -} - -TEST(SchemaValidator, MultiType) { - Document sd; - sd.Parse("{ \"type\": [\"number\", \"string\"] }"); - SchemaDocument s(sd); - - VALIDATE(s, "42", true); - VALIDATE(s, "\"Life, the universe, and everything\"", true); - INVALIDATE(s, "[\"Life\", \"the universe\", \"and everything\"]", "", "type", ""); -} - -TEST(SchemaValidator, Enum_Typed) { - Document sd; - sd.Parse("{ \"type\": \"string\", \"enum\" : [\"red\", \"amber\", \"green\"] }"); - SchemaDocument s(sd); - - VALIDATE(s, "\"red\"", true); - INVALIDATE(s, "\"blue\"", "", "enum", ""); -} - -TEST(SchemaValidator, Enum_Typless) { - Document sd; - sd.Parse("{ \"enum\": [\"red\", \"amber\", \"green\", null, 42] }"); - SchemaDocument s(sd); - - VALIDATE(s, "\"red\"", true); - VALIDATE(s, "null", true); - VALIDATE(s, "42", true); - INVALIDATE(s, "0", "", "enum", ""); -} - -TEST(SchemaValidator, Enum_InvalidType) { - Document sd; - sd.Parse("{ \"type\": \"string\", \"enum\": [\"red\", \"amber\", \"green\", null] }"); - SchemaDocument s(sd); - - VALIDATE(s, "\"red\"", true); - INVALIDATE(s, "null", "", "type", ""); -} - -TEST(SchemaValidator, AllOf) { - { - Document sd; - sd.Parse("{\"allOf\": [{ \"type\": \"string\" }, { \"type\": \"string\", \"maxLength\": 5 }]}"); - SchemaDocument s(sd); - - VALIDATE(s, "\"ok\"", true); - INVALIDATE(s, "\"too long\"", "", "allOf", ""); - } - { - Document sd; - sd.Parse("{\"allOf\": [{ \"type\": \"string\" }, { \"type\": \"number\" } ] }"); - SchemaDocument s(sd); - - VALIDATE(s, "\"No way\"", false); - INVALIDATE(s, "-1", "", "allOf", ""); - } -} - -TEST(SchemaValidator, AnyOf) { - Document sd; - sd.Parse("{\"anyOf\": [{ \"type\": \"string\" }, { \"type\": \"number\" } ] }"); - SchemaDocument s(sd); - - VALIDATE(s, "\"Yes\"", true); - VALIDATE(s, "42", true); - INVALIDATE(s, "{ \"Not a\": \"string or number\" }", "", "anyOf", ""); -} - -TEST(SchemaValidator, OneOf) { - Document sd; - sd.Parse("{\"oneOf\": [{ \"type\": \"number\", \"multipleOf\": 5 }, { \"type\": \"number\", \"multipleOf\": 3 } ] }"); - SchemaDocument s(sd); - - VALIDATE(s, "10", true); - VALIDATE(s, "9", true); - INVALIDATE(s, "2", "", "oneOf", ""); - INVALIDATE(s, "15", "", "oneOf", ""); -} - -TEST(SchemaValidator, Not) { - Document sd; - sd.Parse("{\"not\":{ \"type\": \"string\"}}"); - SchemaDocument s(sd); - - VALIDATE(s, "42", true); - VALIDATE(s, "{ \"key\": \"value\" }", true); - INVALIDATE(s, "\"I am a string\"", "", "not", ""); -} - -TEST(SchemaValidator, Ref) { - Document sd; - sd.Parse( - "{" - " \"$schema\": \"http://json-schema.org/draft-04/schema#\"," - "" - " \"definitions\": {" - " \"address\": {" - " \"type\": \"object\"," - " \"properties\": {" - " \"street_address\": { \"type\": \"string\" }," - " \"city\": { \"type\": \"string\" }," - " \"state\": { \"type\": \"string\" }" - " }," - " \"required\": [\"street_address\", \"city\", \"state\"]" - " }" - " }," - " \"type\": \"object\"," - " \"properties\": {" - " \"billing_address\": { \"$ref\": \"#/definitions/address\" }," - " \"shipping_address\": { \"$ref\": \"#/definitions/address\" }" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{\"shipping_address\": {\"street_address\": \"1600 Pennsylvania Avenue NW\", \"city\": \"Washington\", \"state\": \"DC\"}, \"billing_address\": {\"street_address\": \"1st Street SE\", \"city\": \"Washington\", \"state\": \"DC\"} }", true); -} - -TEST(SchemaValidator, Ref_AllOf) { - Document sd; - sd.Parse( - "{" - " \"$schema\": \"http://json-schema.org/draft-04/schema#\"," - "" - " \"definitions\": {" - " \"address\": {" - " \"type\": \"object\"," - " \"properties\": {" - " \"street_address\": { \"type\": \"string\" }," - " \"city\": { \"type\": \"string\" }," - " \"state\": { \"type\": \"string\" }" - " }," - " \"required\": [\"street_address\", \"city\", \"state\"]" - " }" - " }," - " \"type\": \"object\"," - " \"properties\": {" - " \"billing_address\": { \"$ref\": \"#/definitions/address\" }," - " \"shipping_address\": {" - " \"allOf\": [" - " { \"$ref\": \"#/definitions/address\" }," - " { \"properties\":" - " { \"type\": { \"enum\": [ \"residential\", \"business\" ] } }," - " \"required\": [\"type\"]" - " }" - " ]" - " }" - " }" - "}"); - SchemaDocument s(sd); - - INVALIDATE(s, "{\"shipping_address\": {\"street_address\": \"1600 Pennsylvania Avenue NW\", \"city\": \"Washington\", \"state\": \"DC\"} }", "/properties/shipping_address", "allOf", "/shipping_address"); - VALIDATE(s, "{\"shipping_address\": {\"street_address\": \"1600 Pennsylvania Avenue NW\", \"city\": \"Washington\", \"state\": \"DC\", \"type\": \"business\"} }", true); -} - -TEST(SchemaValidator, String) { - Document sd; - sd.Parse("{\"type\":\"string\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "\"I'm a string\"", true); - INVALIDATE(s, "42", "", "type", ""); - INVALIDATE(s, "2147483648", "", "type", ""); // 2^31 can only be fit in unsigned - INVALIDATE(s, "-2147483649", "", "type", ""); // -2^31 - 1 can only be fit in int64_t - INVALIDATE(s, "4294967296", "", "type", ""); // 2^32 can only be fit in int64_t - INVALIDATE(s, "3.1415926", "", "type", ""); -} - -TEST(SchemaValidator, String_LengthRange) { - Document sd; - sd.Parse("{\"type\":\"string\",\"minLength\":2,\"maxLength\":3}"); - SchemaDocument s(sd); - - INVALIDATE(s, "\"A\"", "", "minLength", ""); - VALIDATE(s, "\"AB\"", true); - VALIDATE(s, "\"ABC\"", true); - INVALIDATE(s, "\"ABCD\"", "", "maxLength", ""); -} - -#if RAPIDJSON_SCHEMA_HAS_REGEX -TEST(SchemaValidator, String_Pattern) { - Document sd; - sd.Parse("{\"type\":\"string\",\"pattern\":\"^(\\\\([0-9]{3}\\\\))?[0-9]{3}-[0-9]{4}$\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "\"555-1212\"", true); - VALIDATE(s, "\"(888)555-1212\"", true); - INVALIDATE(s, "\"(888)555-1212 ext. 532\"", "", "pattern", ""); - INVALIDATE(s, "\"(800)FLOWERS\"", "", "pattern", ""); -} - -TEST(SchemaValidator, String_Pattern_Invalid) { - Document sd; - sd.Parse("{\"type\":\"string\",\"pattern\":\"a{0}\"}"); // TODO: report regex is invalid somehow - SchemaDocument s(sd); - - VALIDATE(s, "\"\"", true); - VALIDATE(s, "\"a\"", true); - VALIDATE(s, "\"aa\"", true); -} -#endif - -TEST(SchemaValidator, Integer) { - Document sd; - sd.Parse("{\"type\":\"integer\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "42", true); - VALIDATE(s, "-1", true); - VALIDATE(s, "2147483648", true); // 2^31 can only be fit in unsigned - VALIDATE(s, "-2147483649", true); // -2^31 - 1 can only be fit in int64_t - VALIDATE(s, "2147483648", true); // 2^31 can only be fit in unsigned - VALIDATE(s, "4294967296", true); // 2^32 can only be fit in int64_t - INVALIDATE(s, "3.1415926", "", "type", ""); - INVALIDATE(s, "\"42\"", "", "type", ""); -} - -TEST(SchemaValidator, Integer_Range) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"minimum\":0,\"maximum\":100,\"exclusiveMaximum\":true}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-1", "", "minimum", ""); - VALIDATE(s, "0", true); - VALIDATE(s, "10", true); - VALIDATE(s, "99", true); - INVALIDATE(s, "100", "", "maximum", ""); - INVALIDATE(s, "101", "", "maximum", ""); -} - -TEST(SchemaValidator, Integer_Range64Boundary) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"minimum\":-9223372036854775807,\"maximum\":9223372036854775806}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-9223372036854775808", "", "minimum", ""); - VALIDATE(s, "-9223372036854775807", true); - VALIDATE(s, "-2147483648", true); // int min - VALIDATE(s, "0", true); - VALIDATE(s, "2147483647", true); // int max - VALIDATE(s, "2147483648", true); // unsigned first - VALIDATE(s, "4294967295", true); // unsigned max - VALIDATE(s, "9223372036854775806", true); - INVALIDATE(s, "9223372036854775807", "", "maximum", ""); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); // uint64_t max -} - -TEST(SchemaValidator, Integer_RangeU64Boundary) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"minimum\":9223372036854775808,\"maximum\":18446744073709551614}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-9223372036854775808", "", "minimum", ""); - INVALIDATE(s, "9223372036854775807", "", "minimum", ""); - INVALIDATE(s, "-2147483648", "", "minimum", ""); // int min - INVALIDATE(s, "0", "", "minimum", ""); - INVALIDATE(s, "2147483647", "", "minimum", ""); // int max - INVALIDATE(s, "2147483648", "", "minimum", ""); // unsigned first - INVALIDATE(s, "4294967295", "", "minimum", ""); // unsigned max - VALIDATE(s, "9223372036854775808", true); - VALIDATE(s, "18446744073709551614", true); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); -} - -TEST(SchemaValidator, Integer_Range64BoundaryExclusive) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"minimum\":-9223372036854775808,\"maximum\":18446744073709551615,\"exclusiveMinimum\":true,\"exclusiveMaximum\":true}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-9223372036854775808", "", "minimum", ""); - VALIDATE(s, "-9223372036854775807", true); - VALIDATE(s, "18446744073709551614", true); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); -} - -TEST(SchemaValidator, Integer_MultipleOf) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"multipleOf\":10}"); - SchemaDocument s(sd); - - VALIDATE(s, "0", true); - VALIDATE(s, "10", true); - VALIDATE(s, "-10", true); - VALIDATE(s, "20", true); - INVALIDATE(s, "23", "", "multipleOf", ""); - INVALIDATE(s, "-23", "", "multipleOf", ""); -} - -TEST(SchemaValidator, Integer_MultipleOf64Boundary) { - Document sd; - sd.Parse("{\"type\":\"integer\",\"multipleOf\":18446744073709551615}"); - SchemaDocument s(sd); - - VALIDATE(s, "0", true); - VALIDATE(s, "18446744073709551615", true); - INVALIDATE(s, "18446744073709551614", "", "multipleOf", ""); -} - -TEST(SchemaValidator, Number_Range) { - Document sd; - sd.Parse("{\"type\":\"number\",\"minimum\":0,\"maximum\":100,\"exclusiveMaximum\":true}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-1", "", "minimum", ""); - VALIDATE(s, "0", true); - VALIDATE(s, "0.1", true); - VALIDATE(s, "10", true); - VALIDATE(s, "99", true); - VALIDATE(s, "99.9", true); - INVALIDATE(s, "100", "", "maximum", ""); - INVALIDATE(s, "100.0", "", "maximum", ""); - INVALIDATE(s, "101.5", "", "maximum", ""); -} - -TEST(SchemaValidator, Number_RangeInt) { - Document sd; - sd.Parse("{\"type\":\"number\",\"minimum\":-100,\"maximum\":-1,\"exclusiveMaximum\":true}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-101", "", "minimum", ""); - INVALIDATE(s, "-100.1", "", "minimum", ""); - VALIDATE(s, "-100", true); - VALIDATE(s, "-2", true); - INVALIDATE(s, "-1", "", "maximum", ""); - INVALIDATE(s, "-0.9", "", "maximum", ""); - INVALIDATE(s, "0", "", "maximum", ""); - INVALIDATE(s, "2147483647", "", "maximum", ""); // int max - INVALIDATE(s, "2147483648", "", "maximum", ""); // unsigned first - INVALIDATE(s, "4294967295", "", "maximum", ""); // unsigned max - INVALIDATE(s, "9223372036854775808", "", "maximum", ""); - INVALIDATE(s, "18446744073709551614", "", "maximum", ""); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); -} - -TEST(SchemaValidator, Number_RangeDouble) { - Document sd; - sd.Parse("{\"type\":\"number\",\"minimum\":0.1,\"maximum\":100.1,\"exclusiveMaximum\":true}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-9223372036854775808", "", "minimum", ""); - INVALIDATE(s, "-2147483648", "", "minimum", ""); // int min - INVALIDATE(s, "-1", "", "minimum", ""); - VALIDATE(s, "0.1", true); - VALIDATE(s, "10", true); - VALIDATE(s, "99", true); - VALIDATE(s, "100", true); - INVALIDATE(s, "101", "", "maximum", ""); - INVALIDATE(s, "101.5", "", "maximum", ""); - INVALIDATE(s, "18446744073709551614", "", "maximum", ""); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); - INVALIDATE(s, "2147483647", "", "maximum", ""); // int max - INVALIDATE(s, "2147483648", "", "maximum", ""); // unsigned first - INVALIDATE(s, "4294967295", "", "maximum", ""); // unsigned max - INVALIDATE(s, "9223372036854775808", "", "maximum", ""); - INVALIDATE(s, "18446744073709551614", "", "maximum", ""); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); -} - -TEST(SchemaValidator, Number_RangeDoubleU64Boundary) { - Document sd; - sd.Parse("{\"type\":\"number\",\"minimum\":9223372036854775808.0,\"maximum\":18446744073709550000.0}"); - SchemaDocument s(sd); - - INVALIDATE(s, "-9223372036854775808", "", "minimum", ""); - INVALIDATE(s, "-2147483648", "", "minimum", ""); // int min - INVALIDATE(s, "0", "", "minimum", ""); - INVALIDATE(s, "2147483647", "", "minimum", ""); // int max - INVALIDATE(s, "2147483648", "", "minimum", ""); // unsigned first - INVALIDATE(s, "4294967295", "", "minimum", ""); // unsigned max - VALIDATE(s, "9223372036854775808", true); - VALIDATE(s, "18446744073709540000", true); - INVALIDATE(s, "18446744073709551615", "", "maximum", ""); -} - -TEST(SchemaValidator, Number_MultipleOf) { - Document sd; - sd.Parse("{\"type\":\"number\",\"multipleOf\":10.0}"); - SchemaDocument s(sd); - - VALIDATE(s, "0", true); - VALIDATE(s, "10", true); - VALIDATE(s, "-10", true); - VALIDATE(s, "20", true); - INVALIDATE(s, "23", "", "multipleOf", ""); - INVALIDATE(s, "-2147483648", "", "multipleOf", ""); // int min - VALIDATE(s, "-2147483640", true); - INVALIDATE(s, "2147483647", "", "multipleOf", ""); // int max - INVALIDATE(s, "2147483648", "", "multipleOf", ""); // unsigned first - VALIDATE(s, "2147483650", true); - INVALIDATE(s, "4294967295", "", "multipleOf", ""); // unsigned max - VALIDATE(s, "4294967300", true); -} - -TEST(SchemaValidator, Number_MultipleOfOne) { - Document sd; - sd.Parse("{\"type\":\"number\",\"multipleOf\":1}"); - SchemaDocument s(sd); - - VALIDATE(s, "42", true); - VALIDATE(s, "42.0", true); - INVALIDATE(s, "3.1415926", "", "multipleOf", ""); -} - -TEST(SchemaValidator, Object) { - Document sd; - sd.Parse("{\"type\":\"object\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "{\"key\":\"value\",\"another_key\":\"another_value\"}", true); - VALIDATE(s, "{\"Sun\":1.9891e30,\"Jupiter\":1.8986e27,\"Saturn\":5.6846e26,\"Neptune\":10.243e25,\"Uranus\":8.6810e25,\"Earth\":5.9736e24,\"Venus\":4.8685e24,\"Mars\":6.4185e23,\"Mercury\":3.3022e23,\"Moon\":7.349e22,\"Pluto\":1.25e22}", true); - INVALIDATE(s, "[\"An\", \"array\", \"not\", \"an\", \"object\"]", "", "type", ""); - INVALIDATE(s, "\"Not an object\"", "", "type", ""); -} - -TEST(SchemaValidator, Object_Properties) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\" : {" - " \"number\": { \"type\": \"number\" }," - " \"street_name\" : { \"type\": \"string\" }," - " \"street_type\" : { \"type\": \"string\", \"enum\" : [\"Street\", \"Avenue\", \"Boulevard\"] }" - " }" - "}"); - - SchemaDocument s(sd); - - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\" }", true); - INVALIDATE(s, "{ \"number\": \"1600\", \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\" }", "/properties/number", "type", "/number"); - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\" }", true); - VALIDATE(s, "{}", true); - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\", \"direction\": \"NW\" }", true); -} - -TEST(SchemaValidator, Object_AdditionalPropertiesBoolean) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\" : {" - " \"number\": { \"type\": \"number\" }," - " \"street_name\" : { \"type\": \"string\" }," - " \"street_type\" : { \"type\": \"string\"," - " \"enum\" : [\"Street\", \"Avenue\", \"Boulevard\"]" - " }" - " }," - " \"additionalProperties\": false" - "}"); - - SchemaDocument s(sd); - - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\" }", true); - INVALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\", \"direction\": \"NW\" }", "", "additionalProperties", "/direction"); -} - -TEST(SchemaValidator, Object_AdditionalPropertiesObject) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\" : {" - " \"number\": { \"type\": \"number\" }," - " \"street_name\" : { \"type\": \"string\" }," - " \"street_type\" : { \"type\": \"string\"," - " \"enum\" : [\"Street\", \"Avenue\", \"Boulevard\"]" - " }" - " }," - " \"additionalProperties\": { \"type\": \"string\" }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\" }", true); - VALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\", \"direction\": \"NW\" }", true); - INVALIDATE(s, "{ \"number\": 1600, \"street_name\": \"Pennsylvania\", \"street_type\": \"Avenue\", \"office_number\": 201 }", "/additionalProperties", "type", "/office_number"); -} - -TEST(SchemaValidator, Object_Required) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\" : {" - " \"name\": { \"type\": \"string\" }," - " \"email\" : { \"type\": \"string\" }," - " \"address\" : { \"type\": \"string\" }," - " \"telephone\" : { \"type\": \"string\" }" - " }," - " \"required\":[\"name\", \"email\"]" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"name\": \"William Shakespeare\", \"email\" : \"bill@stratford-upon-avon.co.uk\" }", true); - VALIDATE(s, "{ \"name\": \"William Shakespeare\", \"email\" : \"bill@stratford-upon-avon.co.uk\", \"address\" : \"Henley Street, Stratford-upon-Avon, Warwickshire, England\", \"authorship\" : \"in question\"}", true); - INVALIDATE(s, "{ \"name\": \"William Shakespeare\", \"address\" : \"Henley Street, Stratford-upon-Avon, Warwickshire, England\" }", "", "required", ""); -} - - -TEST(SchemaValidator, Object_PropertiesRange) { - Document sd; - sd.Parse("{\"type\":\"object\", \"minProperties\":2, \"maxProperties\":3}"); - SchemaDocument s(sd); - - INVALIDATE(s, "{}", "", "minProperties", ""); - INVALIDATE(s, "{\"a\":0}", "", "minProperties", ""); - VALIDATE(s, "{\"a\":0,\"b\":1}", true); - VALIDATE(s, "{\"a\":0,\"b\":1,\"c\":2}", true); - INVALIDATE(s, "{\"a\":0,\"b\":1,\"c\":2,\"d\":3}", "", "maxProperties", ""); -} - -TEST(SchemaValidator, Object_PropertyDependencies) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\": {" - " \"name\": { \"type\": \"string\" }," - " \"credit_card\": { \"type\": \"number\" }," - " \"billing_address\": { \"type\": \"string\" }" - " }," - " \"required\": [\"name\"]," - " \"dependencies\": {" - " \"credit_card\": [\"billing_address\"]" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"name\": \"John Doe\", \"credit_card\": 5555555555555555, \"billing_address\": \"555 Debtor's Lane\" }", true); - INVALIDATE(s, "{ \"name\": \"John Doe\", \"credit_card\": 5555555555555555 }", "", "dependencies", ""); - VALIDATE(s, "{ \"name\": \"John Doe\"}", true); - VALIDATE(s, "{ \"name\": \"John Doe\", \"billing_address\": \"555 Debtor's Lane\" }", true); -} - -TEST(SchemaValidator, Object_SchemaDependencies) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\" : {" - " \"name\": { \"type\": \"string\" }," - " \"credit_card\" : { \"type\": \"number\" }" - " }," - " \"required\" : [\"name\"]," - " \"dependencies\" : {" - " \"credit_card\": {" - " \"properties\": {" - " \"billing_address\": { \"type\": \"string\" }" - " }," - " \"required\" : [\"billing_address\"]" - " }" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{\"name\": \"John Doe\", \"credit_card\" : 5555555555555555,\"billing_address\" : \"555 Debtor's Lane\"}", true); - INVALIDATE(s, "{\"name\": \"John Doe\", \"credit_card\" : 5555555555555555 }", "", "dependencies", ""); - VALIDATE(s, "{\"name\": \"John Doe\", \"billing_address\" : \"555 Debtor's Lane\"}", true); -} - -#if RAPIDJSON_SCHEMA_HAS_REGEX -TEST(SchemaValidator, Object_PatternProperties) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"patternProperties\": {" - " \"^S_\": { \"type\": \"string\" }," - " \"^I_\": { \"type\": \"integer\" }" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"S_25\": \"This is a string\" }", true); - VALIDATE(s, "{ \"I_0\": 42 }", true); - INVALIDATE(s, "{ \"S_0\": 42 }", "", "patternProperties", "/S_0"); - INVALIDATE(s, "{ \"I_42\": \"This is a string\" }", "", "patternProperties", "/I_42"); - VALIDATE(s, "{ \"keyword\": \"value\" }", true); -} - -TEST(SchemaValidator, Object_PatternProperties_AdditionalProperties) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\": {" - " \"builtin\": { \"type\": \"number\" }" - " }," - " \"patternProperties\": {" - " \"^S_\": { \"type\": \"string\" }," - " \"^I_\": { \"type\": \"integer\" }" - " }," - " \"additionalProperties\": { \"type\": \"string\" }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"builtin\": 42 }", true); - VALIDATE(s, "{ \"keyword\": \"value\" }", true); - INVALIDATE(s, "{ \"keyword\": 42 }", "/additionalProperties", "type", "/keyword"); -} -#endif - -TEST(SchemaValidator, Array) { - Document sd; - sd.Parse("{\"type\":\"array\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "[1, 2, 3, 4, 5]", true); - VALIDATE(s, "[3, \"different\", { \"types\" : \"of values\" }]", true); - INVALIDATE(s, "{\"Not\": \"an array\"}", "", "type", ""); -} - -TEST(SchemaValidator, Array_ItemsList) { - Document sd; - sd.Parse( - "{" - " \"type\": \"array\"," - " \"items\" : {" - " \"type\": \"number\"" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "[1, 2, 3, 4, 5]", true); - INVALIDATE(s, "[1, 2, \"3\", 4, 5]", "/items", "type", "/2"); - VALIDATE(s, "[]", true); -} - -TEST(SchemaValidator, Array_ItemsTuple) { - Document sd; - sd.Parse( - "{" - " \"type\": \"array\"," - " \"items\": [" - " {" - " \"type\": \"number\"" - " }," - " {" - " \"type\": \"string\"" - " }," - " {" - " \"type\": \"string\"," - " \"enum\": [\"Street\", \"Avenue\", \"Boulevard\"]" - " }," - " {" - " \"type\": \"string\"," - " \"enum\": [\"NW\", \"NE\", \"SW\", \"SE\"]" - " }" - " ]" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "[1600, \"Pennsylvania\", \"Avenue\", \"NW\"]", true); - INVALIDATE(s, "[24, \"Sussex\", \"Drive\"]", "/items/2", "enum", "/2"); - INVALIDATE(s, "[\"Palais de l'Elysee\"]", "/items/0", "type", "/0"); - VALIDATE(s, "[10, \"Downing\", \"Street\"]", true); - VALIDATE(s, "[1600, \"Pennsylvania\", \"Avenue\", \"NW\", \"Washington\"]", true); -} - -TEST(SchemaValidator, Array_AdditionalItmes) { - Document sd; - sd.Parse( - "{" - " \"type\": \"array\"," - " \"items\": [" - " {" - " \"type\": \"number\"" - " }," - " {" - " \"type\": \"string\"" - " }," - " {" - " \"type\": \"string\"," - " \"enum\": [\"Street\", \"Avenue\", \"Boulevard\"]" - " }," - " {" - " \"type\": \"string\"," - " \"enum\": [\"NW\", \"NE\", \"SW\", \"SE\"]" - " }" - " ]," - " \"additionalItems\": false" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "[1600, \"Pennsylvania\", \"Avenue\", \"NW\"]", true); - VALIDATE(s, "[1600, \"Pennsylvania\", \"Avenue\"]", true); - INVALIDATE(s, "[1600, \"Pennsylvania\", \"Avenue\", \"NW\", \"Washington\"]", "", "items", "/4"); -} - -TEST(SchemaValidator, Array_ItemsRange) { - Document sd; - sd.Parse("{\"type\": \"array\",\"minItems\": 2,\"maxItems\" : 3}"); - SchemaDocument s(sd); - - INVALIDATE(s, "[]", "", "minItems", ""); - INVALIDATE(s, "[1]", "", "minItems", ""); - VALIDATE(s, "[1, 2]", true); - VALIDATE(s, "[1, 2, 3]", true); - INVALIDATE(s, "[1, 2, 3, 4]", "", "maxItems", ""); -} - -TEST(SchemaValidator, Array_UniqueItems) { - Document sd; - sd.Parse("{\"type\": \"array\", \"uniqueItems\": true}"); - SchemaDocument s(sd); - - VALIDATE(s, "[1, 2, 3, 4, 5]", true); - INVALIDATE(s, "[1, 2, 3, 3, 4]", "", "uniqueItems", "/3"); - VALIDATE(s, "[]", true); -} - -TEST(SchemaValidator, Boolean) { - Document sd; - sd.Parse("{\"type\":\"boolean\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "true", true); - VALIDATE(s, "false", true); - INVALIDATE(s, "\"true\"", "", "type", ""); - INVALIDATE(s, "0", "", "type", ""); -} - -TEST(SchemaValidator, Null) { - Document sd; - sd.Parse("{\"type\":\"null\"}"); - SchemaDocument s(sd); - - VALIDATE(s, "null", true); - INVALIDATE(s, "false", "", "type", ""); - INVALIDATE(s, "0", "", "type", ""); - INVALIDATE(s, "\"\"", "", "type", ""); -} - -// Additional tests - -TEST(SchemaValidator, ObjectInArray) { - Document sd; - sd.Parse("{\"type\":\"array\", \"items\": { \"type\":\"string\" }}"); - SchemaDocument s(sd); - - VALIDATE(s, "[\"a\"]", true); - INVALIDATE(s, "[1]", "/items", "type", "/0"); - INVALIDATE(s, "[{}]", "/items", "type", "/0"); -} - -TEST(SchemaValidator, MultiTypeInObject) { - Document sd; - sd.Parse( - "{" - " \"type\":\"object\"," - " \"properties\": {" - " \"tel\" : {" - " \"type\":[\"integer\", \"string\"]" - " }" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "{ \"tel\": 999 }", true); - VALIDATE(s, "{ \"tel\": \"123-456\" }", true); - INVALIDATE(s, "{ \"tel\": true }", "/properties/tel", "type", "/tel"); -} - -TEST(SchemaValidator, MultiTypeWithObject) { - Document sd; - sd.Parse( - "{" - " \"type\": [\"object\",\"string\"]," - " \"properties\": {" - " \"tel\" : {" - " \"type\": \"integer\"" - " }" - " }" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "\"Hello\"", true); - VALIDATE(s, "{ \"tel\": 999 }", true); - INVALIDATE(s, "{ \"tel\": \"fail\" }", "/properties/tel", "type", "/tel"); -} - -TEST(SchemaValidator, AllOf_Nested) { - Document sd; - sd.Parse( - "{" - " \"allOf\": [" - " { \"type\": \"string\", \"minLength\": 2 }," - " { \"type\": \"string\", \"maxLength\": 5 }," - " { \"allOf\": [ { \"enum\" : [\"ok\", \"okay\", \"OK\", \"o\"] }, { \"enum\" : [\"ok\", \"OK\", \"o\"]} ] }" - " ]" - "}"); - SchemaDocument s(sd); - - VALIDATE(s, "\"ok\"", true); - VALIDATE(s, "\"OK\"", true); - INVALIDATE(s, "\"okay\"", "", "allOf", ""); - INVALIDATE(s, "\"o\"", "", "allOf", ""); - INVALIDATE(s, "\"n\"", "", "allOf", ""); - INVALIDATE(s, "\"too long\"", "", "allOf", ""); - INVALIDATE(s, "123", "", "allOf", ""); -} - -TEST(SchemaValidator, EscapedPointer) { - Document sd; - sd.Parse( - "{" - " \"type\": \"object\"," - " \"properties\": {" - " \"~/\": { \"type\": \"number\" }" - " }" - "}"); - SchemaDocument s(sd); - INVALIDATE(s, "{\"~/\":true}", "/properties/~0~1", "type", "/~0~1"); -} - -template -static char* ReadFile(const char* filename, Allocator& allocator) { - const char *paths[] = { - "", - "bin/", - "../bin/", - "../../bin/", - "../../../bin/" - }; - char buffer[1024]; - FILE *fp = 0; - for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) { - sprintf(buffer, "%s%s", paths[i], filename); - fp = fopen(buffer, "rb"); - if (fp) - break; - } - - if (!fp) - return 0; - - fseek(fp, 0, SEEK_END); - size_t length = static_cast(ftell(fp)); - fseek(fp, 0, SEEK_SET); - char* json = reinterpret_cast(allocator.Malloc(length + 1)); - size_t readLength = fread(json, 1, length, fp); - json[readLength] = '\0'; - fclose(fp); - return json; -} - -TEST(SchemaValidator, ValidateMetaSchema) { - CrtAllocator allocator; - char* json = ReadFile("draft-04/schema", allocator); - Document d; - d.Parse(json); - ASSERT_FALSE(d.HasParseError()); - SchemaDocument sd(d); - SchemaValidator validator(sd); - if (!d.Accept(validator)) { - StringBuffer sb; - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb); - printf("Invalid schema: %s\n", sb.GetString()); - printf("Invalid keyword: %s\n", validator.GetInvalidSchemaKeyword()); - sb.Clear(); - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb); - printf("Invalid document: %s\n", sb.GetString()); - ADD_FAILURE(); - } - CrtAllocator::Free(json); -} - -TEST(SchemaValidator, ValidateMetaSchema_UTF16) { - typedef GenericDocument > D; - typedef GenericSchemaDocument SD; - typedef GenericSchemaValidator SV; - - CrtAllocator allocator; - char* json = ReadFile("draft-04/schema", allocator); - - D d; - StringStream ss(json); - d.ParseStream<0, UTF8<> >(ss); - ASSERT_FALSE(d.HasParseError()); - SD sd(d); - SV validator(sd); - if (!d.Accept(validator)) { - GenericStringBuffer > sb; - validator.GetInvalidSchemaPointer().StringifyUriFragment(sb); - wprintf(L"Invalid schema: %ls\n", sb.GetString()); - wprintf(L"Invalid keyword: %ls\n", validator.GetInvalidSchemaKeyword()); - sb.Clear(); - validator.GetInvalidDocumentPointer().StringifyUriFragment(sb); - wprintf(L"Invalid document: %ls\n", sb.GetString()); - ADD_FAILURE(); - } - CrtAllocator::Free(json); -} - -template -class RemoteSchemaDocumentProvider : public IGenericRemoteSchemaDocumentProvider { -public: - RemoteSchemaDocumentProvider() : - documentAllocator_(documentBuffer_, sizeof(documentBuffer_)), - schemaAllocator_(schemaBuffer_, sizeof(schemaBuffer_)) - { - const char* filenames[kCount] = { - "jsonschema/remotes/integer.json", - "jsonschema/remotes/subSchemas.json", - "jsonschema/remotes/folder/folderInteger.json", - "draft-04/schema" - }; - - for (size_t i = 0; i < kCount; i++) { - sd_[i] = 0; - - char jsonBuffer[8192]; - MemoryPoolAllocator<> jsonAllocator(jsonBuffer, sizeof(jsonBuffer)); - char* json = ReadFile(filenames[i], jsonAllocator); - if (!json) { - printf("json remote file %s not found", filenames[i]); - ADD_FAILURE(); - } - else { - char stackBuffer[4096]; - MemoryPoolAllocator<> stackAllocator(stackBuffer, sizeof(stackBuffer)); - DocumentType d(&documentAllocator_, 1024, &stackAllocator); - d.Parse(json); - sd_[i] = new SchemaDocumentType(d, 0, &schemaAllocator_); - MemoryPoolAllocator<>::Free(json); - } - }; - } - - ~RemoteSchemaDocumentProvider() { - for (size_t i = 0; i < kCount; i++) - delete sd_[i]; - } - - virtual const SchemaDocumentType* GetRemoteDocument(const char* uri, SizeType length) { - const char* uris[kCount] = { - "http://localhost:1234/integer.json", - "http://localhost:1234/subSchemas.json", - "http://localhost:1234/folder/folderInteger.json", - "http://json-schema.org/draft-04/schema" - }; - - for (size_t i = 0; i < kCount; i++) - if (strncmp(uri, uris[i], length) == 0) - return sd_[i]; - return 0; - } - -private: - typedef GenericDocument, MemoryPoolAllocator<> > DocumentType; - - RemoteSchemaDocumentProvider(const RemoteSchemaDocumentProvider&); - RemoteSchemaDocumentProvider& operator=(const RemoteSchemaDocumentProvider&); - - static const size_t kCount = 4; - SchemaDocumentType* sd_[kCount]; - typename DocumentType::AllocatorType documentAllocator_; - typename SchemaDocumentType::AllocatorType schemaAllocator_; - char documentBuffer_[16384]; - char schemaBuffer_[128 * 1024]; -}; - -TEST(SchemaValidator, TestSuite) { - const char* filenames[] = { - "additionalItems.json", - "additionalProperties.json", - "allOf.json", - "anyOf.json", - "default.json", - "definitions.json", - "dependencies.json", - "enum.json", - "items.json", - "maximum.json", - "maxItems.json", - "maxLength.json", - "maxProperties.json", - "minimum.json", - "minItems.json", - "minLength.json", - "minProperties.json", - "multipleOf.json", - "not.json", - "oneOf.json", - "pattern.json", - "patternProperties.json", - "properties.json", - "ref.json", - "refRemote.json", - "required.json", - "type.json", - "uniqueItems.json" - }; - - const char* onlyRunDescription = 0; - //const char* onlyRunDescription = "a string is a string"; - - unsigned testCount = 0; - unsigned passCount = 0; - - typedef GenericSchemaDocument > SchemaDocumentType; - RemoteSchemaDocumentProvider provider; - - char jsonBuffer[65536]; - char documentBuffer[65536]; - char documentStackBuffer[65536]; - char schemaBuffer[65536]; - char validatorBuffer[65536]; - MemoryPoolAllocator<> jsonAllocator(jsonBuffer, sizeof(jsonBuffer)); - MemoryPoolAllocator<> documentAllocator(documentBuffer, sizeof(documentBuffer)); - MemoryPoolAllocator<> documentStackAllocator(documentStackBuffer, sizeof(documentStackBuffer)); - MemoryPoolAllocator<> schemaAllocator(schemaBuffer, sizeof(schemaBuffer)); - MemoryPoolAllocator<> validatorAllocator(validatorBuffer, sizeof(validatorBuffer)); - - for (size_t i = 0; i < sizeof(filenames) / sizeof(filenames[0]); i++) { - char filename[FILENAME_MAX]; - sprintf(filename, "jsonschema/tests/draft4/%s", filenames[i]); - char* json = ReadFile(filename, jsonAllocator); - if (!json) { - printf("json test suite file %s not found", filename); - ADD_FAILURE(); - } - else { - GenericDocument, MemoryPoolAllocator<>, MemoryPoolAllocator<> > d(&documentAllocator, 1024, &documentStackAllocator); - d.Parse(json); - if (d.HasParseError()) { - printf("json test suite file %s has parse error", filename); - ADD_FAILURE(); - } - else { - for (Value::ConstValueIterator schemaItr = d.Begin(); schemaItr != d.End(); ++schemaItr) { - { - SchemaDocumentType schema((*schemaItr)["schema"], &provider, &schemaAllocator); - GenericSchemaValidator >, MemoryPoolAllocator<> > validator(schema, &validatorAllocator); - const char* description1 = (*schemaItr)["description"].GetString(); - const Value& tests = (*schemaItr)["tests"]; - for (Value::ConstValueIterator testItr = tests.Begin(); testItr != tests.End(); ++testItr) { - const char* description2 = (*testItr)["description"].GetString(); - if (!onlyRunDescription || strcmp(description2, onlyRunDescription) == 0) { - const Value& data = (*testItr)["data"]; - bool expected = (*testItr)["valid"].GetBool(); - testCount++; - validator.Reset(); - bool actual = data.Accept(validator); - if (expected != actual) - printf("Fail: %30s \"%s\" \"%s\"\n", filename, description1, description2); - else - passCount++; - } - } - //printf("%zu %zu %zu\n", documentAllocator.Size(), schemaAllocator.Size(), validatorAllocator.Size()); - } - schemaAllocator.Clear(); - validatorAllocator.Clear(); - } - } - } - documentAllocator.Clear(); - MemoryPoolAllocator<>::Free(json); - jsonAllocator.Clear(); - } - printf("%d / %d passed (%2d%%)\n", passCount, testCount, passCount * 100 / testCount); - // if (passCount != testCount) - // ADD_FAILURE(); -} - -TEST(SchemaValidatingReader, Simple) { - Document sd; - sd.Parse("{ \"type\": \"string\", \"enum\" : [\"red\", \"amber\", \"green\"] }"); - SchemaDocument s(sd); - - Document d; - StringStream ss("\"red\""); - SchemaValidatingReader > reader(ss, s); - d.Populate(reader); - EXPECT_TRUE(reader.GetParseResult()); - EXPECT_TRUE(reader.IsValid()); - EXPECT_TRUE(d.IsString()); - EXPECT_STREQ("red", d.GetString()); -} - -TEST(SchemaValidatingReader, Invalid) { - Document sd; - sd.Parse("{\"type\":\"string\",\"minLength\":2,\"maxLength\":3}"); - SchemaDocument s(sd); - - Document d; - StringStream ss("\"ABCD\""); - SchemaValidatingReader > reader(ss, s); - d.Populate(reader); - EXPECT_FALSE(reader.GetParseResult()); - EXPECT_FALSE(reader.IsValid()); - EXPECT_EQ(kParseErrorTermination, reader.GetParseResult().Code()); - EXPECT_STREQ("maxLength", reader.GetInvalidSchemaKeyword()); - EXPECT_TRUE(reader.GetInvalidSchemaPointer() == SchemaDocument::PointerType("")); - EXPECT_TRUE(reader.GetInvalidDocumentPointer() == SchemaDocument::PointerType("")); - EXPECT_TRUE(d.IsNull()); -} - -TEST(SchemaValidatingWriter, Simple) { - Document sd; - sd.Parse("{\"type\":\"string\",\"minLength\":2,\"maxLength\":3}"); - SchemaDocument s(sd); - - Document d; - StringBuffer sb; - Writer writer(sb); - GenericSchemaValidator > validator(s, writer); - - d.Parse("\"red\""); - EXPECT_TRUE(d.Accept(validator)); - EXPECT_TRUE(validator.IsValid()); - EXPECT_STREQ("\"red\"", sb.GetString()); - - sb.Clear(); - validator.Reset(); - d.Parse("\"ABCD\""); - EXPECT_FALSE(d.Accept(validator)); - EXPECT_FALSE(validator.IsValid()); - EXPECT_TRUE(validator.GetInvalidSchemaPointer() == SchemaDocument::PointerType("")); - EXPECT_TRUE(validator.GetInvalidDocumentPointer() == SchemaDocument::PointerType("")); -} - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - -static SchemaDocument ReturnSchemaDocument() { - Document sd; - sd.Parse("{ \"type\": [\"number\", \"string\"] }"); - SchemaDocument s(sd); - return s; -} - -TEST(Schema, Issue552) { - SchemaDocument s = ReturnSchemaDocument(); - VALIDATE(s, "42", true); - VALIDATE(s, "\"Life, the universe, and everything\"", true); - INVALIDATE(s, "[\"Life\", \"the universe\", \"and everything\"]", "", "type", ""); -} - -#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS - -TEST(SchemaValidator, Issue608) { - Document sd; - sd.Parse("{\"required\": [\"a\", \"b\"] }"); - SchemaDocument s(sd); - - VALIDATE(s, "{\"a\" : null, \"b\": null}", true); - INVALIDATE(s, "{\"a\" : null, \"a\" : null}", "", "required", ""); -} - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/simdtest.cpp b/rapidjson-lib/test/unittest/simdtest.cpp deleted file mode 100644 index b01b559..0000000 --- a/rapidjson-lib/test/unittest/simdtest.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -// Since Travis CI installs old Valgrind 3.7.0, which fails with some SSE4.2 -// The unit tests prefix with SIMD should be skipped by Valgrind test - -// __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler. -// We use -march=native with gmake to enable -msse2 and -msse4.2, if supported. -#if defined(__SSE4_2__) -# define RAPIDJSON_SSE42 -#elif defined(__SSE2__) -# define RAPIDJSON_SSE2 -#endif - -#define RAPIDJSON_NAMESPACE rapidjson_simd - -#include "unittest.h" - -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" - -#ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(effc++) -#endif - -using namespace rapidjson_simd; - -#ifdef RAPIDJSON_SSE2 -#define SIMD_SUFFIX(name) name##_SSE2 -#elif defined(RAPIDJSON_SSE42) -#define SIMD_SUFFIX(name) name##_SSE42 -#else -#define SIMD_SUFFIX(name) name -#endif - -template -void TestSkipWhitespace() { - for (size_t step = 1; step < 32; step++) { - char buffer[1025]; - for (size_t i = 0; i < 1024; i++) - buffer[i] = " \t\r\n"[i % 4]; - for (size_t i = 0; i < 1024; i += step) - buffer[i] = 'X'; - buffer[1024] = '\0'; - - StreamType s(buffer); - size_t i = 0; - for (;;) { - SkipWhitespace(s); - if (s.Peek() == '\0') - break; - EXPECT_EQ(i, s.Tell()); - EXPECT_EQ('X', s.Take()); - i += step; - } - } -} - -TEST(SIMD, SIMD_SUFFIX(SkipWhitespace)) { - TestSkipWhitespace(); - TestSkipWhitespace(); -} - -TEST(SIMD, SIMD_SUFFIX(SkipWhitespace_EncodedMemoryStream)) { - for (size_t step = 1; step < 32; step++) { - char buffer[1024]; - for (size_t i = 0; i < 1024; i++) - buffer[i] = " \t\r\n"[i % 4]; - for (size_t i = 0; i < 1024; i += step) - buffer[i] = 'X'; - - MemoryStream ms(buffer, 1024); - EncodedInputStream, MemoryStream> s(ms); - size_t i = 0; - for (;;) { - SkipWhitespace(s); - if (s.Peek() == '\0') - break; - //EXPECT_EQ(i, s.Tell()); - EXPECT_EQ('X', s.Take()); - i += step; - } - } -} - -struct ScanCopyUnescapedStringHandler : BaseReaderHandler, ScanCopyUnescapedStringHandler> { - bool String(const char* str, size_t length, bool) { - memcpy(buffer, str, length + 1); - return true; - } - char buffer[1024 + 5 + 32]; -}; - -template -void TestScanCopyUnescapedString() { - char buffer[1024 + 5 + 32]; - char backup[1024 + 5 + 32]; - - // Test "ABCDABCD...\\" - for (size_t offset = 0; offset < 32; offset++) { - for (size_t step = 0; step < 1024; step++) { - char* json = buffer + offset; - char *p = json; - *p++ = '\"'; - for (size_t i = 0; i < step; i++) - *p++ = "ABCD"[i % 4]; - *p++ = '\\'; - *p++ = '\\'; - *p++ = '\"'; - *p++ = '\0'; - strcpy(backup, json); // insitu parsing will overwrite buffer, so need to backup first - - StreamType s(json); - Reader reader; - ScanCopyUnescapedStringHandler h; - reader.Parse(s, h); - EXPECT_TRUE(memcmp(h.buffer, backup + 1, step) == 0); - EXPECT_EQ('\\', h.buffer[step]); // escaped - EXPECT_EQ('\0', h.buffer[step + 1]); - } - } - - // Test "\\ABCDABCD..." - for (size_t offset = 0; offset < 32; offset++) { - for (size_t step = 0; step < 1024; step++) { - char* json = buffer + offset; - char *p = json; - *p++ = '\"'; - *p++ = '\\'; - *p++ = '\\'; - for (size_t i = 0; i < step; i++) - *p++ = "ABCD"[i % 4]; - *p++ = '\"'; - *p++ = '\0'; - strcpy(backup, json); // insitu parsing will overwrite buffer, so need to backup first - - StreamType s(json); - Reader reader; - ScanCopyUnescapedStringHandler h; - reader.Parse(s, h); - EXPECT_TRUE(memcmp(h.buffer + 1, backup + 3, step) == 0); - EXPECT_EQ('\\', h.buffer[0]); // escaped - EXPECT_EQ('\0', h.buffer[step + 1]); - } - } -} - -TEST(SIMD, SIMD_SUFFIX(ScanCopyUnescapedString)) { - TestScanCopyUnescapedString(); - TestScanCopyUnescapedString(); -} - -TEST(SIMD, SIMD_SUFFIX(ScanWriteUnescapedString)) { - char buffer[2048 + 1 + 32]; - for (size_t offset = 0; offset < 32; offset++) { - for (size_t step = 0; step < 1024; step++) { - char* s = buffer + offset; - char* p = s; - for (size_t i = 0; i < step; i++) - *p++ = "ABCD"[i % 4]; - char escape = "\0\n\\\""[step % 4]; - *p++ = escape; - for (size_t i = 0; i < step; i++) - *p++ = "ABCD"[i % 4]; - - StringBuffer sb; - Writer writer(sb); - writer.String(s, SizeType(step * 2 + 1)); - const char* q = sb.GetString(); - EXPECT_EQ('\"', *q++); - for (size_t i = 0; i < step; i++) - EXPECT_EQ("ABCD"[i % 4], *q++); - if (escape == '\0') { - EXPECT_EQ('\\', *q++); - EXPECT_EQ('u', *q++); - EXPECT_EQ('0', *q++); - EXPECT_EQ('0', *q++); - EXPECT_EQ('0', *q++); - EXPECT_EQ('0', *q++); - } - else if (escape == '\n') { - EXPECT_EQ('\\', *q++); - EXPECT_EQ('n', *q++); - } - else if (escape == '\\') { - EXPECT_EQ('\\', *q++); - EXPECT_EQ('\\', *q++); - } - else if (escape == '\"') { - EXPECT_EQ('\\', *q++); - EXPECT_EQ('\"', *q++); - } - for (size_t i = 0; i < step; i++) - EXPECT_EQ("ABCD"[i % 4], *q++); - EXPECT_EQ('\"', *q++); - EXPECT_EQ('\0', *q++); - } - } -} - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/strfunctest.cpp b/rapidjson-lib/test/unittest/strfunctest.cpp deleted file mode 100644 index cc1bb22..0000000 --- a/rapidjson-lib/test/unittest/strfunctest.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/internal/strfunc.h" - -using namespace rapidjson; -using namespace rapidjson::internal; - -TEST(StrFunc, CountStringCodePoint) { - SizeType count; - EXPECT_TRUE(CountStringCodePoint >("", 0, &count)); - EXPECT_EQ(0u, count); - EXPECT_TRUE(CountStringCodePoint >("Hello", 5, &count)); - EXPECT_EQ(5u, count); - EXPECT_TRUE(CountStringCodePoint >("\xC2\xA2\xE2\x82\xAC\xF0\x9D\x84\x9E", 9, &count)); // cents euro G-clef - EXPECT_EQ(3u, count); - EXPECT_FALSE(CountStringCodePoint >("\xC2\xA2\xE2\x82\xAC\xF0\x9D\x84\x9E\x80", 10, &count)); -} diff --git a/rapidjson-lib/test/unittest/stringbuffertest.cpp b/rapidjson-lib/test/unittest/stringbuffertest.cpp deleted file mode 100644 index ded513c..0000000 --- a/rapidjson-lib/test/unittest/stringbuffertest.cpp +++ /dev/null @@ -1,170 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/writer.h" - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(c++98-compat) -#endif - -using namespace rapidjson; - -TEST(StringBuffer, InitialSize) { - StringBuffer buffer; - EXPECT_EQ(0u, buffer.GetSize()); - EXPECT_STREQ("", buffer.GetString()); -} - -TEST(StringBuffer, Put) { - StringBuffer buffer; - buffer.Put('A'); - - EXPECT_EQ(1u, buffer.GetSize()); - EXPECT_STREQ("A", buffer.GetString()); -} - -TEST(StringBuffer, PutN_Issue672) { - GenericStringBuffer, MemoryPoolAllocator<> > buffer; - EXPECT_EQ(0, buffer.GetSize()); - rapidjson::PutN(buffer, ' ', 1); - EXPECT_EQ(1, buffer.GetSize()); -} - -TEST(StringBuffer, Clear) { - StringBuffer buffer; - buffer.Put('A'); - buffer.Put('B'); - buffer.Put('C'); - buffer.Clear(); - - EXPECT_EQ(0u, buffer.GetSize()); - EXPECT_STREQ("", buffer.GetString()); -} - -TEST(StringBuffer, Push) { - StringBuffer buffer; - buffer.Push(5); - - EXPECT_EQ(5u, buffer.GetSize()); - - // Causes sudden expansion to make the stack's capacity equal to size - buffer.Push(65536u); - EXPECT_EQ(5u + 65536u, buffer.GetSize()); -} - -TEST(StringBuffer, Pop) { - StringBuffer buffer; - buffer.Put('A'); - buffer.Put('B'); - buffer.Put('C'); - buffer.Put('D'); - buffer.Put('E'); - buffer.Pop(3); - - EXPECT_EQ(2u, buffer.GetSize()); - EXPECT_STREQ("AB", buffer.GetString()); -} - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - -#if 0 // Many old compiler does not support these. Turn it off temporaily. - -#include - -TEST(StringBuffer, Traits) { - static_assert( std::is_constructible::value, ""); - static_assert( std::is_default_constructible::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_constructible::value, ""); -#endif - static_assert( std::is_move_constructible::value, ""); - - static_assert(!std::is_nothrow_constructible::value, ""); - static_assert(!std::is_nothrow_default_constructible::value, ""); - -#if !defined(_MSC_VER) || _MSC_VER >= 1800 - static_assert(!std::is_nothrow_copy_constructible::value, ""); - static_assert(!std::is_nothrow_move_constructible::value, ""); -#endif - - static_assert( std::is_assignable::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_assignable::value, ""); -#endif - static_assert( std::is_move_assignable::value, ""); - -#if !defined(_MSC_VER) || _MSC_VER >= 1800 - static_assert(!std::is_nothrow_assignable::value, ""); -#endif - - static_assert(!std::is_nothrow_copy_assignable::value, ""); - static_assert(!std::is_nothrow_move_assignable::value, ""); - - static_assert( std::is_destructible::value, ""); -#ifndef _MSC_VER - static_assert(std::is_nothrow_destructible::value, ""); -#endif -} - -#endif - -TEST(StringBuffer, MoveConstructor) { - StringBuffer x; - x.Put('A'); - x.Put('B'); - x.Put('C'); - x.Put('D'); - - EXPECT_EQ(4u, x.GetSize()); - EXPECT_STREQ("ABCD", x.GetString()); - - // StringBuffer y(x); // does not compile (!is_copy_constructible) - StringBuffer y(std::move(x)); - EXPECT_EQ(0u, x.GetSize()); - EXPECT_EQ(4u, y.GetSize()); - EXPECT_STREQ("ABCD", y.GetString()); - - // StringBuffer z = y; // does not compile (!is_copy_assignable) - StringBuffer z = std::move(y); - EXPECT_EQ(0u, y.GetSize()); - EXPECT_EQ(4u, z.GetSize()); - EXPECT_STREQ("ABCD", z.GetString()); -} - -TEST(StringBuffer, MoveAssignment) { - StringBuffer x; - x.Put('A'); - x.Put('B'); - x.Put('C'); - x.Put('D'); - - EXPECT_EQ(4u, x.GetSize()); - EXPECT_STREQ("ABCD", x.GetString()); - - StringBuffer y; - // y = x; // does not compile (!is_copy_assignable) - y = std::move(x); - EXPECT_EQ(0u, x.GetSize()); - EXPECT_EQ(4u, y.GetSize()); - EXPECT_STREQ("ABCD", y.GetString()); -} - -#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/strtodtest.cpp b/rapidjson-lib/test/unittest/strtodtest.cpp deleted file mode 100644 index cde836c..0000000 --- a/rapidjson-lib/test/unittest/strtodtest.cpp +++ /dev/null @@ -1,132 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/internal/strtod.h" - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(unreachable-code) -#endif - -#define BIGINTEGER_LITERAL(s) BigInteger(s, sizeof(s) - 1) - -using namespace rapidjson::internal; - -TEST(Strtod, CheckApproximationCase) { - static const int kSignificandSize = 52; - static const int kExponentBias = 0x3FF; - static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000); - static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF); - static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000); - - // http://www.exploringbinary.com/using-integers-to-check-a-floating-point-approximation/ - // Let b = 0x1.465a72e467d88p-149 - // = 5741268244528520 x 2^-201 - union { - double d; - uint64_t u; - }u; - u.u = 0x465a72e467d88 | ((static_cast(-149 + kExponentBias)) << kSignificandSize); - const double b = u.d; - const uint64_t bInt = (u.u & kSignificandMask) | kHiddenBit; - const int bExp = static_cast(((u.u & kExponentMask) >> kSignificandSize) - kExponentBias - kSignificandSize); - EXPECT_DOUBLE_EQ(1.7864e-45, b); - EXPECT_EQ(RAPIDJSON_UINT64_C2(0x001465a7, 0x2e467d88), bInt); - EXPECT_EQ(-201, bExp); - - // Let d = 17864 x 10-49 - const char dInt[] = "17864"; - const int dExp = -49; - - // Let h = 2^(bExp-1) - const int hExp = bExp - 1; - EXPECT_EQ(-202, hExp); - - int dS_Exp2 = 0; - int dS_Exp5 = 0; - int bS_Exp2 = 0; - int bS_Exp5 = 0; - int hS_Exp2 = 0; - int hS_Exp5 = 0; - - // Adjust for decimal exponent - if (dExp >= 0) { - dS_Exp2 += dExp; - dS_Exp5 += dExp; - } - else { - bS_Exp2 -= dExp; - bS_Exp5 -= dExp; - hS_Exp2 -= dExp; - hS_Exp5 -= dExp; - } - - // Adjust for binary exponent - if (bExp >= 0) - bS_Exp2 += bExp; - else { - dS_Exp2 -= bExp; - hS_Exp2 -= bExp; - } - - // Adjust for half ulp exponent - if (hExp >= 0) - hS_Exp2 += hExp; - else { - dS_Exp2 -= hExp; - bS_Exp2 -= hExp; - } - - // Remove common power of two factor from all three scaled values - int common_Exp2 = std::min(dS_Exp2, std::min(bS_Exp2, hS_Exp2)); - dS_Exp2 -= common_Exp2; - bS_Exp2 -= common_Exp2; - hS_Exp2 -= common_Exp2; - - EXPECT_EQ(153, dS_Exp2); - EXPECT_EQ(0, dS_Exp5); - EXPECT_EQ(1, bS_Exp2); - EXPECT_EQ(49, bS_Exp5); - EXPECT_EQ(0, hS_Exp2); - EXPECT_EQ(49, hS_Exp5); - - BigInteger dS = BIGINTEGER_LITERAL(dInt); - dS.MultiplyPow5(static_cast(dS_Exp5)) <<= static_cast(dS_Exp2); - - BigInteger bS(bInt); - bS.MultiplyPow5(static_cast(bS_Exp5)) <<= static_cast(bS_Exp2); - - BigInteger hS(1); - hS.MultiplyPow5(static_cast(hS_Exp5)) <<= static_cast(hS_Exp2); - - EXPECT_TRUE(BIGINTEGER_LITERAL("203970822259994138521801764465966248930731085529088") == dS); - EXPECT_TRUE(BIGINTEGER_LITERAL("203970822259994122305215569213032722473144531250000") == bS); - EXPECT_TRUE(BIGINTEGER_LITERAL("17763568394002504646778106689453125") == hS); - - EXPECT_EQ(1, dS.Compare(bS)); - - BigInteger delta(0); - EXPECT_FALSE(dS.Difference(bS, &delta)); - EXPECT_TRUE(BIGINTEGER_LITERAL("16216586195252933526457586554279088") == delta); - EXPECT_TRUE(bS.Difference(dS, &delta)); - EXPECT_TRUE(BIGINTEGER_LITERAL("16216586195252933526457586554279088") == delta); - - EXPECT_EQ(-1, delta.Compare(hS)); -} - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/unittest.cpp b/rapidjson-lib/test/unittest/unittest.cpp deleted file mode 100644 index b754563..0000000 --- a/rapidjson-lib/test/unittest/unittest.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/rapidjson.h" - -#ifdef __clang__ -#pragma GCC diagnostic push -#if __has_warning("-Wdeprecated") -#pragma GCC diagnostic ignored "-Wdeprecated" -#endif -#endif - -AssertException::~AssertException() throw() {} - -#ifdef __clang__ -#pragma GCC diagnostic pop -#endif - -int main(int argc, char **argv) { - ::testing::InitGoogleTest(&argc, argv); - - std::cout << "RapidJSON v" << RAPIDJSON_VERSION_STRING << std::endl; - -#ifdef _MSC_VER - _CrtMemState memoryState = { 0 }; - (void)memoryState; - _CrtMemCheckpoint(&memoryState); - //_CrtSetBreakAlloc(X); - //void *testWhetherMemoryLeakDetectionWorks = malloc(1); -#endif - - int ret = RUN_ALL_TESTS(); - -#ifdef _MSC_VER - // Current gtest constantly leak 2 blocks at exit - _CrtMemDumpAllObjectsSince(&memoryState); -#endif - return ret; -} diff --git a/rapidjson-lib/test/unittest/unittest.h b/rapidjson-lib/test/unittest/unittest.h deleted file mode 100644 index e125bf8..0000000 --- a/rapidjson-lib/test/unittest/unittest.h +++ /dev/null @@ -1,135 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#ifndef UNITTEST_H_ -#define UNITTEST_H_ - -// gtest indirectly included inttypes.h, without __STDC_CONSTANT_MACROS. -#ifndef __STDC_CONSTANT_MACROS -#ifdef __clang__ -#pragma GCC diagnostic push -#if __has_warning("-Wreserved-id-macro") -#pragma GCC diagnostic ignored "-Wreserved-id-macro" -#endif -#endif - -# define __STDC_CONSTANT_MACROS 1 // required by C++ standard - -#ifdef __clang__ -#pragma GCC diagnostic pop -#endif -#endif - -#ifdef _MSC_VER -#define _CRTDBG_MAP_ALLOC -#include -#pragma warning(disable : 4996) // 'function': was declared deprecated -#endif - -#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) -#if defined(__clang__) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic push -#endif -#pragma GCC diagnostic ignored "-Weffc++" -#endif - -#include "gtest/gtest.h" -#include - -#if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#pragma GCC diagnostic pop -#endif - -#ifdef __clang__ -// All TEST() macro generated this warning, disable globally -#pragma GCC diagnostic ignored "-Wglobal-constructors" -#endif - -template -inline unsigned StrLen(const Ch* s) { - const Ch* p = s; - while (*p) p++; - return unsigned(p - s); -} - -template -inline int StrCmp(const Ch* s1, const Ch* s2) { - while(*s1 && (*s1 == *s2)) { s1++; s2++; } - return static_cast(*s1) < static_cast(*s2) ? -1 : static_cast(*s1) > static_cast(*s2); -} - -template -inline Ch* StrDup(const Ch* str) { - size_t bufferSize = sizeof(Ch) * (StrLen(str) + 1); - Ch* buffer = static_cast(malloc(bufferSize)); - memcpy(buffer, str, bufferSize); - return buffer; -} - -inline FILE* TempFile(char *filename) { -#ifdef _MSC_VER - filename = tmpnam(filename); - - // For Visual Studio, tmpnam() adds a backslash in front. Remove it. - if (filename[0] == '\\') - for (int i = 0; filename[i] != '\0'; i++) - filename[i] = filename[i + 1]; - - return fopen(filename, "wb"); -#else - strcpy(filename, "/tmp/fileXXXXXX"); - int fd = mkstemp(filename); - return fdopen(fd, "w"); -#endif -} - -// Use exception for catching assert -#ifdef _MSC_VER -#pragma warning(disable : 4127) -#endif - -#ifdef __clang__ -#pragma GCC diagnostic push -#if __has_warning("-Wdeprecated") -#pragma GCC diagnostic ignored "-Wdeprecated" -#endif -#endif - -class AssertException : public std::logic_error { -public: - AssertException(const char* w) : std::logic_error(w) {} - AssertException(const AssertException& rhs) : std::logic_error(rhs) {} - virtual ~AssertException() throw(); -}; - -#ifdef __clang__ -#pragma GCC diagnostic pop -#endif - -#define RAPIDJSON_ASSERT(x) if (!(x)) throw AssertException(RAPIDJSON_STRINGIFY(x)) - -class Random { -public: - Random(unsigned seed = 0) : mSeed(seed) {} - - unsigned operator()() { - mSeed = 214013 * mSeed + 2531011; - return mSeed; - } - -private: - unsigned mSeed; -}; - -#endif // UNITTEST_H_ diff --git a/rapidjson-lib/test/unittest/valuetest.cpp b/rapidjson-lib/test/unittest/valuetest.cpp deleted file mode 100644 index fefc001..0000000 --- a/rapidjson-lib/test/unittest/valuetest.cpp +++ /dev/null @@ -1,1792 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" -#include "rapidjson/document.h" -#include - -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(c++98-compat) -#endif - -using namespace rapidjson; - -TEST(Value, Size) { - if (sizeof(SizeType) == 4) { -#if RAPIDJSON_48BITPOINTER_OPTIMIZATION - EXPECT_EQ(16, sizeof(Value)); -#elif RAPIDJSON_64BIT - EXPECT_EQ(24, sizeof(Value)); -#else - EXPECT_EQ(16, sizeof(Value)); -#endif - } -} - -TEST(Value, DefaultConstructor) { - Value x; - EXPECT_EQ(kNullType, x.GetType()); - EXPECT_TRUE(x.IsNull()); - - //std::cout << "sizeof(Value): " << sizeof(x) << std::endl; -} - -// Should not pass compilation -//TEST(Value, copy_constructor) { -// Value x(1234); -// Value y = x; -//} - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - -#if 0 // Many old compiler does not support these. Turn it off temporaily. - -#include - -TEST(Value, Traits) { - typedef GenericValue, CrtAllocator> Value; - static_assert(std::is_constructible::value, ""); - static_assert(std::is_default_constructible::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_constructible::value, ""); -#endif - static_assert(std::is_move_constructible::value, ""); - -#ifndef _MSC_VER - static_assert(std::is_nothrow_constructible::value, ""); - static_assert(std::is_nothrow_default_constructible::value, ""); - static_assert(!std::is_nothrow_copy_constructible::value, ""); - static_assert(std::is_nothrow_move_constructible::value, ""); -#endif - - static_assert(std::is_assignable::value, ""); -#ifndef _MSC_VER - static_assert(!std::is_copy_assignable::value, ""); -#endif - static_assert(std::is_move_assignable::value, ""); - -#ifndef _MSC_VER - static_assert(std::is_nothrow_assignable::value, ""); -#endif - static_assert(!std::is_nothrow_copy_assignable::value, ""); -#ifndef _MSC_VER - static_assert(std::is_nothrow_move_assignable::value, ""); -#endif - - static_assert(std::is_destructible::value, ""); -#ifndef _MSC_VER - static_assert(std::is_nothrow_destructible::value, ""); -#endif -} - -#endif - -TEST(Value, MoveConstructor) { - typedef GenericValue, CrtAllocator> V; - V::AllocatorType allocator; - - V x((V(kArrayType))); - x.Reserve(4u, allocator); - x.PushBack(1, allocator).PushBack(2, allocator).PushBack(3, allocator).PushBack(4, allocator); - EXPECT_TRUE(x.IsArray()); - EXPECT_EQ(4u, x.Size()); - - // Value y(x); // does not compile (!is_copy_constructible) - V y(std::move(x)); - EXPECT_TRUE(x.IsNull()); - EXPECT_TRUE(y.IsArray()); - EXPECT_EQ(4u, y.Size()); - - // Value z = y; // does not compile (!is_copy_assignable) - V z = std::move(y); - EXPECT_TRUE(y.IsNull()); - EXPECT_TRUE(z.IsArray()); - EXPECT_EQ(4u, z.Size()); -} - -#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS - -TEST(Value, AssignmentOperator) { - Value x(1234); - Value y; - y = x; - EXPECT_TRUE(x.IsNull()); // move semantic - EXPECT_EQ(1234, y.GetInt()); - - y = 5678; - EXPECT_TRUE(y.IsInt()); - EXPECT_EQ(5678, y.GetInt()); - - x = "Hello"; - EXPECT_TRUE(x.IsString()); - EXPECT_STREQ(x.GetString(),"Hello"); - - y = StringRef(x.GetString(),x.GetStringLength()); - EXPECT_TRUE(y.IsString()); - EXPECT_EQ(y.GetString(),x.GetString()); - EXPECT_EQ(y.GetStringLength(),x.GetStringLength()); - - static char mstr[] = "mutable"; - // y = mstr; // should not compile - y = StringRef(mstr); - EXPECT_TRUE(y.IsString()); - EXPECT_EQ(y.GetString(),mstr); - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - // C++11 move assignment - x = Value("World"); - EXPECT_TRUE(x.IsString()); - EXPECT_STREQ("World", x.GetString()); - - x = std::move(y); - EXPECT_TRUE(y.IsNull()); - EXPECT_TRUE(x.IsString()); - EXPECT_EQ(x.GetString(), mstr); - - y = std::move(Value().SetInt(1234)); - EXPECT_TRUE(y.IsInt()); - EXPECT_EQ(1234, y); -#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS -} - -template -void TestEqual(const A& a, const B& b) { - EXPECT_TRUE (a == b); - EXPECT_FALSE(a != b); - EXPECT_TRUE (b == a); - EXPECT_FALSE(b != a); -} - -template -void TestUnequal(const A& a, const B& b) { - EXPECT_FALSE(a == b); - EXPECT_TRUE (a != b); - EXPECT_FALSE(b == a); - EXPECT_TRUE (b != a); -} - -TEST(Value, EqualtoOperator) { - Value::AllocatorType allocator; - Value x(kObjectType); - x.AddMember("hello", "world", allocator) - .AddMember("t", Value(true).Move(), allocator) - .AddMember("f", Value(false).Move(), allocator) - .AddMember("n", Value(kNullType).Move(), allocator) - .AddMember("i", 123, allocator) - .AddMember("pi", 3.14, allocator) - .AddMember("a", Value(kArrayType).Move().PushBack(1, allocator).PushBack(2, allocator).PushBack(3, allocator), allocator); - - // Test templated operator==() and operator!=() - TestEqual(x["hello"], "world"); - const char* cc = "world"; - TestEqual(x["hello"], cc); - char* c = strdup("world"); - TestEqual(x["hello"], c); - free(c); - - TestEqual(x["t"], true); - TestEqual(x["f"], false); - TestEqual(x["i"], 123); - TestEqual(x["pi"], 3.14); - - // Test operator==() (including different allocators) - CrtAllocator crtAllocator; - GenericValue, CrtAllocator> y; - GenericDocument, CrtAllocator> z(&crtAllocator); - y.CopyFrom(x, crtAllocator); - z.CopyFrom(y, z.GetAllocator()); - TestEqual(x, y); - TestEqual(y, z); - TestEqual(z, x); - - // Swapping member order should be fine. - EXPECT_TRUE(y.RemoveMember("t")); - TestUnequal(x, y); - TestUnequal(z, y); - EXPECT_TRUE(z.RemoveMember("t")); - TestUnequal(x, z); - TestEqual(y, z); - y.AddMember("t", false, crtAllocator); - z.AddMember("t", false, z.GetAllocator()); - TestUnequal(x, y); - TestUnequal(z, x); - y["t"] = true; - z["t"] = true; - TestEqual(x, y); - TestEqual(y, z); - TestEqual(z, x); - - // Swapping element order is not OK - x["a"][0].Swap(x["a"][1]); - TestUnequal(x, y); - x["a"][0].Swap(x["a"][1]); - TestEqual(x, y); - - // Array of different size - x["a"].PushBack(4, allocator); - TestUnequal(x, y); - x["a"].PopBack(); - TestEqual(x, y); - - // Issue #129: compare Uint64 - x.SetUint64(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFF0)); - y.SetUint64(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)); - TestUnequal(x, y); -} - -template -void TestCopyFrom() { - typename Value::AllocatorType a; - Value v1(1234); - Value v2(v1, a); // deep copy constructor - EXPECT_TRUE(v1.GetType() == v2.GetType()); - EXPECT_EQ(v1.GetInt(), v2.GetInt()); - - v1.SetString("foo"); - v2.CopyFrom(v1, a); - EXPECT_TRUE(v1.GetType() == v2.GetType()); - EXPECT_STREQ(v1.GetString(), v2.GetString()); - EXPECT_EQ(v1.GetString(), v2.GetString()); // string NOT copied - - v1.SetString("bar", a); // copy string - v2.CopyFrom(v1, a); - EXPECT_TRUE(v1.GetType() == v2.GetType()); - EXPECT_STREQ(v1.GetString(), v2.GetString()); - EXPECT_NE(v1.GetString(), v2.GetString()); // string copied - - - v1.SetArray().PushBack(1234, a); - v2.CopyFrom(v1, a); - EXPECT_TRUE(v2.IsArray()); - EXPECT_EQ(v1.Size(), v2.Size()); - - v1.PushBack(Value().SetString("foo", a), a); // push string copy - EXPECT_TRUE(v1.Size() != v2.Size()); - v2.CopyFrom(v1, a); - EXPECT_TRUE(v1.Size() == v2.Size()); - EXPECT_STREQ(v1[1].GetString(), v2[1].GetString()); - EXPECT_NE(v1[1].GetString(), v2[1].GetString()); // string got copied -} - -TEST(Value, CopyFrom) { - TestCopyFrom(); - TestCopyFrom, CrtAllocator> >(); -} - -TEST(Value, Swap) { - Value v1(1234); - Value v2(kObjectType); - - EXPECT_EQ(&v1, &v1.Swap(v2)); - EXPECT_TRUE(v1.IsObject()); - EXPECT_TRUE(v2.IsInt()); - EXPECT_EQ(1234, v2.GetInt()); - - // testing std::swap compatibility - using std::swap; - swap(v1, v2); - EXPECT_TRUE(v1.IsInt()); - EXPECT_TRUE(v2.IsObject()); -} - -TEST(Value, Null) { - // Default constructor - Value x; - EXPECT_EQ(kNullType, x.GetType()); - EXPECT_TRUE(x.IsNull()); - - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsNumber()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // Constructor with type - Value y(kNullType); - EXPECT_TRUE(y.IsNull()); - - // SetNull(); - Value z(true); - z.SetNull(); - EXPECT_TRUE(z.IsNull()); -} - -TEST(Value, True) { - // Constructor with bool - Value x(true); - EXPECT_EQ(kTrueType, x.GetType()); - EXPECT_TRUE(x.GetBool()); - EXPECT_TRUE(x.IsBool()); - EXPECT_TRUE(x.IsTrue()); - - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsNumber()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // Constructor with type - Value y(kTrueType); - EXPECT_TRUE(y.IsTrue()); - - // SetBool() - Value z; - z.SetBool(true); - EXPECT_TRUE(z.IsTrue()); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_TRUE(z.Get()); - EXPECT_FALSE(z.Set(false).Get()); - EXPECT_TRUE(z.Set(true).Get()); -} - -TEST(Value, False) { - // Constructor with bool - Value x(false); - EXPECT_EQ(kFalseType, x.GetType()); - EXPECT_TRUE(x.IsBool()); - EXPECT_TRUE(x.IsFalse()); - - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.GetBool()); - //EXPECT_FALSE((bool)x); - EXPECT_FALSE(x.IsNumber()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // Constructor with type - Value y(kFalseType); - EXPECT_TRUE(y.IsFalse()); - - // SetBool() - Value z; - z.SetBool(false); - EXPECT_TRUE(z.IsFalse()); -} - -TEST(Value, Int) { - // Constructor with int - Value x(1234); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_EQ(1234, x.GetInt()); - EXPECT_EQ(1234u, x.GetUint()); - EXPECT_EQ(1234, x.GetInt64()); - EXPECT_EQ(1234u, x.GetUint64()); - EXPECT_NEAR(1234.0, x.GetDouble(), 0.0); - //EXPECT_EQ(1234, (int)x); - //EXPECT_EQ(1234, (unsigned)x); - //EXPECT_EQ(1234, (int64_t)x); - //EXPECT_EQ(1234, (uint64_t)x); - //EXPECT_EQ(1234, (double)x); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsInt()); - EXPECT_TRUE(x.IsUint()); - EXPECT_TRUE(x.IsInt64()); - EXPECT_TRUE(x.IsUint64()); - - EXPECT_FALSE(x.IsDouble()); - EXPECT_FALSE(x.IsFloat()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - Value nx(-1234); - EXPECT_EQ(-1234, nx.GetInt()); - EXPECT_EQ(-1234, nx.GetInt64()); - EXPECT_TRUE(nx.IsInt()); - EXPECT_TRUE(nx.IsInt64()); - EXPECT_FALSE(nx.IsUint()); - EXPECT_FALSE(nx.IsUint64()); - - // Constructor with type - Value y(kNumberType); - EXPECT_TRUE(y.IsNumber()); - EXPECT_TRUE(y.IsInt()); - EXPECT_EQ(0, y.GetInt()); - - // SetInt() - Value z; - z.SetInt(1234); - EXPECT_EQ(1234, z.GetInt()); - - // operator=(int) - z = 5678; - EXPECT_EQ(5678, z.GetInt()); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(5678, z.Get()); - EXPECT_EQ(5679, z.Set(5679).Get()); - EXPECT_EQ(5680, z.Set(5680).Get()); -} - -TEST(Value, Uint) { - // Constructor with int - Value x(1234u); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_EQ(1234, x.GetInt()); - EXPECT_EQ(1234u, x.GetUint()); - EXPECT_EQ(1234, x.GetInt64()); - EXPECT_EQ(1234u, x.GetUint64()); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsInt()); - EXPECT_TRUE(x.IsUint()); - EXPECT_TRUE(x.IsInt64()); - EXPECT_TRUE(x.IsUint64()); - EXPECT_NEAR(1234.0, x.GetDouble(), 0.0); // Number can always be cast as double but !IsDouble(). - - EXPECT_FALSE(x.IsDouble()); - EXPECT_FALSE(x.IsFloat()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // SetUint() - Value z; - z.SetUint(1234); - EXPECT_EQ(1234u, z.GetUint()); - - // operator=(unsigned) - z = 5678u; - EXPECT_EQ(5678u, z.GetUint()); - - z = 2147483648u; // 2^31, cannot cast as int - EXPECT_EQ(2147483648u, z.GetUint()); - EXPECT_FALSE(z.IsInt()); - EXPECT_TRUE(z.IsInt64()); // Issue 41: Incorrect parsing of unsigned int number types - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(2147483648u, z.Get()); - EXPECT_EQ(2147483649u, z.Set(2147483649u).Get()); - EXPECT_EQ(2147483650u, z.Set(2147483650u).Get()); -} - -TEST(Value, Int64) { - // Constructor with int - Value x(int64_t(1234)); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_EQ(1234, x.GetInt()); - EXPECT_EQ(1234u, x.GetUint()); - EXPECT_EQ(1234, x.GetInt64()); - EXPECT_EQ(1234u, x.GetUint64()); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsInt()); - EXPECT_TRUE(x.IsUint()); - EXPECT_TRUE(x.IsInt64()); - EXPECT_TRUE(x.IsUint64()); - - EXPECT_FALSE(x.IsDouble()); - EXPECT_FALSE(x.IsFloat()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - Value nx(int64_t(-1234)); - EXPECT_EQ(-1234, nx.GetInt()); - EXPECT_EQ(-1234, nx.GetInt64()); - EXPECT_TRUE(nx.IsInt()); - EXPECT_TRUE(nx.IsInt64()); - EXPECT_FALSE(nx.IsUint()); - EXPECT_FALSE(nx.IsUint64()); - - // SetInt64() - Value z; - z.SetInt64(1234); - EXPECT_EQ(1234, z.GetInt64()); - - z.SetInt64(2147483648u); // 2^31, cannot cast as int - EXPECT_FALSE(z.IsInt()); - EXPECT_TRUE(z.IsUint()); - EXPECT_NEAR(2147483648.0, z.GetDouble(), 0.0); - - z.SetInt64(int64_t(4294967295u) + 1); // 2^32, cannot cast as uint - EXPECT_FALSE(z.IsInt()); - EXPECT_FALSE(z.IsUint()); - EXPECT_NEAR(4294967296.0, z.GetDouble(), 0.0); - - z.SetInt64(-int64_t(2147483648u) - 1); // -2^31-1, cannot cast as int - EXPECT_FALSE(z.IsInt()); - EXPECT_NEAR(-2147483649.0, z.GetDouble(), 0.0); - - int64_t i = static_cast(RAPIDJSON_UINT64_C2(0x80000000, 00000000)); - z.SetInt64(i); - EXPECT_DOUBLE_EQ(-9223372036854775808.0, z.GetDouble()); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(i, z.Get()); -#if 0 // signed integer underflow is undefined behaviour - EXPECT_EQ(i - 1, z.Set(i - 1).Get()); - EXPECT_EQ(i - 2, z.Set(i - 2).Get()); -#endif -} - -TEST(Value, Uint64) { - // Constructor with int - Value x(uint64_t(1234)); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_EQ(1234, x.GetInt()); - EXPECT_EQ(1234u, x.GetUint()); - EXPECT_EQ(1234, x.GetInt64()); - EXPECT_EQ(1234u, x.GetUint64()); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsInt()); - EXPECT_TRUE(x.IsUint()); - EXPECT_TRUE(x.IsInt64()); - EXPECT_TRUE(x.IsUint64()); - - EXPECT_FALSE(x.IsDouble()); - EXPECT_FALSE(x.IsFloat()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // SetUint64() - Value z; - z.SetUint64(1234); - EXPECT_EQ(1234u, z.GetUint64()); - - z.SetUint64(uint64_t(2147483648u)); // 2^31, cannot cast as int - EXPECT_FALSE(z.IsInt()); - EXPECT_TRUE(z.IsUint()); - EXPECT_TRUE(z.IsInt64()); - - z.SetUint64(uint64_t(4294967295u) + 1); // 2^32, cannot cast as uint - EXPECT_FALSE(z.IsInt()); - EXPECT_FALSE(z.IsUint()); - EXPECT_TRUE(z.IsInt64()); - - uint64_t u = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000); - z.SetUint64(u); // 2^63 cannot cast as int64 - EXPECT_FALSE(z.IsInt64()); - EXPECT_EQ(u, z.GetUint64()); // Issue 48 - EXPECT_DOUBLE_EQ(9223372036854775808.0, z.GetDouble()); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(u, z.Get()); - EXPECT_EQ(u + 1, z.Set(u + 1).Get()); - EXPECT_EQ(u + 2, z.Set(u + 2).Get()); -} - -TEST(Value, Double) { - // Constructor with double - Value x(12.34); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_NEAR(12.34, x.GetDouble(), 0.0); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsDouble()); - - EXPECT_FALSE(x.IsInt()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // SetDouble() - Value z; - z.SetDouble(12.34); - EXPECT_NEAR(12.34, z.GetDouble(), 0.0); - - z = 56.78; - EXPECT_NEAR(56.78, z.GetDouble(), 0.0); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(56.78, z.Get()); - EXPECT_EQ(57.78, z.Set(57.78).Get()); - EXPECT_EQ(58.78, z.Set(58.78).Get()); -} - -TEST(Value, Float) { - // Constructor with double - Value x(12.34f); - EXPECT_EQ(kNumberType, x.GetType()); - EXPECT_NEAR(12.34f, x.GetFloat(), 0.0); - EXPECT_TRUE(x.IsNumber()); - EXPECT_TRUE(x.IsDouble()); - EXPECT_TRUE(x.IsFloat()); - - EXPECT_FALSE(x.IsInt()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - // SetFloat() - Value z; - z.SetFloat(12.34f); - EXPECT_NEAR(12.34f, z.GetFloat(), 0.0f); - - // Issue 573 - z.SetInt(0); - EXPECT_EQ(0.0f, z.GetFloat()); - - z = 56.78f; - EXPECT_NEAR(56.78f, z.GetFloat(), 0.0f); - - // Templated functions - EXPECT_TRUE(z.Is()); - EXPECT_EQ(56.78f, z.Get()); - EXPECT_EQ(57.78f, z.Set(57.78f).Get()); - EXPECT_EQ(58.78f, z.Set(58.78f).Get()); -} - -TEST(Value, IsLosslessDouble) { - EXPECT_TRUE(Value(0.0).IsLosslessDouble()); - EXPECT_TRUE(Value(12.34).IsLosslessDouble()); - EXPECT_TRUE(Value(-123).IsLosslessDouble()); - EXPECT_TRUE(Value(2147483648u).IsLosslessDouble()); - EXPECT_TRUE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x40000000, 0x00000000))).IsLosslessDouble()); -#if !(defined(_MSC_VER) && _MSC_VER < 1800) // VC2010 has problem - EXPECT_TRUE(Value(RAPIDJSON_UINT64_C2(0xA0000000, 0x00000000)).IsLosslessDouble()); -#endif - - EXPECT_FALSE(Value(static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); // INT64_MAX - EXPECT_FALSE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); // -INT64_MAX - EXPECT_TRUE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF)) - 1).IsLosslessDouble()); // INT64_MIN - EXPECT_FALSE(Value(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)).IsLosslessDouble()); // UINT64_MAX - - EXPECT_TRUE(Value(3.4028234e38f).IsLosslessDouble()); // FLT_MAX - EXPECT_TRUE(Value(-3.4028234e38f).IsLosslessDouble()); // -FLT_MAX - EXPECT_TRUE(Value(1.17549435e-38f).IsLosslessDouble()); // FLT_MIN - EXPECT_TRUE(Value(-1.17549435e-38f).IsLosslessDouble()); // -FLT_MIN - EXPECT_TRUE(Value(1.7976931348623157e+308).IsLosslessDouble()); // DBL_MAX - EXPECT_TRUE(Value(-1.7976931348623157e+308).IsLosslessDouble()); // -DBL_MAX - EXPECT_TRUE(Value(2.2250738585072014e-308).IsLosslessDouble()); // DBL_MIN - EXPECT_TRUE(Value(-2.2250738585072014e-308).IsLosslessDouble()); // -DBL_MIN -} - -TEST(Value, IsLosslessFloat) { - EXPECT_TRUE(Value(12.25).IsLosslessFloat()); - EXPECT_TRUE(Value(-123).IsLosslessFloat()); - EXPECT_TRUE(Value(2147483648u).IsLosslessFloat()); - EXPECT_TRUE(Value(3.4028234e38f).IsLosslessFloat()); - EXPECT_TRUE(Value(-3.4028234e38f).IsLosslessFloat()); - EXPECT_FALSE(Value(3.4028235e38).IsLosslessFloat()); - EXPECT_FALSE(Value(0.3).IsLosslessFloat()); -} - -TEST(Value, String) { - // Construction with const string - Value x("Hello", 5); // literal - EXPECT_EQ(kStringType, x.GetType()); - EXPECT_TRUE(x.IsString()); - EXPECT_STREQ("Hello", x.GetString()); - EXPECT_EQ(5u, x.GetStringLength()); - - EXPECT_FALSE(x.IsNumber()); - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsObject()); - EXPECT_FALSE(x.IsArray()); - - static const char cstr[] = "World"; // const array - Value(cstr).Swap(x); - EXPECT_TRUE(x.IsString()); - EXPECT_EQ(x.GetString(), cstr); - EXPECT_EQ(x.GetStringLength(), sizeof(cstr)-1); - - static char mstr[] = "Howdy"; // non-const array - // Value(mstr).Swap(x); // should not compile - Value(StringRef(mstr)).Swap(x); - EXPECT_TRUE(x.IsString()); - EXPECT_EQ(x.GetString(), mstr); - EXPECT_EQ(x.GetStringLength(), sizeof(mstr)-1); - strncpy(mstr,"Hello", sizeof(mstr)); - EXPECT_STREQ(x.GetString(), "Hello"); - - const char* pstr = cstr; - //Value(pstr).Swap(x); // should not compile - Value(StringRef(pstr)).Swap(x); - EXPECT_TRUE(x.IsString()); - EXPECT_EQ(x.GetString(), cstr); - EXPECT_EQ(x.GetStringLength(), sizeof(cstr)-1); - - char* mpstr = mstr; - Value(StringRef(mpstr,sizeof(mstr)-1)).Swap(x); - EXPECT_TRUE(x.IsString()); - EXPECT_EQ(x.GetString(), mstr); - EXPECT_EQ(x.GetStringLength(), 5u); - EXPECT_STREQ(x.GetString(), "Hello"); - - // Constructor with copy string - MemoryPoolAllocator<> allocator; - Value c(x.GetString(), x.GetStringLength(), allocator); - EXPECT_NE(x.GetString(), c.GetString()); - EXPECT_EQ(x.GetStringLength(), c.GetStringLength()); - EXPECT_STREQ(x.GetString(), c.GetString()); - //x.SetString("World"); - x.SetString("World", 5); - EXPECT_STREQ("Hello", c.GetString()); - EXPECT_EQ(5u, c.GetStringLength()); - - // Constructor with type - Value y(kStringType); - EXPECT_TRUE(y.IsString()); - EXPECT_STREQ("", y.GetString()); // Empty string should be "" instead of 0 (issue 226) - EXPECT_EQ(0u, y.GetStringLength()); - - // SetConsttring() - Value z; - z.SetString("Hello"); - EXPECT_TRUE(x.IsString()); - z.SetString("Hello", 5); - EXPECT_STREQ("Hello", z.GetString()); - EXPECT_STREQ("Hello", z.GetString()); - EXPECT_EQ(5u, z.GetStringLength()); - - z.SetString("Hello"); - EXPECT_TRUE(z.IsString()); - EXPECT_STREQ("Hello", z.GetString()); - - //z.SetString(mstr); // should not compile - //z.SetString(pstr); // should not compile - z.SetString(StringRef(mstr)); - EXPECT_TRUE(z.IsString()); - EXPECT_STREQ(z.GetString(), mstr); - - z.SetString(cstr); - EXPECT_TRUE(z.IsString()); - EXPECT_EQ(cstr, z.GetString()); - - z = cstr; - EXPECT_TRUE(z.IsString()); - EXPECT_EQ(cstr, z.GetString()); - - // SetString() - char s[] = "World"; - Value w; - w.SetString(s, static_cast(strlen(s)), allocator); - s[0] = '\0'; - EXPECT_STREQ("World", w.GetString()); - EXPECT_EQ(5u, w.GetStringLength()); - - // templated functions - EXPECT_TRUE(z.Is()); - EXPECT_STREQ(cstr, z.Get()); - EXPECT_STREQ("Apple", z.Set("Apple").Get()); - -#if RAPIDJSON_HAS_STDSTRING - { - std::string str = "Hello World"; - str[5] = '\0'; - EXPECT_STREQ(str.data(),"Hello"); // embedded '\0' - EXPECT_EQ(str.size(), 11u); - - // no copy - Value vs0(StringRef(str)); - EXPECT_TRUE(vs0.IsString()); - EXPECT_EQ(vs0.GetString(), str.data()); - EXPECT_EQ(vs0.GetStringLength(), str.size()); - TestEqual(vs0, str); - - // do copy - Value vs1(str, allocator); - EXPECT_TRUE(vs1.IsString()); - EXPECT_NE(vs1.GetString(), str.data()); - EXPECT_NE(vs1.GetString(), str); // not equal due to embedded '\0' - EXPECT_EQ(vs1.GetStringLength(), str.size()); - TestEqual(vs1, str); - - // SetString - str = "World"; - vs0.SetNull().SetString(str, allocator); - EXPECT_TRUE(vs0.IsString()); - EXPECT_STREQ(vs0.GetString(), str.c_str()); - EXPECT_EQ(vs0.GetStringLength(), str.size()); - TestEqual(str, vs0); - TestUnequal(str, vs1); - - // vs1 = str; // should not compile - vs1 = StringRef(str); - TestEqual(str, vs1); - TestEqual(vs0, vs1); - - // Templated function. - EXPECT_TRUE(vs0.Is()); - EXPECT_EQ(str, vs0.Get()); - vs0.Set(std::string("Apple"), allocator); - EXPECT_EQ(std::string("Apple"), vs0.Get()); - vs0.Set(std::string("Orange"), allocator); - EXPECT_EQ(std::string("Orange"), vs0.Get()); - } -#endif // RAPIDJSON_HAS_STDSTRING -} - -// Issue 226: Value of string type should not point to NULL -TEST(Value, SetStringNullException) { - Value v; - EXPECT_THROW(v.SetString(0, 0), AssertException); -} - -template -static void TestArray(T& x, Allocator& allocator) { - const T& y = x; - - // PushBack() - Value v; - x.PushBack(v, allocator); - v.SetBool(true); - x.PushBack(v, allocator); - v.SetBool(false); - x.PushBack(v, allocator); - v.SetInt(123); - x.PushBack(v, allocator); - //x.PushBack((const char*)"foo", allocator); // should not compile - x.PushBack("foo", allocator); - - EXPECT_FALSE(x.Empty()); - EXPECT_EQ(5u, x.Size()); - EXPECT_FALSE(y.Empty()); - EXPECT_EQ(5u, y.Size()); - EXPECT_TRUE(x[SizeType(0)].IsNull()); - EXPECT_TRUE(x[1].IsTrue()); - EXPECT_TRUE(x[2].IsFalse()); - EXPECT_TRUE(x[3].IsInt()); - EXPECT_EQ(123, x[3].GetInt()); - EXPECT_TRUE(y[SizeType(0)].IsNull()); - EXPECT_TRUE(y[1].IsTrue()); - EXPECT_TRUE(y[2].IsFalse()); - EXPECT_TRUE(y[3].IsInt()); - EXPECT_EQ(123, y[3].GetInt()); - EXPECT_TRUE(y[4].IsString()); - EXPECT_STREQ("foo", y[4].GetString()); - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - // PushBack(GenericValue&&, Allocator&); - { - Value y2(kArrayType); - y2.PushBack(Value(true), allocator); - y2.PushBack(std::move(Value(kArrayType).PushBack(Value(1), allocator).PushBack("foo", allocator)), allocator); - EXPECT_EQ(2u, y2.Size()); - EXPECT_TRUE(y2[0].IsTrue()); - EXPECT_TRUE(y2[1].IsArray()); - EXPECT_EQ(2u, y2[1].Size()); - EXPECT_TRUE(y2[1][0].IsInt()); - EXPECT_TRUE(y2[1][1].IsString()); - } -#endif - - // iterator - typename T::ValueIterator itr = x.Begin(); - EXPECT_TRUE(itr != x.End()); - EXPECT_TRUE(itr->IsNull()); - ++itr; - EXPECT_TRUE(itr != x.End()); - EXPECT_TRUE(itr->IsTrue()); - ++itr; - EXPECT_TRUE(itr != x.End()); - EXPECT_TRUE(itr->IsFalse()); - ++itr; - EXPECT_TRUE(itr != x.End()); - EXPECT_TRUE(itr->IsInt()); - EXPECT_EQ(123, itr->GetInt()); - ++itr; - EXPECT_TRUE(itr != x.End()); - EXPECT_TRUE(itr->IsString()); - EXPECT_STREQ("foo", itr->GetString()); - - // const iterator - typename T::ConstValueIterator citr = y.Begin(); - EXPECT_TRUE(citr != y.End()); - EXPECT_TRUE(citr->IsNull()); - ++citr; - EXPECT_TRUE(citr != y.End()); - EXPECT_TRUE(citr->IsTrue()); - ++citr; - EXPECT_TRUE(citr != y.End()); - EXPECT_TRUE(citr->IsFalse()); - ++citr; - EXPECT_TRUE(citr != y.End()); - EXPECT_TRUE(citr->IsInt()); - EXPECT_EQ(123, citr->GetInt()); - ++citr; - EXPECT_TRUE(citr != y.End()); - EXPECT_TRUE(citr->IsString()); - EXPECT_STREQ("foo", citr->GetString()); - - // PopBack() - x.PopBack(); - EXPECT_EQ(4u, x.Size()); - EXPECT_TRUE(y[SizeType(0)].IsNull()); - EXPECT_TRUE(y[1].IsTrue()); - EXPECT_TRUE(y[2].IsFalse()); - EXPECT_TRUE(y[3].IsInt()); - - // Clear() - x.Clear(); - EXPECT_TRUE(x.Empty()); - EXPECT_EQ(0u, x.Size()); - EXPECT_TRUE(y.Empty()); - EXPECT_EQ(0u, y.Size()); - - // Erase(ValueIterator) - - // Use array of array to ensure removed elements' destructor is called. - // [[0],[1],[2],...] - for (int i = 0; i < 10; i++) - x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator); - - // Erase the first - itr = x.Erase(x.Begin()); - EXPECT_EQ(x.Begin(), itr); - EXPECT_EQ(9u, x.Size()); - for (int i = 0; i < 9; i++) - EXPECT_EQ(i + 1, x[static_cast(i)][0].GetInt()); - - // Ease the last - itr = x.Erase(x.End() - 1); - EXPECT_EQ(x.End(), itr); - EXPECT_EQ(8u, x.Size()); - for (int i = 0; i < 8; i++) - EXPECT_EQ(i + 1, x[static_cast(i)][0].GetInt()); - - // Erase the middle - itr = x.Erase(x.Begin() + 4); - EXPECT_EQ(x.Begin() + 4, itr); - EXPECT_EQ(7u, x.Size()); - for (int i = 0; i < 4; i++) - EXPECT_EQ(i + 1, x[static_cast(i)][0].GetInt()); - for (int i = 4; i < 7; i++) - EXPECT_EQ(i + 2, x[static_cast(i)][0].GetInt()); - - // Erase(ValueIterator, ValueIterator) - // Exhaustive test with all 0 <= first < n, first <= last <= n cases - const unsigned n = 10; - for (unsigned first = 0; first < n; first++) { - for (unsigned last = first; last <= n; last++) { - x.Clear(); - for (unsigned i = 0; i < n; i++) - x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator); - - itr = x.Erase(x.Begin() + first, x.Begin() + last); - if (last == n) - EXPECT_EQ(x.End(), itr); - else - EXPECT_EQ(x.Begin() + first, itr); - - size_t removeCount = last - first; - EXPECT_EQ(n - removeCount, x.Size()); - for (unsigned i = 0; i < first; i++) - EXPECT_EQ(i, x[i][0].GetUint()); - for (unsigned i = first; i < n - removeCount; i++) - EXPECT_EQ(i + removeCount, x[static_cast(i)][0].GetUint()); - } - } -} - -TEST(Value, Array) { - Value x(kArrayType); - const Value& y = x; - Value::AllocatorType allocator; - - EXPECT_EQ(kArrayType, x.GetType()); - EXPECT_TRUE(x.IsArray()); - EXPECT_TRUE(x.Empty()); - EXPECT_EQ(0u, x.Size()); - EXPECT_TRUE(y.IsArray()); - EXPECT_TRUE(y.Empty()); - EXPECT_EQ(0u, y.Size()); - - EXPECT_FALSE(x.IsNull()); - EXPECT_FALSE(x.IsBool()); - EXPECT_FALSE(x.IsFalse()); - EXPECT_FALSE(x.IsTrue()); - EXPECT_FALSE(x.IsString()); - EXPECT_FALSE(x.IsObject()); - - TestArray(x, allocator); - - // Working in gcc without C++11, but VS2013 cannot compile. To be diagnosed. - // http://en.wikipedia.org/wiki/Erase-remove_idiom - x.Clear(); - for (int i = 0; i < 10; i++) - if (i % 2 == 0) - x.PushBack(i, allocator); - else - x.PushBack(Value(kNullType).Move(), allocator); - - const Value null(kNullType); - x.Erase(std::remove(x.Begin(), x.End(), null), x.End()); - EXPECT_EQ(5u, x.Size()); - for (int i = 0; i < 5; i++) - EXPECT_EQ(i * 2, x[static_cast(i)]); - - // SetArray() - Value z; - z.SetArray(); - EXPECT_TRUE(z.IsArray()); - EXPECT_TRUE(z.Empty()); -} - -TEST(Value, ArrayHelper) { - Value::AllocatorType allocator; - { - Value x(kArrayType); - Value::Array a = x.GetArray(); - TestArray(a, allocator); - } - - { - Value x(kArrayType); - Value::Array a = x.GetArray(); - a.PushBack(1, allocator); - - Value::Array a2(a); // copy constructor - EXPECT_EQ(1, a2.Size()); - - Value::Array a3 = a; - EXPECT_EQ(1, a3.Size()); - - Value::ConstArray y = static_cast(x).GetArray(); - (void)y; - // y.PushBack(1, allocator); // should not compile - - // Templated functions - x.Clear(); - EXPECT_TRUE(x.Is()); - EXPECT_TRUE(x.Is()); - a.PushBack(1, allocator); - EXPECT_EQ(1, x.Get()[0].GetInt()); - EXPECT_EQ(1, x.Get()[0].GetInt()); - - Value x2; - x2.Set(a); - EXPECT_TRUE(x.IsArray()); // IsArray() is invariant after moving. - EXPECT_EQ(1, x2.Get()[0].GetInt()); - } - - { - Value y(kArrayType); - y.PushBack(123, allocator); - - Value x(y.GetArray()); // Construct value form array. - EXPECT_TRUE(x.IsArray()); - EXPECT_EQ(123, x[0].GetInt()); - EXPECT_TRUE(y.IsArray()); // Invariant - EXPECT_TRUE(y.Empty()); - } - - { - Value x(kArrayType); - Value y(kArrayType); - y.PushBack(123, allocator); - x.PushBack(y.GetArray(), allocator); // Implicit constructor to convert Array to GenericValue - - EXPECT_EQ(1, x.Size()); - EXPECT_EQ(123, x[0][0].GetInt()); - EXPECT_TRUE(y.IsArray()); - EXPECT_TRUE(y.Empty()); - } -} - -#if RAPIDJSON_HAS_CXX11_RANGE_FOR -TEST(Value, ArrayHelperRangeFor) { - Value::AllocatorType allocator; - Value x(kArrayType); - - for (int i = 0; i < 10; i++) - x.PushBack(i, allocator); - - { - int i = 0; - for (auto& v : x.GetArray()) { - EXPECT_EQ(i, v.GetInt()); - i++; - } - EXPECT_EQ(i, 10); - } - { - int i = 0; - for (const auto& v : const_cast(x).GetArray()) { - EXPECT_EQ(i, v.GetInt()); - i++; - } - EXPECT_EQ(i, 10); - } - - // Array a = x.GetArray(); - // Array ca = const_cast(x).GetArray(); -} -#endif - -template -static void TestObject(T& x, Allocator& allocator) { - const T& y = x; // const version - - // AddMember() - x.AddMember("A", "Apple", allocator); - EXPECT_FALSE(x.ObjectEmpty()); - EXPECT_EQ(1u, x.MemberCount()); - - Value value("Banana", 6); - x.AddMember("B", "Banana", allocator); - EXPECT_EQ(2u, x.MemberCount()); - - // AddMember(StringRefType, T, Allocator) - { - Value o(kObjectType); - o.AddMember("true", true, allocator); - o.AddMember("false", false, allocator); - o.AddMember("int", -1, allocator); - o.AddMember("uint", 1u, allocator); - o.AddMember("int64", int64_t(-4294967296), allocator); - o.AddMember("uint64", uint64_t(4294967296), allocator); - o.AddMember("double", 3.14, allocator); - o.AddMember("string", "Jelly", allocator); - - EXPECT_TRUE(o["true"].GetBool()); - EXPECT_FALSE(o["false"].GetBool()); - EXPECT_EQ(-1, o["int"].GetInt()); - EXPECT_EQ(1u, o["uint"].GetUint()); - EXPECT_EQ(int64_t(-4294967296), o["int64"].GetInt64()); - EXPECT_EQ(uint64_t(4294967296), o["uint64"].GetUint64()); - EXPECT_STREQ("Jelly",o["string"].GetString()); - EXPECT_EQ(8u, o.MemberCount()); - } - - // AddMember(Value&, T, Allocator) - { - Value o(kObjectType); - - Value n("s"); - o.AddMember(n, "string", allocator); - EXPECT_EQ(1u, o.MemberCount()); - - Value count("#"); - o.AddMember(count, o.MemberCount(), allocator); - EXPECT_EQ(2u, o.MemberCount()); - } - -#if RAPIDJSON_HAS_STDSTRING - { - // AddMember(StringRefType, const std::string&, Allocator) - Value o(kObjectType); - o.AddMember("b", std::string("Banana"), allocator); - EXPECT_STREQ("Banana", o["b"].GetString()); - - // RemoveMember(const std::string&) - o.RemoveMember(std::string("b")); - EXPECT_TRUE(o.ObjectEmpty()); - } -#endif - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS - // AddMember(GenericValue&&, ...) variants - { - Value o(kObjectType); - o.AddMember(Value("true"), Value(true), allocator); - o.AddMember(Value("false"), Value(false).Move(), allocator); // value is lvalue ref - o.AddMember(Value("int").Move(), Value(-1), allocator); // name is lvalue ref - o.AddMember("uint", std::move(Value().SetUint(1u)), allocator); // name is literal, value is rvalue - EXPECT_TRUE(o["true"].GetBool()); - EXPECT_FALSE(o["false"].GetBool()); - EXPECT_EQ(-1, o["int"].GetInt()); - EXPECT_EQ(1u, o["uint"].GetUint()); - EXPECT_EQ(4u, o.MemberCount()); - } -#endif - - // Tests a member with null character - Value name; - const Value C0D("C\0D", 3); - name.SetString(C0D.GetString(), 3); - value.SetString("CherryD", 7); - x.AddMember(name, value, allocator); - - // HasMember() - EXPECT_TRUE(x.HasMember("A")); - EXPECT_TRUE(x.HasMember("B")); - EXPECT_TRUE(y.HasMember("A")); - EXPECT_TRUE(y.HasMember("B")); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_TRUE(x.HasMember(std::string("A"))); -#endif - - name.SetString("C\0D"); - EXPECT_TRUE(x.HasMember(name)); - EXPECT_TRUE(y.HasMember(name)); - - GenericValue, CrtAllocator> othername("A"); - EXPECT_TRUE(x.HasMember(othername)); - EXPECT_TRUE(y.HasMember(othername)); - othername.SetString("C\0D"); - EXPECT_TRUE(x.HasMember(othername)); - EXPECT_TRUE(y.HasMember(othername)); - - // operator[] - EXPECT_STREQ("Apple", x["A"].GetString()); - EXPECT_STREQ("Banana", x["B"].GetString()); - EXPECT_STREQ("CherryD", x[C0D].GetString()); - EXPECT_STREQ("CherryD", x[othername].GetString()); - EXPECT_THROW(x["nonexist"], AssertException); - - // const operator[] - EXPECT_STREQ("Apple", y["A"].GetString()); - EXPECT_STREQ("Banana", y["B"].GetString()); - EXPECT_STREQ("CherryD", y[C0D].GetString()); - -#if RAPIDJSON_HAS_STDSTRING - EXPECT_STREQ("Apple", x["A"].GetString()); - EXPECT_STREQ("Apple", y[std::string("A")].GetString()); -#endif - - // member iterator - Value::MemberIterator itr = x.MemberBegin(); - EXPECT_TRUE(itr != x.MemberEnd()); - EXPECT_STREQ("A", itr->name.GetString()); - EXPECT_STREQ("Apple", itr->value.GetString()); - ++itr; - EXPECT_TRUE(itr != x.MemberEnd()); - EXPECT_STREQ("B", itr->name.GetString()); - EXPECT_STREQ("Banana", itr->value.GetString()); - ++itr; - EXPECT_TRUE(itr != x.MemberEnd()); - EXPECT_TRUE(memcmp(itr->name.GetString(), "C\0D", 4) == 0); - EXPECT_STREQ("CherryD", itr->value.GetString()); - ++itr; - EXPECT_FALSE(itr != x.MemberEnd()); - - // const member iterator - Value::ConstMemberIterator citr = y.MemberBegin(); - EXPECT_TRUE(citr != y.MemberEnd()); - EXPECT_STREQ("A", citr->name.GetString()); - EXPECT_STREQ("Apple", citr->value.GetString()); - ++citr; - EXPECT_TRUE(citr != y.MemberEnd()); - EXPECT_STREQ("B", citr->name.GetString()); - EXPECT_STREQ("Banana", citr->value.GetString()); - ++citr; - EXPECT_TRUE(citr != y.MemberEnd()); - EXPECT_TRUE(memcmp(citr->name.GetString(), "C\0D", 4) == 0); - EXPECT_STREQ("CherryD", citr->value.GetString()); - ++citr; - EXPECT_FALSE(citr != y.MemberEnd()); - - // member iterator conversions/relations - itr = x.MemberBegin(); - citr = x.MemberBegin(); // const conversion - TestEqual(itr, citr); - EXPECT_TRUE(itr < x.MemberEnd()); - EXPECT_FALSE(itr > y.MemberEnd()); - EXPECT_TRUE(citr < x.MemberEnd()); - EXPECT_FALSE(citr > y.MemberEnd()); - ++citr; - TestUnequal(itr, citr); - EXPECT_FALSE(itr < itr); - EXPECT_TRUE(itr < citr); - EXPECT_FALSE(itr > itr); - EXPECT_TRUE(citr > itr); - EXPECT_EQ(1, citr - x.MemberBegin()); - EXPECT_EQ(0, itr - y.MemberBegin()); - itr += citr - x.MemberBegin(); - EXPECT_EQ(1, itr - y.MemberBegin()); - TestEqual(citr, itr); - EXPECT_TRUE(itr <= citr); - EXPECT_TRUE(citr <= itr); - itr++; - EXPECT_TRUE(itr >= citr); - EXPECT_FALSE(citr >= itr); - - // RemoveMember() - EXPECT_TRUE(x.RemoveMember("A")); - EXPECT_FALSE(x.HasMember("A")); - - EXPECT_TRUE(x.RemoveMember("B")); - EXPECT_FALSE(x.HasMember("B")); - - EXPECT_FALSE(x.RemoveMember("nonexist")); - - EXPECT_TRUE(x.RemoveMember(othername)); - EXPECT_FALSE(x.HasMember(name)); - - EXPECT_TRUE(x.MemberBegin() == x.MemberEnd()); - - // EraseMember(ConstMemberIterator) - - // Use array members to ensure removed elements' destructor is called. - // { "a": [0], "b": [1],[2],...] - const char keys[][2] = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" }; - for (int i = 0; i < 10; i++) - x.AddMember(keys[i], Value(kArrayType).PushBack(i, allocator), allocator); - - // MemberCount, iterator difference - EXPECT_EQ(x.MemberCount(), SizeType(x.MemberEnd() - x.MemberBegin())); - - // Erase the first - itr = x.EraseMember(x.MemberBegin()); - EXPECT_FALSE(x.HasMember(keys[0])); - EXPECT_EQ(x.MemberBegin(), itr); - EXPECT_EQ(9u, x.MemberCount()); - for (; itr != x.MemberEnd(); ++itr) { - size_t i = static_cast((itr - x.MemberBegin())) + 1; - EXPECT_STREQ(itr->name.GetString(), keys[i]); - EXPECT_EQ(i, itr->value[0].GetInt()); - } - - // Erase the last - itr = x.EraseMember(x.MemberEnd() - 1); - EXPECT_FALSE(x.HasMember(keys[9])); - EXPECT_EQ(x.MemberEnd(), itr); - EXPECT_EQ(8u, x.MemberCount()); - for (; itr != x.MemberEnd(); ++itr) { - size_t i = static_cast(itr - x.MemberBegin()) + 1; - EXPECT_STREQ(itr->name.GetString(), keys[i]); - EXPECT_EQ(i, itr->value[0].GetInt()); - } - - // Erase the middle - itr = x.EraseMember(x.MemberBegin() + 4); - EXPECT_FALSE(x.HasMember(keys[5])); - EXPECT_EQ(x.MemberBegin() + 4, itr); - EXPECT_EQ(7u, x.MemberCount()); - for (; itr != x.MemberEnd(); ++itr) { - size_t i = static_cast(itr - x.MemberBegin()); - i += (i < 4) ? 1 : 2; - EXPECT_STREQ(itr->name.GetString(), keys[i]); - EXPECT_EQ(i, itr->value[0].GetInt()); - } - - // EraseMember(ConstMemberIterator, ConstMemberIterator) - // Exhaustive test with all 0 <= first < n, first <= last <= n cases - const unsigned n = 10; - for (unsigned first = 0; first < n; first++) { - for (unsigned last = first; last <= n; last++) { - x.RemoveAllMembers(); - for (unsigned i = 0; i < n; i++) - x.AddMember(keys[i], Value(kArrayType).PushBack(i, allocator), allocator); - - itr = x.EraseMember(x.MemberBegin() + static_cast(first), x.MemberBegin() + static_cast(last)); - if (last == n) - EXPECT_EQ(x.MemberEnd(), itr); - else - EXPECT_EQ(x.MemberBegin() + static_cast(first), itr); - - size_t removeCount = last - first; - EXPECT_EQ(n - removeCount, x.MemberCount()); - for (unsigned i = 0; i < first; i++) - EXPECT_EQ(i, x[keys[i]][0].GetUint()); - for (unsigned i = first; i < n - removeCount; i++) - EXPECT_EQ(i + removeCount, x[keys[i+removeCount]][0].GetUint()); - } - } - - // RemoveAllMembers() - x.RemoveAllMembers(); - EXPECT_TRUE(x.ObjectEmpty()); - EXPECT_EQ(0u, x.MemberCount()); -} - -TEST(Value, Object) { - Value x(kObjectType); - const Value& y = x; // const version - Value::AllocatorType allocator; - - EXPECT_EQ(kObjectType, x.GetType()); - EXPECT_TRUE(x.IsObject()); - EXPECT_TRUE(x.ObjectEmpty()); - EXPECT_EQ(0u, x.MemberCount()); - EXPECT_EQ(kObjectType, y.GetType()); - EXPECT_TRUE(y.IsObject()); - EXPECT_TRUE(y.ObjectEmpty()); - EXPECT_EQ(0u, y.MemberCount()); - - TestObject(x, allocator); - - // SetObject() - Value z; - z.SetObject(); - EXPECT_TRUE(z.IsObject()); -} - -TEST(Value, ObjectHelper) { - Value::AllocatorType allocator; - { - Value x(kObjectType); - Value::Object o = x.GetObject(); - TestObject(o, allocator); - } - - { - Value x(kObjectType); - Value::Object o = x.GetObject(); - o.AddMember("1", 1, allocator); - - Value::Object o2(o); // copy constructor - EXPECT_EQ(1, o2.MemberCount()); - - Value::Object o3 = o; - EXPECT_EQ(1, o3.MemberCount()); - - Value::ConstObject y = static_cast(x).GetObject(); - (void)y; - // y.AddMember("1", 1, allocator); // should not compile - - // Templated functions - x.RemoveAllMembers(); - EXPECT_TRUE(x.Is()); - EXPECT_TRUE(x.Is()); - o.AddMember("1", 1, allocator); - EXPECT_EQ(1, x.Get()["1"].GetInt()); - EXPECT_EQ(1, x.Get()["1"].GetInt()); - - Value x2; - x2.Set(o); - EXPECT_TRUE(x.IsObject()); // IsObject() is invariant after moving - EXPECT_EQ(1, x2.Get()["1"].GetInt()); - } - - { - Value x(kObjectType); - x.AddMember("a", "apple", allocator); - Value y(x.GetObject()); - EXPECT_STREQ("apple", y["a"].GetString()); - EXPECT_TRUE(x.IsObject()); // Invariant - } - - { - Value x(kObjectType); - x.AddMember("a", "apple", allocator); - Value y(kObjectType); - y.AddMember("fruits", x.GetObject(), allocator); - EXPECT_STREQ("apple", y["fruits"]["a"].GetString()); - EXPECT_TRUE(x.IsObject()); // Invariant - } -} - -#if RAPIDJSON_HAS_CXX11_RANGE_FOR -TEST(Value, ObjectHelperRangeFor) { - Value::AllocatorType allocator; - Value x(kObjectType); - - for (int i = 0; i < 10; i++) { - char name[10]; - Value n(name, static_cast(sprintf(name, "%d", i)), allocator); - x.AddMember(n, i, allocator); - } - - { - int i = 0; - for (auto& m : x.GetObject()) { - char name[10]; - sprintf(name, "%d", i); - EXPECT_STREQ(name, m.name.GetString()); - EXPECT_EQ(i, m.value.GetInt()); - i++; - } - EXPECT_EQ(i, 10); - } - { - int i = 0; - for (const auto& m : const_cast(x).GetObject()) { - char name[10]; - sprintf(name, "%d", i); - EXPECT_STREQ(name, m.name.GetString()); - EXPECT_EQ(i, m.value.GetInt()); - i++; - } - EXPECT_EQ(i, 10); - } - - // Object a = x.GetObject(); - // Object ca = const_cast(x).GetObject(); -} -#endif - -TEST(Value, EraseMember_String) { - Value::AllocatorType allocator; - Value x(kObjectType); - x.AddMember("A", "Apple", allocator); - x.AddMember("B", "Banana", allocator); - - EXPECT_TRUE(x.EraseMember("B")); - EXPECT_FALSE(x.HasMember("B")); - - EXPECT_FALSE(x.EraseMember("nonexist")); - - GenericValue, CrtAllocator> othername("A"); - EXPECT_TRUE(x.EraseMember(othername)); - EXPECT_FALSE(x.HasMember("A")); - - EXPECT_TRUE(x.MemberBegin() == x.MemberEnd()); -} - -TEST(Value, BigNestedArray) { - MemoryPoolAllocator<> allocator; - Value x(kArrayType); - static const SizeType n = 200; - - for (SizeType i = 0; i < n; i++) { - Value y(kArrayType); - for (SizeType j = 0; j < n; j++) { - Value number(static_cast(i * n + j)); - y.PushBack(number, allocator); - } - x.PushBack(y, allocator); - } - - for (SizeType i = 0; i < n; i++) - for (SizeType j = 0; j < n; j++) { - EXPECT_TRUE(x[i][j].IsInt()); - EXPECT_EQ(static_cast(i * n + j), x[i][j].GetInt()); - } -} - -TEST(Value, BigNestedObject) { - MemoryPoolAllocator<> allocator; - Value x(kObjectType); - static const SizeType n = 200; - - for (SizeType i = 0; i < n; i++) { - char name1[10]; - sprintf(name1, "%d", i); - - // Value name(name1); // should not compile - Value name(name1, static_cast(strlen(name1)), allocator); - Value object(kObjectType); - - for (SizeType j = 0; j < n; j++) { - char name2[10]; - sprintf(name2, "%d", j); - - Value name3(name2, static_cast(strlen(name2)), allocator); - Value number(static_cast(i * n + j)); - object.AddMember(name3, number, allocator); - } - - // x.AddMember(name1, object, allocator); // should not compile - x.AddMember(name, object, allocator); - } - - for (SizeType i = 0; i < n; i++) { - char name1[10]; - sprintf(name1, "%d", i); - - for (SizeType j = 0; j < n; j++) { - char name2[10]; - sprintf(name2, "%d", j); - x[name1]; - EXPECT_EQ(static_cast(i * n + j), x[name1][name2].GetInt()); - } - } -} - -// Issue 18: Error removing last element of object -// http://code.google.com/p/rapidjson/issues/detail?id=18 -TEST(Value, RemoveLastElement) { - rapidjson::Document doc; - rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); - rapidjson::Value objVal(rapidjson::kObjectType); - objVal.AddMember("var1", 123, allocator); - objVal.AddMember("var2", "444", allocator); - objVal.AddMember("var3", 555, allocator); - EXPECT_TRUE(objVal.HasMember("var3")); - objVal.RemoveMember("var3"); // Assertion here in r61 - EXPECT_FALSE(objVal.HasMember("var3")); -} - -// Issue 38: Segmentation fault with CrtAllocator -TEST(Document, CrtAllocator) { - typedef GenericValue, CrtAllocator> V; - - V::AllocatorType allocator; - V o(kObjectType); - o.AddMember("x", 1, allocator); // Should not call destructor on uninitialized name/value of newly allocated members. - - V a(kArrayType); - a.PushBack(1, allocator); // Should not call destructor on uninitialized Value of newly allocated elements. -} - -static void TestShortStringOptimization(const char* str) { - const rapidjson::SizeType len = static_cast(strlen(str)); - - rapidjson::Document doc; - rapidjson::Value val; - val.SetString(str, len, doc.GetAllocator()); - - EXPECT_EQ(val.GetStringLength(), len); - EXPECT_STREQ(val.GetString(), str); -} - -TEST(Value, AllocateShortString) { - TestShortStringOptimization(""); // edge case: empty string - TestShortStringOptimization("12345678"); // regular case for short strings: 8 chars - TestShortStringOptimization("12345678901"); // edge case: 11 chars in 32-bit mode (=> short string) - TestShortStringOptimization("123456789012"); // edge case: 12 chars in 32-bit mode (=> regular string) - TestShortStringOptimization("123456789012345"); // edge case: 15 chars in 64-bit mode (=> short string) - TestShortStringOptimization("1234567890123456"); // edge case: 16 chars in 64-bit mode (=> regular string) -} - -template -struct TerminateHandler { - bool Null() { return e != 0; } - bool Bool(bool) { return e != 1; } - bool Int(int) { return e != 2; } - bool Uint(unsigned) { return e != 3; } - bool Int64(int64_t) { return e != 4; } - bool Uint64(uint64_t) { return e != 5; } - bool Double(double) { return e != 6; } - bool RawNumber(const char*, SizeType, bool) { return e != 7; } - bool String(const char*, SizeType, bool) { return e != 8; } - bool StartObject() { return e != 9; } - bool Key(const char*, SizeType, bool) { return e != 10; } - bool EndObject(SizeType) { return e != 11; } - bool StartArray() { return e != 12; } - bool EndArray(SizeType) { return e != 13; } -}; - -#define TEST_TERMINATION(e, json)\ -{\ - Document d; \ - EXPECT_FALSE(d.Parse(json).HasParseError()); \ - Reader reader; \ - TerminateHandler h;\ - EXPECT_FALSE(d.Accept(h));\ -} - -TEST(Value, AcceptTerminationByHandler) { - TEST_TERMINATION(0, "[null]"); - TEST_TERMINATION(1, "[true]"); - TEST_TERMINATION(1, "[false]"); - TEST_TERMINATION(2, "[-1]"); - TEST_TERMINATION(3, "[2147483648]"); - TEST_TERMINATION(4, "[-1234567890123456789]"); - TEST_TERMINATION(5, "[9223372036854775808]"); - TEST_TERMINATION(6, "[0.5]"); - // RawNumber() is never called - TEST_TERMINATION(8, "[\"a\"]"); - TEST_TERMINATION(9, "[{}]"); - TEST_TERMINATION(10, "[{\"a\":1}]"); - TEST_TERMINATION(11, "[{}]"); - TEST_TERMINATION(12, "{\"a\":[]}"); - TEST_TERMINATION(13, "{\"a\":[]}"); -} - -struct ValueIntComparer { - bool operator()(const Value& lhs, const Value& rhs) const { - return lhs.GetInt() < rhs.GetInt(); - } -}; - -#if RAPIDJSON_HAS_CXX11_RVALUE_REFS -TEST(Value, Sorting) { - Value::AllocatorType allocator; - Value a(kArrayType); - a.PushBack(5, allocator); - a.PushBack(1, allocator); - a.PushBack(3, allocator); - std::sort(a.Begin(), a.End(), ValueIntComparer()); - EXPECT_EQ(1, a[0].GetInt()); - EXPECT_EQ(3, a[1].GetInt()); - EXPECT_EQ(5, a[2].GetInt()); -} -#endif - -// http://stackoverflow.com/questions/35222230/ - -static void MergeDuplicateKey(Value& v, Value::AllocatorType& a) { - if (v.IsObject()) { - // Convert all key:value into key:[value] - for (Value::MemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr) - itr->value = Value(kArrayType).Move().PushBack(itr->value, a); - - // Merge arrays if key is duplicated - for (Value::MemberIterator itr = v.MemberBegin(); itr != v.MemberEnd();) { - Value::MemberIterator itr2 = v.FindMember(itr->name); - if (itr != itr2) { - itr2->value.PushBack(itr->value[0], a); - itr = v.EraseMember(itr); - } - else - ++itr; - } - - // Convert key:[values] back to key:value if there is only one value - for (Value::MemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr) { - if (itr->value.Size() == 1) - itr->value = itr->value[0]; - MergeDuplicateKey(itr->value, a); // Recursion on the value - } - } - else if (v.IsArray()) - for (Value::ValueIterator itr = v.Begin(); itr != v.End(); ++itr) - MergeDuplicateKey(*itr, a); -} - -TEST(Value, MergeDuplicateKey) { - Document d; - d.Parse( - "{" - " \"key1\": {" - " \"a\": \"asdf\"," - " \"b\": \"foo\"," - " \"b\": \"bar\"," - " \"c\": \"fdas\"" - " }" - "}"); - - Document d2; - d2.Parse( - "{" - " \"key1\": {" - " \"a\": \"asdf\"," - " \"b\": [" - " \"foo\"," - " \"bar\"" - " ]," - " \"c\": \"fdas\"" - " }" - "}"); - - EXPECT_NE(d2, d); - MergeDuplicateKey(d, d.GetAllocator()); - EXPECT_EQ(d2, d); -} - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif diff --git a/rapidjson-lib/test/unittest/writertest.cpp b/rapidjson-lib/test/unittest/writertest.cpp deleted file mode 100644 index 29f7626..0000000 --- a/rapidjson-lib/test/unittest/writertest.cpp +++ /dev/null @@ -1,497 +0,0 @@ -// Tencent is pleased to support the open source community by making RapidJSON available. -// -// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. -// -// Licensed under the MIT License (the "License"); you may not use this file except -// in compliance with the License. You may obtain a copy of the License at -// -// http://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software distributed -// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -// CONDITIONS OF ANY KIND, either express or implied. See the License for the -// specific language governing permissions and limitations under the License. - -#include "unittest.h" - -#include "rapidjson/document.h" -#include "rapidjson/reader.h" -#include "rapidjson/writer.h" -#include "rapidjson/stringbuffer.h" -#include "rapidjson/memorybuffer.h" - -using namespace rapidjson; - -TEST(Writer, Compact) { - StringStream s("{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3] } "); - StringBuffer buffer; - Writer writer(buffer); - buffer.ShrinkToFit(); - Reader reader; - reader.Parse<0>(s, writer); - EXPECT_STREQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3]}", buffer.GetString()); - EXPECT_EQ(77u, buffer.GetSize()); - EXPECT_TRUE(writer.IsComplete()); -} - -// json -> parse -> writer -> json -#define TEST_ROUNDTRIP(json) \ - { \ - StringStream s(json); \ - StringBuffer buffer; \ - Writer writer(buffer); \ - Reader reader; \ - reader.Parse(s, writer); \ - EXPECT_STREQ(json, buffer.GetString()); \ - EXPECT_TRUE(writer.IsComplete()); \ - } - -TEST(Writer, Root) { - TEST_ROUNDTRIP("null"); - TEST_ROUNDTRIP("true"); - TEST_ROUNDTRIP("false"); - TEST_ROUNDTRIP("0"); - TEST_ROUNDTRIP("\"foo\""); - TEST_ROUNDTRIP("[]"); - TEST_ROUNDTRIP("{}"); -} - -TEST(Writer, Int) { - TEST_ROUNDTRIP("[-1]"); - TEST_ROUNDTRIP("[-123]"); - TEST_ROUNDTRIP("[-2147483648]"); -} - -TEST(Writer, UInt) { - TEST_ROUNDTRIP("[0]"); - TEST_ROUNDTRIP("[1]"); - TEST_ROUNDTRIP("[123]"); - TEST_ROUNDTRIP("[2147483647]"); - TEST_ROUNDTRIP("[4294967295]"); -} - -TEST(Writer, Int64) { - TEST_ROUNDTRIP("[-1234567890123456789]"); - TEST_ROUNDTRIP("[-9223372036854775808]"); -} - -TEST(Writer, Uint64) { - TEST_ROUNDTRIP("[1234567890123456789]"); - TEST_ROUNDTRIP("[9223372036854775807]"); -} - -TEST(Writer, String) { - TEST_ROUNDTRIP("[\"Hello\"]"); - TEST_ROUNDTRIP("[\"Hello\\u0000World\"]"); - TEST_ROUNDTRIP("[\"\\\"\\\\/\\b\\f\\n\\r\\t\"]"); - -#if RAPIDJSON_HAS_STDSTRING - { - StringBuffer buffer; - Writer writer(buffer); - writer.String(std::string("Hello\n")); - EXPECT_STREQ("\"Hello\\n\"", buffer.GetString()); - } -#endif -} - -TEST(Writer, ScanWriteUnescapedString) { - const char json[] = "[\" \\\"0123456789ABCDEF\"]"; - // ^ scanning stops here. - char buffer2[sizeof(json) + 32]; - - // Use different offset to test different alignments - for (int i = 0; i < 32; i++) { - char* p = buffer2 + i; - memcpy(p, json, sizeof(json)); - TEST_ROUNDTRIP(p); - } -} - -TEST(Writer, Double) { - TEST_ROUNDTRIP("[1.2345,1.2345678,0.123456789012,1234567.8]"); - TEST_ROUNDTRIP("0.0"); - TEST_ROUNDTRIP("-0.0"); // Issue #289 - TEST_ROUNDTRIP("1e30"); - TEST_ROUNDTRIP("1.0"); - TEST_ROUNDTRIP("5e-324"); // Min subnormal positive double - TEST_ROUNDTRIP("2.225073858507201e-308"); // Max subnormal positive double - TEST_ROUNDTRIP("2.2250738585072014e-308"); // Min normal positive double - TEST_ROUNDTRIP("1.7976931348623157e308"); // Max double - -} - -// UTF8 -> TargetEncoding -> UTF8 -template -void TestTranscode(const char* json) { - StringStream s(json); - GenericStringBuffer buffer; - Writer, UTF8<>, TargetEncoding> writer(buffer); - Reader reader; - reader.Parse(s, writer); - - StringBuffer buffer2; - Writer writer2(buffer2); - GenericReader > reader2; - GenericStringStream s2(buffer.GetString()); - reader2.Parse(s2, writer2); - - EXPECT_STREQ(json, buffer2.GetString()); -} - -TEST(Writer, Transcode) { - const char json[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3],\"dollar\":\"\x24\",\"cents\":\"\xC2\xA2\",\"euro\":\"\xE2\x82\xAC\",\"gclef\":\"\xF0\x9D\x84\x9E\"}"; - - // UTF8 -> UTF16 -> UTF8 - TestTranscode >(json); - - // UTF8 -> ASCII -> UTF8 - TestTranscode >(json); - - // UTF8 -> UTF16 -> UTF8 - TestTranscode >(json); - - // UTF8 -> UTF32 -> UTF8 - TestTranscode >(json); - - // UTF8 -> AutoUTF -> UTF8 - UTFType types[] = { kUTF8, kUTF16LE , kUTF16BE, kUTF32LE , kUTF32BE }; - for (size_t i = 0; i < 5; i++) { - StringStream s(json); - MemoryBuffer buffer; - AutoUTFOutputStream os(buffer, types[i], true); - Writer, UTF8<>, AutoUTF > writer(os); - Reader reader; - reader.Parse(s, writer); - - StringBuffer buffer2; - Writer writer2(buffer2); - GenericReader, UTF8<> > reader2; - MemoryStream s2(buffer.GetBuffer(), buffer.GetSize()); - AutoUTFInputStream is(s2); - reader2.Parse(is, writer2); - - EXPECT_STREQ(json, buffer2.GetString()); - } - -} - -#include - -class OStreamWrapper { -public: - typedef char Ch; - - OStreamWrapper(std::ostream& os) : os_(os) {} - - Ch Peek() const { assert(false); return '\0'; } - Ch Take() { assert(false); return '\0'; } - size_t Tell() const { return 0; } - - Ch* PutBegin() { assert(false); return 0; } - void Put(Ch c) { os_.put(c); } - void Flush() { os_.flush(); } - size_t PutEnd(Ch*) { assert(false); return 0; } - -private: - OStreamWrapper(const OStreamWrapper&); - OStreamWrapper& operator=(const OStreamWrapper&); - - std::ostream& os_; -}; - -TEST(Writer, OStreamWrapper) { - StringStream s("{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3], \"u64\": 1234567890123456789, \"i64\":-1234567890123456789 } "); - - std::stringstream ss; - OStreamWrapper os(ss); - - Writer writer(os); - - Reader reader; - reader.Parse<0>(s, writer); - - std::string actual = ss.str(); - EXPECT_STREQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3],\"u64\":1234567890123456789,\"i64\":-1234567890123456789}", actual.c_str()); -} - -TEST(Writer, AssertRootMayBeAnyValue) { -#define T(x)\ - {\ - StringBuffer buffer;\ - Writer writer(buffer);\ - EXPECT_TRUE(x);\ - } - T(writer.Bool(false)); - T(writer.Bool(true)); - T(writer.Null()); - T(writer.Int(0)); - T(writer.Uint(0)); - T(writer.Int64(0)); - T(writer.Uint64(0)); - T(writer.Double(0)); - T(writer.String("foo")); -#undef T -} - -TEST(Writer, AssertIncorrectObjectLevel) { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - writer.EndObject(); - ASSERT_THROW(writer.EndObject(), AssertException); -} - -TEST(Writer, AssertIncorrectArrayLevel) { - StringBuffer buffer; - Writer writer(buffer); - writer.StartArray(); - writer.EndArray(); - ASSERT_THROW(writer.EndArray(), AssertException); -} - -TEST(Writer, AssertIncorrectEndObject) { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - ASSERT_THROW(writer.EndArray(), AssertException); -} - -TEST(Writer, AssertIncorrectEndArray) { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - ASSERT_THROW(writer.EndArray(), AssertException); -} - -TEST(Writer, AssertObjectKeyNotString) { -#define T(x)\ - {\ - StringBuffer buffer;\ - Writer writer(buffer);\ - writer.StartObject();\ - ASSERT_THROW(x, AssertException); \ - } - T(writer.Bool(false)); - T(writer.Bool(true)); - T(writer.Null()); - T(writer.Int(0)); - T(writer.Uint(0)); - T(writer.Int64(0)); - T(writer.Uint64(0)); - T(writer.Double(0)); - T(writer.StartObject()); - T(writer.StartArray()); -#undef T -} - -TEST(Writer, AssertMultipleRoot) { - StringBuffer buffer; - Writer writer(buffer); - - writer.StartObject(); - writer.EndObject(); - ASSERT_THROW(writer.StartObject(), AssertException); - - writer.Reset(buffer); - writer.Null(); - ASSERT_THROW(writer.Int(0), AssertException); - - writer.Reset(buffer); - writer.String("foo"); - ASSERT_THROW(writer.StartArray(), AssertException); - - writer.Reset(buffer); - writer.StartArray(); - writer.EndArray(); - //ASSERT_THROW(writer.Double(3.14), AssertException); -} - -TEST(Writer, RootObjectIsComplete) { - StringBuffer buffer; - Writer writer(buffer); - EXPECT_FALSE(writer.IsComplete()); - writer.StartObject(); - EXPECT_FALSE(writer.IsComplete()); - writer.String("foo"); - EXPECT_FALSE(writer.IsComplete()); - writer.Int(1); - EXPECT_FALSE(writer.IsComplete()); - writer.EndObject(); - EXPECT_TRUE(writer.IsComplete()); -} - -TEST(Writer, RootArrayIsComplete) { - StringBuffer buffer; - Writer writer(buffer); - EXPECT_FALSE(writer.IsComplete()); - writer.StartArray(); - EXPECT_FALSE(writer.IsComplete()); - writer.String("foo"); - EXPECT_FALSE(writer.IsComplete()); - writer.Int(1); - EXPECT_FALSE(writer.IsComplete()); - writer.EndArray(); - EXPECT_TRUE(writer.IsComplete()); -} - -TEST(Writer, RootValueIsComplete) { -#define T(x)\ - {\ - StringBuffer buffer;\ - Writer writer(buffer);\ - EXPECT_FALSE(writer.IsComplete()); \ - x; \ - EXPECT_TRUE(writer.IsComplete()); \ - } - T(writer.Null()); - T(writer.Bool(true)); - T(writer.Bool(false)); - T(writer.Int(0)); - T(writer.Uint(0)); - T(writer.Int64(0)); - T(writer.Uint64(0)); - T(writer.Double(0)); - T(writer.String("")); -#undef T -} - -TEST(Writer, InvalidEncoding) { - // Fail in decoding invalid UTF-8 sequence http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt - { - GenericStringBuffer > buffer; - Writer >, UTF8<>, UTF16<> > writer(buffer); - writer.StartArray(); - EXPECT_FALSE(writer.String("\xfe")); - EXPECT_FALSE(writer.String("\xff")); - EXPECT_FALSE(writer.String("\xfe\xfe\xff\xff")); - writer.EndArray(); - } - - // Fail in encoding - { - StringBuffer buffer; - Writer > writer(buffer); - static const UTF32<>::Ch s[] = { 0x110000, 0 }; // Out of U+0000 to U+10FFFF - EXPECT_FALSE(writer.String(s)); - } - - // Fail in unicode escaping in ASCII output - { - StringBuffer buffer; - Writer, ASCII<> > writer(buffer); - static const UTF32<>::Ch s[] = { 0x110000, 0 }; // Out of U+0000 to U+10FFFF - EXPECT_FALSE(writer.String(s)); - } -} - -TEST(Writer, ValidateEncoding) { - { - StringBuffer buffer; - Writer, UTF8<>, CrtAllocator, kWriteValidateEncodingFlag> writer(buffer); - writer.StartArray(); - EXPECT_TRUE(writer.String("\x24")); // Dollar sign U+0024 - EXPECT_TRUE(writer.String("\xC2\xA2")); // Cents sign U+00A2 - EXPECT_TRUE(writer.String("\xE2\x82\xAC")); // Euro sign U+20AC - EXPECT_TRUE(writer.String("\xF0\x9D\x84\x9E")); // G clef sign U+1D11E - writer.EndArray(); - EXPECT_STREQ("[\"\x24\",\"\xC2\xA2\",\"\xE2\x82\xAC\",\"\xF0\x9D\x84\x9E\"]", buffer.GetString()); - } - - // Fail in decoding invalid UTF-8 sequence http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt - { - StringBuffer buffer; - Writer, UTF8<>, CrtAllocator, kWriteValidateEncodingFlag> writer(buffer); - writer.StartArray(); - EXPECT_FALSE(writer.String("\xfe")); - EXPECT_FALSE(writer.String("\xff")); - EXPECT_FALSE(writer.String("\xfe\xfe\xff\xff")); - writer.EndArray(); - } -} - -TEST(Writer, InvalidEventSequence) { - // {] - { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - EXPECT_THROW(writer.EndArray(), AssertException); - EXPECT_FALSE(writer.IsComplete()); - } - - // [} - { - StringBuffer buffer; - Writer writer(buffer); - writer.StartArray(); - EXPECT_THROW(writer.EndObject(), AssertException); - EXPECT_FALSE(writer.IsComplete()); - } - - // { 1: - { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - EXPECT_THROW(writer.Int(1), AssertException); - EXPECT_FALSE(writer.IsComplete()); - } -} - -TEST(Writer, NaN) { - double nan = std::numeric_limits::quiet_NaN(); - - EXPECT_TRUE(internal::Double(nan).IsNan()); - StringBuffer buffer; - { - Writer writer(buffer); - EXPECT_FALSE(writer.Double(nan)); - } - { - Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); - EXPECT_TRUE(writer.Double(nan)); - EXPECT_STREQ("NaN", buffer.GetString()); - } - GenericStringBuffer > buffer2; - Writer > > writer2(buffer2); - EXPECT_FALSE(writer2.Double(nan)); -} - -TEST(Writer, Inf) { - double inf = std::numeric_limits::infinity(); - - EXPECT_TRUE(internal::Double(inf).IsInf()); - StringBuffer buffer; - { - Writer writer(buffer); - EXPECT_FALSE(writer.Double(inf)); - } - { - Writer writer(buffer); - EXPECT_FALSE(writer.Double(-inf)); - } - { - Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); - EXPECT_TRUE(writer.Double(inf)); - } - { - Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); - EXPECT_TRUE(writer.Double(-inf)); - } - EXPECT_STREQ("Infinity-Infinity", buffer.GetString()); -} - -TEST(Writer, RawValue) { - StringBuffer buffer; - Writer writer(buffer); - writer.StartObject(); - writer.Key("a"); - writer.Int(1); - writer.Key("raw"); - const char json[] = "[\"Hello\\nWorld\", 123.456]"; - writer.RawValue(json, strlen(json), kArrayType); - writer.EndObject(); - EXPECT_TRUE(writer.IsComplete()); - EXPECT_STREQ("{\"a\":1,\"raw\":[\"Hello\\nWorld\", 123.456]}", buffer.GetString()); -} diff --git a/rapidjson-lib/travis-doxygen.sh b/rapidjson-lib/travis-doxygen.sh deleted file mode 100644 index 31a50cf..0000000 --- a/rapidjson-lib/travis-doxygen.sh +++ /dev/null @@ -1,122 +0,0 @@ -#!/bin/bash -# Update Doxygen documentation after push to 'master'. -# Author: @pah - -set -e - -DOXYGEN_VER=doxygen-1.8.7 -DOXYGEN_TAR=${DOXYGEN_VER}.linux.bin.tar.gz -DOXYGEN_URL="http://ftp.stack.nl/pub/users/dimitri/${DOXYGEN_TAR}" -DOXYGEN_BIN="/usr/local/bin/doxygen" - -: ${GITHUB_REPO:="miloyip/rapidjson"} -GITHUB_HOST="github.com" -GITHUB_CLONE="git://${GITHUB_HOST}/${GITHUB_REPO}" -GITHUB_URL="https://${GITHUB_HOST}/${GITHUB_PUSH-${GITHUB_REPO}}" - -# if not set, ignore password -#GIT_ASKPASS="${TRAVIS_BUILD_DIR}/gh_ignore_askpass.sh" - -skip() { - echo "$@" 1>&2 - echo "Exiting..." 1>&2 - exit 0 -} - -abort() { - echo "Error: $@" 1>&2 - echo "Exiting..." 1>&2 - exit 1 -} - -# TRAVIS_BUILD_DIR not set, exiting -[ -d "${TRAVIS_BUILD_DIR-/nonexistent}" ] || \ - abort '${TRAVIS_BUILD_DIR} not set or nonexistent.' - -# check for pull-requests -[ "${TRAVIS_PULL_REQUEST}" = "false" ] || \ - skip "Not running Doxygen for pull-requests." - -# check for branch name -[ "${TRAVIS_BRANCH}" = "master" ] || \ - skip "Running Doxygen only for updates on 'master' branch (current: ${TRAVIS_BRANCH})." - -# check for job number -# [ "${TRAVIS_JOB_NUMBER}" = "${TRAVIS_BUILD_NUMBER}.1" ] || \ -# skip "Running Doxygen only on first job of build ${TRAVIS_BUILD_NUMBER} (current: ${TRAVIS_JOB_NUMBER})." - -# install doxygen binary distribution -doxygen_install() -{ - wget -O - "${DOXYGEN_URL}" | \ - tar xz -C ${TMPDIR-/tmp} ${DOXYGEN_VER}/bin/doxygen - export PATH="${TMPDIR-/tmp}/${DOXYGEN_VER}/bin:$PATH" -} - -doxygen_run() -{ - cd "${TRAVIS_BUILD_DIR}"; - doxygen ${TRAVIS_BUILD_DIR}/build/doc/Doxyfile; - doxygen ${TRAVIS_BUILD_DIR}/build/doc/Doxyfile.zh-cn; -} - -gh_pages_prepare() -{ - cd "${TRAVIS_BUILD_DIR}/build/doc"; - [ ! -d "html" ] || \ - abort "Doxygen target directory already exists." - git --version - git clone -b gh-pages "${GITHUB_CLONE}" html - cd html - # setup git config (with defaults) - git config user.name "${GIT_NAME-travis}" - git config user.email "${GIT_EMAIL-"travis@localhost"}" - # clean working dir - rm -f .git/index - git clean -df -} - -gh_pages_commit() { - cd "${TRAVIS_BUILD_DIR}/build/doc/html"; - echo "rapidjson.org" > CNAME - git add --all; - git diff-index --quiet HEAD || git commit -m "Automatic doxygen build"; -} - -gh_setup_askpass() { - cat > ${GIT_ASKPASS} < ${HOME}/.git-credentials ; \ - chmod go-rw ${HOME}/.git-credentials ) ) - # push to GitHub - git push origin gh-pages -} - -doxygen_install -gh_pages_prepare -doxygen_run -gh_pages_commit -gh_pages_push -

    S;^Bm07Dwsx7q|8^vq=M;_Cg|@7Jl{L4 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

  • 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

    Wm11KRS|~)sN19s|Wwq*_k2d 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�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%0A`+mXNF|nhMEGufA!Tm3GwGy%G*!t<*Jcc+a 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