OpenCores
URL https://opencores.org/ocsvn/nfcc/nfcc/trunk

Subversion Repositories nfcc

[/] [nfcc/] [trunk/] [camellia/] [camellia.c] - Rev 2

Compare with Previous | Blame | View Log

#include <stdio.h>
#include <string.h>
#include "genpat.h"
 
char *inttostr(entier)
int entier;
 {
 char *str;
 str = (char *) mbkalloc (32 * sizeof (char));
 sprintf (str, "%d",entier);
 return(str);
 }
  /*------------------------------*/
  /* end of the description       */
  /*------------------------------*/
 
main (int argc, char *argv[])
{
int i,c;
int Nk,ks,ps;
char sNk[4];
FILE *f1, *f2;
char *fname1 = "key.lst";
char *fname2 = "pt.lst";
char  key[0xff][0x4f];
char  fpt[0xff][0x4f];
 
Nk = 4;
/* remember argc start from 1 not zero and command line is the first array */
if (argc > 1 ) { 
  if (argc == 4) {
    fname1 = argv[3]; /* key */
    fname2 = argv[2]; /* plain text*/
    sscanf(argv[1], "%d", &Nk);
    printf("Using Nk(0x%x) plain-text (%s) key (%s)\n", Nk, fname2, fname1);
  } else {
    printf("Usage %s: Nk plain-text key\n", argv[0]);
    return 0;
  }
}
 
sprintf(sNk, "0x%x", Nk);
 
if(fname1 && (f1 = fopen(fname1, "rt"))) {
  i = 0;
  while(fgets(key[i],sizeof(key[i]),f1) != NULL) {
    c = strlen(key[i]);
    if(key[i][c-1] == '\n') key[i][c-1] = '\0';
    i++;
  }
  fclose (f1);
} else {
  fclose (f1);
}
 
ks = i;
 
if(fname2 && (f2 = fopen(fname2, "rt"))) {
  i = 0;
  while(fgets(fpt[i],sizeof(fpt[i]),f2) != NULL) {
    c = strlen(fpt[i]);
    if(fpt[i][c-1] == '\n') fpt[i][c-1] = '\0';
    i++;
  }
  fclose (f2);
} else {
  fclose (f2);
}
 
ps = i;
//printf("ps: %d\n",ps);
 
DEF_GENPAT("camellia");
SETTUNIT("ns");
 
/* interface */
DECLAR ("clk", ":1", "B", IN , ""           , "" );
DECLAR ("rst", ":1", "B", IN , ""           , "" );
DECLAR ("ldpt",":1", "B", IN , ""           , "" );
DECLAR ( "pt", ":2", "X", IN , "63 downto 0", "" );
//DECLAR ("cipher_inst_ildpt", ":1", "B", SIGNAL , ""           , "" );
//DECLAR ("cipher_inst_ipt"  , ":1", "X", SIGNAL , "31 downto 0", "" );
DECLAR ( "Nk", ":2", "X", IN , " 3 downto 0", "" );
//DECLAR ( "st", ":2", "X", OUT, " 7 downto 0", "" );
DECLAR ("key", ":2", "X", IN , "63 downto 0", "" );
DECLAR ( "ct", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "rc_prb", ":2", "X", OUT, " 2 downto 0", "" );
//DECLAR ( "l_prb", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "r_prb", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "fla_prb", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "z_prb", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "il_prb", ":2", "X", OUT, "63 downto 0", "" );
//DECLAR ( "ir_prb", ":2", "X", OUT, "63 downto 0", "" );
DECLAR (  "v", ":1", "B", OUT, ""           , "" );
//DECLAR ("cipher_inst_rnd", ":1", "X", SIGNAL , "  3 downto 0"           , "" );
//DECLAR ("cipher_inst_swp", ":1", "B", SIGNAL , ""           , "" );
//DECLAR ("ct2b_1", ":1", "B", SIGNAL , ""           , "" );
//DECLAR ("ct2b_0", ":1", "B", SIGNAL , ""           , "" );
//DECLAR ("cipher_inst_ireg1", ":1", "X", SIGNAL , "127 downto 0"           , "" );
//DECLAR ("cipher_inst_ireg2", ":1", "X", SIGNAL , "127 downto 0"           , "" );
//DECLAR ("cipher_inst_swp1", ":1", "B", SIGNAL , ""           , "" );
DECLAR ("vss", ":1", "B", IN , ""           , "" );
DECLAR ("vdd", ":1", "B", IN , ""           , "" );
 
AFFECT ("0", "vss", "0b0");
AFFECT ("0", "vdd", "0b1");
 
AFFECT (  "0",  "pt", "0x0000000000000000");
AFFECT (  "0", "key", "0x0000000000000000");
AFFECT (  "0", "rst", "0b1");
AFFECT (  "0","ldpt", "0b0");
AFFECT (  "0",  "Nk",  sNk );
AFFECT (  "0", "clk", "0b0");
AFFECT ("+50", "clk", "0b1");
AFFECT ("+50", "clk", "0b0");
AFFECT ( "+0", "rst", "0b0");
AFFECT ( "+0","ldpt", "0b1");
 
//if(Nk==0x4)
//AFFECT ( "+0",  "pt", "0x3243f6a8");
 
for (i=0; i < ps; i++)
{
  AFFECT ( "+0",  "pt", fpt[i]);
  AFFECT ("+50", "clk", "0b1" );
  AFFECT ("+50", "clk", "0b0" );
  AFFECT ( "+0", "key", key[i]);
 
//if ((i==1) && (Nk==0x4))
//AFFECT ( "+0",  "pt", "0x885a308d");
//if ((i==2) && (Nk==0x4))
//AFFECT ( "+0",  "pt", "0x313198a2");
//if ((i==3) && (Nk==0x4))
//AFFECT ( "+0",  "pt", "0xe0370734");
 
}
 
AFFECT ( "+0","ldpt", "0b0");
AFFECT ( "+0",  "pt", "0x0000000000000000");
 
for (; i < ks; i++)
{
  AFFECT ("+50", "clk", "0b1" );
  AFFECT ("+50", "clk", "0b0" );
  AFFECT ( "+0", "key", key[i]);
}
 
AFFECT ("+50", "clk", "0b1" );
AFFECT ("+50", "clk", "0b0" );
AFFECT ( "+0", "key", "0x0000000000000000");
 
for (; i < 0x2f; i++)
{
  AFFECT ("+50", "clk", "0b1" );
  AFFECT ("+50", "clk", "0b0" );
}
 
AFFECT ("+50", "clk", "0b1");
 
SAV_GENPAT ();
}
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.