You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by br...@apache.org on 2018/11/07 23:50:19 UTC

[42/51] [partial] incubator-milagro-crypto git commit: update code

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_mpinfullSingle.c
----------------------------------------------------------------------
diff --git a/c/tests/test_mpinfullSingle.c b/c/tests/test_mpinfullSingle.c
deleted file mode 100755
index c2a657d..0000000
--- a/c/tests/test_mpinfullSingle.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* Test M-Pin Full Single pass */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "mpin.h"
-
-int main()
-{
-  int i,PIN1,PIN2,rtn,err;
-
-  char id[256];
-  octet ID = {0,sizeof(id),id};
-
-  char x[PGS],y1[PGS],y2[PGS];
-  octet X={sizeof(x), sizeof(x),x};
-  octet Y1={sizeof(y1),sizeof(y1),y1};
-  octet Y2={sizeof(y2),sizeof(y2),y2};
-
-  /* Master secret shares */
-  char ms1[PGS], ms2[PGS];
-  octet MS1={sizeof(ms1),sizeof(ms1),ms1};
-  octet MS2={sizeof(ms2),sizeof(ms2),ms2};
-
-  /* Hash values of client ID */
-  char hcid[32];
-  octet HCID={sizeof(hcid),sizeof(hcid), hcid};
-
-  /* Hash values of messages */
-  char hm[HASH_BYTES];
-  octet HM={sizeof(hm),sizeof(hm), hm};
-
-  /* Client secret and shares */
-  char cs1[2*PFS+1], cs2[2*PFS+1], sec[2*PFS+1];
-  octet SEC={sizeof(sec),sizeof(sec),sec};
-  octet CS1={sizeof(cs1),sizeof(cs1), cs1};
-  octet CS2={sizeof(cs2),sizeof(cs2), cs2};
-
-  /* Server secret and shares */
-  char ss1[4*PFS], ss2[4*PFS], serverSecret[4*PFS];
-  octet ServerSecret={sizeof(serverSecret),sizeof(serverSecret),serverSecret};
-  octet SS1={sizeof(ss1),sizeof(ss1),ss1};
-  octet SS2={sizeof(ss2),sizeof(ss2),ss2};
-
-  /* Time Permit and shares */
-  char tp1[2*PFS+1], tp2[2*PFS+1], tp[2*PFS+1];
-  octet TP={sizeof(tp),sizeof(tp),tp};
-  octet TP1={sizeof(tp1),sizeof(tp1),tp1};
-  octet TP2={sizeof(tp2),sizeof(tp2),tp2};
-
-  /* Token stored on device */
-  char token[2*PFS+1];
-  octet TOKEN={sizeof(token),sizeof(token),token};
-
-  /* Precomputed values stored on device */
-  char g1[12*PFS],g2[12*PFS];
-  octet G1={0,sizeof(g1),g1};
-  octet G2={0,sizeof(g2),g2};
-
-  char ut[2*PFS+1],u[2*PFS+1];
-  octet UT={sizeof(ut),sizeof(ut),ut};
-  octet U={sizeof(u),sizeof(u),u};
-
-  char hid[2*PFS+1],htid[2*PFS+1];
-  octet HID={0,sizeof(hid),hid};
-  octet HTID={0,sizeof(htid),htid};
-
-  char e[12*PFS], f[12*PFS];
-  octet E={sizeof(e),sizeof(e),e};
-  octet F={sizeof(f),sizeof(f),f};
-
-  char r[PGS],z[2*PFS+1],w[PGS],t[2*PFS+1];
-  char ck[PAS],sk[PAS];
-  octet R={0,sizeof(r),r};
-  octet Z={0,sizeof(z),z};
-  octet W={0,sizeof(w),w};
-  octet T={0,sizeof(t),t};
-  octet SK={0,sizeof(sk),sk};
-  octet CK={0,sizeof(ck),ck};
-
-  int TimeValue = 0;
-
-  PIN1 = 1234;
-  PIN2 = 1234;
-
-  /* Assign the End-User an ID */
-  char* user = "testuser@miracl.com";
-  OCT_jstring(&ID,user);
-  printf("CLIENT: ID %s\n", user);
-
-  int date = 0;
-  char seed[100] = {0};
-  octet SEED = {0,sizeof(seed),seed};
-  csprng RNG;
-
-  /* unrandom seed value! */
-  SEED.len=100;
-  for (i=0;i<100;i++) SEED.val[i]=i+1;
-
-  /* initialise random number generator */
-  MPIN_CREATE_CSPRNG(&RNG,&SEED);
-
-  /* Hash ID */
-  MPIN_HASH_ID(&ID,&HCID);
-  OCT_output(&HCID);
-
-  /* When set only send hashed IDs to server */
-  octet *pID;
-#ifdef USE_ANONYMOUS
-  pID = &HCID;
-#else
-  pID = &ID;
-#endif
-
-  /* Generate Client master secret for MIRACL and Customer */
-  rtn = MPIN_RANDOM_GENERATE(&RNG,&MS1);
-  if (rtn != 0) {
-      printf("MPIN_RANDOM_GENERATE(&RNG,&MS1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = MPIN_RANDOM_GENERATE(&RNG,&MS2);
-  if (rtn != 0) {
-      printf("MPIN_RANDOM_GENERATE(&RNG,&MS2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("MASTER SECRET MIRACL:= 0x");
-  OCT_output(&MS1);
-  printf("MASTER SECRET CUSTOMER:= 0x");
-  OCT_output(&MS2);
-
-  /* Generate server secret shares */
-  rtn = MPIN_GET_SERVER_SECRET(&MS1,&SS1);
-  if (rtn != 0) {
-      printf("MPIN_GET_SERVER_SECRET(&MS1,&SS1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = MPIN_GET_SERVER_SECRET(&MS2,&SS2);
-  if (rtn != 0) {
-      printf("MPIN_GET_SERVER_SECRET(&MS2,&SS2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("SS1 = 0x");
-  OCT_output(&SS1);
-  printf("SS2 = 0x");
-  OCT_output(&SS2);
-
-  /* Combine server secret share */
-  rtn = MPIN_RECOMBINE_G2(&SS1, &SS2, &ServerSecret);
-  if (rtn != 0) {
-      printf("MPIN_RECOMBINE_G2(&SS1, &SS2, &ServerSecret) Error %d\n", rtn);
-      return 1;
-  }
-  printf("ServerSecret = 0x");
-  OCT_output(&ServerSecret);
-
-  /* Generate client secret shares */
-  rtn = MPIN_GET_CLIENT_SECRET(&MS1,&HCID,&CS1);
-  if (rtn != 0) {
-      printf("MPIN_GET_CLIENT_SECRET(&MS1,&HCID,&CS1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = MPIN_GET_CLIENT_SECRET(&MS2,&HCID,&CS2);
-  if (rtn != 0) {
-      printf("MPIN_GET_CLIENT_SECRET(&MS2,&HCID,&CS2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("CS1 = 0x");
-  OCT_output(&CS1);
-  printf("CS2 = 0x");
-  OCT_output(&CS2);
-
-  /* Combine client secret shares : TOKEN is the full client secret */
-  rtn = MPIN_RECOMBINE_G1(&CS1, &CS2, &TOKEN);
-  if (rtn != 0) {
-      printf("MPIN_RECOMBINE_G1(&CS1, &CS2, &TOKEN) Error %d\n", rtn);
-      return 1;
-  }
-  printf("Client Secret = 0x");
-  OCT_output(&TOKEN);
-
-  /* Generate Time Permit shares */
-  date = MPIN_today();
-  printf("Date %d \n", date);
-  rtn = MPIN_GET_CLIENT_PERMIT(date,&MS1,&HCID,&TP1);
-  if (rtn != 0) {
-      printf("MPIN_GET_CLIENT_PERMIT(date,&MS1,&HCID,&TP1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = MPIN_GET_CLIENT_PERMIT(date,&MS2,&HCID,&TP2);
-  if (rtn != 0) {
-      printf("MPIN_GET_CLIENT_PERMIT(date,&MS2,&HCID,&TP2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TP1 = 0x");
-  OCT_output(&TP1);
-  printf("TP2 = 0x");
-  OCT_output(&TP2);
-
-  /* Combine Time Permit shares */
-  rtn = MPIN_RECOMBINE_G1(&TP1, &TP2, &TP);
-  if (rtn != 0) {
-      printf("MPIN_RECOMBINE_G1(&TP1, &TP2, &TP) Error %d\n", rtn);
-      return 1;
-  }
-  printf("Time Permit = 0x");
-  OCT_output(&TP);
-
-  /* This encoding makes Time permit look random */
-  if (MPIN_ENCODING(&RNG,&TP)!=0) printf("Encoding error\n");
-  printf("Encoded Time Permit= "); OCT_output(&TP);
-  if (MPIN_DECODING(&TP)!=0) printf("Decoding error\n");
-  printf("Decoded Time Permit= "); OCT_output(&TP);
-
-  /* Client extracts PIN1 from secret to create Token */
-  rtn = MPIN_EXTRACT_PIN(&ID, PIN1, &TOKEN);
-  if (rtn != 0) {
-      printf("MPIN_EXTRACT_PIN( &ID, PIN, &TOKEN) Error %d\n", rtn);
-      return 1;
-  }
-  printf("Token = 0x");
-  OCT_output(&TOKEN);
-
-  /* Client precomputation */
-  MPIN_PRECOMPUTE(&TOKEN,&HCID,&G1,&G2);
-
-  /* Client  */
-  TimeValue = MPIN_GET_TIME();
-  printf("TimeValue %d \n", TimeValue);
-  rtn = MPIN_CLIENT(date,&ID,&RNG,&X,PIN2,&TOKEN,&SEC,NULL,&UT,&TP,NULL,TimeValue,&Y1);
-  if (rtn != 0) {
-      printf("MPIN_CLIENT ERROR %d\n", rtn);
-      return 1;
-  }
-  printf("Y1 = 0x");
-  OCT_output(&Y1);
-  printf("V = 0x");
-  OCT_output(&SEC);
-
-  /* Client sends Z=r.ID to Server */
-  MPIN_GET_G1_MULTIPLE(&RNG,1,&R,&HCID,&Z);
-
-  /* Server  */
-  rtn = MPIN_SERVER(date,&HID,&HTID,&Y2,&ServerSecret,NULL,&UT,&SEC,&E,&F,pID,NULL,TimeValue);
-
-  printf("Y2 = 0x");
-  OCT_output(&Y2);
-  if (rtn != 0) {
-      printf("FAILURE Invalid Token Error Code %d\n", rtn);
-      return 1;
-  } else {
-      printf("SUCCESS Error Code %d\n", rtn);
-  }
-
-  /* Server sends T=w.ID to client */
-  MPIN_GET_G1_MULTIPLE(&RNG,0,&W,&HTID,&T);
-  printf("T = 0x");
-  OCT_output(&T);
-
-  MPIN_HASH_ALL(&HCID,NULL,&UT,&SEC,&Y1,&Z,&T,&HM);  
-  MPIN_CLIENT_KEY(&G1,&G2,PIN2,&R,&X,&HM,&T,&CK);      
-  printf("Client Key = "); 
-  OCT_output(&CK);
-
-  MPIN_HASH_ALL(&HCID,NULL,&UT,&SEC,&Y2,&Z,&T,&HM);
-  MPIN_SERVER_KEY(&Z,&ServerSecret,&W,&HM,&HID,NULL,&UT,&SK);
-  printf("Server Key = "); 
-  OCT_output(&SK);
-
-  if (!OCT_comp(&CK,&SK)) {
-      printf("FAILURE Keys are different\n");
-      return 1;
-  }
-
-  printf("SUCCESS\n");
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_mpinfull_random.c
----------------------------------------------------------------------
diff --git a/c/tests/test_mpinfull_random.c b/c/tests/test_mpinfull_random.c
deleted file mode 100755
index 1638464..0000000
--- a/c/tests/test_mpinfull_random.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* Test good token and correct PIN with D-TA */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "config.h"
-#include "mpin.h"
-
-// Define PIN range:
-#define MAX_RANGE 10000
-
-void rand_str(char *dest, size_t length,csprng *RNG) {
-  BIG r;
-  char charset[] = "0123456789@.*"
-                   "abcdefghijklmnopqrstuvwxyz"
-                   "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-  while (length-- > 0) {
-    BIG_random(r,RNG);
-    size_t index = r[0] % (sizeof charset);
-    *dest++ = charset[index];
-  }
-  *dest = '\0';
-}
-
-int main()
-{
-  int i,PIN1,PIN2,rtn,err,iter;
-
-  char id[256];
-  octet ID = {0,sizeof(id),id};
-
-  char x[PGS],y[PGS];
-  octet X={sizeof(x), sizeof(x),x};
-  octet Y={sizeof(y),sizeof(y),y};
-
-  /* Master secret shares */
-  char ms1[PGS], ms2[PGS];
-  octet MS1={sizeof(ms1),sizeof(ms1),ms1};
-  octet MS2={sizeof(ms2),sizeof(ms2),ms2};
-
-  /* Hash values of client ID */
-  char hcid[HASH_BYTES];
-  octet HCID={sizeof(hcid),sizeof(hcid), hcid};
-  char hsid[HASH_BYTES];
-  octet HSID={sizeof(hsid),sizeof(hsid), hsid};
-
-  /* Hash values of messages */
-  char hm[HASH_BYTES];
-  octet HM={sizeof(hm),sizeof(hm), hm};
-
-  /* Client secret and shares */
-  char cs1[2*PFS+1], cs2[2*PFS+1], sec[2*PFS+1];
-  octet SEC={sizeof(sec),sizeof(sec),sec};
-  octet CS1={sizeof(cs1),sizeof(cs1), cs1};
-  octet CS2={sizeof(cs2),sizeof(cs2), cs2};
-
-  /* Server secret and shares */
-  char ss1[4*PFS], ss2[4*PFS], serverSecret[4*PFS];
-  octet ServerSecret={sizeof(serverSecret),sizeof(serverSecret),serverSecret};
-  octet SS1={sizeof(ss1),sizeof(ss1),ss1};
-  octet SS2={sizeof(ss2),sizeof(ss2),ss2};
-
-  /* Time Permit and shares */
-  char tp1[2*PFS+1], tp2[2*PFS+1], tp[2*PFS+1];
-  octet TP={sizeof(tp),sizeof(tp),tp};
-  octet TP1={sizeof(tp1),sizeof(tp1),tp1};
-  octet TP2={sizeof(tp2),sizeof(tp2),tp2};
-
-  /* Token stored on computer */
-  char token[2*PFS+1];
-  octet TOKEN={sizeof(token),sizeof(token),token};
-
-  /* Precomputed values stored on device */
-  char g1[12*PFS],g2[12*PFS];
-  octet G1={0,sizeof(g1),g1};
-  octet G2={0,sizeof(g2),g2};
-
-  char ut[2*PFS+1],u[2*PFS+1];
-  octet UT={sizeof(ut),sizeof(ut),ut};
-  octet U={sizeof(u),sizeof(u),u};
-
-  char hid[2*PFS+1],htid[2*PFS+1];
-  octet HID={0,sizeof(hid),hid};
-  octet HTID={0,sizeof(htid),htid};
-
-  char e[12*PFS], f[12*PFS];
-  octet E={sizeof(e),sizeof(e),e};
-  octet F={sizeof(f),sizeof(f),f};
-
-  char r[PGS],z[2*PFS+1],w[PGS],t[2*PFS+1];
-  char ck[PAS],sk[PAS];
-  octet R={0,sizeof(r),r};
-  octet Z={0,sizeof(z),z};
-  octet W={0,sizeof(w),w};
-  octet T={0,sizeof(t),t};
-  octet SK={0,sizeof(sk),sk};
-  octet CK={0,sizeof(ck),ck};
-
-  octet *pID;
-
-  int date = 0;
-
-  unsigned long ran;
-  int byte_count = 32;
-  FILE *fp;
-  char seed[32] = {0};
-  octet SEED = {sizeof(seed),sizeof(seed),seed};
-  csprng RNG;
-#ifdef __linux__
-  fp = fopen("/dev/urandom", "r");
-  fread(&seed, 1, byte_count, fp);
-  fclose(fp);
-#else
-  /* non random seed value! */
-  time((time_t *)&ran);
-  SEED.val[0]=ran;
-  SEED.val[1]=ran>>8;
-  SEED.val[2]=ran>>16;
-  SEED.val[3]=ran>>24;
-  for (i=4;i<byte_count;i++) SEED.val[i]=i+1;
-#endif
-  printf("SEED 0x");
-  OCT_output(&SEED);
-
-  /* initialise random number generator */
-  MPIN_CREATE_CSPRNG(&RNG,&SEED);
-
-  for(iter=1; iter<nRandomTests+1; iter++)
-    {
-      /* Generate Client master secret for MIRACL and Customer */
-      rtn = MPIN_RANDOM_GENERATE(&RNG,&MS1);
-      if (rtn != 0) {
-          printf("MPIN_RANDOM_GENERATE(&RNG,&MS1) Error %d\n", rtn);
-          return 1;
-      }
-      rtn = MPIN_RANDOM_GENERATE(&RNG,&MS2);
-      if (rtn != 0) {
-          printf("MPIN_RANDOM_GENERATE(&RNG,&MS2) Error %d\n", rtn);
-          return 1;
-      }
-      printf("MASTER SECRET MIRACL:= 0x");
-      OCT_output(&MS1);
-      printf("MASTER SECRET CUSTOMER:= 0x");
-      OCT_output(&MS2);
-
-      /* Generate server secret shares */
-      rtn = MPIN_GET_SERVER_SECRET(&MS1,&SS1);
-      if (rtn != 0) {
-          printf("MPIN_GET_SERVER_SECRET(&MS1,&SS1) Error %d\n", rtn);
-          return 1;
-      }
-      rtn = MPIN_GET_SERVER_SECRET(&MS2,&SS2);
-      if (rtn != 0) {
-          printf("MPIN_GET_SERVER_SECRET(&MS2,&SS2) Error %d\n", rtn);
-          return 1;
-      }
-      printf("SS1 = 0x");
-      OCT_output(&SS1);
-      printf("SS2 = 0x");
-      OCT_output(&SS2);
-
-      /* Combine server secret share */
-      rtn = MPIN_RECOMBINE_G2(&SS1, &SS2, &ServerSecret);
-      if (rtn != 0) {
-          printf("MPIN_RECOMBINE_G2(&SS1, &SS2, &ServerSecret) Error %d\n", rtn);
-          return 1;
-      }
-      printf("ServerSecret = 0x");
-      OCT_output(&ServerSecret);
-
-      /* Assign the End-User an ID */
-      rand_str(id,256,&RNG);
-      OCT_jstring(&ID,id);
-      printf("CLIENT: ID %s\n", id);
-
-      srand(time(NULL));
-      PIN1 = rand()%MAX_RANGE; // Get random between 0 and MAX_RANGE
-      PIN2 = PIN1;
-      printf("PIN1 %d PIN2 %d\n", PIN1, PIN2);
-
-      /* Hash ID */
-      MPIN_HASH_ID(&ID,&HCID);
-      OCT_output(&HCID);
-
-      /* When set only send hashed IDs to server */
-#ifdef USE_ANONYMOUS
-      pID = &HCID;
-#else
-      pID = &ID;
-#endif
-
-      /* Generate client secret shares */
-      rtn = MPIN_GET_CLIENT_SECRET(&MS1,&HCID,&CS1);
-      if (rtn != 0) {
-          printf("MPIN_GET_CLIENT_SECRET(&MS1,&HCID,&CS1) Error %d\n", rtn);
-          return 1;
-      }
-      rtn = MPIN_GET_CLIENT_SECRET(&MS2,&HCID,&CS2);
-      if (rtn != 0) {
-          printf("MPIN_GET_CLIENT_SECRET(&MS2,&HCID,&CS2) Error %d\n", rtn);
-          return 1;
-      }
-      printf("CS1 = 0x");
-      OCT_output(&CS1);
-      printf("CS2 = 0x");
-      OCT_output(&CS2);
-
-      /* Combine client secret shares : TOKEN is the full client secret */
-      rtn = MPIN_RECOMBINE_G1(&CS1, &CS2, &TOKEN);
-      if (rtn != 0) {
-          printf("MPIN_RECOMBINE_G1(&CS1, &CS2, &TOKEN) Error %d\n", rtn);
-          return 1;
-      }
-      printf("Client Secret = 0x");
-      OCT_output(&TOKEN);
-
-      /* Generate Time Permit shares */
-      date = MPIN_today();
-      printf("Date %d \n", date);
-      rtn = MPIN_GET_CLIENT_PERMIT(date,&MS1,&HCID,&TP1);
-      if (rtn != 0) {
-          printf("MPIN_GET_CLIENT_PERMIT(date,&MS1,&HCID,&TP1) Error %d\n", rtn);
-          return 1;
-      }
-      rtn = MPIN_GET_CLIENT_PERMIT(date,&MS2,&HCID,&TP2);
-      if (rtn != 0) {
-          printf("MPIN_GET_CLIENT_PERMIT(date,&MS2,&HCID,&TP2) Error %d\n", rtn);
-          return 1;
-      }
-      printf("TP1 = 0x");
-      OCT_output(&TP1);
-      printf("TP2 = 0x");
-      OCT_output(&TP2);
-
-      /* Combine Time Permit shares */
-      rtn = MPIN_RECOMBINE_G1(&TP1, &TP2, &TP);
-      if (rtn != 0) {
-          printf("MPIN_RECOMBINE_G1(&TP1, &TP2, &TP) Error %d\n", rtn);
-          return 1;
-      }
-      printf("Time Permit = 0x");
-      OCT_output(&TP);
-
-      /* This encoding makes Time permit look random */
-      if (MPIN_ENCODING(&RNG,&TP)!=0) printf("Encoding error\n");
-      printf("Encoded Time Permit= "); OCT_output(&TP);
-      if (MPIN_DECODING(&TP)!=0) printf("Decoding error\n");
-      printf("Decoded Time Permit= "); OCT_output(&TP);
-
-      /* Client extracts PIN1 from secret to create Token */
-      rtn = MPIN_EXTRACT_PIN(&ID, PIN1, &TOKEN);
-      if (rtn != 0) {
-          printf("MPIN_EXTRACT_PIN( &ID, PIN, &TOKEN) Error %d\n", rtn);
-          return 1;
-      }
-      printf("Token = 0x");
-      OCT_output(&TOKEN);
-
-      /* Client precomputation */
-      MPIN_PRECOMPUTE(&TOKEN,&HCID,&G1,&G2);
-
-      /* Client first pass */
-      rtn = MPIN_CLIENT_1(date,&ID,&RNG,&X,PIN2,&TOKEN,&SEC,&U,&UT,&TP);
-      if (rtn != 0) {
-          printf("MPIN_CLIENT_1 ERROR %d\n", rtn);
-          return 1;
-      }
-
-      /* Client sends Z=r.ID to Server */
-      MPIN_GET_G1_MULTIPLE(&RNG,1,&R,&HCID,&Z);
-
-      /* Server calculates H(ID) and H(T|H(ID)) (if time permits enabled), and maps them to points on the curve HID and HTID resp. */
-      MPIN_SERVER_1(date,pID,&HID,&HTID);
-
-      /* Server generates Random number Y and sends it to Client */
-      rtn = MPIN_RANDOM_GENERATE(&RNG,&Y);
-      if (rtn != 0) {
-          printf("MPIN_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-          return 1;
-      }
-      printf("Y = 0x");
-      OCT_output(&Y);
-
-      /* Server sends T=w.ID to client */
-      MPIN_GET_G1_MULTIPLE(&RNG,0,&W,&HTID,&T);
-      printf("T = 0x");
-      OCT_output(&T);
-
-      /* Client second pass */
-      rtn = MPIN_CLIENT_2(&X,&Y,&SEC);
-      if (rtn != 0) {
-        printf("MPIN_CLIENT_2(&X,&Y,&SEC) Error %d\n", rtn);
-      }
-      printf("V = 0x");
-      OCT_output(&SEC);
-
-      /* Server second pass */
-      rtn = MPIN_SERVER_2(date,&HID,&HTID,&Y,&ServerSecret,&U,&UT,&SEC,&E,&F);
-      if (rtn != 0) {
-        err=MPIN_KANGAROO(&E,&F);
-        if (err==0) {
-          printf("FAILURE Invalid Token Error Code %d\n", rtn);
-        } else {
-          printf("FAILURE PIN Error %d, Error Code %d\n",err, rtn);
-        }
-      }
-
-      MPIN_HASH_ALL(&HCID,&U,&UT,&SEC,&Y,&Z,&T,&HM);  
-      MPIN_CLIENT_KEY(&G1,&G2,PIN2,&R,&X,&HM,&T,&CK);      
-      printf("Client Key = "); 
-      OCT_output(&CK);
-
-      /* Server will use the hashed ID if anonymous connection required.
-      MPIN_HASH_ID(&ID,&HSID);
-      MPIN_HASH_ALL(&HSID,NULL,&UT,&SEC,&Y,&Z,&T,&HM);
-      */
-      MPIN_SERVER_KEY(&Z,&ServerSecret,&W,&HM,&HID,NULL,&UT,&SK);
-      printf("Server Key = "); 
-      OCT_output(&SK);
-
-      if (!OCT_comp(&CK,&SK)) {
-          printf("Iteration %d FAILURE keys are different\n", iter);
-          return 1;
-      } else {
-          printf("Iteration %d SUCCESS\n\n", iter);
-      }
-    }
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_rsa.c
----------------------------------------------------------------------
diff --git a/c/tests/test_rsa.c b/c/tests/test_rsa.c
deleted file mode 100755
index d2aa8a3..0000000
--- a/c/tests/test_rsa.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* test driver and function exerciser for RSA API Functions */
-
-#include <stdio.h>
-#include <time.h>
-#include "rsa.h"
-
-int main()
-{
-  int i,bytes,res;
-  unsigned long ran;
-  char m[RFS],ml[RFS],c[RFS],e[RFS],raw[100];
-  rsa_public_key pub;
-  rsa_private_key priv;
-  csprng RNG;
-  octet M={0,sizeof(m),m};
-  octet ML={0,sizeof(ml),ml};
-  octet C={0,sizeof(c),c};
-  octet E={0,sizeof(e),e};
-  octet RAW={0,sizeof(raw),raw};
-
-  time((time_t *)&ran);
-
-  RAW.len=100;				/* fake random seed source */
-  RAW.val[0]=ran;
-  RAW.val[1]=ran>>8;
-  RAW.val[2]=ran>>16;
-  RAW.val[3]=ran>>24;
-  for (i=4;i<100;i++) RAW.val[i]=i;
-
-  RSA_CREATE_CSPRNG(&RNG,&RAW);   /* initialise strong RNG */
-
-  printf("Generating public/private key pair\n");
-  RSA_KEY_PAIR(&RNG,65537,&priv,&pub);
-
-  printf("Encrypting test string\n");
-  OCT_jstring(&M,(char *)"Hello World\n");
-  RSA_OAEP_ENCODE(&M,&RNG,NULL,&E); /* OAEP encode message m to e  */
-
-  RSA_ENCRYPT(&pub,&E,&C);     /* encrypt encoded message */
-  printf("Ciphertext= "); OCT_output(&C);
-
-  printf("Decrypting test string\n");
-  RSA_DECRYPT(&priv,&C,&ML);   /* ... and then decrypt it */
-
-  RSA_OAEP_DECODE(NULL,&ML);    /* decode it */
-  OCT_output_string(&ML);
-
-  if (!OCT_comp(&M,&ML))
-    {
-      printf("FAILURE RSA Encryption failed");
-      return 1;
-    }
-
-  OCT_clear(&M); OCT_clear(&ML);   /* clean up afterwards */
-  OCT_clear(&C); OCT_clear(&RAW); OCT_clear(&E);
-
-  RSA_KILL_CSPRNG(&RNG);
-
-  RSA_PRIVATE_KEY_KILL(&priv);
-
-  printf("SUCCESS\n");
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_version.c
----------------------------------------------------------------------
diff --git a/c/tests/test_version.c b/c/tests/test_version.c
deleted file mode 100755
index a3f726c..0000000
--- a/c/tests/test_version.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* Test version function */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "amcl.h"
-#include "config.h"
-#include "version.h"
-
-int main()
-{
-  char info[200] = {0};
-  version(info);
-  printf("%s\n", info);
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_wcc.c
----------------------------------------------------------------------
diff --git a/c/tests/test_wcc.c b/c/tests/test_wcc.c
deleted file mode 100755
index d5204fa..0000000
--- a/c/tests/test_wcc.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-/* Test WCC with and without time permits */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "wcc.h"
-#include "utils.h"
-
-int main()
-{
-  int i,rtn;
-
-  /* Master secret */
-  char ms[PGS];
-  octet MS={sizeof(ms),sizeof(ms),ms};
-
-  // sender key
-  char akeyG1[2*PFS+1];
-  octet AKeyG1={0,sizeof(akeyG1), akeyG1};
-
-  // receiver key
-  char bkeyG2[4*PFS];
-  octet BKeyG2={0,sizeof(bkeyG2), bkeyG2};
-
-  char hv[HASH_BYTES],alice_id[256],bob_id[256];
-  octet HV={0,sizeof(hv),hv};
-
-  octet IdA={0,sizeof(alice_id),alice_id};
-  octet IdB={0,sizeof(bob_id),bob_id};
-
-  char x[PGS];
-  octet X={sizeof(x),sizeof(x),x};
-  char y[PGS];
-  octet Y={sizeof(y),sizeof(y),y};
-  char w[PGS];
-  octet W={sizeof(w),sizeof(w),w};
-  char pia[PGS];
-  octet PIA={sizeof(pia),sizeof(pia),pia};
-  char pib[PGS];
-  octet PIB={sizeof(pib),sizeof(pib),pib};
-
-  char pgg1[2*PFS+1];
-  octet PgG1={0,sizeof(pgg1), pgg1};
-
-  char pag1[2*PFS+1];
-  octet PaG1={0,sizeof(pag1), pag1};
-
-  char pbg2[4*PFS];
-  octet PbG2={0,sizeof(pbg2), pbg2};
-
-  char seed[32] = {0};
-  octet SEED = {0,sizeof(seed),seed};
-  csprng RNG;
-
-  char message1[256];
-  octet MESSAGE1 = {0, sizeof(message1), message1};
-  OCT_jstring(&MESSAGE1,"Hello Bob");
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k1[16];  // AES Key
-  char k2[16];  // AES Key
-  char iv[12]; // IV - Initialisation vector
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K1={0,sizeof(k1),k1};
-  octet K2={0,sizeof(k2),k2};
-  octet IV={0,sizeof(iv),iv};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-
-  int date;
-
-  int hashDoneOn = 1;
-  int hashDoneOff = 0;
-
-  date = 0;
-
-  /* unrandom seed value! */
-  SEED.len=32;
-  for (i=0;i<32;i++) SEED.val[i]=i+1;
-
-  /* initialise random number generator */
-  WCC_CREATE_CSPRNG(&RNG,&SEED);
-
-  /* TA: Generate master secret  */
-  rtn = WCC_RANDOM_GENERATE(&RNG,&MS);
-  if (rtn != 0) {
-      printf("TA WCC_RANDOM_GENERATE(&RNG,&MS) Error %d\n", rtn);
-      return 1;
-  }
-
-  // Alice's ID
-  OCT_jstring(&IdA,"alice@miracl.com");
-
-  // TA: Generate Alices's sender key
-  WCC_HASH_ID(&IdA,&HV);
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS,&HV,&AKeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  // Bob's ID
-  OCT_jstring(&IdB,"bob@miracl.com");
-
-  // TA: Generate Bob's receiver key
-  WCC_HASH_ID(&IdB,&HV);
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS,&HV,&BKeyG2);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G2_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&X);
-  if (rtn != 0) {
-      printf("Alice WCC_RANDOM_GENERATE(&RNG,&X) Error %d\n", rtn);
-      return 1;
-  }
-
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOff,&X,&IdA,&PaG1);
-  if (rtn != 0) {
-      printf("Alice WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&W);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&W) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOff,&W,&IdA,&PgG1);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&Y);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-      return 1;
-  }
-
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOff,&Y,&IdB,&PbG2);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-  // Bob calculates AES Key
-  WCC_RECEIVER_KEY(date, &Y, &W,  &PIA, &PIB,  &PaG1, &PgG1, &BKeyG2, NULL, &IdA, &K2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECEIVER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-  // Alice calculates AES Key
-  rtn = WCC_SENDER_KEY(date, &X, &PIA, &PIB, &PbG2, &PgG1, &AKeyG1, NULL, &IdB, &K1);
-  if (rtn != 0) {
-      printf("Alice WCC_SENDER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-
-  if (!OCT_comp(&K1,&K2))
-    {
-      printf("FAILURE No Time Permit Test. OCT_comp(&K1,&K2)\n");
-      return 1;
-    }
-
-  WCC_KILL_CSPRNG(&RNG);
-
-  printf("SUCCESS\n");
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_wcc_gcm.c
----------------------------------------------------------------------
diff --git a/c/tests/test_wcc_gcm.c b/c/tests/test_wcc_gcm.c
deleted file mode 100755
index 5cef3a9..0000000
--- a/c/tests/test_wcc_gcm.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include "amcl.h"
-#include "wcc.h"
-#include "utils.h"
-
-
-int main()
-{
-  char* KT="feffe9928665731c6d6a8f9467308308";
-  char* MT="d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39";
-  char* HT="feedfacedeadbeeffeedfacedeadbeefabaddad2";
-  char* NT="9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b";
-  // Tag should be 619cc5aefffe0bfa462af43c1699d050
-
-  int lenM=strlen(MT)/2;
-  int lenH=strlen(HT)/2;
-  int lenK=strlen(KT)/2;
-  int lenIV=strlen(NT)/2;
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k[16];   // AES Key
-  char h[64];   // Header - to be included in Authentication, but not encrypted
-  char iv[100]; // IV - Initialisation vector
-  char m[100];  // Plaintext to be encrypted/authenticated
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K={0,sizeof(k),k};
-  octet H={0,sizeof(h),h};
-  octet IV={0,sizeof(iv),iv};
-  octet M={0,sizeof(m),m};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-  M.len=lenM;
-  K.len=lenK;
-  H.len=lenH;
-  IV.len=lenIV;
-
-  hex2bytes(MT, m);
-  hex2bytes(HT, h);
-  hex2bytes(NT, iv);
-  hex2bytes(KT, k);
-
-  printf("Plaintext: ");
-  OCT_output(&M);
-  printf("\n");
-
-  WCC_AES_GCM_ENCRYPT(&K, &IV, &H, &M, &C, &T1);
-
-  printf("Ciphertext: ");
-  OCT_output(&C);
-  printf("\n");
-
-  printf("Encryption Tag: ");
-  OCT_output(&T1);
-  printf("\n");
-
-  WCC_AES_GCM_DECRYPT(&K, &IV, &H, &C, &P, &T2);
-
-  printf("Plaintext: ");
-  OCT_output(&P);
-  printf("\n");
-
-  printf("Decryption Tag: ");
-  OCT_output(&T2);
-  printf("\n");
-
-  if (!OCT_comp(&M,&P))
-    {
-      printf("FAILURE Decryption\n");
-      return 1;
-    }
-
-  if (!OCT_comp(&T1,&T2))
-    {
-      printf("FAILURE TAG mismatch\n");
-      return 1;
-    }
-
-  printf("SUCCESS\n");
-  return 0;
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/tests/test_wcc_random.c
----------------------------------------------------------------------
diff --git a/c/tests/test_wcc_random.c b/c/tests/test_wcc_random.c
deleted file mode 100755
index 5749adf..0000000
--- a/c/tests/test_wcc_random.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-
-/* Test WCC with two TAs and time permits for random values */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "config.h"
-#include "wcc.h"
-
-#define DEBUG
-
-void rand_str(char *dest, size_t length,csprng *RNG) {
-  BIG r;
-  char charset[] = "0123456789@.*"
-                   "abcdefghijklmnopqrstuvwxyz"
-                   "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-  while (length-- > 0) {
-    BIG_random(r,RNG);
-    size_t index = r[0] % (sizeof charset);
-    *dest++ = charset[index];
-  }
-  *dest = '\0';
-}
-
-int main()
-{
-  int i,rtn,iter;
-
-  /* Master secret shares */
-  char ms1[PGS], ms2[PGS];
-  octet MS1={sizeof(ms1),sizeof(ms1),ms1};
-  octet MS2={sizeof(ms2),sizeof(ms2),ms2};
-
-  // Sender keys
-  char a1keyG1[2*PFS+1], a2keyG1[2*PFS+1];
-  octet A1KeyG1={0,sizeof(a1keyG1), a1keyG1};
-  octet A2KeyG1={0,sizeof(a2keyG1), a2keyG1};
-  char akeyG1[2*PFS+1];
-  octet AKeyG1={0,sizeof(akeyG1), akeyG1};
-
-  // Sender time permits
-  char a1TPG1[2*PFS+1], a2TPG1[2*PFS+1];
-  octet A1TPG1={sizeof(a1TPG1),sizeof(a1TPG1), a1TPG1};
-  octet A2TPG1={sizeof(a2TPG1),sizeof(a2TPG1), a2TPG1};
-  char aTPG1[2*PFS+1];
-  octet ATPG1={0,sizeof(aTPG1), aTPG1};
-
-  // Receiver keys
-  char b1keyG2[4*PFS], b2keyG2[4*PFS];
-  octet B1KeyG2={0,sizeof(b1keyG2), b1keyG2};
-  octet B2KeyG2={0,sizeof(b2keyG2), b2keyG2};
-  char bkeyG2[4*PFS];
-  octet BKeyG2={0,sizeof(bkeyG2), bkeyG2};
-
-  // Receiver time permits
-  char b1TPG2[4*PFS], b2TPG2[4*PFS];
-  octet B1TPG2={sizeof(b1TPG2),sizeof(b1TPG2), b1TPG2};
-  octet B2TPG2={sizeof(b2TPG2),sizeof(b2TPG2), b2TPG2};
-  char bTPG2[4*PFS];
-  octet BTPG2={0,sizeof(bTPG2), bTPG2};
-
-  char ahv[HASH_BYTES],alice_id[256],bhv[HASH_BYTES],bob_id[256];
-  octet AHV={0,sizeof(ahv),ahv};
-  octet BHV={0,sizeof(bhv),bhv};
-
-  octet IdA={0,sizeof(alice_id),alice_id};
-  octet IdB={0,sizeof(bob_id),bob_id};
-
-  char x[PGS];
-  octet X={sizeof(x),sizeof(x),x};
-  char y[PGS];
-  octet Y={sizeof(y),sizeof(y),y};
-  char w[PGS];
-  octet W={sizeof(w),sizeof(w),w};
-  char pia[PGS];
-  octet PIA={sizeof(pia),sizeof(pia),pia};
-  char pib[PGS];
-  octet PIB={sizeof(pib),sizeof(pib),pib};
-
-  char pgg1[2*PFS+1];
-  octet PgG1={0,sizeof(pgg1), pgg1};
-
-  char pag1[2*PFS+1];
-  octet PaG1={0,sizeof(pag1), pag1};
-
-  char pbg2[4*PFS];
-  octet PbG2={0,sizeof(pbg2), pbg2};
-
-  char message1[256];
-  char message2[256];
-  octet MESSAGE1 = {0, sizeof(message1), message1};
-  octet MESSAGE2 = {0, sizeof(message2), message2};
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k1[16];  // AES Key
-  char k2[16];  // AES Key
-  char iv[12]; // IV - Initialisation vector
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K1={0,sizeof(k1),k1};
-  octet K2={0,sizeof(k2),k2};
-  octet IV={0,sizeof(iv),iv};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-
-  int date;
-  date = WCC_today();
-  printf("Date %d \n", date);
-
-  int hashDoneOn = 1;
-  int hashDoneOff = 0;
-
-  OCT_jstring(&MESSAGE1,"Hello Bob");
-  OCT_jstring(&MESSAGE2,"Hello Alice");
-
-  unsigned long ran;
-  int byte_count = 32;
-  FILE *fp;
-  char seed[32] = {0};
-  octet SEED = {sizeof(seed),sizeof(seed),seed};
-  csprng RNG;
-
-#ifdef __linux__
-  size_t readSize;
-  fp = fopen("/dev/urandom", "r");
-  readSize = fread(&seed, 1, byte_count, fp);
-  fclose(fp);
-#else
-  /* non random seed value! */
-  time((time_t *)&ran);
-  SEED.val[0]=ran;
-  SEED.val[1]=ran>>8;
-  SEED.val[2]=ran>>16;
-  SEED.val[3]=ran>>24;
-  for (i=4;i<byte_count;i++) SEED.val[i]=i+1;
-#endif
-  printf("SEED 0x");
-  OCT_output(&SEED);
-
-  /* initialise random number generator */
-  WCC_CREATE_CSPRNG(&RNG,&SEED);
-
-  for(iter=1; iter<nRandomTests+1; iter++) {
-
-    /* Generate Client master secret for MIRACL and Customer */
-    rtn = WCC_RANDOM_GENERATE(&RNG,&MS1);
-    if (rtn != 0) {
-        printf("TA WCC_RANDOM_GENERATE(&RNG,&MS1) Error %d\n", rtn);
-        return 1;
-    }
-    rtn = WCC_RANDOM_GENERATE(&RNG,&MS2);
-    if (rtn != 0) {
-        printf("TA WCC_RANDOM_GENERATE(&RNG,&MS2) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA MASTER SECRET MIRACL: ");
-    OCT_output(&MS1);
-    printf("TA MASTER SECRET CUSTOMER: ");
-    OCT_output(&MS2);
-  
-    // Alice's ID
-    rand_str(alice_id,256,&RNG);
-    OCT_jstring(&IdA,alice_id);
-    printf("ALICE ID: %s\n", alice_id);
-
-     // TA: Generate Alice's sender key
-    WCC_HASH_ID(&IdA,&AHV);
-    rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS1,&AHV,&A1KeyG1);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G1_MULTIPLE(hashDoneOn,&MS1,&AHV,&A1KeyG1) Error %d\n", rtn);
-        return 1;
-    }
-    rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS2,&AHV,&A2KeyG1);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G1_MULTIPLE(hashDoneOn,&MS2,&AHV,&A2KeyG1) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA A1KeyG1: ");
-    OCT_output(&A1KeyG1);
-    printf("TA A2KeyG1: ");
-    OCT_output(&A2KeyG1);
-  
-    rtn = WCC_RECOMBINE_G1(&A1KeyG1, &A2KeyG1, &AKeyG1);
-    if (rtn != 0) {
-        printf("TA WCC_RECOMBINE_G1(&A1KeyG1, &A2KeyG1, &AKeyG1) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA Alice's sender key: ");
-    OCT_output(&AKeyG1);
-  
-    // TA: Generate Alice's G1 time permit
-    rtn = WCC_GET_G1_PERMIT(date,&MS1,&AHV,&A1TPG1);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G1_PERMIT(date,&MS1,&AHV,&A1TPG1) Error %d\n", rtn);
-        return 1;
-    }
-    rtn = WCC_GET_G1_PERMIT(date,&MS2,&AHV,&A2TPG1);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G1_PERMIT(date,&MS2,&AHV,&A2TPG1) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA A1TPG1: ");
-    OCT_output(&A1TPG1);
-    printf("TA A2TPG1: ");
-    OCT_output(&A2TPG1);
-  
-    rtn = WCC_RECOMBINE_G1(&A1TPG1, &A2TPG1, &ATPG1);
-    if (rtn != 0) {
-        printf("Alice WCC_RECOMBINE_G1(&A1TPG1, &A2TPG1, &ATPG1) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA Alice's sender time permit: ");
-    OCT_output(&ATPG1);
-  
-    // Bob's ID
-    rand_str(bob_id,256,&RNG);
-    OCT_jstring(&IdB,bob_id);
-    printf("BOB ID: %s\n", bob_id);
-  
-    // TA: Generate Bob's receiver key
-    WCC_HASH_ID(&IdB,&BHV);
-    rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS1,&BHV,&B1KeyG2);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G2_MULTIPLE(hashDoneOn,&MS1,&BHV,&B1KeyG2) Error %d\n", rtn);
-        return 1;
-    }
-    rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS2,&BHV,&B2KeyG2);
-    if (rtn != 0) {
-        printf("Bob WCC_GET_G2_MULTIPLE(hashDoneOn,&MS2,&BHV,&B2KeyG2) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA B1KeyG2: ");
-    OCT_output(&B1KeyG2);
-    printf("TA B2KeyG2: ");
-    OCT_output(&B2KeyG2);
-  
-    rtn = WCC_RECOMBINE_G2(&B1KeyG2, &B2KeyG2, &BKeyG2);
-    if (rtn != 0) {
-        printf("Bob WCC_RECOMBINE_G2(&B1KeyG1, &B2KeyG1, &BKeyG2) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA Bob's receiver key: ");
-    OCT_output(&BKeyG2);
-  
-    // TA: Generate Bob's receiver time permit
-    rtn = WCC_GET_G2_PERMIT(date,&MS1,&BHV,&B1TPG2);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G2_PERMIT(date,&MS1,&BHV,&B1TPG2) Error %d\n", rtn);
-        return 1;
-    }
-    rtn = WCC_GET_G2_PERMIT(date,&MS2,&BHV,&B2TPG2);
-    if (rtn != 0) {
-        printf("TA WCC_GET_G2_PERMIT(date,&MS2,&BHV,&B2TPG2) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA B1TPG2: ");
-    OCT_output(&B1TPG2);
-    printf("TA B2TPG2: ");
-    OCT_output(&B2TPG2);
-  
-    rtn = WCC_RECOMBINE_G2(&B1TPG2, &B2TPG2, &BTPG2);
-    if (rtn != 0) {
-        printf("Bob WCC_RECOMBINE_G2(&B1TPG2, &B2TPG2, &BTPG2) Error %d\n", rtn);
-        return 1;
-    }
-    printf("TA Bob's receiver time permit: ");
-    OCT_output(&BTPG2);
-    printf("\n");
-  
-    printf("Alice\n");
-  
-    rtn = WCC_RANDOM_GENERATE(&RNG,&X);
-    if (rtn != 0) {
-        printf("Alice WCC_RANDOM_GENERATE(&RNG,&X) Error %d\n", rtn);
-        return 1;
-    }
-  #ifdef DEBUG
-    printf("Alice X: ");
-    OCT_output(&X);
-    printf("\n");
-  #endif
-  
-    rtn = WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1);
-    if (rtn != 0) {
-        printf("Alice WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1) Error %d\n", rtn);
-        return 1;
-    }
-  
-    printf("Alice sends IdA and PaG1 to Bob\n\n");
-    printf("Alice IdA: "); 
-    OCT_output_string(&IdA); 
-    printf("\n");
-    printf("Alice PaG1: ");
-    OCT_output(&PaG1);
-    printf("\n");
-  
-    printf("Bob\n");
-  
-    rtn = WCC_RANDOM_GENERATE(&RNG,&W);
-    if (rtn != 0) {
-        printf("Bob WCC_RANDOM_GENERATE(&RNG,&W) Error %d\n", rtn);
-        return 1;
-    }
-  #ifdef DEBUG
-    printf("Bob W: ");
-    OCT_output(&W);
-    printf("\n");
-  #endif
-    rtn = WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1);
-    if (rtn != 0) {
-        printf("Bob WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1) Error %d\n", rtn);
-        return 1;
-    }
-  #ifdef DEBUG
-    printf("PgG1: ");
-    OCT_output(&PgG1);
-    printf("\n");
-  #endif
-  
-    rtn = WCC_RANDOM_GENERATE(&RNG,&Y);
-    if (rtn != 0) {
-        printf("Bob WCC_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-        return 1;
-    }
-  #ifdef DEBUG
-    printf("Bob Y: ");
-    OCT_output(&Y);
-    printf("\n");
-  #endif
-    rtn = WCC_GET_G2_TPMULT(date,&Y,&IdB,&PbG2);
-    if (rtn != 0) {
-        printf("Bob WCC_GET_G1_TPMULT(date,&Y,&IdB,&PbG2) Error %d\n", rtn);
-        return 1;
-    }
-  #ifdef DEBUG
-    printf("Bob PbG2: ");
-    OCT_output(&PbG2);
-    printf("\n");
-  #endif
-  
-    // pia = Hq(PaG1,PbG2,PgG1,IdB)
-    WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-    // pib = Hq(PbG2,PaG1,PgG1,IdA)
-    WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-  
-  #ifdef DEBUG
-    printf("Bob PIA: ");
-    OCT_output(&PIA);
-    printf("\n");
-    printf("Bob PIB: ");
-    OCT_output(&PIB);
-    printf("\n");
-  #endif
-  
-    // Bob calculates AES Key
-    WCC_RECEIVER_KEY(date, &Y, &W,  &PIA, &PIB,  &PaG1, &PgG1, &BKeyG2, &BTPG2, &IdA, &K2);
-    if (rtn != 0) {
-        printf("Bob WCC_RECEIVER_KEY() Error %d\n", rtn);
-        return 1;
-    }
-    printf("Bob AES Key: ");
-    OCT_output(&K2);
-  
-    printf("Bob sends IdB, PbG2 and PgG1 to Alice\n\n");
-    printf("Bob IdB: "); 
-    OCT_output_string(&IdB); 
-    printf("\n");
-    printf("Bob PbG2: ");
-    OCT_output(&PbG2);
-    printf("\n");
-    printf("Bob PgG1: ");
-    OCT_output(&PgG1);
-    printf("\n");
-  
-    printf("Alice\n");
-  
-    // pia = Hq(PaG1,PbG2,PgG1,IdB)
-    WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-    // pib = Hq(PbG2,PaG1,PgG1,IdA)
-    WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-  
-  #ifdef DEBUG
-    printf("Alice PIA: ");
-    OCT_output(&PIA);
-    printf("\n");
-    printf("Alice PIB: ");
-    OCT_output(&PIB);
-    printf("\n");
-  #endif
-  
-    // Alice calculates AES Key
-    rtn = WCC_SENDER_KEY(date, &X, &PIA, &PIB, &PbG2, &PgG1, &AKeyG1, &ATPG1, &IdB, &K1);
-    if (rtn != 0) {
-        printf("Alice WCC_SENDER_KEY() Error %d\n", rtn);
-        return 1;
-    }
-    printf("Alice AES Key: ");
-    OCT_output(&K1);
-  
-    // Send message
-    IV.len=12;
-    for (i=0;i<IV.len;i++)
-      IV.val[i]=i+1;
-    printf("Alice: IV ");
-    OCT_output(&IV);
-  
-    printf("Alice: Message to encrypt for Bob: ");
-    OCT_output_string(&MESSAGE1);
-    printf("\n");
-  
-    WCC_AES_GCM_ENCRYPT(&K1, &IV, &IdA, &MESSAGE1, &C, &T1);
-  
-    printf("Alice: Ciphertext: ");
-    OCT_output(&C);
-  
-    printf("Alice: Encryption Tag: ");
-    OCT_output(&T1);
-    printf("\n");
-  
-    WCC_AES_GCM_DECRYPT(&K2, &IV, &IdA, &C, &P, &T2);
-  
-    printf("Bob: Decrypted message received from Alice: ");
-    OCT_output_string(&P);
-    printf("\n");
-  
-    printf("Bob: Decryption Tag: ");
-    OCT_output(&T2);
-    printf("\n");
-  
-    if (!OCT_comp(&MESSAGE1,&P)) {
-        printf("FAILURE Decryption\n");
-        return 1;
-    }
-  
-    if (!OCT_comp(&T1,&T2)) {
-        printf("FAILURE TAG mismatch\n");
-        return 1;
-    }
-    printf("Iteration %d SUCCESS \n\n", iter);
-  }
-
-  WCC_KILL_CSPRNG(&RNG);
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/testwcc.c
----------------------------------------------------------------------
diff --git a/c/testwcc.c b/c/testwcc.c
deleted file mode 100755
index f01300d..0000000
--- a/c/testwcc.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-
-/* Demonstrate WCC with one TA and no time permits */
-
-/* Build executible after installation:
-   gcc -std=c99 -g testwcc.c -I/opt/amcl/include -L/opt/amcl/lib -lamcl -lwcc -o testwcc */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "wcc.h"
-
-#define DEBUG
-
-int main()
-{
-  int i,rtn;
-
-  /* Master secret */
-  char ms[PGS];
-  octet MS={sizeof(ms),sizeof(ms),ms};
-
-  // sender keys
-  char akeyG1[2*PFS+1];
-  octet AKeyG1={0,sizeof(akeyG1), akeyG1};
-
-  // receiver keys
-  char bkeyG2[4*PFS];
-  octet BKeyG2={0,sizeof(bkeyG2), bkeyG2};
-
-  char hv[HASH_BYTES],alice_id[256],bob_id[256];
-  octet HV={0,sizeof(hv),hv};
-
-  octet IdA={0,sizeof(alice_id),alice_id};
-  octet IdB={0,sizeof(bob_id),bob_id};
-
-  char x[PGS];
-  octet X={sizeof(x),sizeof(x),x};
-  char y[PGS];
-  octet Y={sizeof(y),sizeof(y),y};
-  char w[PGS];
-  octet W={sizeof(w),sizeof(w),w};
-  char pia[PGS];
-  octet PIA={sizeof(pia),sizeof(pia),pia};
-  char pib[PGS];
-  octet PIB={sizeof(pib),sizeof(pib),pib};
-
-  char pgg1[2*PFS+1];
-  octet PgG1={0,sizeof(pgg1), pgg1};
-
-  char pag1[2*PFS+1];
-  octet PaG1={0,sizeof(pag1), pag1};
-
-  char pbg2[4*PFS];
-  octet PbG2={0,sizeof(pbg2), pbg2};
-
-  char seed[32] = {0};
-  octet SEED = {0,sizeof(seed),seed};
-  csprng RNG;
-
-  char message1[256];
-  octet MESSAGE1 = {0, sizeof(message1), message1};
-  OCT_jstring(&MESSAGE1,"Hello Bob");
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k1[16];  // AES Key
-  char k2[16];  // AES Key
-  char iv[12]; // IV - Initialisation vector
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K1={0,sizeof(k1),k1};
-  octet K2={0,sizeof(k2),k2};
-  octet IV={0,sizeof(iv),iv};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-
-  int date;
-
-  int hashDoneOn = 1;
-  int hashDoneOff = 0;
-
-  date = 0;
-#ifdef DEBUG
-  printf("Date %d \n", date);
-#endif
-
-  /* unrandom seed value! */
-  SEED.len=32;
-  for (i=0;i<32;i++) SEED.val[i]=i+1;
-#ifdef DEBUG
-  printf("SEED: ");
-  OCT_output(&SEED);
-  printf("\n");
-#endif
-
-  /* initialise random number generator */
-  WCC_CREATE_CSPRNG(&RNG,&SEED);
-
-  /* TA: Generate master secret  */
-  rtn = WCC_RANDOM_GENERATE(&RNG,&MS);
-  if (rtn != 0) {
-      printf("TA WCC_RANDOM_GENERATE(&RNG,&MS) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("TA MASTER SECRET: ");
-  OCT_output(&MS);
-  printf("\n");
-#endif
-
-  // Alice's ID
-  OCT_jstring(&IdA,"alice@miracl.com");
-
-  // TA: Generate Alices's sender key
-  WCC_HASH_ID(&IdA,&HV);
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS,&HV,&AKeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("TA Alice's sender key: ");
-  OCT_output(&AKeyG1);
-#endif
-
-  // Bob's ID
-  OCT_jstring(&IdB,"bob@miracl.com");
-
-  // TA: Generate Bob's receiver key
-  WCC_HASH_ID(&IdB,&HV);
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS,&HV,&BKeyG2);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G2_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("TA Bob's receiver key: ");
-  OCT_output(&BKeyG2);
-  printf("\n");
-#endif
-
-  printf("Alice\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&X);
-  if (rtn != 0) {
-      printf("Alice WCC_RANDOM_GENERATE(&RNG,&X) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Alice X: ");
-  OCT_output(&X);
-  printf("\n");
-#endif
-
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOff,&X,&IdA,&PaG1);
-  if (rtn != 0) {
-      printf("Alice WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-
-  printf("Alice sends IdA and PaG1 to Bob\n\n");
-  printf("Alice IdA: "); 
-  OCT_output_string(&IdA); 
-  printf("\n");
-  printf("Alice PaG1: ");
-  OCT_output(&PaG1);
-  printf("\n");
-
-  printf("Bob\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&W);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&W) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob W: ");
-  OCT_output(&W);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOff,&W,&IdA,&PgG1);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-#endif
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&Y);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob Y: ");
-  OCT_output(&Y);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOff,&Y,&IdB,&PbG2);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_MULTIPLE() Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-#endif
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Bob PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Bob PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Bob calculates AES Key
-  WCC_RECEIVER_KEY(date, &Y, &W,  &PIA, &PIB,  &PaG1, &PgG1, &BKeyG2, NULL, &IdA, &K2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECEIVER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Bob AES Key: ");
-  OCT_output(&K2);
-
-  printf("Bob sends IdB, PbG2 and PgG1 to Alice\n\n");
-  printf("Bob IdB: "); 
-  OCT_output_string(&IdB); 
-  printf("\n");
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-  printf("Bob PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-
-  printf("Alice\n");
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Alice PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Alice PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Alice calculates AES Key
-  rtn = WCC_SENDER_KEY(date, &X, &PIA, &PIB, &PbG2, &PgG1, &AKeyG1, NULL, &IdB, &K1);
-  if (rtn != 0) {
-      printf("Alice WCC_SENDER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Alice AES Key: ");
-  OCT_output(&K1);
-
-
-  // Send message
-  IV.len=12;
-  for (i=0;i<IV.len;i++)
-    IV.val[i]=i+1;
-  printf("Alice: IV ");
-  OCT_output(&IV);
-
-  printf("Alice: Message to encrypt for Bob: ");
-  OCT_output_string(&MESSAGE1);
-  printf("\n");
-
-  WCC_AES_GCM_ENCRYPT(&K1, &IV, &IdA, &MESSAGE1, &C, &T1);
-
-  printf("Alice: Ciphertext: ");
-  OCT_output(&C);
-
-  printf("Alice: Encryption Tag: ");
-  OCT_output(&T1);
-  printf("\n");
-
-  WCC_AES_GCM_DECRYPT(&K2, &IV, &IdA, &C, &P, &T2);
-
-  printf("Bob: Decrypted message received from Alice: ");
-  OCT_output_string(&P);
-  printf("\n");
-
-  printf("Bob: Decryption Tag: ");
-  OCT_output(&T2);
-  printf("\n");
-
-  if (!OCT_comp(&MESSAGE1,&P)) {
-      printf("FAILURE Decryption\n");
-      return 1;
-  }
-
-  if (!OCT_comp(&T1,&T2)) {
-      printf("FAILURE TAG mismatch\n");
-      return 1;
-  }
-
-  WCC_KILL_CSPRNG(&RNG);
-
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/testwcc_dta.c
----------------------------------------------------------------------
diff --git a/c/testwcc_dta.c b/c/testwcc_dta.c
deleted file mode 100755
index d05d70f..0000000
--- a/c/testwcc_dta.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-
-/* Demonstrate WCC with two TAs and time permits */
-
-/* Build executible after installation:
-   gcc -std=c99 -g testwcc_dta.c  -I/opt/amcl/include -L/opt/amcl/lib -lamcl -lwcc -o testwcc_dta */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "mpin.h"
-#include "wcc.h"
-
-#define DEBUG
-
-int main()
-{
-  int i,rtn;
-
-  /* Master secret shares */
-  char ms1[PGS], ms2[PGS];
-  octet MS1={sizeof(ms1),sizeof(ms1),ms1};
-  octet MS2={sizeof(ms2),sizeof(ms2),ms2};
-
-  // Sender keys
-  char a1keyG1[2*PFS+1], a2keyG1[2*PFS+1];
-  octet A1KeyG1={0,sizeof(a1keyG1), a1keyG1};
-  octet A2KeyG1={0,sizeof(a2keyG1), a2keyG1};
-  char akeyG1[2*PFS+1];
-  octet AKeyG1={0,sizeof(akeyG1), akeyG1};
-
-  // Sender time permits
-  char a1TPG1[2*PFS+1], a2TPG1[2*PFS+1];
-  octet A1TPG1={sizeof(a1TPG1),sizeof(a1TPG1), a1TPG1};
-  octet A2TPG1={sizeof(a2TPG1),sizeof(a2TPG1), a2TPG1};
-  char aTPG1[2*PFS+1];
-  octet ATPG1={0,sizeof(aTPG1), aTPG1};
-
-  // Receiver keys
-  char b1keyG2[4*PFS], b2keyG2[4*PFS];
-  octet B1KeyG2={0,sizeof(b1keyG2), b1keyG2};
-  octet B2KeyG2={0,sizeof(b2keyG2), b2keyG2};
-  char bkeyG2[4*PFS];
-  octet BKeyG2={0,sizeof(bkeyG2), bkeyG2};
-
-  // Receiver time permits
-  char b1TPG2[4*PFS], b2TPG2[4*PFS];
-  octet B1TPG2={sizeof(b1TPG2),sizeof(b1TPG2), b1TPG2};
-  octet B2TPG2={sizeof(b2TPG2),sizeof(b2TPG2), b2TPG2};
-  char bTPG2[4*PFS];
-  octet BTPG2={0,sizeof(bTPG2), bTPG2};
-
-  char ahv[HASH_BYTES],alice_id[256],bhv[HASH_BYTES],bob_id[256];
-  octet AHV={0,sizeof(ahv),ahv};
-  octet BHV={0,sizeof(bhv),bhv};
-
-  octet IdA={0,sizeof(alice_id),alice_id};
-  octet IdB={0,sizeof(bob_id),bob_id};
-
-  char x[PGS];
-  octet X={sizeof(x),sizeof(x),x};
-  char y[PGS];
-  octet Y={sizeof(y),sizeof(y),y};
-  char w[PGS];
-  octet W={sizeof(w),sizeof(w),w};
-  char pia[PGS];
-  octet PIA={sizeof(pia),sizeof(pia),pia};
-  char pib[PGS];
-  octet PIB={sizeof(pib),sizeof(pib),pib};
-
-  char pgg1[2*PFS+1];
-  octet PgG1={0,sizeof(pgg1), pgg1};
-
-  char pag1[2*PFS+1];
-  octet PaG1={0,sizeof(pag1), pag1};
-
-  char pbg2[4*PFS];
-  octet PbG2={0,sizeof(pbg2), pbg2};
-
-  char seed[32] = {0};
-  octet SEED = {0,sizeof(seed),seed};
-  csprng RNG;
-
-  char message1[256];
-  char message2[256];
-  octet MESSAGE1 = {0, sizeof(message1), message1};
-  octet MESSAGE2 = {0, sizeof(message2), message2};
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k1[16];  // AES Key
-  char k2[16];  // AES Key
-  char iv[12]; // IV - Initialisation vector
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K1={0,sizeof(k1),k1};
-  octet K2={0,sizeof(k2),k2};
-  octet IV={0,sizeof(iv),iv};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-
-  int date;
-  date = WCC_today();
-  printf("Date %d \n", date);
-
-  int hashDoneOn = 1;
-  int hashDoneOff = 0;
-
-  OCT_jstring(&MESSAGE1,"Hello Bob");
-  OCT_jstring(&MESSAGE2,"Hello Alice");
-
-  /* unrandom seed value! */
-  SEED.len=32;
-  for (i=0;i<32;i++) SEED.val[i]=i+1;
-
-  /* initialise random number generator */
-  WCC_CREATE_CSPRNG(&RNG,&SEED);
-
-  /* Generate Client master secret for MIRACL and Customer */
-  rtn = WCC_RANDOM_GENERATE(&RNG,&MS1);
-  if (rtn != 0) {
-      printf("TA WCC_RANDOM_GENERATE(&RNG,&MS1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = WCC_RANDOM_GENERATE(&RNG,&MS2);
-  if (rtn != 0)
-    {
-      printf("TA WCC_RANDOM_GENERATE(&RNG,&MS2) Error %d\n", rtn);
-      return 1;
-    }
-  printf("TA MASTER SECRET MIRACL: ");
-  OCT_output(&MS1);
-  printf("TA MASTER SECRET CUSTOMER: ");
-  OCT_output(&MS2);
-
-  // Alice's ID
-  OCT_jstring(&IdA,"alice@miracl.com");
-
-  // TA: Generate Alice's sender key
-  WCC_HASH_ID(&IdA,&AHV);
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS1,&AHV,&A1KeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_MULTIPLE(hashDoneOn,&MS1,&AHV,&A1KeyG1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS2,&AHV,&A2KeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_MULTIPLE(hashDoneOn,&MS2,&AHV,&A2KeyG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA A1KeyG1: ");
-  OCT_output(&A1KeyG1);
-  printf("TA A2KeyG1: ");
-  OCT_output(&A2KeyG1);
-
-  rtn = WCC_RECOMBINE_G1(&A1KeyG1, &A2KeyG1, &AKeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_RECOMBINE_G1(&A1KeyG1, &A2KeyG1, &AKeyG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Alice's sender key: ");
-  OCT_output(&AKeyG1);
-
-  // TA: Generate Alice's G1 time permit
-  rtn = WCC_GET_G1_PERMIT(date,&MS1,&AHV,&A1TPG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_PERMIT(date,&MS1,&AHV,&A1TPG1) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = WCC_GET_G1_PERMIT(date,&MS2,&AHV,&A2TPG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_PERMIT(date,&MS2,&AHV,&A2TPG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA A1TPG1: ");
-  OCT_output(&A1TPG1);
-  printf("TA A2TPG1: ");
-  OCT_output(&A2TPG1);
-
-  rtn = WCC_RECOMBINE_G1(&A1TPG1, &A2TPG1, &ATPG1);
-  if (rtn != 0) {
-      printf("Alice WCC_RECOMBINE_G1(&A1TPG1, &A2TPG1, &ATPG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Alice's sender time permit: ");
-  OCT_output(&ATPG1);
-
-  // Bob's ID
-  OCT_jstring(&IdB,"bob@miracl.com");
-
-  // TA: Generate Bob's receiver key
-  WCC_HASH_ID(&IdB,&BHV);
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS1,&BHV,&B1KeyG2);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G2_MULTIPLE(hashDoneOn,&MS1,&BHV,&B1KeyG2) Error %d\n", rtn);
-      return 1;
-  }
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS2,&BHV,&B2KeyG2);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G2_MULTIPLE(hashDoneOn,&MS2,&BHV,&B2KeyG2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA B1KeyG2: ");
-  OCT_output(&B1KeyG2);
-  printf("TA B2KeyG2: ");
-  OCT_output(&B2KeyG2);
-
-  rtn = WCC_RECOMBINE_G2(&B1KeyG2, &B2KeyG2, &BKeyG2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECOMBINE_G2(&B1KeyG1, &B2KeyG1, &BKeyG2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Bob's receiver key: ");
-  OCT_output(&BKeyG2);
-
-  // TA: Generate Bob's receiver time permit
-  rtn = WCC_GET_G2_PERMIT(date,&MS1,&BHV,&B1TPG2);
-  if (rtn != 0)
-    {
-      printf("TA WCC_GET_G2_PERMIT(date,&MS1,&BHV,&B1TPG2) Error %d\n", rtn);
-      return 1;
-    }
-  rtn = WCC_GET_G2_PERMIT(date,&MS2,&BHV,&B2TPG2);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G2_PERMIT(date,&MS2,&BHV,&B2TPG2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA B1TPG2: ");
-  OCT_output(&B1TPG2);
-  printf("TA B2TPG2: ");
-  OCT_output(&B2TPG2);
-
-  rtn = WCC_RECOMBINE_G2(&B1TPG2, &B2TPG2, &BTPG2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECOMBINE_G2(&B1TPG2, &B2TPG2, &BTPG2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Bob's receiver time permit: ");
-  OCT_output(&BTPG2);
-  printf("\n");
-
-  printf("Alice\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&X);
-  if (rtn != 0) {
-      printf("Alice WCC_RANDOM_GENERATE(&RNG,&X) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Alice X: ");
-  OCT_output(&X);
-  printf("\n");
-#endif
-
-  rtn = WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1);
-  if (rtn != 0) {
-      printf("Alice WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1) Error %d\n", rtn);
-      return 1;
-  }
-
-  printf("Alice sends IdA and PaG1 to Bob\n\n");
-  printf("Alice IdA: "); 
-  OCT_output_string(&IdA); 
-  printf("\n");
-  printf("Alice PaG1: ");
-  OCT_output(&PaG1);
-  printf("\n");
-
-  printf("Bob\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&W);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&W) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob W: ");
-  OCT_output(&W);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-#endif
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&Y);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob Y: ");
-  OCT_output(&Y);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G2_TPMULT(date,&Y,&IdB,&PbG2);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_TPMULT(date,&Y,&IdB,&PbG2) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-#endif
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Bob PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Bob PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Bob calculates AES Key
-  WCC_RECEIVER_KEY(date, &Y, &W,  &PIA, &PIB,  &PaG1, &PgG1, &BKeyG2, &BTPG2, &IdA, &K2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECEIVER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Bob AES Key: ");
-  OCT_output(&K2);
-
-  printf("Bob sends IdB, PbG2 and PgG1 to Alice\n\n");
-  printf("Bob IdB: "); 
-  OCT_output_string(&IdB); 
-  printf("\n");
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-  printf("Bob PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-
-  printf("Alice\n");
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Alice PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Alice PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Alice calculates AES Key
-  rtn = WCC_SENDER_KEY(date, &X, &PIA, &PIB, &PbG2, &PgG1, &AKeyG1, &ATPG1, &IdB, &K1);
-  if (rtn != 0) {
-      printf("Alice WCC_SENDER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Alice AES Key: ");
-  OCT_output(&K1);
-
-  // Send message
-  IV.len=12;
-  for (i=0;i<IV.len;i++)
-    IV.val[i]=i+1;
-  printf("Alice: IV ");
-  OCT_output(&IV);
-
-  printf("Alice: Message to encrypt for Bob: ");
-  OCT_output_string(&MESSAGE1);
-  printf("\n");
-
-  WCC_AES_GCM_ENCRYPT(&K1, &IV, &IdA, &MESSAGE1, &C, &T1);
-
-  printf("Alice: Ciphertext: ");
-  OCT_output(&C);
-
-  printf("Alice: Encryption Tag: ");
-  OCT_output(&T1);
-  printf("\n");
-
-  WCC_AES_GCM_DECRYPT(&K2, &IV, &IdA, &C, &P, &T2);
-
-  printf("Bob: Decrypted message received from Alice: ");
-  OCT_output_string(&P);
-  printf("\n");
-
-  printf("Bob: Decryption Tag: ");
-  OCT_output(&T2);
-  printf("\n");
-
-  if (!OCT_comp(&MESSAGE1,&P)) {
-      printf("FAILURE Decryption\n");
-      return 1;
-  }
-
-  if (!OCT_comp(&T1,&T2)) {
-      printf("FAILURE TAG mismatch\n");
-      return 1;
-  }
-
-  WCC_KILL_CSPRNG(&RNG);
-
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/testwcc_tp.c
----------------------------------------------------------------------
diff --git a/c/testwcc_tp.c b/c/testwcc_tp.c
deleted file mode 100755
index 280fa85..0000000
--- a/c/testwcc_tp.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-
-/* Demonstrate WCC with time permits */
-
-/* Build executible after installation:
-   gcc -std=c99 -g testwcc_dta.c  -I/opt/amcl/include -L/opt/amcl/lib -lamcl -lwcc -o testwcc_dta */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "mpin.h"
-#include "wcc.h"
-
-#define DEBUG
-
-int main()
-{
-  int i,rtn;
-
-  /* Master secret shares */
-  char ms[PGS];
-  octet MS={sizeof(ms),sizeof(ms),ms};
-
-  // Sender key
-  char akeyG1[2*PFS+1];
-  octet AKeyG1={0,sizeof(akeyG1), akeyG1};
-
-  // Sender time permits
-  char aTPG1[2*PFS+1];
-  octet ATPG1={sizeof(aTPG1),sizeof(aTPG1), aTPG1};
-
-  // Receiver keys
-  char bkeyG2[4*PFS];
-  octet BKeyG2={0,sizeof(bkeyG2), bkeyG2};
-
-  // Receiver time permits
-  char bTPG2[4*PFS];
-  octet BTPG2={sizeof(bTPG2),sizeof(bTPG2), bTPG2};
-
-  char ahv[HASH_BYTES],alice_id[256],bhv[HASH_BYTES],bob_id[256];
-  octet AHV={0,sizeof(ahv),ahv};
-  octet BHV={0,sizeof(bhv),bhv};
-
-  octet IdA={0,sizeof(alice_id),alice_id};
-  octet IdB={0,sizeof(bob_id),bob_id};
-
-  char x[PGS];
-  octet X={sizeof(x),sizeof(x),x};
-  char y[PGS];
-  octet Y={sizeof(y),sizeof(y),y};
-  char w[PGS];
-  octet W={sizeof(w),sizeof(w),w};
-  char pia[PGS];
-  octet PIA={sizeof(pia),sizeof(pia),pia};
-  char pib[PGS];
-  octet PIB={sizeof(pib),sizeof(pib),pib};
-
-  char pgg1[2*PFS+1];
-  octet PgG1={0,sizeof(pgg1), pgg1};
-
-  char pag1[2*PFS+1];
-  octet PaG1={0,sizeof(pag1), pag1};
-
-  char pbg2[4*PFS];
-  octet PbG2={0,sizeof(pbg2), pbg2};
-
-  char seed[32] = {0};
-  octet SEED = {0,sizeof(seed),seed};
-  csprng RNG;
-
-  char message1[256];
-  char message2[256];
-  octet MESSAGE1 = {0, sizeof(message1), message1};
-  octet MESSAGE2 = {0, sizeof(message2), message2};
-
-  char t1[16];  // Tag
-  char t2[16];  // Tag
-  char k1[16];  // AES Key
-  char k2[16];  // AES Key
-  char iv[12]; // IV - Initialisation vector
-  char c[100];  // Ciphertext
-  char p[100];  // Recovered Plaintext
-  octet T1={sizeof(t1),sizeof(t1),t1};
-  octet T2={sizeof(t2),sizeof(t2),t2};
-  octet K1={0,sizeof(k1),k1};
-  octet K2={0,sizeof(k2),k2};
-  octet IV={0,sizeof(iv),iv};
-  octet C={0,sizeof(c),c};
-  octet P={0,sizeof(p),p};
-
-  int date;
-  date = WCC_today();
-  printf("Date %d \n", date);
-
-  int hashDoneOn = 1;
-  int hashDoneOff = 0;
-
-  OCT_jstring(&MESSAGE1,"Hello Bob");
-  OCT_jstring(&MESSAGE2,"Hello Alice");
-
-  /* unrandom seed value! */
-  SEED.len=32;
-  for (i=0;i<32;i++) SEED.val[i]=i+1;
-
-  /* initialise random number generator */
-  WCC_CREATE_CSPRNG(&RNG,&SEED);
-
-  /* Generate Client master secret for MIRACL and Customer */
-  rtn = WCC_RANDOM_GENERATE(&RNG,&MS);
-  if (rtn != 0) {
-      printf("TA WCC_RANDOM_GENERATE(&RNG,&MS) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA MASTER SECRET: ");
-  OCT_output(&MS);
-
-  // Alice's ID
-  OCT_jstring(&IdA,"alice@miracl.com");
-
-  // TA: Generate Alice's sender key
-  WCC_HASH_ID(&IdA,&AHV);
-  rtn = WCC_GET_G1_MULTIPLE(hashDoneOn,&MS,&AHV,&AKeyG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_MULTIPLE(hashDoneOn,&MS,&AHV,&AKeyG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Alice's sender key: ");
-  OCT_output(&AKeyG1);
-
-  // TA: Generate Alice's G1 time permit
-  rtn = WCC_GET_G1_PERMIT(date,&MS,&AHV,&ATPG1);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G1_PERMIT(date,&MS,&AHV,&ATPG1) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Alice's sender time permit: ");
-  OCT_output(&ATPG1);
-
-  // Bob's ID
-  OCT_jstring(&IdB,"bob@miracl.com");
-
-  // TA: Generate Bob's receiver key
-  WCC_HASH_ID(&IdB,&BHV);
-  rtn = WCC_GET_G2_MULTIPLE(hashDoneOn,&MS,&BHV,&BKeyG2);
-  if (rtn != 0) {
-      printf("TA WCC_GET_G2_MULTIPLE(hashDoneOn,&MS,&BHV,&BKeyG2) Error %d\n", rtn);
-      return 1;
-  }
-  printf("TA Bob's receiver key: ");
-  OCT_output(&BKeyG2);
-
-  // TA: Generate Bob's receiver time permit
-  rtn = WCC_GET_G2_PERMIT(date,&MS,&BHV,&BTPG2);
-  if (rtn != 0)
-    {
-      printf("TA WCC_GET_G2_PERMIT(date,&MS,&BHV,&BTPG2) Error %d\n", rtn);
-      return 1;
-    }
-  printf("TA Bob's receiver time permit: ");
-  OCT_output(&BTPG2);
-  printf("\n");
-
-  printf("Alice\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&X);
-  if (rtn != 0) {
-      printf("Alice WCC_RANDOM_GENERATE(&RNG,&X) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Alice X: ");
-  OCT_output(&X);
-  printf("\n");
-#endif
-
-  rtn = WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1);
-  if (rtn != 0) {
-      printf("Alice WCC_GET_G1_TPMULT(date,&X,&IdA,&PaG1) Error %d\n", rtn);
-      return 1;
-  }
-
-  printf("Alice sends IdA and PaG1 to Bob\n\n");
-  printf("Alice IdA: "); 
-  OCT_output_string(&IdA); 
-  printf("\n");
-  printf("Alice PaG1: ");
-  OCT_output(&PaG1);
-  printf("\n");
-
-  printf("Bob\n");
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&W);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&W) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob W: ");
-  OCT_output(&W);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_TPMULT(date,&W,&IdA,&PgG1) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-#endif
-
-  rtn = WCC_RANDOM_GENERATE(&RNG,&Y);
-  if (rtn != 0) {
-      printf("Bob WCC_RANDOM_GENERATE(&RNG,&Y) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob Y: ");
-  OCT_output(&Y);
-  printf("\n");
-#endif
-  rtn = WCC_GET_G2_TPMULT(date,&Y,&IdB,&PbG2);
-  if (rtn != 0) {
-      printf("Bob WCC_GET_G1_TPMULT(date,&Y,&IdB,&PbG2) Error %d\n", rtn);
-      return 1;
-  }
-#ifdef DEBUG
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-#endif
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Bob PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Bob PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Bob calculates AES Key
-  WCC_RECEIVER_KEY(date, &Y, &W,  &PIA, &PIB,  &PaG1, &PgG1, &BKeyG2, &BTPG2, &IdA, &K2);
-  if (rtn != 0) {
-      printf("Bob WCC_RECEIVER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Bob AES Key: ");
-  OCT_output(&K2);
-
-  printf("Bob sends IdB, PbG2 and PgG1 to Alice\n\n");
-  printf("Bob IdB: "); 
-  OCT_output_string(&IdB); 
-  printf("\n");
-  printf("Bob PbG2: ");
-  OCT_output(&PbG2);
-  printf("\n");
-  printf("Bob PgG1: ");
-  OCT_output(&PgG1);
-  printf("\n");
-
-  printf("Alice\n");
-
-  // pia = Hq(PaG1,PbG2,PgG1,IdB)
-  WCC_Hq(&PaG1,&PbG2,&PgG1,&IdB,&PIA);
-
-  // pib = Hq(PbG2,PaG1,PgG1,IdA)
-  WCC_Hq(&PbG2,&PaG1,&PgG1,&IdA,&PIB);
-
-#ifdef DEBUG
-  printf("Alice PIA: ");
-  OCT_output(&PIA);
-  printf("\n");
-  printf("Alice PIB: ");
-  OCT_output(&PIB);
-  printf("\n");
-#endif
-
-  // Alice calculates AES Key
-  rtn = WCC_SENDER_KEY(date, &X, &PIA, &PIB, &PbG2, &PgG1, &AKeyG1, &ATPG1, &IdB, &K1);
-  if (rtn != 0) {
-      printf("Alice WCC_SENDER_KEY() Error %d\n", rtn);
-      return 1;
-  }
-  printf("Alice AES Key: ");
-  OCT_output(&K1);
-
-  // Send message
-  IV.len=12;
-  for (i=0;i<IV.len;i++)
-    IV.val[i]=i+1;
-  printf("Alice: IV ");
-  OCT_output(&IV);
-
-  printf("Alice: Message to encrypt for Bob: ");
-  OCT_output_string(&MESSAGE1);
-  printf("\n");
-
-  WCC_AES_GCM_ENCRYPT(&K1, &IV, &IdA, &MESSAGE1, &C, &T1);
-
-  printf("Alice: Ciphertext: ");
-  OCT_output(&C);
-
-  printf("Alice: Encryption Tag: ");
-  OCT_output(&T1);
-  printf("\n");
-
-  WCC_AES_GCM_DECRYPT(&K2, &IV, &IdA, &C, &P, &T2);
-
-  printf("Bob: Decrypted message received from Alice: ");
-  OCT_output_string(&P);
-  printf("\n");
-
-  printf("Bob: Decryption Tag: ");
-  OCT_output(&T2);
-  printf("\n");
-
-  if (!OCT_comp(&MESSAGE1,&P)) {
-      printf("FAILURE Decryption\n");
-      return 1;
-  }
-
-  if (!OCT_comp(&T1,&T2)) {
-      printf("FAILURE TAG mismatch\n");
-      return 1;
-  }
-
-  WCC_KILL_CSPRNG(&RNG);
-
-  return 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/utils.c
----------------------------------------------------------------------
diff --git a/c/utils.c b/c/utils.c
deleted file mode 100755
index 592780e..0000000
--- a/c/utils.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "amcl.h"
-#include "utils.h"
-
-void hex2bytes(char *hex, char *bin)
-{
-  int i;
-  char v;
-  int len=strlen(hex);
-  for (i = 0; i < len/2; i++) {
-    char c = hex[2*i];
-    if (c >= '0' && c <= '9') {
-        v = c - '0';
-    } else if (c >= 'A' && c <= 'F') {
-        v = c - 'A' + 10;
-    } else if (c >= 'a' && c <= 'f') {
-        v = c - 'a' + 10;
-    } else {
-        v = 0;
-    }
-    v <<= 4;
-    c = hex[2*i + 1];
-    if (c >= '0' && c <= '9') {
-        v += c - '0';
-    } else if (c >= 'A' && c <= 'F') {
-        v += c - 'A' + 10;
-    } else if (c >= 'a' && c <= 'f') {
-        v += c - 'a' + 10;
-    } else {
-        v = 0;
-    }
-    bin[i] = v;
-  }
-}
-
-/*! \brief Generate a random six digit one time password
- *
- *  Generates a random six digit one time password
- *
- *  @param  RNG             random number generator
- *  @return OTP             One Time Password
- */
-int generateOTP(csprng* RNG)
-{
-  int OTP=0;
-
-  int i = 0;
-  int val = 0;
-  char byte[6] = {0};
-
-  /* Generate random 6 digit random value */
-  for (i=0;i<6;i++)
-    {
-       byte[i]=RAND_byte(RNG);
-       val = byte[i];
-       OTP = ((abs(val) % 10) * pow(10.0,i)) + OTP;
-    }
-
-  return OTP;
-}
-
-/*! \brief Generate a random Octet
- *
- *  Generate a random Octet
- *
- *  @param  RNG             random number generator
- *  @return randomValue     random Octet
- */
-void generateRandom(csprng *RNG,octet *randomValue)
-{
-  int i;
-  for (i=0;i<randomValue->len;i++)
-    randomValue->val[i]=RAND_byte(RNG);
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/utils.h
----------------------------------------------------------------------
diff --git a/c/utils.h b/c/utils.h
deleted file mode 100755
index d1cbae0..0000000
--- a/c/utils.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-#ifndef UTILS_H
-#define UTILS_H
-
-#include "amcl.h"
-#include <math.h>
-
-DLL_EXPORT void hex2bytes(char *hex, char *bin);
-DLL_EXPORT void generateRandom(csprng*, octet*);
-DLL_EXPORT int generateOTP(csprng*);
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/version.c
----------------------------------------------------------------------
diff --git a/c/version.c b/c/version.c
deleted file mode 100755
index 8c2d899..0000000
--- a/c/version.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-#include "version.h"
-
-
-/*! \brief Print version number and information about the build
- *
- *  Print version number and information about the build
- *
- */
-void version(char* info)
-{
-  sprintf(info,"Version: %d.%d.%d OS: %s FIELD CHOICE: %s CURVE TYPE: %s WORD_LENGTH: %d", AMCL_VERSION_MAJOR, AMCL_VERSION_MINOR, AMCL_VERSION_PATCH, OS, FIELD_CHOICE, CURVE_TYPE, CHUNK);
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-milagro-crypto/blob/70e3a3a3/c/version.h
----------------------------------------------------------------------
diff --git a/c/version.h b/c/version.h
deleted file mode 100755
index 18a899f..0000000
--- a/c/version.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-#ifndef VERSION_H
-#define VERSION_H
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "amcl.h"
-
-DLL_EXPORT void version(char* info);
-
-#endif