mirror of
https://git.freebsd.org/ports.git
synced 2025-05-28 17:06:32 -04:00
100 lines
2.3 KiB
C++
100 lines
2.3 KiB
C++
--- source/iked/crypto.cpp.orig 2012-12-11 06:56:33 UTC
|
|
+++ source/iked/crypto.cpp
|
|
@@ -376,10 +376,6 @@ bool dh_init( long group, DH ** dh_data, long * dh_siz
|
|
if( dh == NULL )
|
|
return false;
|
|
|
|
- dh->p = NULL;
|
|
- dh->g = NULL;
|
|
- dh->length = 0;
|
|
-
|
|
//
|
|
// set p ( prime ) value
|
|
//
|
|
@@ -387,49 +383,50 @@ bool dh_init( long group, DH ** dh_data, long * dh_siz
|
|
unsigned char * p_data = NULL;
|
|
size_t p_size = 0;
|
|
|
|
- dh->p = BN_new();
|
|
- if( dh->p == NULL )
|
|
+ BIGNUM *p = BN_new();
|
|
+ BIGNUM *g = BN_new();
|
|
+ if( p == NULL || g == NULL )
|
|
goto dh_failed;
|
|
|
|
switch( group )
|
|
{
|
|
case 1:
|
|
- if( !BN_bin2bn( group1, sizeof( group1 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group1, sizeof( group1 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 2:
|
|
- if( !BN_bin2bn( group2, sizeof( group2 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group2, sizeof( group2 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 5:
|
|
- if( !BN_bin2bn( group5, sizeof( group5 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group5, sizeof( group5 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 14:
|
|
- if( !BN_bin2bn( group14, sizeof( group14 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group14, sizeof( group14 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 15:
|
|
- if( !BN_bin2bn( group15, sizeof( group15 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group15, sizeof( group15 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 16:
|
|
- if( !BN_bin2bn( group16, sizeof( group16 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group16, sizeof( group16 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 17:
|
|
- if( !BN_bin2bn( group17, sizeof( group17 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group17, sizeof( group17 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
case 18:
|
|
- if( !BN_bin2bn( group18, sizeof( group18 ), dh->p ) )
|
|
+ if( !BN_bin2bn( group18, sizeof( group18 ), p ) )
|
|
goto dh_failed;
|
|
break;
|
|
|
|
@@ -441,13 +438,11 @@ bool dh_init( long group, DH ** dh_data, long * dh_siz
|
|
// set g ( generator ) value
|
|
//
|
|
|
|
- dh->g = BN_new();
|
|
- if( dh->g == NULL )
|
|
+ if( !BN_set_word( g, 2 ) )
|
|
goto dh_failed;
|
|
|
|
- if( !BN_set_word( dh->g, 2 ) )
|
|
- goto dh_failed;
|
|
-
|
|
+ DH_set0_pqg(dh, p, NULL, g);
|
|
+
|
|
//
|
|
// generate private and public DH values
|
|
//
|
|
@@ -456,7 +451,7 @@ bool dh_init( long group, DH ** dh_data, long * dh_siz
|
|
goto dh_failed;
|
|
|
|
*dh_data = dh;
|
|
- *dh_size = BN_num_bytes( dh->p );
|
|
+ *dh_size = BN_num_bytes( DH_get0_p( dh ) );
|
|
|
|
return true;
|
|
|