195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley/* Copyright (c) 2014, Google Inc. 295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * 395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * Permission to use, copy, modify, and/or distribute this software for any 495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * purpose with or without fee is hereby granted, provided that the above 595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * copyright notice and this permission notice appear in all copies. 695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * 795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 1095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 1295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 1395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ 1495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 1595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#include <string> 1695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#include <vector> 1795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 1895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#include <openssl/err.h> 19aacec17a630eacfb8023a4a3075f0ea51629eb98Adam Langley#include <openssl/ssl.h> 2095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 2195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 22aacec17a630eacfb8023a4a3075f0ea51629eb98Adam Langleybool Client(const std::vector<std::string> &args); 235127db3b4d59066126a1f8c8f7fdf4841a8c58b9Adam Langleybool DoPKCS12(const std::vector<std::string> &args); 248e16b6e6582810de46b4db7926a2462be8e789d2Adam Langleybool Speed(const std::vector<std::string> &args); 2595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 26c5c0c7e85325820eafe78d6d5793a441ce40ec78Adam Langleystatic void usage(const char *name) { 278e16b6e6582810de46b4db7926a2462be8e789d2Adam Langley printf("Usage: %s [speed|client|pkcs12]\n", name); 2895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley} 2995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 3095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleyint main(int argc, char **argv) { 3195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley std::string tool; 3295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley if (argc >= 2) { 3395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley tool = argv[1]; 3495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley } 3595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 36aacec17a630eacfb8023a4a3075f0ea51629eb98Adam Langley SSL_library_init(); 3795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 3895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley std::vector<std::string> args; 3995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley for (int i = 2; i < argc; i++) { 4095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley args.push_back(argv[i]); 4195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley } 4295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 4395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley if (tool == "speed") { 4495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley return !Speed(args); 45aacec17a630eacfb8023a4a3075f0ea51629eb98Adam Langley } else if (tool == "s_client" || tool == "client") { 46aacec17a630eacfb8023a4a3075f0ea51629eb98Adam Langley return !Client(args); 478e16b6e6582810de46b4db7926a2462be8e789d2Adam Langley } else if (tool == "pkcs12") { 485127db3b4d59066126a1f8c8f7fdf4841a8c58b9Adam Langley return !DoPKCS12(args); 4995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley } else { 5095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley usage(argv[0]); 5195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley return 1; 5295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley } 5395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley} 54