|
|
|
@ -66,17 +66,18 @@
|
|
|
|
|
|
|
|
|
|
/* PKCS#12 password change routine */
|
|
|
|
|
|
|
|
|
|
static int newpass_p12(PKCS12 *p12, char *oldpass, char *newpass);
|
|
|
|
|
static int newpass_bags(STACK_OF(PKCS12_SAFEBAG) *bags, char *oldpass,
|
|
|
|
|
char *newpass);
|
|
|
|
|
static int newpass_bag(PKCS12_SAFEBAG *bag, char *oldpass, char *newpass);
|
|
|
|
|
static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass);
|
|
|
|
|
static int newpass_bags(STACK_OF(PKCS12_SAFEBAG) *bags, const char *oldpass,
|
|
|
|
|
const char *newpass);
|
|
|
|
|
static int newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass,
|
|
|
|
|
const char *newpass);
|
|
|
|
|
static int alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Change the password on a PKCS#12 structure.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass)
|
|
|
|
|
int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass)
|
|
|
|
|
{
|
|
|
|
|
/* Check for NULL PKCS12 structure */
|
|
|
|
|
|
|
|
|
@ -103,7 +104,7 @@ int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass)
|
|
|
|
|
|
|
|
|
|
/* Parse the outer PKCS#12 structure */
|
|
|
|
|
|
|
|
|
|
static int newpass_p12(PKCS12 *p12, char *oldpass, char *newpass)
|
|
|
|
|
static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass)
|
|
|
|
|
{
|
|
|
|
|
STACK_OF(PKCS7) *asafes = NULL, *newsafes = NULL;
|
|
|
|
|
STACK_OF(PKCS12_SAFEBAG) *bags = NULL;
|
|
|
|
@ -177,8 +178,8 @@ err:
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int newpass_bags(STACK_OF(PKCS12_SAFEBAG) *bags, char *oldpass,
|
|
|
|
|
char *newpass)
|
|
|
|
|
static int newpass_bags(STACK_OF(PKCS12_SAFEBAG) *bags, const char *oldpass,
|
|
|
|
|
const char *newpass)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 0; i < sk_PKCS12_SAFEBAG_num(bags); i++) {
|
|
|
|
@ -190,7 +191,8 @@ static int newpass_bags(STACK_OF(PKCS12_SAFEBAG) *bags, char *oldpass,
|
|
|
|
|
|
|
|
|
|
/* Change password of safebag: only needs handle shrouded keybags */
|
|
|
|
|
|
|
|
|
|
static int newpass_bag(PKCS12_SAFEBAG *bag, char *oldpass, char *newpass)
|
|
|
|
|
static int newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass,
|
|
|
|
|
const char *newpass)
|
|
|
|
|
{
|
|
|
|
|
PKCS8_PRIV_KEY_INFO *p8;
|
|
|
|
|
X509_SIG *p8new;
|
|
|
|
|