Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > media > contrib-release-debug > by-pkgid > 55919a653de3b6b92cb6be1402a5d54d > files > 79

clauer-debug-3.0.2-3mdv2011.0.i586.rpm


/*

                        LICENCIA

1. Este programa puede ser ejecutado sin ninguna restricción
   por parte del usuario final del mismo.

2. La  Universitat Jaume I autoriza la copia y  distribución
   del programa con cualquier fin y por cualquier medio  con
   la  única limitación de que, de forma  apropiada, se haga
   constar  en  cada  una  de las copias la  autoría de esta  
   Universidad  y  una reproducción  exacta de las presentes 
   condiciones   y   de   la   declaración  de  exención  de 
   responsabilidad.

3. La  Universitat  Jaume  I autoriza  la  modificación  del
   software  y  su  redistribución  siempre que en el cambio
   del  código  conste la autoría de la Universidad respecto  
   al  software  original  y  la  url de descarga del código
   fuente  original. Además, su denominación no debe inducir 
   a  error  o  confusión con el original. Cualquier persona
   o  entidad  que  modifique  y  redistribuya  el  software 
   modificado deberá  informar de tal circunstancia mediante
   el  envío  de  un  mensaje  de  correo  electrónico  a la 
   dirección  clauer@uji.es  y  remitir una copia del código 
   fuente modificado.

4. El  código  fuente  de todos los programas amparados bajo 
   esta licencia  está  disponible para su descarga gratuita
   desde la página web http//:clauer.uji.es.

5. El hecho en sí del uso, copia o distribución del presente 
   programa implica la aceptación de estas condiciones.

6. La  copia y distribución del programa supone la extensión 
   de las presentes condiciones al destinatario.
   El  distribuidor no puede imponer condiciones adicionales
   que limiten las aquí establecidas.

       DECLARACIÓN DE EXENCIÓN DE RESPONSABILIDAD

Este  programa  se  distribuye  gratuitamente. La Universitat 
Jaume  I  no  ofrece  ningún  tipo de garantía sobre el mismo
ni acepta ninguna responsabilidad por su uso o  imposibilidad
de uso.

*/

#ifndef UTILBLOQUES_H
#define UTILBLOQUES_H

#if defined(WIN32)
#include <windows.h>
#define snprintf _snprintf
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Tipos de bloques específicos */

#define BLOQUE_BLANCO			0x00
#define BLOQUE_LLAVE_PRIVADA	        0x01
#define BLOQUE_CERT_PROPIO		0x02
#define BLOQUE_CERT_WEB			0x03
#define BLOQUE_CERT_RAIZ		0x04
#define	BLOQUE_KNOWN_HOSTS		0x05
#define BLOQUE_KEY_CONTAINERS           0x06
#define BLOQUE_PRIVKEY_BLOB		0x07
#define BLOQUE_PUBKEY_BLOB		0x08
#define BLOQUE_CERT_OTROS		0x09
#define BLOQUE_CERT_INTERMEDIO          0x0a
#define BLOQUE_CIPHER_PRIVKEY_BLOB      0x0b
#define BLOQUE_CRYPTO_WALLET		0x0c
#define BLOQUE_CIPHER_PRIVKEY_PEM       0x0d
#define BLOQUE_CHANGE_PASSWORD		0x0e
#define BLOQUE_PUTTYKEY				0x0f


#define CERT_PROPIO		BLOQUE_CERT_PROPIO
#define CERT_WEB		BLOQUE_CERT_WEB
#define CERT_RAIZ		BLOQUE_CERT_RAIZ
#define LLAVE_PRIVADA   BLOQUE_LLAVE_PRIVADA
#define KNOWN_HOSTS		BLOQUE_KNOWN_HOSTS
#define PRIVKEY_BLOB	BLOQUE_PRIVKEY_BLOB
#define PUBKEY_BLOB		BLOQUE_PUBKEY_BLOB

/* Algunos defines adicionales */

#define TAM_KEY_CONTAINER	306     /* Tamaño de un key container en bytes */
#define NUM_KEY_CONTAINERS	33      /* Número total de key containers que caben en un bloque: (TAM_BLOQUE-8)/TAM_KEY_CONTAINER */
#define TAM_BLOQUE			10240   /* Tamaño de un bloque en bytes */

/* Utilidades para los bloques de BLOQUE_KEY_CONTAINERS */

#define BLOQUE_KeyContainer_SetOcupado(keyContainer)	 ( *(keyContainer) = *(keyContainer) | 0x01 )
#define BLOQUE_KeyContainer_UnsetOcupado(keyContainer)	 ( *(keyContainer) = *(keyContainer) & 0xFE )
#define BLOQUE_KeyContainer_GetOcupado(keyContainer)	 ( *(keyContainer) & 0x01 )

#define BLOQUE_KeyContainer_SetExchange(keyContainer)	 ( *(keyContainer) = *(keyContainer) | 0x02 )
#define BLOQUE_KeyContainer_UnsetExchange(keyContainer)	 ( *(keyContainer) = *(keyContainer) & 0xFD )
#define BLOQUE_KeyContainer_GetExchange(keyContainer)	 ( *(keyContainer) & 0x02 )

#define BLOQUE_KeyContainer_SetSignature(keyContainer)	 ( *(keyContainer) = *(keyContainer) | 0x04 )
#define BLOQUE_KeyContainer_UnsetSignature(keyContainer) ( *(keyContainer) = *(keyContainer) & 0xFB )
#define BLOQUE_KeyContainer_GetSignature(keyContainer)	 ( *(keyContainer) & 0x04 )

#define BLOQUE_KeyContainer_GetUnidadExchange(keyContainer)	    ( *((long *)((keyContainer)+1+257)))
#define BLOQUE_KeyContainer_GetUnidadSignature(keyContainer)	( *((long *)((keyContainer)+1+257+4)) )


/* Definiciones de tipos
 */

typedef struct INFO_KEY_CONTAINER {
  char *nombreKeyContainer;
  unsigned long EXCHANGE, SIGNATURE;
  int exportaEx, exportaSig;
  unsigned char idExchange[20];
  unsigned char idSignature[20];
} INFO_KEY_CONTAINER;

typedef unsigned char TIPO_BLOQUE;

/* Utilidades generales */
 
void BLOQUE_Set_Cifrado (unsigned char *bloque);
void BLOQUE_Set_Vacio   (unsigned char *bloque);
void BLOQUE_Set_Claro   (unsigned char *bloque);

int BLOQUE_Es_Cifrado  (unsigned char *bloque);
int BLOQUE_Es_Vacio    (unsigned char *bloque);
int BLOQUE_Es_Claro    (unsigned char *bloque);


#ifdef _DEBUG
char *BLOQUE_Estado_Str (unsigned char *bloque);
char *BLOQUE_Tipo_Str	(unsigned char *bloque);
void BLOQUE_Print (unsigned char *bloque, FILE *fp);
#endif

/* Utilidades para los bloques de tipo Key Container */

int    BLOQUE_KeyContainer_Insertar                ( unsigned char *bloque, const char *nombreKeyContainer );
void   BLOQUE_KeyContainer_Nuevo                   ( unsigned char *bloque );
int    BLOQUE_KeyContainer_Borrar                  ( unsigned char *bloque, const char *nombreKeyContainer );
int    BLOQUE_KeyContainer_EstablecerEXCHANGE      ( unsigned char *bloque, const char *nombreKeyContainer, long unidad, int exportable );
int    BLOQUE_KeyContainer_EstablecerSIGNATURE     ( unsigned char *bloque, const char *nombreKeyContainer, long unidad, int exportable );
int    BLOQUE_KeyContainer_Establecer_ID_Exchange  (unsigned char *bloque, const char *nombreKeyContainer, unsigned char id[20]);
int    BLOQUE_KeyContainer_Establecer_ID_Signature (unsigned char *bloque, const char *nombreKeyContainer, unsigned char id[20]);
int    BLOQUE_KeyContainer_Establecer_Export       ( unsigned char *bloque, const char *nombreKeyContainer, int signature, int exportable);
int    BLOQUE_KeyContainer_Enumerar                ( unsigned char *bloque, INFO_KEY_CONTAINER *lstContainers, unsigned int *tamLstContainers );
unsigned char * BLOQUE_KeyContainer_Buscar         ( unsigned char *bloque, const char *nombreKeyContainer );
int    BLOQUE_KeyContainer_Vacio                   ( unsigned char *bloque );
void   BLOQUE_KeyContainer_Print                   (  unsigned char *bloque, int flags, FILE *fp );

unsigned char * BLOQUE_KeyContainer_Get_ID_Exchange  ( unsigned char *bloque, const char *nombreKeyContainer);
unsigned char * BLOQUE_KeyContainer_Get_ID_Signature ( unsigned char *bloque, const char *nombreKeyContainer);

/* Utilidades para los bloques de tipo BLOQUE_LLAVE_PRIVADA */

void            BLOQUE_LLAVEPRIVADA_Nuevo      ( unsigned char *bloque );
unsigned long   BLOQUE_LLAVEPRIVADA_Get_Tam    ( unsigned char *bloque );
unsigned char * BLOQUE_LLAVEPRIVADA_Get_Id     ( unsigned char *bloque );
unsigned char * BLOQUE_LLAVEPRIVADA_Get_Objeto ( unsigned char *bloque );
void            BLOQUE_LLAVEPRIVADA_Set_Tam    ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_LLAVEPRIVADA_Set_Id     ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_LLAVEPRIVADA_Set_Objeto ( unsigned char *bloque, unsigned char *llave, unsigned long tam );


/* Utilidades para los bloques de tipo BLOQUE_CIPHER_PRIVKEY_PEM */ 

void            BLOQUE_CIPHER_PRIVKEY_PEM_Nuevo      ( unsigned char *bloque );
unsigned long   BLOQUE_CIPHER_PRIVKEY_PEM_Get_Tam    ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHER_PRIVKEY_PEM_Get_String_Id (unsigned char *bloque, unsigned char *str_id );
unsigned char * BLOQUE_CIPHER_PRIVKEY_PEM_Get_Id     ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHER_PRIVKEY_PEM_Get_Objeto ( unsigned char *bloque );
void            BLOQUE_CIPHER_PRIVKEY_PEM_Set_Tam    ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CIPHER_PRIVKEY_PEM_Set_Id     ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_CIPHER_PRIVKEY_PEM_Set_Objeto ( unsigned char *bloque, unsigned char *llave, unsigned long tam );




/* Utilidades para los bloques de tipo BLOQUE_CERT_PROPIO */

void            BLOQUE_CERTPROPIO_Nuevo		   ( unsigned char *bloque );
unsigned long   BLOQUE_CERTPROPIO_Get_Tam	   ( unsigned char *bloque );
unsigned char * BLOQUE_CERTPROPIO_Get_Id	   ( unsigned char *bloque );
unsigned char * BLOQUE_CERTPROPIO_Get_Objeto	   ( unsigned char *bloque );
void            BLOQUE_CERTPROPIO_Set_Tam	   ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CERTPROPIO_Set_Id	   ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_CERTPROPIO_Set_Objeto	   ( unsigned char *bloque, unsigned char *cert, unsigned long tam );
char *          BLOQUE_CERTPROPIO_Get_FriendlyName ( unsigned char *bloque );
void		BLOQUE_CERTPROPIO_Set_FriendlyName ( unsigned char *bloque, char *friendlyName );



/* Utilidades para los bloques de tipo BLOQUE_PUTTYKEY */

void            BLOQUE_PUTTYKEY_Nuevo      ( unsigned char *bloque );
unsigned long   BLOQUE_PUTTYKEY_Get_Tam    ( unsigned char *bloque );
unsigned char * BLOQUE_PUTTYKEY_Get_Objeto ( unsigned char *bloque );
void            BLOQUE_PUTTYKEY_Set_Tam    ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_PUTTYKEY_Set_Objeto ( unsigned char *bloque, unsigned char *llave, unsigned long tam );




/* Utilidades para los bloques de tipo BLOQUE_CERT_RAIZ */

void            BLOQUE_CERTRAIZ_Nuevo            ( unsigned char *bloque );
unsigned long   BLOQUE_CERTRAIZ_Get_Tam		   ( unsigned char *bloque );
unsigned char * BLOQUE_CERTRAIZ_Get_Objeto	   ( unsigned char *bloque );
void            BLOQUE_CERTRAIZ_Set_Tam		   ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CERTRAIZ_Set_Objeto	   ( unsigned char *bloque, unsigned char *cert, unsigned long tam );

char *	        BLOQUE_CERTRAIZ_Get_FriendlyName ( unsigned char *bloque );
void		BLOQUE_CERTRAIZ_Set_FriendlyName ( unsigned char *bloque, char *friendlyName );

/* Utilidades para los bloques de tipo BLOQUE_PRIVKEY_BLOB */

void            BLOQUE_PRIVKEYBLOB_Nuevo      ( unsigned char *bloque );
unsigned long   BLOQUE_PRIVKEYBLOB_Get_Tam    ( unsigned char *bloque );
unsigned char * BLOQUE_PRIVKEYBLOB_Get_Id     ( unsigned char *bloque );
unsigned char * BLOQUE_PRIVKEYBLOB_Get_Objeto ( unsigned char *bloque );
void            BLOQUE_PRIVKEYBLOB_Set_Tam    ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_PRIVKEYBLOB_Set_Id     ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_PRIVKEYBLOB_Set_Objeto ( unsigned char *bloque, unsigned char *blob, unsigned long tam );

/* Utilidades para los bloques de tipo BLOQUE_PRIVKEY_BLOB */

void            BLOQUE_CIPHPRIVKEYBLOB_Nuevo         ( unsigned char *bloque );
unsigned long   BLOQUE_CIPHPRIVKEYBLOB_Get_Tam       ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHPRIVKEYBLOB_Get_Id        ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHPRIVKEYBLOB_Get_Objeto    ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHPRIVKEYBLOB_Get_Salt      ( unsigned char *bloque );
unsigned long   BLOQUE_CIPHPRIVKEYBLOB_Get_IterCount ( unsigned char *bloque );
unsigned char * BLOQUE_CIPHPRIVKEYBLOB_Get_Iv        ( unsigned char *bloque );
char *          BLOQUE_CIPHPRIVKEYBLOB_Get_Desc      ( unsigned char *bloque );

void            BLOQUE_CIPHPRIVKEYBLOB_Set_Tam       ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CIPHPRIVKEYBLOB_Set_Id        ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_CIPHPRIVKEYBLOB_Set_Objeto    ( unsigned char *bloque, unsigned char *blob, unsigned long tam );
void            BLOQUE_CIPHPRIVKEYBLOB_Set_IterCount ( unsigned char *bloque, unsigned long iterCount );
void            BLOQUE_CIPHPRIVKEYBLOB_Set_Salt      ( unsigned char *bloque, unsigned char salt[20] );
void			BLOQUE_CIPHPRIVKEYBLOB_Set_Iv        ( unsigned char *bloque, unsigned char iv[20] );
void            BLOQUE_CIPHPRIVKEYBLOB_Set_Desc      ( unsigned char *bloque, char ascii_desc[31] );

/* Utilidades para los bloques de tipo BLOQUE_PUBKEY_BLOB */

void            BLOQUE_PUBKEYBLOB_Nuevo      ( unsigned char *bloque );
unsigned long   BLOQUE_PUBKEYBLOB_Get_Tam    ( unsigned char *bloque );
unsigned char * BLOQUE_PUBKEYBLOB_Get_Id     ( unsigned char *bloque );
unsigned char * BLOQUE_PUBKEYBLOB_Get_Objeto ( unsigned char *bloque );
void            BLOQUE_PUBKEYBLOB_Set_Tam    ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_PUBKEYBLOB_Set_Id     ( unsigned char *bloque, unsigned char id[20] );
void            BLOQUE_PUBKEYBLOB_Set_Objeto ( unsigned char *bloque, unsigned char *blob, unsigned long tam );

/* Utilidades para los bloques de tipo BLOQUE_CERT_OTROS */

void            BLOQUE_CERTOTROS_Nuevo		  ( unsigned char *bloque );
unsigned long   BLOQUE_CERTOTROS_Get_Tam	  ( unsigned char *bloque );
unsigned char * BLOQUE_CERTOTROS_Get_Objeto	  ( unsigned char *bloque );
void            BLOQUE_CERTOTROS_Set_Tam	  ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CERTOTROS_Set_Objeto	  ( unsigned char *bloque, unsigned char *cert, unsigned long tam );
char *		    BLOQUE_CERTOTROS_Get_FriendlyName ( unsigned char *bloque );
void		    BLOQUE_CERTOTROS_Set_FriendlyName ( unsigned char *bloque, char *friendlyName );

/* Utilidades para los bloques de tipo BLOQUE_CERT_INTERMEDIO */

void            BLOQUE_CERTINTERMEDIO_Nuevo            ( unsigned char *bloque );
unsigned long   BLOQUE_CERTINTERMEDIO_Get_Tam	       ( unsigned char *bloque );
unsigned char * BLOQUE_CERTINTERMEDIO_Get_Objeto       ( unsigned char *bloque );
void            BLOQUE_CERTINTERMEDIO_Set_Tam	       ( unsigned char *bloque, unsigned long tam );
void            BLOQUE_CERTINTERMEDIO_Set_Objeto       ( unsigned char *bloque, unsigned char *cert, unsigned long tam );
char *	        BLOQUE_CERTINTERMEDIO_Get_FriendlyName ( unsigned char *bloque );
void	        BLOQUE_CERTINTERMEDIO_Set_FriendlyName ( unsigned char *bloque, char *friendlyName );

/* Códigos de error */

#define ERR_BLOQUE_NO                   0
#define ERR_BLOQUE_SI                   1
#define ERR_BLOQUE_CONTAINER_EXISTE     2
#define ERR_BLOQUE_SIN_ESPACIO          3
#define ERR_BLOQUE_NO_ENCONTRADO        4

#ifdef __cplusplus
}
#endif

#endif