Joined copyright on original XySSL code with: Christophe Devine
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 openssl.h.
#include "polarssl/aes.h"
#include "polarssl/md5.h"
#include "polarssl/rsa.h"
#include "polarssl/sha1.h"
Go to the source code of this file.
Defines | |
#define | AES_BLOCK_SIZE 16 |
#define | AES_cbc_encrypt(INPUT, OUTPUT, LEN, CTX, IV, MODE) aes_crypt_cbc( (CTX), (MODE), (LEN), (IV), (INPUT), (OUTPUT) ) |
#define | AES_KEY aes_context |
#define | AES_set_decrypt_key(KEY, KEYSIZE, CTX) aes_setkey_dec( (CTX), (KEY), (KEYSIZE) ) |
#define | AES_set_encrypt_key(KEY, KEYSIZE, CTX) aes_setkey_enc( (CTX), (KEY), (KEYSIZE) ) |
#define | AES_SIZE 16 |
#define | d2i_RSAPrivateKey(a, b, c) new rsa_context |
#define | ERR_get_error() "ERR_get_error() not supported" |
#define | MD5_CTX md5_context |
#define | MD5_Final(OUT, CTX) md5_finish( (CTX), (OUT) ) |
#define | MD5_Init(CTX) md5_starts( (CTX) ) |
#define | MD5_Update(CTX, BUF, LEN) md5_update( (CTX), (unsigned char *)(BUF), (LEN) ) |
#define | RSA rsa_context |
#define | RSA_blinding_off(IGNORE) |
#define | RSA_free(CTX) rsa_free( CTX ) |
#define | RSA_PKCS1_PADDING 1 |
#define | RSA_size(CTX) (CTX)->len |
#define | SHA1_Final(OUT, CTX) sha1_finish( (CTX), (OUT) ) |
#define | SHA1_Init(CTX) sha1_starts( (CTX) ) |
#define | SHA1_Update(CTX, BUF, LEN) sha1_update( (CTX), (unsigned char *)(BUF), (LEN) ) |
#define | SHA_CTX sha1_context |
Functions | |
int | __RSA_Passthrough (void *output, void *input, int size) |
rsa_context * | d2i_RSA_PUBKEY (void *ignore, unsigned char **bufptr, int len) |
int | RSA_private_decrypt (int size, unsigned char *input, unsigned char *output, RSA *key, int ignore) |
int | RSA_private_encrypt (int size, unsigned char *input, unsigned char *output, RSA *key, int ignore) |
int | RSA_public_decrypt (int size, unsigned char *input, unsigned char *output, RSA *key, int ignore) |
int | RSA_public_encrypt (int size, unsigned char *input, unsigned char *output, RSA *key, int ignore) |
#define AES_cbc_encrypt | ( | INPUT, | |||
OUTPUT, | |||||
LEN, | |||||
CTX, | |||||
IV, | |||||
MODE | ) | aes_crypt_cbc( (CTX), (MODE), (LEN), (IV), (INPUT), (OUTPUT) ) |
#define AES_KEY aes_context |
#define AES_set_decrypt_key | ( | KEY, | |||
KEYSIZE, | |||||
CTX | ) | aes_setkey_dec( (CTX), (KEY), (KEYSIZE) ) |
#define AES_set_encrypt_key | ( | KEY, | |||
KEYSIZE, | |||||
CTX | ) | aes_setkey_enc( (CTX), (KEY), (KEYSIZE) ) |
#define d2i_RSAPrivateKey | ( | a, | |||
b, | |||||
c | ) | new rsa_context |
#define MD5_CTX md5_context |
#define MD5_Update | ( | CTX, | |||
BUF, | |||||
LEN | ) | md5_update( (CTX), (unsigned char *)(BUF), (LEN) ) |
#define RSA rsa_context |
#define RSA_size | ( | CTX | ) | (CTX)->len |
Definition at line 116 of file openssl.h.
Referenced by RSA_private_encrypt(), and RSA_public_encrypt().
#define SHA1_Final | ( | OUT, | |||
CTX | ) | sha1_finish( (CTX), (OUT) ) |
#define SHA1_Update | ( | CTX, | |||
BUF, | |||||
LEN | ) | sha1_update( (CTX), (unsigned char *)(BUF), (LEN) ) |
#define SHA_CTX sha1_context |
int __RSA_Passthrough | ( | void * | output, | |
void * | input, | |||
int | size | |||
) | [inline] |
rsa_context* d2i_RSA_PUBKEY | ( | void * | ignore, | |
unsigned char ** | bufptr, | |||
int | len | |||
) | [inline] |
Definition at line 70 of file openssl.h.
References rsa_context::E, rsa_context::len, mpi_msb(), mpi_read_binary(), and rsa_context::N.
00072 { 00073 unsigned char *buffer = *(unsigned char **) bufptr; 00074 rsa_context *rsa; 00075 00076 /* 00077 * Not a general-purpose parser: only parses public key from *exactly* 00078 * openssl genrsa -out privkey.pem 512 (or 1024) 00079 * openssl rsa -in privkey.pem -out privatekey.der -outform der 00080 * openssl rsa -in privkey.pem -out pubkey.der -outform der -pubout 00081 * 00082 * TODO: make a general-purpose parse 00083 */ 00084 if( ignore != 0 || ( len != 94 && len != 162 ) ) 00085 return( 0 ); 00086 00087 rsa = (rsa_context *) malloc( sizeof( rsa_rsa ) ); 00088 if( rsa == NULL ) 00089 return( 0 ); 00090 00091 memset( rsa, 0, sizeof( rsa_context ) ); 00092 00093 if( ( len == 94 && 00094 mpi_read_binary( &rsa->N, &buffer[ 25], 64 ) == 0 && 00095 mpi_read_binary( &rsa->E, &buffer[ 91], 3 ) == 0 ) || 00096 ( len == 162 && 00097 mpi_read_binary( &rsa->N, &buffer[ 29], 128 ) == 0 ) && 00098 mpi_read_binary( &rsa->E, &buffer[159], 3 ) == 0 ) 00099 { 00100 /* 00101 * key read successfully 00102 */ 00103 rsa->len = ( mpi_msb( &rsa->N ) + 7 ) >> 3; 00104 return( rsa ); 00105 } 00106 else 00107 { 00108 memset( rsa, 0, sizeof( rsa_context ) ); 00109 free( rsa ); 00110 return( 0 ); 00111 } 00112 }
int RSA_private_decrypt | ( | int | size, | |
unsigned char * | input, | |||
unsigned char * | output, | |||
RSA * | key, | |||
int | ignore | |||
) | [inline] |
Definition at line 124 of file openssl.h.
References rsa_pkcs1_decrypt(), and RSA_PRIVATE.
00124 { int outsize=size; if( !rsa_pkcs1_decrypt( key, RSA_PRIVATE, &outsize, input, output ) ) return outsize; else return -1; }
int RSA_private_encrypt | ( | int | size, | |
unsigned char * | input, | |||
unsigned char * | output, | |||
RSA * | key, | |||
int | ignore | |||
) | [inline] |
Definition at line 126 of file openssl.h.
References rsa_pkcs1_encrypt(), RSA_PRIVATE, and RSA_size.
00126 { if( !rsa_pkcs1_encrypt( key, RSA_PRIVATE, size, input, output ) ) return RSA_size(key); else return -1; }
int RSA_public_decrypt | ( | int | size, | |
unsigned char * | input, | |||
unsigned char * | output, | |||
RSA * | key, | |||
int | ignore | |||
) | [inline] |
Definition at line 123 of file openssl.h.
References rsa_pkcs1_decrypt(), and RSA_PUBLIC.
00123 { int outsize=size; if( !rsa_pkcs1_decrypt( key, RSA_PUBLIC, &outsize, input, output ) ) return outsize; else return -1; }
int RSA_public_encrypt | ( | int | size, | |
unsigned char * | input, | |||
unsigned char * | output, | |||
RSA * | key, | |||
int | ignore | |||
) | [inline] |
Definition at line 125 of file openssl.h.
References rsa_pkcs1_encrypt(), RSA_PUBLIC, and RSA_size.
00125 { if( !rsa_pkcs1_encrypt( key, RSA_PUBLIC, size, input, output ) ) return RSA_size(key); else return -1; }