M
~fricky schrieb:
michi82 schrieb:
also + / - / * / :
gehen schon da muss ich nichtmal add(&ergebniss, &a, &b) machen ... zumindest hat er da noch keine fehler ausgespuckt
naja, keine compile-fehler. aber ich vermute mal, es passiert nicht das, was du willst.
da hattest du wieder recht ich musste das echt so machen mit dem bn_add() ...
hab meinen code jetzt etwas an den rest angepasst aber ich kann ihn noch nicht testen weil diese fehlermeldungen kommen
Beschreibung Ressource Pfad Position Typ
a_type.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 74 C/C++ Problem
b_print.c conflicting types for built-in function 'pow10' OpenSSL-0.9.7 569 C/C++ Problem
pem_lib.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 479 C/C++ Problem
x_name.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 242 C/C++ Problem
x_name.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 239 C/C++ Problem
x_name.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 177 C/C++ Problem
x_name.c Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln OpenSSL-0.9.7 171 C/C++ Problem
das komische ist ich hab gar nix in den dateien da gemacht und die fehler kommen nur ab und zu ... zur zeit gehen sie zumindest nicht weg
das ist mein code
#include <stdio.h>
#include "cryptlib.h"
#include "bn_lcl.h"
#define MONT_WORD /* use the faster word-based algorithm */
int BN_Square_Multiply(BIGNUM *m, BIGNUM *e, BIGNUM *n, BN_SM_CTX *sm, BN_CTX *ctx)
{
//Binär umwandlung
printf("funktioniert\n");
int i;
int binArray[2048];
for(i=sizeof(e)*8-1; i>=0; --i) //mit i bit für bit durchgehen
{ //Du fängst beim ersten Bit an und "shiftest" dich durch alle Bits der Zahl.
//binArray[i]=((e>>i)&1); //Durch die bitweise &-Verknüpfung wird immer eine 1 ausgegeben, wenn sie auch beim Bit
binArray[i]=BN_num_bits(e); //der Zahl gesetzt ist.
}
//S&M
BIGNUM *c;
int d=2048;
int aa=1;
//unsigned long value=1;
BIGNUM *ModCN;
BIGNUM *ModMN;
BN_CTX_start(ctx);
c = BN_CTX_get(ctx);
ModCN = BN_CTX_get(ctx);
ModMN = BN_CTX_get(ctx);
while(binArray[d]!=aa)
{
d--;
}
for(i=d; i>=0; i--)
{
BN_mod(ModCN,c,n,ctx);
BN_mul(c, c, ModCN, ctx);
if(binArray[i]==1)
{
BN_mod(ModMN,m,n,ctx);
BN_mul(c,c,ModMN,ctx);
}
}
printf("Test\n");
//return c;
return 1;
}
BN_SM_CTX *BN_SM_CTX_new(void) //allokiert und initialisiert einen neuen SM struct
{
BN_SM_CTX *ret;
if ((ret=(BN_SM_CTX *)OPENSSL_malloc(sizeof(BN_SM_CTX))) == NULL)
return(NULL);
BN_SM_CTX_init(ret);
//ret->flags=BN_FLG_MALLOCED;
return(ret);
}
void BN_SM_CTX_init(BN_SM_CTX *ctx) //initialisieren
{
BN_init(&(ctx->result));
BN_init(&(ctx->basis));
BN_init(&(ctx->exponent));
BN_init(&(ctx->modulo));
}
void BN_SM_CTX_free(BN_SM_CTX *sm) //freigeben
{
if(sm == NULL)
return;
BN_free(&(sm->result));
BN_free(&(sm->basis));
BN_free(&(sm->exponent));
BN_free(&(sm->modulo));
//if (sm->flags & BN_FLG_MALLOCED)
// OPENSSL_free(sm);
}