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. */ }
+
PIKEFUN int rsa_unpad(string(0..255) data, int type)
+
{
+
int i, pad=0, nonpad=0, pos=0;
+
+
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;
+
+
for(i=data->len-1; i>0; i--)
+
{
+
switch((unsigned char)data->str[i])
+
{
+
case 0: pos=i; break;
+
case 0xff: pad=i; break;
+
default: nonpad=i; break;
+
}
+
}
+
+
if( data->str[0]==2 )
+
{
+
nonpad=pos+1;
+
pad=1;
+
}
+
+
if( (pad==1) + (nonpad>pos) + (data->str[0]==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;