Programm bleibt ständig hängen



  • ich hab OpenSSL ein wenig umgeschrieben und jetzt bleibt ständig bei der verschlüsselung alles hängen als wenn ich irgendwo eine endlos schleife hätte
    aber ich kann den fehler nicht finden

    und zwar ist es in meiner square & multiply funktion jedesmal wenn die irgendwo aufgerufen wird geht nix mehr

    edit: nichtmal die printfs werden angezeigt ... als würde er die funktion überspringen

    int BN_SM(BIGNUM *erg, const BIGNUM *m, const BIGNUM *e,
    		const BIGNUM *n, BN_CTX *ctx, BN_SM_CTX *sm)
    {
    	printf("test");
    	int binArray[2048];
    	int i, num;
    	for(i=0; i<2048; i++)
    	{
    		binArray[i]=0;
    	}
    
    	num=BN_num_bits(e);
    	for(i=sizeof(num)*8-1; i>=0; --i)
    	{
    		binArray[i]=((num>>i)&1);
    	}
    
    	//S&M
    	BIGNUM *c;
    	int d=2048;
    
    	//BIGNUM *ModCN;
    	BIGNUM *ModMN;
    
    	BN_CTX_start(ctx);
    	c = BN_CTX_get(ctx);
    	if (c == NULL) goto err;
    	//ModCN = BN_CTX_get(ctx);
    	//if (ModCN == NULL) goto err;
    	ModMN = BN_CTX_get(ctx);
    	if (ModMN == NULL) goto err;
    
    	while(binArray[d]!=1)
    	{
    		d--;
    	}
    
    	printf("%i",d);
    	for(i=d; i>=0; i--)
    	{
    		printf("%i",d);
    		//BN_mod_mul(c,c,c,n,ctx);
    		BN_exp(c,c,c,ctx);
    		BN_mod(c,c,n,ctx);
    		if(binArray[i]==1)
    		{
    			BN_mod(ModMN,m,n,ctx);
    			BN_mul(c,c,ModMN,ctx);
    		}
    	}
    	return(1);
    err:
    	BN_CTX_end(ctx);
    	return(0);
    }
    


  • frag das im openssl forum, woher sollen wir das denn hier wissen, lolz..



  • wenn man schon printf()'s als debugging hilfsmittel verwendet, dann sollte man auch sicherstellen, daß stdout geflusht wird. also ein "\n" am string ranhängen, wenn das nicht hilft noch ein fflush(stdout) nach printf() ausführen.



  • berniebuttson schrieb:

    frag das im openssl forum, woher sollen wir das denn hier wissen, lolz..

    ja ne die funktion ist ja nicht von openssl die hab ich selbst gemacht darum hab ichs hier rein geschrieben.
    hast du nen link zu nem deutschsprachigen openssl forum ?

    aber ich hab gerade selbst rausgekriegt woran es liegt
    anscheinend wird bignum *c mit 0 initialisiert und damit hat
    BN_exp ein problem
    dumm nur das es nicht einfach eine funktion gibt mit der ich c eine 1 zuweisen kann 😞


Anmelden zum Antworten