Loading src/secureid.c +15 −11 Changes for src/secureid.c: 15 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include "assert.h" #include "stdio.h" #include "sys/mman.h" Loading Loading @@ -106,7 +107,7 @@ void initSID(struct SID **sid){ (*sid)->Revesion=1; (*sid)->SubAuthorityCount=1; setAuthority(*sid,NullAccount); setSubAuthority(*sid,0,0); setSubAuthority(*sid,0); }; void destroySID(struct SID *sid){ Loading Loading @@ -137,16 +138,22 @@ void setAuthority(struct SID *sid,Authority authority){ } } void setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count){ void setSubAuthority(struct SID *sid,uint32_t uid){ sid->SubAuthority[0]=uid; } void setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count){ if(sid->SubAuthorityCount!=0){ munmap(sid->SubAuthority[1],(sizeof(uint32_t)*sid->SubAuthorityCount)); } if(sid->SubAuthority[0]==21){ sid->SubAuthority[1]=map32(sizeof(uint32_t)*count); memcpy32(sid->SubAuthority[1],uid, (count * sizeof(uint32_t))); memcpy32(sid->SubAuthority[1],did, (count * sizeof(uint32_t))); sid->SubAuthorityCount=count; }else{ assert("only SubAuthority with value 21 supports domain indentfier !"); } } int parseSID(struct SID *sid,const char *input,int size){ Loading Loading @@ -228,16 +235,13 @@ int printSID(struct SID *sid,char *output,int size){ void generateDomainIdentfier(uint32_t* output, int count){ //the last place will be used for the real user id --count; FILE *devrandom; devrandom = fopen("/dev/random","ro"); devrandom = fopen("/dev/random","r"); for(int i=0; i<count; ++i){ for(char ii=0; ii<sizeof(uint32_t); ++ii){ output[i]= output[i] | getc(devrandom); for(char ii=0; ii<sizeof(uint32_t); ii=ii+sizeof(char)){ output[i] |= getc(devrandom); } } Loading src/secureid.h +13 −3 Changes for src/secureid.h: 13 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -118,13 +118,23 @@ extern "C" { void setAuthority(struct SID *sid,Authority authority); /*! \fn setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count) \fn setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count) \brief This function will set your DomainIndentfier. \param sid SID struct set will be the value set \param did the indentifier of your domain \param count the indentifier array size */ void setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count); /*! \fn setSubAuthority(struct SID *sid,uint32_t) \brief This function will set your SubAuthority. \param sid SID struct set will be the value set \param uid the indentifier array that will you set \param count the indentifier array size */ void setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count); void setSubAuthority(struct SID *sid,uint32_t uid); /*! \fn int parseSID(struct SID *sid,const char *input,int size) Loading test/gendomain.c +6 −5 Changes for test/gendomain.c: 6 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -35,20 +35,21 @@ int main(int argc, char *argv[]){ struct SID *sid; initSID(&sid); uint32_t ident[4]; uint32_t ident[3]; setAuthority(sid,NT); generateDomainIdentfier(ident,4); setSubAuthority(sid,21); setRid(sid,1001); generateDomainIdentfier(ident,3); setDomainIndentfier(sid,ident,3); setSubAuthority(sid,ident,4); setRid(sid,1001); printSID(sid,sidc,512); destroySID(sid); printf("%s",sidc); printf("%s \n",sidc); return 0; } Loading
src/secureid.c +15 −11 Changes for src/secureid.c: 15 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include "assert.h" #include "stdio.h" #include "sys/mman.h" Loading Loading @@ -106,7 +107,7 @@ void initSID(struct SID **sid){ (*sid)->Revesion=1; (*sid)->SubAuthorityCount=1; setAuthority(*sid,NullAccount); setSubAuthority(*sid,0,0); setSubAuthority(*sid,0); }; void destroySID(struct SID *sid){ Loading Loading @@ -137,16 +138,22 @@ void setAuthority(struct SID *sid,Authority authority){ } } void setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count){ void setSubAuthority(struct SID *sid,uint32_t uid){ sid->SubAuthority[0]=uid; } void setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count){ if(sid->SubAuthorityCount!=0){ munmap(sid->SubAuthority[1],(sizeof(uint32_t)*sid->SubAuthorityCount)); } if(sid->SubAuthority[0]==21){ sid->SubAuthority[1]=map32(sizeof(uint32_t)*count); memcpy32(sid->SubAuthority[1],uid, (count * sizeof(uint32_t))); memcpy32(sid->SubAuthority[1],did, (count * sizeof(uint32_t))); sid->SubAuthorityCount=count; }else{ assert("only SubAuthority with value 21 supports domain indentfier !"); } } int parseSID(struct SID *sid,const char *input,int size){ Loading Loading @@ -228,16 +235,13 @@ int printSID(struct SID *sid,char *output,int size){ void generateDomainIdentfier(uint32_t* output, int count){ //the last place will be used for the real user id --count; FILE *devrandom; devrandom = fopen("/dev/random","ro"); devrandom = fopen("/dev/random","r"); for(int i=0; i<count; ++i){ for(char ii=0; ii<sizeof(uint32_t); ++ii){ output[i]= output[i] | getc(devrandom); for(char ii=0; ii<sizeof(uint32_t); ii=ii+sizeof(char)){ output[i] |= getc(devrandom); } } Loading
src/secureid.h +13 −3 Changes for src/secureid.h: 13 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -118,13 +118,23 @@ extern "C" { void setAuthority(struct SID *sid,Authority authority); /*! \fn setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count) \fn setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count) \brief This function will set your DomainIndentfier. \param sid SID struct set will be the value set \param did the indentifier of your domain \param count the indentifier array size */ void setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count); /*! \fn setSubAuthority(struct SID *sid,uint32_t) \brief This function will set your SubAuthority. \param sid SID struct set will be the value set \param uid the indentifier array that will you set \param count the indentifier array size */ void setSubAuthority(struct SID *sid,uint32_t* uid,uint8_t count); void setSubAuthority(struct SID *sid,uint32_t uid); /*! \fn int parseSID(struct SID *sid,const char *input,int size) Loading
test/gendomain.c +6 −5 Changes for test/gendomain.c: 6 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -35,20 +35,21 @@ int main(int argc, char *argv[]){ struct SID *sid; initSID(&sid); uint32_t ident[4]; uint32_t ident[3]; setAuthority(sid,NT); generateDomainIdentfier(ident,4); setSubAuthority(sid,21); setRid(sid,1001); generateDomainIdentfier(ident,3); setDomainIndentfier(sid,ident,3); setSubAuthority(sid,ident,4); setRid(sid,1001); printSID(sid,sidc,512); destroySID(sid); printf("%s",sidc); printf("%s \n",sidc); return 0; }