GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
PKCS12_NEWPASS(3) FreeBSD Library Functions Manual PKCS12_NEWPASS(3)

PKCS12_newpasschange the password of a PKCS#12 structure

#include <openssl/pkcs12.h>

int
PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass);

() changes the password of a PKCS#12 structure.

p12 is a pointer to a PKCS#12 structure. oldpass is the existing password and newpass is the new password.

If the PKCS#12 structure does not have a password, use the empty string "" for oldpass. Passing NULL for oldpass results in a () failure.

If the wrong password is used for oldpass, the function will fail with a MAC verification error. In rare cases, the PKCS#12 structure does not contain a MAC: in this case it will usually fail with a decryption padding error.

Upon successful completion, 1 is returned; otherwise 0 is returned and an error code can be retrieved with ERR_get_error(3).

This example loads a PKCS#12 file, changes its password, and writes out the result to a new file.

#include <stdio.h>
#include <stdlib.h>
#include <openssl/pem.h>
#include <openssl/err.h>
#include <openssl/pkcs12.h>

int main(int argc, char **argv)
{
	FILE *fp;
	PKCS12 *p12;
	if (argc != 5) {
		fprintf(stderr,
		    "Usage: pkread p12file password newpass opfile\n");
		return 1;
	}
	if ((fp = fopen(argv[1], "rb")) == NULL) {
		fprintf(stderr, "Error opening file %s\n", argv[1]);
		return 1;
	}
	p12 = d2i_PKCS12_fp(fp, NULL);
	fclose(fp);
	if (p12 == NULL) {
		fprintf(stderr, "Error reading PKCS#12 file\n");
		ERR_print_errors_fp(stderr);
		return 1;
	}
	if (PKCS12_newpass(p12, argv[2], argv[3]) == 0) {
		fprintf(stderr, "Error changing password\n");
		ERR_print_errors_fp(stderr);
		PKCS12_free(p12);
		return 1;
	}
	if ((fp = fopen(argv[4], "wb")) == NULL) {
		fprintf(stderr, "Error opening file %s\n", argv[4]);
		PKCS12_free(p12);
		return 1;
	}
	i2d_PKCS12_fp(fp, p12);
	PKCS12_free(p12);
	fclose(fp);
	return 0;
}

PKCS12_create(3), PKCS12_new(3)

PKCS12_newpass() first appeared in OpenSSL 0.9.5 and has been available since OpenBSD 2.7.

The password format is a NUL terminated ASCII string which is converted to Unicode form internally. As a result, some passwords cannot be supplied to this function.

June 14, 2019 FreeBSD 14.3-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.