summaryrefslogtreecommitdiffstats
path: root/net/tools/crl_set_dump
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-19 22:25:45 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-19 22:25:45 +0000
commitc2c27f7ff0cddd7015fed3cbbe31b124549b1763 (patch)
tree25461deaa78f074ae5fc7c97d7213d3f415ea7c0 /net/tools/crl_set_dump
parentcd87adfe0ae90a9d387f8a232349bff98893abdc (diff)
downloadchromium_src-c2c27f7ff0cddd7015fed3cbbe31b124549b1763.zip
chromium_src-c2c27f7ff0cddd7015fed3cbbe31b124549b1763.tar.gz
chromium_src-c2c27f7ff0cddd7015fed3cbbe31b124549b1763.tar.bz2
net: add a tool to dump CRL sets.
This tool is used in the build pipeline to verify that a candidate CRL set can be correctly parsed by the Chromium code. BUG=none TEST=none Review URL: http://codereview.chromium.org/8977001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115028 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools/crl_set_dump')
-rw-r--r--net/tools/crl_set_dump/crl_set_dump.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/net/tools/crl_set_dump/crl_set_dump.cc b/net/tools/crl_set_dump/crl_set_dump.cc
new file mode 100644
index 0000000..ffd08ceb
--- /dev/null
+++ b/net/tools/crl_set_dump/crl_set_dump.cc
@@ -0,0 +1,74 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This utility can dump the contents of CRL set, optionally augmented with a
+// delta CRL set.
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "base/at_exit.h"
+#include "base/file_util.h"
+#include "base/memory/ref_counted.h"
+#include "base/string_number_conversions.h"
+#include "net/base/crl_set.h"
+
+static int Usage(const char* argv0) {
+ fprintf(stderr, "Usage: %s <crl-set file> [<delta file>]\n", argv0);
+ return 1;
+}
+
+int main(int argc, char** argv) {
+ base::AtExitManager at_exit_manager;
+
+ if (argc < 2)
+ return Usage(argv[0]);
+
+ FilePath crl_set_filename, delta_filename;
+
+ if (argc != 2 && argc != 3)
+ return Usage(argv[0]);
+
+ crl_set_filename = FilePath::FromUTF8Unsafe(argv[1]);
+ if (argc == 3)
+ delta_filename = FilePath::FromUTF8Unsafe(argv[2]);
+
+ std::string crl_set_bytes, delta_bytes;
+ if (!file_util::ReadFileToString(crl_set_filename, &crl_set_bytes))
+ return 1;
+ if (!delta_filename.empty() &&
+ !file_util::ReadFileToString(delta_filename, &delta_bytes)) {
+ return 1;
+ }
+
+ scoped_refptr<net::CRLSet> crl_set, final_crl_set;
+ if (!net::CRLSet::Parse(crl_set_bytes, &crl_set)) {
+ fprintf(stderr, "Failed to parse CRLSet\n");
+ return 1;
+ }
+
+ if (!delta_bytes.empty()) {
+ if (!crl_set->ApplyDelta(delta_bytes, &final_crl_set)) {
+ fprintf(stderr, "Failed to apply delta to CRLSet\n");
+ return 1;
+ }
+ } else {
+ final_crl_set = crl_set;
+ }
+
+ const net::CRLSet::CRLList& crls = crl_set->crls();
+ for (net::CRLSet::CRLList::const_iterator i = crls.begin(); i != crls.end();
+ i++) {
+ printf("%s\n", base::HexEncode(i->first.data(), i->first.size()).c_str());
+ for (std::vector<std::string>::const_iterator j = i->second.begin();
+ j != i->second.end(); j++) {
+ printf(" %s\n", base::HexEncode(j->data(), j->size()).c_str());
+ }
+ }
+
+ return 0;
+}