mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
support both empty and nonempty passphrase
This commit is contained in:
parent
46fbc1d64d
commit
7d5656858f
@ -19,7 +19,7 @@
|
||||
#include "dtoolbase.h"
|
||||
#include "prcKeyRegistry.h"
|
||||
#include "filename.h"
|
||||
#include "vector_int.h"
|
||||
#include "pvector.h"
|
||||
#include <stdio.h>
|
||||
|
||||
// Pick up the public key definitions.
|
||||
@ -41,6 +41,14 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
class KeyNumber {
|
||||
public:
|
||||
int _number;
|
||||
bool _got_pass_phrase;
|
||||
string _pass_phrase;
|
||||
};
|
||||
typedef pvector<KeyNumber> KeyNumbers;
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: output_ssl_errors
|
||||
// Description: A convenience function that is itself a wrapper
|
||||
@ -262,7 +270,7 @@ write_private_key(EVP_PKEY *pkey, Filename outfile, int n, time_t now,
|
||||
void
|
||||
usage() {
|
||||
cerr <<
|
||||
"\nmake-prc-key [opts] 1 [2 3 ...]\n\n"
|
||||
"\nmake-prc-key [opts] 1[,\"pass_phrase\"] [2[,\"pass phrase\"] 3 ...]\n\n"
|
||||
|
||||
"This program generates one or more new keys to be used for signing\n"
|
||||
"a prc file. The key itself is a completely arbitrary random bit\n"
|
||||
@ -301,9 +309,12 @@ usage() {
|
||||
|
||||
" -p \"[pass phrase]\"\n"
|
||||
" Uses the indicated pass phrase to encrypt the private key.\n"
|
||||
" If this is not specified on the command line, you will be\n"
|
||||
" prompted interactively (and you may then specify a different\n"
|
||||
" pass phrase for each key). Every user of the signing programs\n"
|
||||
" This specifies an overall pass phrase; you may also specify\n"
|
||||
" a different pass phrase for each key by using the key,\"pass phrase\"\n"
|
||||
" syntax.\n\n"
|
||||
|
||||
" If a pass phrase is not specified on the command line, you will be\n"
|
||||
" prompted interactively. Every user of the signing programs\n"
|
||||
" (outfile_sign1.cxx, etc.) will need to know the pass phrase\n"
|
||||
" in order to sign prc files.\n\n"
|
||||
|
||||
@ -397,20 +408,28 @@ main(int argc, char *argv[]) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
vector_int key_numbers;
|
||||
KeyNumbers key_numbers;
|
||||
for (int i = 1; i < argc; i++) {
|
||||
KeyNumber key;
|
||||
char *endptr;
|
||||
int number = strtol(argv[i], &endptr, 0);
|
||||
if (*endptr) {
|
||||
key._number = strtol(argv[i], &endptr, 0);
|
||||
key._got_pass_phrase = got_pass_phrase;
|
||||
key._pass_phrase = pass_phrase;
|
||||
|
||||
if (*endptr == ',') {
|
||||
// Here's a pass phrase for this particular key.
|
||||
key._got_pass_phrase = true;
|
||||
key._pass_phrase = endptr + 1;
|
||||
} else if (*endptr) {
|
||||
cerr << "Parameter '" << argv[i] << "' should be an integer.\n";
|
||||
exit(1);
|
||||
}
|
||||
if (number <= 0) {
|
||||
cerr << "Key numbers must be greater than 0; you specified " << number
|
||||
<< ".\n";
|
||||
if (key._number <= 0) {
|
||||
cerr << "Key numbers must be greater than 0; you specified "
|
||||
<< key._number << ".\n";
|
||||
exit(1);
|
||||
}
|
||||
key_numbers.push_back(number);
|
||||
key_numbers.push_back(key);
|
||||
}
|
||||
|
||||
// Seed the random number generator.
|
||||
@ -421,11 +440,6 @@ main(int argc, char *argv[]) {
|
||||
|
||||
time_t now = time(NULL);
|
||||
|
||||
const char *pp = NULL;
|
||||
if (got_pass_phrase) {
|
||||
pp = pass_phrase.c_str();
|
||||
}
|
||||
|
||||
string name = priv_outfile.get_fullpath_wo_extension();
|
||||
string prefix, suffix;
|
||||
bool got_hash;
|
||||
@ -442,9 +456,14 @@ main(int argc, char *argv[]) {
|
||||
got_hash = true;
|
||||
}
|
||||
|
||||
vector_int::iterator ki;
|
||||
KeyNumbers::iterator ki;
|
||||
for (ki = key_numbers.begin(); ki != key_numbers.end(); ++ki) {
|
||||
int n = (*ki);
|
||||
int n = (*ki)._number;
|
||||
const char *pp = NULL;
|
||||
if ((*ki)._got_pass_phrase) {
|
||||
pp = (*ki)._pass_phrase.c_str();
|
||||
}
|
||||
|
||||
EVP_PKEY *pkey = generate_key();
|
||||
PrcKeyRegistry::get_global_ptr()->set_key(n, pkey, now);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user