# openssl.h File Reference

## Detailed Description

Copyright (C) 2006-2009, Paul Bakker <polarssl_maintainer at polarssl.org> All rights reserved.

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 Documentation

#define AES_BLOCK_SIZE 16

Definition at line 35 of file openssl.h.

#define AES_cbc_encrypt | ( | INPUT,
|  | OUTPUT,
|  | LEN,
|  | CTX,
|  | IV,
|  | MODE |  | ) | aes_crypt_cbc( (CTX), (MODE), (LEN), (IV), (INPUT), (OUTPUT) )

Definition at line 58 of file openssl.h.

#define AES_KEY aes_context

Definition at line 36 of file openssl.h.

#define AES_set_decrypt_key | ( | KEY,
|  | KEYSIZE,
|  | CTX |  | ) | aes_setkey_dec( (CTX), (KEY), (KEYSIZE) )

Definition at line 56 of file openssl.h.

#define AES_set_encrypt_key | ( | KEY,
|  | KEYSIZE,
|  | CTX |  | ) | aes_setkey_enc( (CTX), (KEY), (KEYSIZE) )

Definition at line 54 of file openssl.h.

#define AES_SIZE 16

Definition at line 34 of file openssl.h.

#define d2i_RSAPrivateKey | ( | a,
|  | b,
|  | c |  | ) | new rsa_context

Definition at line 121 of file openssl.h.

#define ERR_get_error | ( |  | ) | "ERR_get_error() not supported"

Definition at line 118 of file openssl.h.

#define MD5_CTX md5_context

Definition at line 37 of file openssl.h.

#define MD5_Final | ( | OUT,
|  | CTX |  | ) | md5_finish( (CTX), (OUT) )

Definition at line 51 of file openssl.h.

#define MD5_Init | ( | CTX |  | ) | md5_starts( (CTX) )

Definition at line 47 of file openssl.h.

#define MD5_Update | ( | CTX,
|  | BUF,
|  | LEN |  | ) | md5_update( (CTX), (unsigned char *)(BUF), (LEN) )

Definition at line 49 of file openssl.h.

#define RSA rsa_context

Definition at line 114 of file openssl.h.

#define RSA_blinding_off | ( | IGNORE |  | ) |

Definition at line 119 of file openssl.h.

#define RSA_free | ( | CTX |  | ) | rsa_free( CTX )

Definition at line 117 of file openssl.h.

#define RSA_PKCS1_PADDING 1

Definition at line 115 of file openssl.h.

#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) )

Definition at line 44 of file openssl.h.

#define SHA1_Init | ( | CTX |  | ) | sha1_starts( (CTX) )

Definition at line 40 of file openssl.h.

#define SHA1_Update | ( | CTX,
|  | BUF,
|  | LEN |  | ) | sha1_update( (CTX), (unsigned char *)(BUF), (LEN) )

Definition at line 42 of file openssl.h.

#define SHA_CTX sha1_context

Definition at line 38 of file openssl.h.

## Function Documentation

int __RSA_Passthrough | ( | void * | output,
|  | void * | input,
|  | int | size |
| ) |  |  | `[inline]`

Definition at line 64 of file openssl.h.

    00065 {
    00066     memcpy( output, input, size );
    00067     return size;
    00068 }

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; }