8e16b6e658
This is cleaner than the OpenSSL code was, at least, but it's hardly beautiful due to the "standard" that it's trying to implement. (See [1].) The references from the PKCS#8 code to various ciphers have digests have been made into function pointer references rather than NIDs so that the linker will be able to drop RC2 code for binaries that don't call PKCS#8 or #12 functions. A bug that crashed OpenSSL/BoringSSL when parsing a malformed PKCS#8 structure has been fixed too. See https://www.cs.auckland.ac.nz/~pgut001/pubs/pfx.html Change-Id: Iaa1039e04ed7877b90792835e8ce3ebc3b29f89e Reviewed-on: https://boringssl-review.googlesource.com/1592 Reviewed-by: Adam Langley <agl@google.com>
54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
/* Copyright (c) 2014, Google Inc.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <openssl/err.h>
|
|
#include <openssl/ssl.h>
|
|
|
|
|
|
bool Client(const std::vector<std::string> &args);
|
|
bool PKCS12(const std::vector<std::string> &args);
|
|
bool Speed(const std::vector<std::string> &args);
|
|
|
|
static void usage(const char *name) {
|
|
printf("Usage: %s [speed|client|pkcs12]\n", name);
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
std::string tool;
|
|
if (argc >= 2) {
|
|
tool = argv[1];
|
|
}
|
|
|
|
SSL_library_init();
|
|
|
|
std::vector<std::string> args;
|
|
for (int i = 2; i < argc; i++) {
|
|
args.push_back(argv[i]);
|
|
}
|
|
|
|
if (tool == "speed") {
|
|
return !Speed(args);
|
|
} else if (tool == "s_client" || tool == "client") {
|
|
return !Client(args);
|
|
} else if (tool == "pkcs12") {
|
|
return !PKCS12(args);
|
|
} else {
|
|
usage(argv[0]);
|
|
return 1;
|
|
}
|
|
}
|