Linux agrega algoritmos de cifrado personalizados a OpenSSL

  
                

El sistema Linux OpenSSL es un conjunto de sistemas de bibliotecas de contraseñas, por lo que el sistema Linux utilizará OpenSSL para agregar un algoritmo de cifrado a OpenSSL. Este artículo presentará las habilidades de Linux para agregar un algoritmo de cifrado personalizado a OpenSSL.

I. Introducción

Este artículo presenta el algoritmo personalizado EVP_ssf33 como ejemplo para introducir el método de agregar un algoritmo de cifrado personalizado en OpenSSL

II. Pasos

1, modificado cripto /objeto /objects.txt, el algoritmo de registro de OID, de la siguiente manera:

RSADSI 3 255: SSF33: ssf33

2, introduzca el directorio: cripto /objeto /, ejecute el siguiente comando , algoritmo de generación de declaración

Perl objects.pl objects.txt obj_mac.num obj_mac.h

3, añadido en e_ssf33.c crypto /EVP /a, como sigue

#include "stdio.h"

# include y " cryptlib.h y "

#ifndef OPENSSL_NO_RC4

# include "openssl /evp.h"

#include 《openssl /objects.h》

#include 《openssl /rc4.h》

/* FIXME: seguramente esto está disponible en otro lugar? * /

#define EVP_SSF33_KEY_SIZE 16

typedef struct

{

ks RC4_KEY; /* trabajar tecla * /

} EVP_SSF33_KEY;

#define datos (CTX) ((EVP_SSF33_KEY *) (CTX) - "cipher_data)

estática ssf33_init_key int (* EVP_CIPHER_CTX CTX, const char key *, const unsigned char * iv , int enc);

int ssf33_cipher (EVP_CIPHER_CTX * ctx, unsigned char * estática a cabo, unsigned char const * en, unsigned int inl);

const estático EVP_CIPHER ssf33_evp_cipher =

{

NID_ssf33, España

1, España

EVP_SSF33_KEY_SIZE, España

0, España

EVP_CIPH_VARIABLE_LENGTH, España

ssf33_init_key ,

ssf33_cipher,

NULL,

sizeof (EVP_SSF33_KEY),

NULL,

NULL,

NULL,

NULL

};

const EVP_CIPHER * EVP_ssf33 (void)

{

retorno (&ssf33_evp_cipher);

}

static int ssf33_init_key (EVP_CIPHER_CTX * CTX, const unsigned char * clave, const unsigned char * iv, int ENC)

{

RC4_set_key (&datos (CTX) - "ks, EVP_CIPHER_CTX_key_length (CTX), clave);

return 1;

}

static int ssf33_cipher (EVP_CIPHER_CTX * CTX, unsigned char * a cabo, const unsigned char * en, int sin signo INL)

{

RC4 (&datos (CTX) - 》 Ks, inl, in, out);

return 1;

}

#endif Anterior12Siguiente Total 2 Páginas

Copyright © Conocimiento de Windows All Rights Reserved