src/mpin192.c.in [493:552]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return res; } /* Time Permit CTT=s*H(date|H(CID)) where s is master secret */ int MPIN_ZZZ_GET_CLIENT_PERMIT(int sha,int date,octet *S,octet *CID,octet *CTT) { BIG_XXX s; ECP_ZZZ P; char h[MODBYTES_XXX]; octet H= {0,sizeof(h),h}; mhashit(sha,date,CID,&H); ECP_ZZZ_mapit(&P,&H); BIG_XXX_fromBytes(s,S->val); PAIR_ZZZ_G1mul(&P,s); ECP_ZZZ_toOctet(CTT,&P,false); return 0; } // if date=0 only use HID, set HCID=NULL // if date and PE, use HID and HCID /* Outputs H(CID) and H(CID)+H(T|H(CID)) for time permits. If no time permits set HTID=NULL */ void MPIN_ZZZ_SERVER_1(int sha,int date,octet *CID,octet *HID,octet *HTID) { char h[MODBYTES_XXX]; octet H= {0,sizeof(h),h}; ECP_ZZZ P,R; #ifdef USE_ANONYMOUS ECP_ZZZ_mapit(&P,CID); #else mhashit(sha,-1,CID,&H); ECP_ZZZ_mapit(&P,&H); #endif ECP_ZZZ_toOctet(HID,&P,false); // new if (date) { #ifdef USE_ANONYMOUS mhashit(sha,date,CID,&H); #else mhashit(sha,date,&H,&H); #endif ECP_ZZZ_mapit(&R,&H); ECP_ZZZ_add(&P,&R); ECP_ZZZ_toOctet(HTID,&P,false); } } /* Implement M-Pin on server side */ int MPIN_ZZZ_SERVER_2(int date,octet *HID,octet *HTID,octet *Y,octet *SST,octet *xID,octet *xCID,octet *mSEC,octet *E,octet *F,octet *Pa) { BIG_XXX y; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - src/mpin256.c.in [516:575]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return res; } /* Time Permit CTT=s*H(date|H(CID)) where s is master secret */ int MPIN_ZZZ_GET_CLIENT_PERMIT(int sha,int date,octet *S,octet *CID,octet *CTT) { BIG_XXX s; ECP_ZZZ P; char h[MODBYTES_XXX]; octet H= {0,sizeof(h),h}; mhashit(sha,date,CID,&H); ECP_ZZZ_mapit(&P,&H); BIG_XXX_fromBytes(s,S->val); PAIR_ZZZ_G1mul(&P,s); ECP_ZZZ_toOctet(CTT,&P,false); return 0; } // if date=0 only use HID, set HCID=NULL // if date and PE, use HID and HCID /* Outputs H(CID) and H(CID)+H(T|H(CID)) for time permits. If no time permits set HTID=NULL */ void MPIN_ZZZ_SERVER_1(int sha,int date,octet *CID,octet *HID,octet *HTID) { char h[MODBYTES_XXX]; octet H= {0,sizeof(h),h}; ECP_ZZZ P,R; #ifdef USE_ANONYMOUS ECP_ZZZ_mapit(&P,CID); #else mhashit(sha,-1,CID,&H); ECP_ZZZ_mapit(&P,&H); #endif ECP_ZZZ_toOctet(HID,&P,false); // new if (date) { #ifdef USE_ANONYMOUS mhashit(sha,date,CID,&H); #else mhashit(sha,date,&H,&H); #endif ECP_ZZZ_mapit(&R,&H); ECP_ZZZ_add(&P,&R); ECP_ZZZ_toOctet(HTID,&P,false); } } /* Implement M-Pin on server side */ int MPIN_ZZZ_SERVER_2(int date,octet *HID,octet *HTID,octet *Y,octet *SST,octet *xID,octet *xCID,octet *mSEC,octet *E,octet *F,octet *Pa) { BIG_XXX y; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -