コード例 #1
0
static void twofish_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
{
	struct twofish_ctx *ctx = crypto_tfm_ctx(tfm);
	const __le32 *src = (const __le32 *)in;
	__le32 *dst = (__le32 *)out;
  
	/*                                     */
	u32 a, b, c, d;
	
	/*                                         */
	u32 x, y;
	
	/*                              */
	INPACK (0, c, 4);
	INPACK (1, d, 5);
	INPACK (2, a, 6);
	INPACK (3, b, 7);
	
	/*                            */
	DECCYCLE (7);
	DECCYCLE (6);
	DECCYCLE (5);
	DECCYCLE (4);
	DECCYCLE (3);
	DECCYCLE (2);
	DECCYCLE (1);
	DECCYCLE (0);

	/*                                 */
	OUTUNPACK (0, a, 0);
	OUTUNPACK (1, b, 1);
	OUTUNPACK (2, c, 2);
	OUTUNPACK (3, d, 3);

}
コード例 #2
0
ファイル: twofish.c プロジェクト: 274914765/C
/* Decrypt one block.  in and out may be the same. */
static void twofish_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
{
    struct twofish_ctx *ctx = crypto_tfm_ctx(tfm);
    const __le32 *src = (const __le32 *)in;
    __le32 *dst = (__le32 *)out;
  
    /* The four 32-bit chunks of the text. */
    u32 a, b, c, d;
    
    /* Temporaries used by the round function. */
    u32 x, y;
    
    /* Input whitening and packing. */
    INPACK (0, c, 4);
    INPACK (1, d, 5);
    INPACK (2, a, 6);
    INPACK (3, b, 7);
    
    /* Encryption Feistel cycles. */
    DECCYCLE (7);
    DECCYCLE (6);
    DECCYCLE (5);
    DECCYCLE (4);
    DECCYCLE (3);
    DECCYCLE (2);
    DECCYCLE (1);
    DECCYCLE (0);

    /* Output whitening and unpacking. */
    OUTUNPACK (0, a, 0);
    OUTUNPACK (1, b, 1);
    OUTUNPACK (2, c, 2);
    OUTUNPACK (3, d, 3);

}
コード例 #3
0
ファイル: twofish.c プロジェクト: leonsh/eldk30ppc
/* Encrypt one block.  in and out may be the same. */
static void twofish_encrypt(void *cx, u8 *out, const u8 *in)
{
	struct twofish_ctx *ctx = cx;

	/* The four 32-bit chunks of the text. */
	u32 a, b, c, d;
	
	/* Temporaries used by the round function. */
	u32 x, y;

	/* Input whitening and packing. */
	INPACK (0, a, 0);
	INPACK (1, b, 1);
	INPACK (2, c, 2);
	INPACK (3, d, 3);
	
	/* Encryption Feistel cycles. */
	ENCCYCLE (0);
	ENCCYCLE (1);
	ENCCYCLE (2);
	ENCCYCLE (3);
	ENCCYCLE (4);
	ENCCYCLE (5);
	ENCCYCLE (6);
	ENCCYCLE (7);
	
	/* Output whitening and unpacking. */
	OUTUNPACK (0, c, 4);
	OUTUNPACK (1, d, 5);
	OUTUNPACK (2, a, 6);
	OUTUNPACK (3, b, 7);
	
}
コード例 #4
0
ファイル: twofish.c プロジェクト: vonwenm/FreeVMS
static void
do_twofish_decrypt (const TWOFISH_context *ctx, byte *out, const byte *in)
{
  /* The four 32-bit chunks of the text. */
  u32 a, b, c, d;

  /* Temporaries used by the round function. */
  u32 x, y;

  /* Input whitening and packing. */
  INPACK (0, c, 4);
  INPACK (1, d, 5);
  INPACK (2, a, 6);
  INPACK (3, b, 7);

  /* Encryption Feistel cycles. */
  DECCYCLE (7);
  DECCYCLE (6);
  DECCYCLE (5);
  DECCYCLE (4);
  DECCYCLE (3);
  DECCYCLE (2);
  DECCYCLE (1);
  DECCYCLE (0);

  /* Output whitening and unpacking. */
  OUTUNPACK (0, a, 0);
  OUTUNPACK (1, b, 1);
  OUTUNPACK (2, c, 2);
  OUTUNPACK (3, d, 3);
}
コード例 #5
0
ファイル: twofish.c プロジェクト: 1309578252/Openswan
int twofish_encrypt (TWOFISH_context *ctx,
			    const u8 *in, u8 *out)
{
	/* The four 32-bit chunks of the text. */
	u32 a, b, c, d;
	
	/* Temporaries used by the round function. */
	u32 x, y;
	
	/* Input whitening and packing. */
	INPACK (0, a, 0);
	INPACK (1, b, 1);
	INPACK (2, c, 2);
	INPACK (3, d, 3);
	
	/* Encryption Feistel cycles. */
	ENCCYCLE (0);
	ENCCYCLE (1);
	ENCCYCLE (2);
	ENCCYCLE (3);
	ENCCYCLE (4);
	ENCCYCLE (5);
	ENCCYCLE (6);
	ENCCYCLE (7);
	
	/* Output whitening and unpacking. */
	OUTUNPACK (0, c, 4);
	OUTUNPACK (1, d, 5);
	OUTUNPACK (2, a, 6);
	OUTUNPACK (3, b, 7);
	
	return 0;
}