PKCS#12 Personal Information Exchange Syntax. More...
#include <string.h>
#include "md.h"
#include "cipher.h"
#include "asn1.h"
Go to the source code of this file.
Defines | |
#define | POLARSSL_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 |
Bad input parameters to function. | |
#define | POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 |
Feature not available, e.g. | |
#define | POLARSSL_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 |
PBE ASN.1 data not as expected. | |
#define | POLARSSL_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 |
Given private key password does not allow for correct decryption. | |
#define | PKCS12_DERIVE_KEY 1 |
#define | PKCS12_DERIVE_IV 2 |
#define | PKCS12_DERIVE_MAC_KEY 3 |
#define | PKCS12_PBE_DECRYPT 0 |
#define | PKCS12_PBE_ENCRYPT 1 |
Functions | |
int | pkcs12_pbe_sha1_rc4_128 (asn1_buf *pbe_params, int mode, const unsigned char *pwd, size_t pwdlen, const unsigned char *input, size_t len, unsigned char *output) |
PKCS12 Password Based function (encryption / decryption) for pbeWithSHAAnd128BitRC4. | |
int | pkcs12_pbe (asn1_buf *pbe_params, int mode, cipher_type_t cipher_type, md_type_t md_type, const unsigned char *pwd, size_t pwdlen, const unsigned char *input, size_t len, unsigned char *output) |
PKCS12 Password Based function (encryption / decryption) for cipher-based and md-based PBE's. | |
int | pkcs12_derivation (unsigned char *data, size_t datalen, const unsigned char *pwd, size_t pwdlen, const unsigned char *salt, size_t saltlen, md_type_t md, int id, int iterations) |
The PKCS#12 derivation function uses a password and a salt to produce pseudo-random bits for a particular "purpose". |
PKCS#12 Personal Information Exchange Syntax.
Copyright (C) 2006-2013, Brainspark B.V.
This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file pkcs12.h.
#define PKCS12_DERIVE_IV 2 |
Definition at line 42 of file pkcs12.h.
Referenced by pkcs12_pbe_derive_key_iv().
#define PKCS12_DERIVE_KEY 1 |
Definition at line 41 of file pkcs12.h.
Referenced by pkcs12_pbe_derive_key_iv().
#define PKCS12_PBE_DECRYPT 0 |
Definition at line 45 of file pkcs12.h.
Referenced by pk_parse_key_pkcs8_encrypted_der().
#define POLARSSL_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 |
Bad input parameters to function.
Definition at line 36 of file pkcs12.h.
Referenced by pkcs12_derivation(), and polarssl_strerror().
#define POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 |
Feature not available, e.g.
unsupported encryption scheme.
Definition at line 37 of file pkcs12.h.
Referenced by pkcs12_derivation(), pkcs12_pbe(), pkcs12_pbe_sha1_rc4_128(), and polarssl_strerror().
#define POLARSSL_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 |
Given private key password does not allow for correct decryption.
Definition at line 39 of file pkcs12.h.
Referenced by pk_parse_key_pkcs8_encrypted_der(), pkcs12_pbe(), and polarssl_strerror().
#define POLARSSL_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 |
PBE ASN.1 data not as expected.
Definition at line 38 of file pkcs12.h.
Referenced by pkcs12_parse_pbe_params(), and polarssl_strerror().
int pkcs12_derivation | ( | unsigned char * | data, | |
size_t | datalen, | |||
const unsigned char * | pwd, | |||
size_t | pwdlen, | |||
const unsigned char * | salt, | |||
size_t | saltlen, | |||
md_type_t | md, | |||
int | id, | |||
int | iterations | |||
) |
The PKCS#12 derivation function uses a password and a salt to produce pseudo-random bits for a particular "purpose".
Depending on the given id, this function can produce an encryption/decryption key, an nitialization vector or an integrity key.
data | buffer to store the derived data in | |
datalen | length to fill | |
pwd | password to use (may be NULL if no password is used) | |
pwdlen | length of the password (may be 0) | |
salt | salt buffer to use | |
saltlen | length of the salt | |
md | md type to use during the derivation | |
id | id that describes the purpose (can be PKCS12_DERIVE_KEY, PKCS12_DERIVE_IV or PKCS12_DERIVE_MAC_KEY) | |
iterations | number of iterations |
Definition at line 223 of file pkcs12.c.
References md(), md_finish(), md_free_ctx(), md_get_size(), md_info_from_type(), md_init_ctx(), md_starts(), md_update(), pkcs12_fill_buffer(), POLARSSL_ERR_PKCS12_BAD_INPUT_DATA, POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE, and POLARSSL_MD_MAX_SIZE.
Referenced by pkcs12_pbe_derive_key_iv().
int pkcs12_pbe | ( | asn1_buf * | pbe_params, | |
int | mode, | |||
cipher_type_t | cipher_type, | |||
md_type_t | md_type, | |||
const unsigned char * | pwd, | |||
size_t | pwdlen, | |||
const unsigned char * | input, | |||
size_t | len, | |||
unsigned char * | output | |||
) |
PKCS12 Password Based function (encryption / decryption) for cipher-based and md-based PBE's.
pbe_params | an ASN1 buffer containing the pkcs-12PbeParams structure | |
mode | either PKCS12_PBE_ENCRYPT or PKCS12_PBE_DECRYPT | |
cipher_type | the cipher used | |
md_type | the md used | |
pwd | the password used (may be NULL if no password is used) | |
pwdlen | length of the password (may be 0) | |
input | the input data | |
len | data length | |
output | the output buffer |
Definition at line 155 of file pkcs12.c.
References cipher_finish(), cipher_free_ctx(), cipher_info_from_type(), cipher_init_ctx(), cipher_reset(), cipher_set_iv(), cipher_setkey(), cipher_update(), iv, cipher_info_t::iv_size, key, cipher_info_t::key_length, pkcs12_pbe_derive_key_iv(), POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE, and POLARSSL_ERR_PKCS12_PASSWORD_MISMATCH.
Referenced by pk_parse_key_pkcs8_encrypted_der().
int pkcs12_pbe_sha1_rc4_128 | ( | asn1_buf * | pbe_params, | |
int | mode, | |||
const unsigned char * | pwd, | |||
size_t | pwdlen, | |||
const unsigned char * | input, | |||
size_t | len, | |||
unsigned char * | output | |||
) |
PKCS12 Password Based function (encryption / decryption) for pbeWithSHAAnd128BitRC4.
pbe_params | an ASN1 buffer containing the pkcs-12PbeParams structure | |
mode | either PKCS12_PBE_ENCRYPT or PKCS12_PBE_DECRYPT | |
pwd | the password used (may be NULL if no password is used) | |
pwdlen | length of the password (may be 0) | |
input | the input data | |
len | data length | |
output | the output buffer |
Definition at line 120 of file pkcs12.c.
References arc4_crypt(), arc4_setup(), key, pkcs12_pbe_derive_key_iv(), POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE, and POLARSSL_MD_SHA1.
Referenced by pk_parse_key_pkcs8_encrypted_der().