在OpenSSL中添加自訂密碼編譯演算法

來源:互聯網
上載者:User

標籤:

一、簡介

本文以添加自訂演算法EVP_ssf33為例,介紹在OpenSSL中添加自訂密碼編譯演算法的方法

 

二、步驟

1、修改crypto/object/objects.txt,註冊演算法OID,如下:

rsadsi 3 255    : SSF33     : ssf33

2、進入目錄:crypto/object/,執行如下命令,產生演算法的聲明

perl objects.pl objects.txt obj_mac.num obj_mac.h

3、在crypto/evp/下添加e_ssf33.c,內容如下

#include <stdio.h>#include "cryptlib.h"#ifndef OPENSSL_NO_RC4    #include <openssl/evp.h>    #include <openssl/objects.h>    #include <openssl/rc4.h>        /* FIXME: surely this is available elsewhere? */    #define EVP_SSF33_KEY_SIZE      16        typedef struct    {        RC4_KEY ks; /* working key */    } EVP_SSF33_KEY;        #define data(ctx) ((EVP_SSF33_KEY *)(ctx)->cipher_data)        static int ssf33_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc);        static int ssf33_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl);        static const EVP_CIPHER ssf33_evp_cipher=    {        NID_ssf33,        1,        EVP_SSF33_KEY_SIZE,        0,        EVP_CIPH_VARIABLE_LENGTH,        ssf33_init_key,        ssf33_cipher,        NULL,        sizeof(EVP_SSF33_KEY),        NULL,        NULL,        NULL,        NULL    };        const EVP_CIPHER *EVP_ssf33(void)    {        return(&ssf33_evp_cipher);    }        static int ssf33_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc)    {        RC4_set_key(&data(ctx)->ks,EVP_CIPHER_CTX_key_length(ctx), key);            return 1;    }        static int ssf33_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl)    {        RC4(&data(ctx)->ks,inl,in,out);            return 1;    }#endif
4、修改crypto/evp/evp.h,添加對演算法的聲明,如下
const EVP_CIPHER *EVP_ssf33(void);
5、修改crypto/evp/c_allc.c,在OpenSSL_add_all_ciphers函數中使用EVP_add_cipher註冊加密函數,如下
EVP_add_cipher(EVP_ssf33());

6、修改crypto/evp/Makefile,如下

7、完成

 

參考:http://blog.csdn.net/force_eagle/article/details/794856

在OpenSSL中添加自訂密碼編譯演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.