From 0d7c8181f07e1c34ef3a9a8740c8ce2d7b982f74 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Wed, 19 Aug 2015 09:55:02 +0200 Subject: Script for converting database to new format --- Makefile | 57 +++++++++++++++++ ...9281c137d689f157754b222dca260260d8aadbaf1ccb5bf | Bin 0 -> 5307 bytes ...2ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 | Bin 0 -> 4542 bytes ...b243cba3521cc74dbd18e4b7a8494964184c69d84053787 | Bin 0 -> 3647 bytes ...8deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 | Bin 0 -> 6181 bytes ...cdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e | Bin 0 -> 3486 bytes ...850257b63829dae8003d9fe97ea36ad4366e032a885358d | Bin 0 -> 5246 bytes ...74a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f | Bin 0 -> 3971 bytes ...9281c137d689f157754b222dca260260d8aadbaf1ccb5bf | 1 + ...2ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 | 1 + ...b243cba3521cc74dbd18e4b7a8494964184c69d84053787 | 1 + ...8deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 | 1 + ...cdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e | 1 + ...850257b63829dae8003d9fe97ea36ad4366e032a885358d | 1 + ...74a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f | 1 + ...2b08050c182b9944405434ef5dbc67170e967d9b5cc70e3 | 1 + ...fe902107125f263145a84aded3467653ddddca6faf0bc11 | 1 + ...5d8e49039b9e3767eb4b593077260455402a7d57f1a9aa7 | 1 + ...0b53c612192ce07afabdc525f91413a1af16e71b11f2946 | 1 + ...792f61712360ad033a6b6fe1e23fb504a79dec6aa76c436 | 1 + ...59e46c8dca181645310df0dcb900e6566031df39ed42415 | 1 + ...44cda272eccc0d1c49aedb9a932201215794d92ef03f518 | 1 + test/oldformat/db/index | 7 ++ test/oldformat/db/newentries | 7 ++ test/oldformat/db/sth | 1 + ...9281c137d689f157754b222dca260260d8aadbaf1ccb5bf | Bin 0 -> 5307 bytes ...2ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 | Bin 0 -> 4542 bytes ...b243cba3521cc74dbd18e4b7a8494964184c69d84053787 | Bin 0 -> 3647 bytes ...8deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 | Bin 0 -> 6181 bytes ...cdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e | Bin 0 -> 3486 bytes ...850257b63829dae8003d9fe97ea36ad4366e032a885358d | Bin 0 -> 5246 bytes ...74a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f | Bin 0 -> 3971 bytes test/oldformat/mergedb/logorder | 7 ++ tools/convertdb.py | 71 +++++++++++++++++++++ tools/fetchallcerts.py | 4 +- tools/mergetools.py | 15 +++++ 36 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 test/oldformat/db/certentries/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf create mode 100644 test/oldformat/db/certentries/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 create mode 100644 test/oldformat/db/certentries/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 create mode 100644 test/oldformat/db/certentries/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 create mode 100644 test/oldformat/db/certentries/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e create mode 100644 test/oldformat/db/certentries/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d create mode 100644 test/oldformat/db/certentries/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f create mode 100644 test/oldformat/db/certindex/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf create mode 100644 test/oldformat/db/certindex/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 create mode 100644 test/oldformat/db/certindex/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 create mode 100644 test/oldformat/db/certindex/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 create mode 100644 test/oldformat/db/certindex/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e create mode 100644 test/oldformat/db/certindex/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d create mode 100644 test/oldformat/db/certindex/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f create mode 100644 test/oldformat/db/entryhash/13/8b/4b/138b4b6fdbf47a6ca2b08050c182b9944405434ef5dbc67170e967d9b5cc70e3 create mode 100644 test/oldformat/db/entryhash/4b/58/f7/4b58f7ccbd75dd2b9fe902107125f263145a84aded3467653ddddca6faf0bc11 create mode 100644 test/oldformat/db/entryhash/b3/21/0a/b3210ad4b5267f2d15d8e49039b9e3767eb4b593077260455402a7d57f1a9aa7 create mode 100644 test/oldformat/db/entryhash/cf/3c/85/cf3c85582a450b98a0b53c612192ce07afabdc525f91413a1af16e71b11f2946 create mode 100644 test/oldformat/db/entryhash/ed/cc/ad/edccad314e725c036792f61712360ad033a6b6fe1e23fb504a79dec6aa76c436 create mode 100644 test/oldformat/db/entryhash/fc/e6/27/fce627418663bd53059e46c8dca181645310df0dcb900e6566031df39ed42415 create mode 100644 test/oldformat/db/entryhash/fe/1b/ea/fe1bea5d85189106644cda272eccc0d1c49aedb9a932201215794d92ef03f518 create mode 100644 test/oldformat/db/index create mode 100644 test/oldformat/db/newentries create mode 100644 test/oldformat/db/sth create mode 100644 test/oldformat/mergedb/chains/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf create mode 100644 test/oldformat/mergedb/chains/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 create mode 100644 test/oldformat/mergedb/chains/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 create mode 100644 test/oldformat/mergedb/chains/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 create mode 100644 test/oldformat/mergedb/chains/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e create mode 100644 test/oldformat/mergedb/chains/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d create mode 100644 test/oldformat/mergedb/chains/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f create mode 100644 test/oldformat/mergedb/logorder create mode 100644 tools/convertdb.py diff --git a/Makefile b/Makefile index a8c81bc..fc922d7 100644 --- a/Makefile +++ b/Makefile @@ -117,6 +117,49 @@ tests-wait: tests-makemk: tools/compileconfig.py --config=test/catlfish-test.cfg --testmakefile=test/test.mk --machines 1 +tests-formatupgrade-prepare: + rm -r $(INSTDIR)/tests/mergedb + rm -r $(INSTDIR)/tests/machine/machine-1 + mkdir $(INSTDIR)/tests/machine/machine-1 + cp -r test/oldformat/db $(INSTDIR)/tests/machine/machine-1 + cp -r test/oldformat/mergedb $(INSTDIR)/tests + @(cd $(INSTDIR) && python ../tools/convertdb.py tests/machine/machine-1/db/certentries) + +tests-formatupgrade-run: + @(cd $(INSTDIR) && rm -r fetchcertstore-old || true) + @(cd $(INSTDIR) && mkdir fetchcertstore-old) + @(cd $(INSTDIR) && python ../tools/fetchallcerts.py $(BASEURL) --no-check-signature --store fetchcertstore-old --publickey=tests/keys/logkey.pem --cafile tests/httpsca/demoCA/cacert.pem) || (echo "Verification failed" ; false) + @(cd $(INSTDIR)/fetchcertstore-old && unzip 0000.zip) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert1.txt fetchcertstore-old/00000000) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert2.txt fetchcertstore-old/00000001) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert3.txt fetchcertstore-old/00000002) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert4.txt fetchcertstore-old/00000003) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert5.txt fetchcertstore-old/00000004) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/pre1.txt:../tools/testcerts/pre2.txt fetchcertstore-old/00000005:fetchcertstore-old/00000006) || (echo "Verification failed" ; false) + +tests-formatupgrade-prepare2: + -rm $(INSTDIR)/tests/machine/machine-1/db/sth + @(cd $(INSTDIR) && python ../tools/convertdb.py tests/mergedb/chains) + rm -r $(INSTDIR)/tests/mergedb-secondary + mkdir $(INSTDIR)/tests/mergedb-secondary + mkdir $(INSTDIR)/tests/mergedb-secondary/chains + touch $(INSTDIR)/tests/mergedb-secondary/logorder + printf 0 > $(INSTDIR)/tests/mergedb-secondary/verifiedsize + +tests-formatupgrade-run2: + @(cd $(INSTDIR) && python ../tools/merge.py --config ../test/catlfish-test.cfg --localconfig ../test/catlfish-test-local-merge.cfg) || (echo "Merge failed" ; false) + @diff -r -x nursery -x verifiedsize catlfish/tests/mergedb catlfish/tests/mergedb-secondary || (echo "Merge databases not matching" ; false) + @(cd $(INSTDIR) && rm -r fetchcertstore-old || true) + @(cd $(INSTDIR) && mkdir fetchcertstore-old) + @(cd $(INSTDIR) && python ../tools/fetchallcerts.py $(BASEURL) --no-check-signature --store fetchcertstore-old --publickey=tests/keys/logkey.pem --cafile tests/httpsca/demoCA/cacert.pem) || (echo "Verification failed" ; false) + @(cd $(INSTDIR)/fetchcertstore-old && unzip 0000.zip) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert1.txt fetchcertstore-old/00000000) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert2.txt fetchcertstore-old/00000001) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert3.txt fetchcertstore-old/00000002) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert4.txt fetchcertstore-old/00000003) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/cert5.txt fetchcertstore-old/00000004) || (echo "Verification failed" ; false) + @(cd $(INSTDIR) && python ../tools/comparecert.py ../tools/testcerts/pre1.txt:../tools/testcerts/pre2.txt fetchcertstore-old/00000005:fetchcertstore-old/00000006) || (echo "Verification failed" ; false) + tests: @make tests-makemk @make tests-prepare @@ -130,6 +173,20 @@ tests: @make tests-wait @make tests-stop +tests-formatupgrade: + @make tests-makemk + @make tests-prepare + @make tests-formatupgrade-prepare + @make tests-start + @make tests-formatupgrade-run || (make tests-stop ; false) + @make tests-wait + @make tests-stop + @make tests-formatupgrade-prepare2 + @make tests-start + @make tests-formatupgrade-run2 || (make tests-stop ; false) + @make tests-wait + @make tests-stop + tests-createca: mkdir $(INSTDIR)/tests/httpsca ( cd $(INSTDIR)/tests/httpsca ; \ diff --git a/test/oldformat/db/certentries/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf b/test/oldformat/db/certentries/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf new file mode 100644 index 0000000..cd6fc29 Binary files /dev/null and b/test/oldformat/db/certentries/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf differ diff --git a/test/oldformat/db/certentries/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 b/test/oldformat/db/certentries/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 new file mode 100644 index 0000000..2b422ce Binary files /dev/null and b/test/oldformat/db/certentries/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 differ diff --git a/test/oldformat/db/certentries/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 b/test/oldformat/db/certentries/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 new file mode 100644 index 0000000..29d1f07 Binary files /dev/null and b/test/oldformat/db/certentries/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 differ diff --git a/test/oldformat/db/certentries/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 b/test/oldformat/db/certentries/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 new file mode 100644 index 0000000..f8781c6 Binary files /dev/null and b/test/oldformat/db/certentries/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 differ diff --git a/test/oldformat/db/certentries/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e b/test/oldformat/db/certentries/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e new file mode 100644 index 0000000..c008ccc Binary files /dev/null and b/test/oldformat/db/certentries/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e differ diff --git a/test/oldformat/db/certentries/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d b/test/oldformat/db/certentries/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d new file mode 100644 index 0000000..bc8a8b4 Binary files /dev/null and b/test/oldformat/db/certentries/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d differ diff --git a/test/oldformat/db/certentries/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f b/test/oldformat/db/certentries/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f new file mode 100644 index 0000000..2100b1e Binary files /dev/null and b/test/oldformat/db/certentries/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f differ diff --git a/test/oldformat/db/certindex/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf b/test/oldformat/db/certindex/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf new file mode 100644 index 0000000..7813681 --- /dev/null +++ b/test/oldformat/db/certindex/1e/82/31/1e823118e9abf635d9281c137d689f157754b222dca260260d8aadbaf1ccb5bf @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/test/oldformat/db/certindex/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 b/test/oldformat/db/certindex/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/test/oldformat/db/certindex/37/2a/b5/372ab5115a024f8112ae57bf9b67f82a06ff4411bf6a85e7106eaf15b3a0b9d0 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/test/oldformat/db/certindex/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 b/test/oldformat/db/certindex/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/test/oldformat/db/certindex/3d/3e/1a/3d3e1ae8cc6f3cf65b243cba3521cc74dbd18e4b7a8494964184c69d84053787 @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/test/oldformat/db/certindex/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 b/test/oldformat/db/certindex/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 new file mode 100644 index 0000000..62f9457 --- /dev/null +++ b/test/oldformat/db/certindex/9f/dc/bf/9fdcbf4205b21a7a08deb49a68b8f5f4a39381c0c55a97334dd403faf2f5ffd1 @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/test/oldformat/db/certindex/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e b/test/oldformat/db/certindex/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/test/oldformat/db/certindex/a9/be/b5/a9beb566b525c65becdcdf548ce5f90ff0318a4f2b6cb965071505b0b3256e8e @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/test/oldformat/db/certindex/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d b/test/oldformat/db/certindex/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/test/oldformat/db/certindex/af/b1/38/afb138f6163475839850257b63829dae8003d9fe97ea36ad4366e032a885358d @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/test/oldformat/db/certindex/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f b/test/oldformat/db/certindex/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/test/oldformat/db/certindex/bd/c6/70/bdc6702085624228074a957928299e538c21ddbf5c4ba80e2ced183c7a9fb49f @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/test/oldformat/db/entryhash/13/8b/4b/138b4b6fdbf47a6ca2b08050c182b9944405434ef5dbc67170e967d9b5cc70e3 b/test/oldformat/db/entryhash/13/8b/4b/138b4b6fdbf47a6ca2b08050c182b9944405434ef5dbc67170e967d9b5cc70e3 new file mode 100644 index 0000000..49844fc --- /dev/null +++ b/test/oldformat/db/entryhash/13/8b/4b/138b4b6fdbf47a6ca2b08050c182b9944405434ef5dbc67170e967d9b5cc70e3 @@ -0,0 +1 @@ +7*ZOWg*Djn \ No newline at end of file diff --git a/test/oldformat/db/entryhash/4b/58/f7/4b58f7ccbd75dd2b9fe902107125f263145a84aded3467653ddddca6faf0bc11 b/test/oldformat/db/entryhash/4b/58/f7/4b58f7ccbd75dd2b9fe902107125f263145a84aded3467653ddddca6faf0bc11 new file mode 100644 index 0000000..2d5a46c --- /dev/null +++ b/test/oldformat/db/entryhash/4b/58/f7/4b58f7ccbd75dd2b9fe902107125f263145a84aded3467653ddddca6faf0bc11 @@ -0,0 +1 @@ +84uP%{c6Cf25 \ No newline at end of file diff --git a/test/oldformat/db/entryhash/b3/21/0a/b3210ad4b5267f2d15d8e49039b9e3767eb4b593077260455402a7d57f1a9aa7 b/test/oldformat/db/entryhash/b3/21/0a/b3210ad4b5267f2d15d8e49039b9e3767eb4b593077260455402a7d57f1a9aa7 new file mode 100644 index 0000000..97f4641 --- /dev/null +++ b/test/oldformat/db/entryhash/b3/21/0a/b3210ad4b5267f2d15d8e49039b9e3767eb4b593077260455402a7d57f1a9aa7 @@ -0,0 +1 @@ +15(}hwT"ܢ`& ̵ \ No newline at end of file diff --git a/test/oldformat/db/entryhash/cf/3c/85/cf3c85582a450b98a0b53c612192ce07afabdc525f91413a1af16e71b11f2946 b/test/oldformat/db/entryhash/cf/3c/85/cf3c85582a450b98a0b53c612192ce07afabdc525f91413a1af16e71b11f2946 new file mode 100644 index 0000000..3fa1e9f --- /dev/null +++ b/test/oldformat/db/entryhash/cf/3c/85/cf3c85582a450b98a0b53c612192ce07afabdc525f91413a1af16e71b11f2946 @@ -0,0 +1 @@ +=>o<[$<5!tюKzAƝ7 \ No newline at end of file diff --git a/test/oldformat/db/entryhash/ed/cc/ad/edccad314e725c036792f61712360ad033a6b6fe1e23fb504a79dec6aa76c436 b/test/oldformat/db/entryhash/ed/cc/ad/edccad314e725c036792f61712360ad033a6b6fe1e23fb504a79dec6aa76c436 new file mode 100644 index 0000000..87dac62 --- /dev/null +++ b/test/oldformat/db/entryhash/ed/cc/ad/edccad314e725c036792f61712360ad033a6b6fe1e23fb504a79dec6aa76c436 @@ -0,0 +1 @@ +ܿBz޴hZ3M \ No newline at end of file diff --git a/test/oldformat/db/entryhash/fc/e6/27/fce627418663bd53059e46c8dca181645310df0dcb900e6566031df39ed42415 b/test/oldformat/db/entryhash/fc/e6/27/fce627418663bd53059e46c8dca181645310df0dcb900e6566031df39ed42415 new file mode 100644 index 0000000..3186b25 --- /dev/null +++ b/test/oldformat/db/entryhash/fc/e6/27/fce627418663bd53059e46c8dca181645310df0dcb900e6566031df39ed42415 @@ -0,0 +1 @@ +p bB(Jy()S!ݿ\K,I", entry[0:4]) + data = entry[4:4+length] + entry = entry[4+length:] + pieces.append(data) + return pieces + +def read_old_entry(entry, hash): + unpacked = unpack_entry(entry) + mtl = unpacked[0] + assert hash == get_leaf_hash(mtl) + (leafcert, timestamp, issuer_key_hash) = unpack_mtl(mtl) + certchain = decode_certificate_chain(unpacked[1]) + if issuer_key_hash: + leafcert = certchain[0] + certchain = certchain[1:] + certtype = "PRC1" + else: + certtype = "EEC1" + return (mtl, leafcert, certtype, certchain) + +def convertentry(entry, hash): + (mtl, leafcert, certtype, chain) = read_old_entry(entry, hash) + entry = tlv_encodelist([("MTL1", mtl), + (certtype, leafcert), + ("CHN1", tlv_encodelist([("X509", cert) for cert in chain]))]) + return wrap_entry(entry) + +parser = argparse.ArgumentParser(description='') +parser.add_argument('path', help="Path to database to convert") +args = parser.parse_args() + +for (dirpath, dirnames, filenames) in os.walk(args.path): + for filename in filenames: + fullpath = dirpath + "/" + filename + entry = open(fullpath).read() + entry = convertentry(entry, base64.b16decode(filename.upper())) + if entry != None: + print "writing new entry for", filename + write_file(fullpath, entry) + else: + print "not writing new entry for", filename diff --git a/tools/fetchallcerts.py b/tools/fetchallcerts.py index 943759e..66fde74 100755 --- a/tools/fetchallcerts.py +++ b/tools/fetchallcerts.py @@ -22,6 +22,7 @@ parser = argparse.ArgumentParser(description='') parser.add_argument('baseurl', help="Base URL for CT server") parser.add_argument('--store', default=None, metavar="dir", help='Store certificates in directory dir') parser.add_argument('--write-sth', action='store_true', help='Write STH') +parser.add_argument('--no-check-signature', action='store_true', help='Don\'t check signature') parser.add_argument('--publickey', default=None, metavar="file", help='Public key for the CT log') parser.add_argument('--cafile', default=None, metavar="file", help='File containing the CA cert') args = parser.parse_args() @@ -46,7 +47,8 @@ def print_layer(layer): logpublickey = get_public_key_from_file(args.publickey) if args.publickey else None sth = get_sth(args.baseurl) -check_sth_signature(args.baseurl, sth, publickey=logpublickey) +if not args.no_check_signature: + check_sth_signature(args.baseurl, sth, publickey=logpublickey) tree_size = sth["tree_size"] root_hash = base64.decodestring(sth["sha256_root_hash"]) diff --git a/tools/mergetools.py b/tools/mergetools.py index c3e9688..947d7f4 100644 --- a/tools/mergetools.py +++ b/tools/mergetools.py @@ -35,6 +35,11 @@ def tlv_decode(data): rest = data[length:] return (type, value, rest) +def tlv_encode(type, value): + assert(len(type) == 4) + data = struct.pack(">I", len(value) + 8) + type + value + return data + def tlv_decodelist(data): l = [] while len(data): @@ -43,6 +48,12 @@ def tlv_decodelist(data): data = rest return l +def tlv_encodelist(l): + data = "" + for (type, value) in l: + data += tlv_encode(type, value) + return data + def unwrap_entry(entry): ploplevel = tlv_decodelist(entry) assert(len(ploplevel) == 2) @@ -54,6 +65,10 @@ def unwrap_entry(entry): assert(computedchecksum == plopchecksum) return plopdata +def wrap_entry(entry): + return tlv_encodelist([("PLOP", entry), + ("S256", hashlib.sha256(entry).digest())]) + def verify_entry(verifycert, entry, hash): packed = unwrap_entry(entry) unpacked = tlv_decodelist(packed) -- cgit v1.1