Hannes Tschofenig
/
aes-gcm-test-program
Example program to test AES-GCM functionality. Used for a workshop
Embed:
(wiki syntax)
Show/hide line numbers
pkcs12.h
Go to the documentation of this file.
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