pkcs12.c File Reference

#include "polarssl/config.h"
#include "polarssl/pkcs12.h"
#include "polarssl/asn1.h"
#include "polarssl/cipher.h"
#include "polarssl/arc4.h"
#include "polarssl/des.h"
Include dependency graph for pkcs12.c:

Go to the source code of this file.

Functions

static int pkcs12_parse_pbe_params (asn1_buf *params, asn1_buf *salt, int *iterations)
static int pkcs12_pbe_derive_key_iv (asn1_buf *pbe_params, md_type_t md_type, const unsigned char *pwd, size_t pwdlen, unsigned char *key, size_t keylen, unsigned char *iv, size_t ivlen)
int pkcs12_pbe_sha1_rc4_128 (asn1_buf *pbe_params, int mode, const unsigned char *pwd, size_t pwdlen, const unsigned char *data, 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 *data, size_t len, unsigned char *output)
 PKCS12 Password Based function (encryption / decryption) for cipher-based and md-based PBE's.
static void pkcs12_fill_buffer (unsigned char *data, size_t data_len, const unsigned char *filler, size_t fill_len)
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_type, int id, int iterations)
 The PKCS#12 derivation function uses a password and a salt to produce pseudo-random bits for a particular "purpose".

Function Documentation

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.

Parameters:
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
Returns:
0 if successful, or a MD, BIGNUM type error.

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().

static void pkcs12_fill_buffer ( unsigned char *  data,
size_t  data_len,
const unsigned char *  filler,
size_t  fill_len 
) [static]

Definition at line 208 of file pkcs12.c.

Referenced by pkcs12_derivation().

static int pkcs12_parse_pbe_params ( asn1_buf params,
asn1_buf salt,
int *  iterations 
) [static]
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.

Parameters:
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
Returns:
0 if successful, or a PolarSSL error code

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().

static int pkcs12_pbe_derive_key_iv ( asn1_buf pbe_params,
md_type_t  md_type,
const unsigned char *  pwd,
size_t  pwdlen,
unsigned char *  key,
size_t  keylen,
unsigned char *  iv,
size_t  ivlen 
) [static]
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.

Parameters:
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
Returns:
0 if successful, or a PolarSSL error code

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().


Generated on 9 Apr 2014 for PolarSSL v1.3.2 by  doxygen 1.6.1