gwenhywfar  4.3.1
cryptkeyrsa.h
Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: crypttoken.h 1113 2007-01-10 09:14:16Z martin $
00005     begin       : Wed Mar 16 2005
00006     copyright   : (C) 2005 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef GWEN_CRYPT_KEY_RSA_H
00015 #define GWEN_CRYPT_KEY_RSA_H
00016 
00017 #include "cryptkey.h"
00018 
00019 
00024 #define GWEN_CRYPT_KEYRSA_FLAGS_DIRECTSIGN 0x00000001
00025 
00026 
00027 #define GWEN_CRYPT_KEYRSA_MAX_KEYLENGTH 1024
00028 
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 
00042 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_GeneratePair(unsigned int nbytes,
00043                                                   int use65537e,
00044                                                   GWEN_CRYPT_KEY **pPubKey,
00045                                                   GWEN_CRYPT_KEY **pSecretKey);
00046 
00047 
00057 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_GeneratePair2(unsigned int nbits, int use65537e,
00058                                                    GWEN_CRYPT_KEY **pPubKey,
00059                                                    GWEN_CRYPT_KEY **pSecretKey);
00060 
00061 GWENHYWFAR_API GWEN_CRYPT_KEY *GWEN_Crypt_KeyRsa_dup(const GWEN_CRYPT_KEY *k);
00062 
00063 GWENHYWFAR_API GWEN_CRYPT_KEY *GWEN_Crypt_KeyRsa_fromDb(GWEN_DB_NODE *db);
00064 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_toDb(const GWEN_CRYPT_KEY *k, GWEN_DB_NODE *db, int pub);
00065 
00066 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_GetModulus(const GWEN_CRYPT_KEY *k, uint8_t *buffer, uint32_t *pBufLen);
00067 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_GetExponent(const GWEN_CRYPT_KEY *k, uint8_t *buffer, uint32_t *pBufLen);
00068 GWENHYWFAR_API int GWEN_Crypt_KeyRsa_GetSecretExponent(const GWEN_CRYPT_KEY *k, uint8_t *buffer, uint32_t *pBufLen);
00069 
00070 GWENHYWFAR_API GWEN_CRYPT_KEY *GWEN_Crypt_KeyRsa_fromModExp(unsigned int nbytes,
00071                                                             const uint8_t *pModulus,
00072                                                             uint32_t lModulus,
00073                                                             const uint8_t *pExponent,
00074                                                             uint32_t lExponent);
00075 
00076 GWENHYWFAR_API GWEN_CRYPT_KEY *GWEN_Crypt_KeyRsa_fromModPrivExp(unsigned int nbytes,
00077                                                                 const uint8_t *pModulus,
00078                                                                 uint32_t lModulus,
00079                                                                 const uint8_t *pExponent,
00080                                                                 uint32_t lExponent,
00081                                                                 const uint8_t *pPrivExponent,
00082                                                                 uint32_t lPrivExponent);
00083 
00084 GWENHYWFAR_API uint32_t GWEN_Crypt_KeyRsa_GetFlags(const GWEN_CRYPT_KEY *k);
00085 GWENHYWFAR_API void GWEN_Crypt_KeyRsa_SetFlags(GWEN_CRYPT_KEY *k,
00086                                                uint32_t fl);
00087 GWENHYWFAR_API void GWEN_Crypt_KeyRsa_AddFlags(GWEN_CRYPT_KEY *k,
00088                                                uint32_t fl);
00089 GWENHYWFAR_API void GWEN_Crypt_KeyRsa_SubFlags(GWEN_CRYPT_KEY *k,
00090                                                uint32_t fl);
00091 
00092 #ifdef __cplusplus
00093 }
00094 #endif
00095 
00096 #endif
00097