Bug #35 » aqbanking-gen-rah-keys.patch
src/libs/plugins/backends/aqhbci/banking/provider_keys.c | ||
---|---|---|
assert(h);
|
||
/* check crypt mode */
|
||
if (AH_User_GetCryptMode(u)!=AH_CryptMode_Rdh) {
|
||
if ((AH_User_GetCryptMode(u)!=AH_CryptMode_Rdh) && (AH_User_GetCryptMode(u)!=AH_CryptMode_Rah)) {
|
||
DBG_ERROR(AQHBCI_LOGDOMAIN,
|
||
"Key generation not supported with this token");
|
||
return GWEN_ERROR_INVALID;
|
||
... | ... | |
return GWEN_ERROR_INVALID;
|
||
}
|
||
if (rdhType==10) {
|
||
// XXX RAH?
|
||
if ((AH_User_GetCryptMode(u)==AH_CryptMode_Rdh) && (rdhType==10)) {
|
||
/* the specs say that for RDH-10 we must not create keys longer than the server's
|
||
* sign key (or, if absent, the server's encipher key) */
|
||
uint32_t skeyId;
|
||
... | ... | |
}
|
||
}
|
||
switch (rdhType) {
|
||
case 1:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 96);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 768);
|
||
break;
|
||
case 2:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 3:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 5:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 10:
|
||
if (maxServerKeySizeInBits) {
|
||
int n=maxServerKeySizeInBits/8;
|
||
assert(maxServerKeySizeInBits%8==0);
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, n);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, maxServerKeySizeInBits);
|
||
DBG_NOTICE(AQHBCI_LOGDOMAIN, "Creating keys of size: %d bytes, %d bits", n, maxServerKeySizeInBits);
|
||
if(AH_User_GetCryptMode(u)==AH_CryptMode_Rdh) {
|
||
switch (rdhType) {
|
||
case 1:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 96);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 768);
|
||
break;
|
||
case 2:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 3:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 5:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 7:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 8:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 9:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 10:
|
||
if (maxServerKeySizeInBits) {
|
||
int n=maxServerKeySizeInBits/8;
|
||
assert(maxServerKeySizeInBits%8==0);
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, n);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, maxServerKeySizeInBits);
|
||
DBG_NOTICE(AQHBCI_LOGDOMAIN, "Creating keys of size: %d bytes, %d bits", n, maxServerKeySizeInBits);
|
||
}
|
||
else {
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
}
|
||
break;
|
||
default:
|
||
DBG_ERROR(AQHBCI_LOGDOMAIN, "RDH %d not supported", AH_User_GetRdhType(u));
|
||
return GWEN_ERROR_INVALID;
|
||
}
|
||
else {
|
||
}
|
||
if(AH_User_GetCryptMode(u)==AH_CryptMode_Rah) {
|
||
switch (rdhType) {
|
||
case 7:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 9:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
case 10:
|
||
GWEN_Crypt_CryptAlgo_SetChunkSize(algo, 256);
|
||
GWEN_Crypt_CryptAlgo_SetKeySizeInBits(algo, 2048);
|
||
break;
|
||
default:
|
||
DBG_ERROR(AQHBCI_LOGDOMAIN, "RAH %d not supported", AH_User_GetRdhType(u));
|
||
return GWEN_ERROR_INVALID;
|
||
}
|
||
break;
|
||
default:
|
||
DBG_ERROR(AQHBCI_LOGDOMAIN, "RDH %d not supported", AH_User_GetRdhType(u));
|
||
return GWEN_ERROR_INVALID;
|
||
}
|
||
GWEN_Gui_ProgressLog2(0,
|