在內核級別的項目,我想使用DES算法,需要使用功能內核項目DES加密
static int des_setkey(void *ctx,const u8 *key,
unsigned int keylen,
u32 *flags)
我想知道的關鍵在於如何傳遞給函數,該函數值來加密數據包要被用作對密鑰,它的一個指針類型,以便將一個地址值
在內核級別的項目,我想使用DES算法,需要使用功能內核項目DES加密
static int des_setkey(void *ctx,const u8 *key,
unsigned int keylen,
u32 *flags)
我想知道的關鍵在於如何傳遞給函數,該函數值來加密數據包要被用作對密鑰,它的一個指針類型,以便將一個地址值
http://lxr.kelp.or.kr/ident?v=2.6.28;i=des_setkey
* Cryptographic API.
*
* s390 implementation of the DES Cipher Algorithm.
*
* Copyright IBM Corp. 2003,2007
* Author(s): Thomas Spatzier
* Jan Glauber ([email protected])
的typeA A = XY;
functionname(typeA * a,typeA b)
- > functionname(& A,A);
crypto_des_check_key(const u8 *key, unsigned int keylen, u32 *flags)
{
u32 n, w;
n = parity[key[0]]; n <<= 4;
n |= parity[key[1]]; n <<= 4;
n |= parity[key[2]]; n <<= 4;
n |= parity[key[3]]; n <<= 4;
n |= parity[key[4]]; n <<= 4;
n |= parity[key[5]]; n <<= 4;
n |= parity[key[6]]; n <<= 4;
n |= parity[key[7]];
w = 0x88888888L;
if ((*flags & CRYPTO_TFM_REQ_WEAK_KEY)
&& !((n - (w >> 3)) & w)) { /* 1 in
- > CRYPTO_TFM_REQ_WEAK_KEY是一個標誌 - >源極/包括/ LINUX/crypto.h
/*
* Transform masks and values (for crt_flags).
*/
#define CRYPTO_TFM_REQ_MASK 0x000fff00
#define CRYPTO_TFM_RES_MASK 0xfff00000
#define CRYPTO_TFM_REQ_WEAK_KEY 0x00000100
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200
#define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400
#define CRYPTO_TFM_RES_WEAK_KEY 0x00100000
#define CRYPTO_TFM_RES_BAD_KEY_LEN 0x00200000
#define CRYPTO_TFM_RES_BAD_KEY_SCHED 0x00400000
#define CRYPTO_TFM_RES_BAD_BLOCK_LEN 0x00800000
#define CRYPTO_TFM_RES_BAD_FLAGS 0x01000000
源/拱/ S390 /加密/ des_s390.c
#define DES_EXPKEY_WORDS 32
typedef unsigned char u8;
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef unsigned long long u64;
typedef signed char s8;
typedef short s16;
typedef int s32;
typedef long long s64;
static int des_setkey(void *ctx, const u8 *key, unsigned int keylen, u32 *flags)
{
return setkey(((struct des_ctx *)ctx)->expkey, key, keylen, flags);
}
struct des_ctx {
u32 expkey[DES_EXPKEY_WORDS];
};
答案需要更具建設性的文字或至少是代碼的評論。 – IanNorton 2010-03-03 20:30:35
看起來是從2.6.16(ISH)Linux內核。後來的內核已經看到加密系統api稍微改寫了。
這個內核這可能幫助: -
這是一個有點困難沒有進一步的背景說。這是一些公開可用的庫的一部分嗎?你有關於這個功能的任何文檔嗎?通常,DES採用56 + 8 = 64位密鑰。 flags參數可能會設置操作模式(可能需要或可能不需要您定義初始化向量)。 – dirkgently 2010-02-06 11:08:08
我可以看到爲什麼你無法找到答案,linux內核已經改變。在內核中根本沒有實際的使用。 – IanNorton 2010-03-03 20:59:37