Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 52bbb3da

Von aquamaniac vor mehr als 21 Jahren hinzugefügt

  • ID 52bbb3da7321a052964c2ec0ed587e4ec1e37648
  • Vorgänger a31191f0
  • Nachfolger f2db342a

- fixed a bug in DB concerning loading of binary data
- added a warning to DB when an unknown type specifier is found (which
defaults to "char")
- fixed a bug in RSA code concerning loading of keys from a DB
- first successful test of client/server IPC ;-)
Now it basically works. I also fixed many bugs in the code which is not
used by programs, since it is under heavy development.
- reading keys from a file and writing then to a file now works

git-svn-id: https://devel.aqbanking.de/svn/gwenhywfar/trunk@90 70169cfe-8b10-0410-8925-dcb4b91034d8

Unterschiede anzeigen:

src/crypt/ossl/cryptssl_rsa.c
GWEN_ERRORCODE GWEN_CryptKeyRSA_Encrypt(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_Encrypt(const GWEN_CRYPTKEY *key,
GWEN_BUFFER *src,
GWEN_BUFFER *dst){
unsigned int srclen;
......
GWEN_ERRORCODE GWEN_CryptKeyRSA_Decrypt(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_Decrypt(const GWEN_CRYPTKEY *key,
GWEN_BUFFER *src,
GWEN_BUFFER *dst){
unsigned int srclen;
......
GWEN_ERRORCODE GWEN_CryptKeyRSA_SignBigNum(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_SignBigNum(const GWEN_CRYPTKEY *key,
GWEN_BUFFER *src,
BIGNUM *bnresult){
unsigned int srclen;
......
GWEN_ERRORCODE GWEN_CryptKeyRSA_Sign(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_Sign(const GWEN_CRYPTKEY *key,
GWEN_BUFFER *src,
GWEN_BUFFER *dst){
unsigned int srclen;
......
GWEN_ERRORCODE GWEN_CryptKeyRSA_Verify(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_Verify(const GWEN_CRYPTKEY *key,
GWEN_BUFFER *src,
GWEN_BUFFER *signature){
unsigned int srclen;
......
kd=RSA_new();
assert(kd);
DBG_INFO(0, "Reading this key:");
GWEN_DB_Dump(db, stderr, 2);
pub=GWEN_DB_GetIntValue(db, "public", 0, 1);
p=GWEN_DB_GetBinValue(db, "n", 0, 0, 0, &len);
if (p) {
bn=BN_new();
kd->n=BN_bin2bn((unsigned char*) p, len, bn);
if (pub) {
p=GWEN_DB_GetBinValue(db, "e", 0, 0, 0, &len);
if (p) {
bn=BN_new();
kd->e=BN_bin2bn((unsigned char*) p, len, bn);
}
}
else {
/* OpenSSL might be using blinding, so we MUST set e even if it is not
* otherwise used for private keys */
kd->e=BN_new();
BN_set_word(kd->e, GWEN_CRYPT_RSA_DEFAULT_EXPONENT);
}
p=GWEN_DB_GetBinValue(db, "e", 0, 0, 0, &len);
p=GWEN_DB_GetBinValue(db, "n", 0, 0, 0, &len);
if (p) {
bn=BN_new();
kd->e=BN_bin2bn((unsigned char*) p, len, bn);
kd->n=BN_bin2bn((unsigned char*) p, len, bn);
}
if (!pub) {
......
GWEN_ERRORCODE GWEN_CryptKeyRSA_ToDb(GWEN_CRYPTKEY *key,
GWEN_ERRORCODE GWEN_CryptKeyRSA_ToDb(const GWEN_CRYPTKEY *key,
GWEN_DB_NODE *db,
int pub){
char buffer[GWEN_CRYPT_RSA_MAX_KEY_LENGTH/8];
......
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"public", pub);
l=BN_bn2bin(kd->n, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"n", buffer, l);
if (pub!=0) {
l=BN_bn2bin(kd->e, (unsigned char*) &buffer);
if (kd->n) {
l=BN_bn2bin(kd->n, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"e", buffer, l);
"n", buffer, l);
}
if (pub!=0) {
if (kd->e) {
l=BN_bn2bin(kd->e, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"e", buffer, l);
}
}
else {
l=BN_bn2bin(kd->p, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"p", buffer, l);
if (kd->p) {
l=BN_bn2bin(kd->p, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"p", buffer, l);
}
l=BN_bn2bin(kd->q, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"q", buffer, l);
if (kd->q) {
l=BN_bn2bin(kd->q, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"q", buffer, l);
}
l=BN_bn2bin(kd->dmp1, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"dmp1", buffer, l);
if (kd->dmp1) {
l=BN_bn2bin(kd->dmp1, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"dmp1", buffer, l);
}
l=BN_bn2bin(kd->dmq1, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"dmq1", buffer, l);
if (kd->dmq1) {
l=BN_bn2bin(kd->dmq1, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"dmq1", buffer, l);
}
l=BN_bn2bin(kd->iqmp, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"iqmp", buffer, l);
if (kd->iqmp) {
l=BN_bn2bin(kd->iqmp, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"iqmp", buffer, l);
}
l=BN_bn2bin(kd->d, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"d", buffer, l);
if (kd->d) {
l=BN_bn2bin(kd->d, (unsigned char*) &buffer);
GWEN_DB_SetBinValue(db,
GWEN_DB_FLAGS_DEFAULT |
GWEN_DB_FLAGS_OVERWRITE_VARS,
"d", buffer, l);
}
}
return 0;
}

Auch abrufbar als: Unified diff