Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pkcs12.h
00001 /** 00002 * \file pkcs12.h 00003 * 00004 * \brief PKCS#12 Personal Information Exchange Syntax 00005 * 00006 * Copyright (C) 2006-2013, Brainspark B.V. 00007 * 00008 * This file is part of PolarSSL (http://www.polarssl.org) 00009 * Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org> 00010 * 00011 * All rights reserved. 00012 * 00013 * This program is free software; you can redistribute it and/or modify 00014 * it under the terms of the GNU General Public License as published by 00015 * the Free Software Foundation; either version 2 of the License, or 00016 * (at your option) any later version. 00017 * 00018 * This program is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 * GNU General Public License for more details. 00022 * 00023 * You should have received a copy of the GNU General Public License along 00024 * with this program; if not, write to the Free Software Foundation, Inc., 00025 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00026 */ 00027 #ifndef POLARSSL_PKCS12_H 00028 #define POLARSSL_PKCS12_H 00029 00030 #include <string.h> 00031 00032 #include "md.h" 00033 #include "cipher.h" 00034 #include "asn1.h" 00035 00036 #define POLARSSL_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 /**< Bad input parameters to function. */ 00037 #define POLARSSL_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 /**< Feature not available, e.g. unsupported encryption scheme. */ 00038 #define POLARSSL_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 /**< PBE ASN.1 data not as expected. */ 00039 #define POLARSSL_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 /**< Given private key password does not allow for correct decryption. */ 00040 00041 #define PKCS12_DERIVE_KEY 1 /**< encryption/decryption key */ 00042 #define PKCS12_DERIVE_IV 2 /**< initialization vector */ 00043 #define PKCS12_DERIVE_MAC_KEY 3 /**< integrity / MAC key */ 00044 00045 #define PKCS12_PBE_DECRYPT 0 00046 #define PKCS12_PBE_ENCRYPT 1 00047 00048 #ifdef __cplusplus 00049 extern "C" { 00050 #endif 00051 00052 /** 00053 * \brief PKCS12 Password Based function (encryption / decryption) 00054 * for pbeWithSHAAnd128BitRC4 00055 * 00056 * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure 00057 * \param mode either PKCS12_PBE_ENCRYPT or PKCS12_PBE_DECRYPT 00058 * \param pwd the password used (may be NULL if no password is used) 00059 * \param pwdlen length of the password (may be 0) 00060 * \param input the input data 00061 * \param len data length 00062 * \param output the output buffer 00063 * 00064 * \return 0 if successful, or a PolarSSL error code 00065 */ 00066 int pkcs12_pbe_sha1_rc4_128( asn1_buf *pbe_params, int mode, 00067 const unsigned char *pwd, size_t pwdlen, 00068 const unsigned char *input, size_t len, 00069 unsigned char *output ); 00070 00071 /** 00072 * \brief PKCS12 Password Based function (encryption / decryption) 00073 * for cipher-based and md-based PBE's 00074 * 00075 * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure 00076 * \param mode either PKCS12_PBE_ENCRYPT or PKCS12_PBE_DECRYPT 00077 * \param cipher_type the cipher used 00078 * \param md_type the md used 00079 * \param pwd the password used (may be NULL if no password is used) 00080 * \param pwdlen length of the password (may be 0) 00081 * \param input the input data 00082 * \param len data length 00083 * \param output the output buffer 00084 * 00085 * \return 0 if successful, or a PolarSSL error code 00086 */ 00087 int pkcs12_pbe( asn1_buf *pbe_params, int mode, 00088 cipher_type_t cipher_type, md_type_t md_type, 00089 const unsigned char *pwd, size_t pwdlen, 00090 const unsigned char *input, size_t len, 00091 unsigned char *output ); 00092 00093 /** 00094 * \brief The PKCS#12 derivation function uses a password and a salt 00095 * to produce pseudo-random bits for a particular "purpose". 00096 * 00097 * Depending on the given id, this function can produce an 00098 * encryption/decryption key, an nitialization vector or an 00099 * integrity key. 00100 * 00101 * \param data buffer to store the derived data in 00102 * \param datalen length to fill 00103 * \param pwd password to use (may be NULL if no password is used) 00104 * \param pwdlen length of the password (may be 0) 00105 * \param salt salt buffer to use 00106 * \param saltlen length of the salt 00107 * \param md md type to use during the derivation 00108 * \param id id that describes the purpose (can be PKCS12_DERIVE_KEY, 00109 * PKCS12_DERIVE_IV or PKCS12_DERIVE_MAC_KEY) 00110 * \param iterations number of iterations 00111 * 00112 * \return 0 if successful, or a MD, BIGNUM type error. 00113 */ 00114 int pkcs12_derivation( unsigned char *data, size_t datalen, 00115 const unsigned char *pwd, size_t pwdlen, 00116 const unsigned char *salt, size_t saltlen, 00117 md_type_t md, int id, int iterations ); 00118 00119 #ifdef __cplusplus 00120 } 00121 #endif 00122 00123 #endif /* pkcs12.h */ 00124 00125
Generated on Tue Jul 12 2022 19:40:20 by
1.7.2