aboutsummaryrefslogtreecommitdiffstats
path: root/cipher/pubkey.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1998-06-16 15:13:28 +0000
committerWerner Koch <[email protected]>1998-06-16 15:13:28 +0000
commite6ac5acbbf56ed8995bfa4d5a28160fa3a5d825f (patch)
tree6ff27595e33dd57d3a8979d245236bd5f404c9b4 /cipher/pubkey.c
parentextensions are now working and fixed a lot of bugs (diff)
downloadgnupg-e6ac5acbbf56ed8995bfa4d5a28160fa3a5d825f.tar.gz
gnupg-e6ac5acbbf56ed8995bfa4d5a28160fa3a5d825f.zip
some more internall structure changes
Diffstat (limited to '')
-rw-r--r--cipher/pubkey.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/cipher/pubkey.c b/cipher/pubkey.c
index b18f1c316..f59996c4d 100644
--- a/cipher/pubkey.c
+++ b/cipher/pubkey.c
@@ -33,7 +33,7 @@
#include "dynload.h"
-#define TABLE_SIZE 20
+#define TABLE_SIZE 10
struct pubkey_table_s {
const char *name;
@@ -93,13 +93,8 @@ dummy_get_nbits( int algo, MPI *pkey )
static void
setup_pubkey_table()
{
-
- static int initialized = 0;
int i;
- if( initialized )
- return;
-
i = 0;
pubkey_table[i].algo = PUBKEY_ALGO_ELGAMAL;
pubkey_table[i].name = elg_get_info( pubkey_table[i].algo,
@@ -155,7 +150,6 @@ setup_pubkey_table()
for( ; i < TABLE_SIZE; i++ )
pubkey_table[i].name = NULL;
- initialized = 1;
}
@@ -165,6 +159,7 @@ setup_pubkey_table()
static int
load_pubkey_modules()
{
+ static int initialized = 0;
static int done = 0;
void *context = NULL;
struct pubkey_table_s *ct;
@@ -173,6 +168,12 @@ load_pubkey_modules()
const char *name;
int any = 0;
+
+ if( !initialized ) {
+ setup_pubkey_table();
+ initialized = 1;
+ return 1;
+ }
if( done )
return 0;
done = 1;
@@ -237,7 +238,6 @@ string_to_pubkey_algo( const char *string )
int i;
const char *s;
- setup_pubkey_table();
do {
for(i=0; (s=pubkey_table[i].name); i++ )
if( !stricmp( s, string ) )
@@ -255,7 +255,6 @@ pubkey_algo_to_string( int algo )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -280,7 +279,6 @@ check_pubkey_algo2( int algo, unsigned usage )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo ) {
@@ -304,7 +302,6 @@ int
pubkey_get_npkey( int algo )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -320,7 +317,6 @@ int
pubkey_get_nskey( int algo )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -336,7 +332,6 @@ int
pubkey_get_nsig( int algo )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -352,7 +347,6 @@ int
pubkey_get_nenc( int algo )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -369,7 +363,6 @@ pubkey_nbits( int algo, MPI *pkey )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -384,7 +377,6 @@ pubkey_generate( int algo, unsigned nbits, MPI *skey, MPI **retfactors )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -400,7 +392,6 @@ pubkey_check_secret_key( int algo, MPI *skey )
{
int i;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo )
@@ -423,7 +414,6 @@ pubkey_encrypt( int algo, MPI *resarr, MPI data, MPI *pkey )
/* FIXME: check that data fits into the key (in xxx_encrypt)*/
- setup_pubkey_table();
if( DBG_CIPHER ) {
log_debug("pubkey_encrypt: algo=%d\n", algo );
for(i=0; i < pubkey_get_npkey(algo); i++ )
@@ -461,7 +451,6 @@ pubkey_decrypt( int algo, MPI *result, MPI *data, MPI *skey )
{
int i, rc;
- setup_pubkey_table();
*result = NULL; /* so the caller can always do an mpi_free */
if( DBG_CIPHER ) {
log_debug("pubkey_decrypt: algo=%d\n", algo );
@@ -498,7 +487,6 @@ pubkey_sign( int algo, MPI *resarr, MPI data, MPI *skey )
{
int i, rc;
- setup_pubkey_table();
if( DBG_CIPHER ) {
log_debug("pubkey_sign: algo=%d\n", algo );
for(i=0; i < pubkey_get_nskey(algo); i++ )
@@ -532,7 +520,6 @@ pubkey_verify( int algo, MPI hash, MPI *data, MPI *pkey,
{
int i, rc;
- setup_pubkey_table();
do {
for(i=0; pubkey_table[i].name; i++ )
if( pubkey_table[i].algo == algo ) {