Main Page   Data Structures   File List   Data Fields   Globals  

pk.h

Go to the documentation of this file.
00001 
00005 #ifndef _CYFER_PK_H_
00006 #define _CYFER_PK_H_
00007 
00008 #define CYFER_PK_NONE 0
00009 #define CYFER_PK_RSA 1
00010 #define CYFER_PK_ELGAMAL 2
00011 #define CYFER_PK_LUC 3
00012 
00013 #ifdef CYFER_INTERNAL
00014 #include <bignum.h>
00015 #include <pkiutil.h>
00016 #include <rsa.h>
00017 #include <elgamal.h>
00018 #include <luc.h>
00019 
00020 typedef struct {
00021         int type;
00022         union {
00023                 RSA_CTX rsa;
00024                 ELGAMAL_CTX elgamal;
00025                 LUC_CTX luc;
00026         } u;
00027 } CYFER_PK_CTX;
00028 #else
00029 #include <cyfer/cyfer.h>
00031 typedef void CYFER_PK_CTX;
00032 #endif
00033 
00035 typedef struct {
00037         int type;
00039         char *name;
00041         bool encryption;
00043         bool signature;
00044 } CYFER_Pk_t;
00045 
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049 
00051 CYFER_API CYFER_Pk_t *CYFER_Pk_Get_Supported(void);
00052 
00058 CYFER_API int CYFER_Pk_Select(const char *name, bool *enc, bool *sig);
00059 
00063 CYFER_API CYFER_PK_CTX *CYFER_Pk_Init(int type);
00064 
00068 CYFER_API void CYFER_Pk_Generate_Key(CYFER_PK_CTX *ctx, size_t keylen);
00069 
00074 CYFER_API void CYFER_Pk_Size(CYFER_PK_CTX *ctx, size_t *pt_len, size_t *ct_len);
00075 
00080 CYFER_API void CYFER_Pk_KeySize(CYFER_PK_CTX *ctx, size_t *privlen, size_t *publen);
00081 
00088 CYFER_API void CYFER_Pk_Export_Key(CYFER_PK_CTX *ctx, unsigned char *priv, unsigned char *pub);
00089 
00099 CYFER_API bool CYFER_Pk_Import_Key(CYFER_PK_CTX *ctx, unsigned char *priv, size_t privlen, unsigned char *pub, size_t publen);
00100 
00105 CYFER_API void CYFER_Pk_Encrypt(CYFER_PK_CTX *ctx, const unsigned char *input, unsigned char *output);
00106 
00111 CYFER_API void CYFER_Pk_Decrypt(CYFER_PK_CTX *ctx, const unsigned char *input, unsigned char *output);
00112 
00117 CYFER_API void CYFER_Pk_Sign(CYFER_PK_CTX *ctx, const unsigned char *input, unsigned char *output);
00118 
00124 CYFER_API bool CYFER_Pk_Verify(CYFER_PK_CTX *ctx, const unsigned char *signature, const unsigned char *message);
00125 
00128 CYFER_API void CYFER_Pk_Finish(CYFER_PK_CTX *ctx);
00129 
00130 #ifdef __cplusplus
00131 };
00132 #endif
00133 
00134 #endif /* _CYFER_PK_H_ */
00135 

Generated on Sun Sep 26 13:53:58 2004 for Cyfer by doxygen1.3-rc3