Commit 7ed70d98 authored by jan.koester's avatar jan.koester
Browse files

generate now works

parent 8676c31d
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -140,17 +140,22 @@ void setAuthority(struct SID *sid,Authority authority){

void setSubAuthority(struct SID *sid,uint32_t uid){
    sid->SubAuthority[0]=uid;
    sid->SubAuthorityCount=2;
}

void setDomainIndentfier(struct SID *sid,uint32_t* did,uint8_t count){
    if(sid->SubAuthorityCount!=0){
        munmap(sid->SubAuthority[1],(sizeof(uint32_t)*sid->SubAuthorityCount));
        munmap32(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],did, (count * sizeof(uint32_t)));
        sid->SubAuthorityCount=count;

        for(uint32_t i=0; i<count; ++i){
            sid->SubAuthority[i+1]=did[i];
        }

        sid->SubAuthorityCount=(count+2);
    }else{
        assert("only SubAuthority with value 21 supports domain indentfier !");
    }
@@ -233,15 +238,15 @@ int printSID(struct SID *sid,char *output,int size){
    return written;
};

void generateDomainIdentfier(uint32_t* output, int count){
void generateDomainIdentfier(uint32_t *did, int count){

    FILE *devrandom;

    devrandom = fopen("/dev/random","r");

    for(int i=0; i<count; ++i){
        for(char ii=0; ii<sizeof(uint32_t); ii=ii+sizeof(char)){
            output[i] |= getc(devrandom);
        while(did[i]< 1000000000){
            did[i] = 1000000000 << fgetc(devrandom);
        }
    }

+4 −4
Original line number Diff line number Diff line
@@ -155,12 +155,12 @@ extern "C" {
    int printSID(struct SID *sid,char *output,int size);

     /*!
      \fn void generateDomainIdentfier(uint32_t *output,int count)
      \fn void generateDomainIdentfier(struct SID *sid,int count)
      \brief This function will genarated domain indentfier numbers
      \param output a uint32_t array that included the unique number
      \param count the max size of output
      \param did output for the generated  DomainIdentfier
      \param count the amount of domain indentfier's
    */
    void generateDomainIdentfier(uint32_t *output,int count);
    void generateDomainIdentfier(uint32_t *did,int count);


    /*!
+6 −3
Original line number Diff line number Diff line
@@ -35,14 +35,17 @@ int main(int argc, char *argv[]){
    struct SID *sid;
    initSID(&sid);

    uint32_t ident[3];


    setAuthority(sid,NT);

    setSubAuthority(sid,21);

    generateDomainIdentfier(ident,3);
    setDomainIndentfier(sid,ident,3);
    uint32_t did[3];

    generateDomainIdentfier(did,3);

    setDomainIndentfier(sid,did,3);

    setRid(sid,1001);