pike.git
/
src
/
post_modules
/
Nettle
/
hogweed.cmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/post_modules/Nettle/hogweed.cmod:180:
push_bignum((MP_INT *)&key.p); push_bignum((MP_INT *)&key.q); rsa_private_key_clear(&key); rsa_public_key_clear(&pub); f_aggregate(4); stack_pop_n_elems_keep_top(args); /* Remove bits, e and rnd. */ }
-
/*! @decl int(0..) rsa_unpad(string(0..255) data, int type)
-
*!
-
*! Unpads a message that has been padded according to
-
*! RSAES-PKCS1-V1_5-ENCODE(message) in PKCS#1 v2.2. The padding
-
*! method used on the original message must be provided in the
-
*! @[type] parameter. All content dependent processing is done in
-
*! constant time for the same padding type and @[data] length.
-
*/
-
PIKEFUN int rsa_unpad(string(0..255) data, int type)
-
{
-
int i, pad=0, nonpad=0, pos=0;
-
unsigned char *str;
-
-
NO_WIDE_STRING(data);
-
-
/* Indata is smaller than minimum size, so we can exit immediately
-
without timing issue. 1 type + 8 padding + 1 delimiter + 1 value
-
= 11 bytes. */
-
if(data->len < 11 ) RETURN 0;
-
str = (unsigned char*)data->str + data->len - 1;
-
-
for(i=data->len-1; i>0; i--,str--)
-
{
-
switch(*str)
-
{
-
case 0: pos=i; break;
-
case 0xff: pad=i; break;
-
default: nonpad=i; break;
-
}
-
}
-
-
if( type==2 )
-
{
-
nonpad=pos+1;
-
pad=1;
-
}
-
-
if( (pad==1) + (nonpad>pos) + (*str==type) + (pos>8) == 4 )
-
RETURN pos+1;
-
RETURN 0;
-
}
-
+
#ifdef dsa_params_init /*! @class DH_Params *! *! Diffie-Hellman Parameters. */ PIKECLASS DH_Params program_flags PROGRAM_CLEAR_STORAGE; { CVAR struct dsa_params params;