summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/gnutls_errors.c1
-rw-r--r--lib/gnutls_errors_int.h1
-rw-r--r--libextra/gnutls_openpgp.c203
3 files changed, 136 insertions, 69 deletions
diff --git a/lib/gnutls_errors.c b/lib/gnutls_errors.c
index 46bb7a0a6b..88829cb44d 100644
--- a/lib/gnutls_errors.c
+++ b/lib/gnutls_errors.c
@@ -126,7 +126,6 @@ static gnutls_error_entry error_algorithms[] = {
ERROR_ENTRY("No supported compression algorithms have been found.", GNUTLS_E_NO_COMPRESSION_ALGORITHMS, 1 ),
ERROR_ENTRY("No supported cipher suites have been found.", GNUTLS_E_NO_CIPHER_SUITES, 1 ),
ERROR_ENTRY("Could not get OpenPGP key", GNUTLS_E_OPENPGP_GETKEY_FAILED, 1),
- ERROR_ENTRY("Invalid value for one or more parameters", GNUTLS_E_INVALID_VALUE, 1),
{0}
};
diff --git a/lib/gnutls_errors_int.h b/lib/gnutls_errors_int.h
index 1a90dd46b0..7fd81c0b1f 100644
--- a/lib/gnutls_errors_int.h
+++ b/lib/gnutls_errors_int.h
@@ -74,7 +74,6 @@
#define GNUTLS_E_UNKNOWN_PK_ALGORITHM -80
#define GNUTLS_E_OPENPGP_TRUSTDB_VERSION_UNSUPPORTED -81
#define GNUTLS_E_OPENPGP_GETKEY_FAILED -88
-#define GNUTLS_E_INVALID_VALUE -90
/* returned if libextra functionality was requested but
* gnutls_global_init_extra() was not called.
diff --git a/libextra/gnutls_openpgp.c b/libextra/gnutls_openpgp.c
index d61d682618..da74c88c71 100644
--- a/libextra/gnutls_openpgp.c
+++ b/libextra/gnutls_openpgp.c
@@ -80,7 +80,7 @@ map_cdk_rc( int rc )
case CDK_Error_No_Key: return GNUTLS_E_OPENPGP_GETKEY_FAILED;
case CDK_Wrong_Format: return GNUTLS_E_OPENPGP_TRUSTDB_VERSION_UNSUPPORTED;
case CDK_Armor_Error: return GNUTLS_E_ASCII_ARMOR_ERROR;
- case CDK_Inv_Value: return GNUTLS_E_INVALID_VALUE;
+ case CDK_Inv_Value: return GNUTLS_E_INVALID_REQUEST;
}
return rc;
}
@@ -103,8 +103,10 @@ kbx_blob_new( keybox_blob **r_ctx )
{
keybox_blob *c;
- if( !r_ctx )
- return GNUTLS_E_INVALID_VALUE;
+ if( !r_ctx ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
c = cdk_calloc( 1, sizeof * c );
if( !c ) {
@@ -133,12 +135,14 @@ kbx_to_keydb( keybox_blob *blob )
CDK_KEYDB_HD hd;
int rc;
- if( !blob )
+ if( !blob ) {
+ gnutls_assert( );
return NULL;
+ }
switch( blob->type ) {
case KBX_BLOB_FILE:
- rc = cdk_keydb_new( &hd, blob->armored?CDK_DBTYPE_ARMORED:
+ rc = cdk_keydb_new( &hd, blob->armored? CDK_DBTYPE_ARMORED:
CDK_DBTYPE_KEYRING, blob->data, blob->size );
break;
@@ -148,6 +152,7 @@ kbx_to_keydb( keybox_blob *blob )
default:
rc = -1;
+ gnutls_assert( );
break;
}
if( rc )
@@ -163,8 +168,10 @@ kbx_read_blob( const gnutls_datum* keyring, size_t pos )
keybox_blob *blob = NULL;
int rc;
- if( !keyring || !keyring->data || pos > keyring->size )
+ if( !keyring || !keyring->data || pos > keyring->size ) {
+ gnutls_assert( );
return NULL;
+ }
rc = kbx_blob_new( &blob );
if( rc )
@@ -233,8 +240,10 @@ kbnode_to_datum( CDK_KBNODE knode, gnutls_datum *raw )
uint8 buf[4096];
int rc = 0, nread;
- if( !knode || !raw )
- return GNUTLS_E_INVALID_VALUE;
+ if( !knode || !raw ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
while( (node = cdk_kbnode_walk( knode, &ctx, 0 )) ) {
pkt = cdk_kbnode_get_packet( node );
@@ -276,8 +285,10 @@ datum_to_kbnode( const gnutls_datum *raw, CDK_KBNODE *r_knode )
CDK_KBNODE knode;
int rc;
- if( !raw || !r_knode )
- return GNUTLS_E_INVALID_VALUE;
+ if( !raw || !r_knode ) {
+ return GNUTLS_E_INVALID_REQUEST;
+ gnutls_assert( );
+ }
s = cdk_stream_tmp( );
if( !s ) {
@@ -324,8 +335,10 @@ stream_to_datum( CDK_STREAM inp, gnutls_datum *raw )
uint8 buf[4096];
int rc = 0, nread, nbytes = 0;
- if( !buf || !raw )
- return GNUTLS_E_INVALID_VALUE;
+ if( !buf || !raw ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
cdk_stream_seek( inp, 0 );
while( !cdk_stream_eof( inp ) ) {
@@ -351,8 +364,10 @@ openpgp_pk_to_gnutls_cert( gnutls_cert *cert, cdkPKT_public_key *pk )
int algo, i;
int rc = 0;
- if( !cert || !pk )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert || !pk ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
/* GnuTLS OpenPGP doesn't support ELG keys */
if( is_ELG(pk->pubkey_algo) )
@@ -400,8 +415,10 @@ openpgp_sig_to_gnutls_cert( gnutls_cert *cert, cdkPKT_signature *sig )
uint8 buf[4096];
int rc, nread;
- if( !cert || !sig )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert || !sig ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
tmp = cdk_stream_tmp( );
if( !tmp ) {
@@ -453,8 +470,10 @@ _gnutls_openpgp_key2gnutls_key( gnutls_private_key *pkey,
uint8 buf[512];
int rc = 0;
- if( !pkey || raw_key->size <= 0 )
- return GNUTLS_E_INVALID_VALUE;
+ if( !pkey || raw_key->size <= 0 ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
out = cdk_stream_tmp( );
if( !out )
@@ -532,8 +551,10 @@ _gnutls_openpgp_cert2gnutls_cert( gnutls_cert *cert, gnutls_datum raw )
CDK_PACKET *pkt = NULL;
int rc;
- if( !cert )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
memset( cert, 0, sizeof *cert );
@@ -574,8 +595,10 @@ gnutls_openpgp_get_key( gnutls_datum *key, const gnutls_datum *keyring,
void * desc;
int rc = 0;
- if( !key || !keyring || by == KEY_ATTR_NONE )
- return GNUTLS_E_INVALID_VALUE;
+ if( !key || !keyring || by == KEY_ATTR_NONE ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
memset( key, 0, sizeof *key );
blob = kbx_read_blob( keyring, 0 );
@@ -632,8 +655,10 @@ gnutls_certificate_set_openpgp_key_mem( gnutls_certificate_credentials res,
int i = 0;
int rc = 0;
- if ( !res || !key || !cert )
- return GNUTLS_E_INVALID_VALUE;
+ if ( !res || !key || !cert ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
rc = datum_to_kbnode( cert, &knode );
if ( rc )
@@ -725,7 +750,7 @@ gnutls_certificate_set_openpgp_key_file( gnutls_certificate_credentials res,
if( !res || !KEYFILE || !CERTFILE ) {
gnutls_assert();
- return GNUTLS_E_INVALID_VALUE;
+ return GNUTLS_E_INVALID_REQUEST;
}
if( stat( CERTFILE, &statbuf ) || stat( KEYFILE, &statbuf ) ) {
@@ -832,8 +857,10 @@ gnutls_openpgp_count_key_names( const gnutls_datum *cert )
if( cert == NULL )
return 0;
- if( datum_to_kbnode( cert, &knode ) )
+ if( datum_to_kbnode( cert, &knode ) ) {
+ gnutls_assert();
return 0;
+ }
while( (p = cdk_kbnode_walk( knode, &ctx, 0 )) ) {
pkt = cdk_kbnode_get_packet( p );
if( pkt->pkttype == CDK_PKT_USER_ID )
@@ -864,8 +891,12 @@ gnutls_openpgp_extract_key_name( const gnutls_datum *cert,
size_t size = 0;
int rc = 0;
- if( !cert || !dn )
- return GNUTLS_E_INVALID_VALUE;
+ printf ("** cert=%p nnames=%d\n", cert,
+ gnutls_openpgp_count_key_names( cert ) );
+ if( !cert || !dn ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
if( idx < 0 || idx > gnutls_openpgp_count_key_names( cert ) )
return GNUTLS_E_INTERNAL_ERROR;
@@ -1049,8 +1080,10 @@ _gnutls_openpgp_get_key_trust( const char *trustdb,
int flags = 0, ot = 0;
int rc = 0;
- if( !trustdb || !key || !r_trustval )
- return GNUTLS_E_INVALID_VALUE;
+ if( !trustdb || !key || !r_trustval ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
*r_trustval = 0;
@@ -1145,8 +1178,10 @@ gnutls_openpgp_verify_key( const char *trustdb,
if( !cert_list || cert_list_length != 1 || !keyring )
return GNUTLS_E_NO_CERTIFICATE_FOUND;
- if( !keyring->size && !trustdb )
- return GNUTLS_E_INVALID_VALUE;
+ if( !keyring->size && !trustdb ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
blob = kbx_read_blob( keyring, 0 );
if( !blob )
@@ -1208,8 +1243,10 @@ gnutls_openpgp_fingerprint( const gnutls_datum *cert,
CDK_PACKET *pkt;
cdkPKT_public_key *pk = NULL;
- if( !cert || !fpr || !fprlen )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert || !fpr || !fprlen ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
*fprlen = 0;
@@ -1243,8 +1280,10 @@ gnutls_openpgp_extract_key_id( const gnutls_datum *cert,
cdkPKT_public_key *pk = NULL;
unsigned long kid[2];
- if( !cert || !keyid )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert || !keyid ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
pkt = search_packet( cert, CDK_PKT_PUBLIC_KEY );
if( !pkt )
@@ -1284,8 +1323,10 @@ gnutls_openpgp_add_keyring_file(gnutls_datum *keyring, const char *name)
int enc = 0;
int rc = 0;
- if( !keyring || !name )
- return GNUTLS_E_INVALID_VALUE;
+ if( !keyring || !name ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
rc = cdk_stream_open( name, &inp );
if( rc )
@@ -1322,8 +1363,10 @@ gnutls_openpgp_add_keyring_mem(gnutls_datum *keyring,
uint8 *blob;
size_t nbytes = 0;
- if( !keyring || !data || !len )
- return GNUTLS_E_INVALID_VALUE;
+ if( !keyring || !data || !len ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
blob = kbx_data_to_keyring( KBX_BLOB_DATA, 0, data, len, &nbytes );
if( blob && nbytes ) {
@@ -1354,8 +1397,10 @@ gnutls_certificate_set_openpgp_keyring_file(gnutls_certificate_credentials c,
{
struct stat statbuf;
- if( !c || !file )
- return GNUTLS_E_INVALID_VALUE;
+ if( !c || !file ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
if( stat( file, &statbuf ) )
return GNUTLS_E_FILE_ERROR;
@@ -1373,8 +1418,10 @@ gnutls_certificate_set_openpgp_keyring_mem( gnutls_certificate_credentials c,
uint8 *buf;
int rc = 0;
- if( !c || !data || !dlen )
- return GNUTLS_E_INVALID_VALUE;
+ if( !c || !data || !dlen ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
inp = cdk_stream_tmp_from_mem( data, dlen );
if( !inp )
@@ -1426,8 +1473,10 @@ gnutls_openpgp_recv_key(const char *host, short port, uint32 keyid,
int rc = 0, state = 0, nread = 0;
size_t nbytes = 0, n = 0;
- if ( !host || !key )
- return GNUTLS_E_INVALID_VALUE;
+ if ( !host || !key ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
if( !port )
port = 11371; /* standard service port */
@@ -1524,9 +1573,11 @@ _gnutls_openpgp_request_key( gnutls_datum* ret,
uint32 keyid;
int rc = 0;
- if( !ret || !cred || !key_fpr )
- return GNUTLS_E_INVALID_VALUE;
-
+ if( !ret || !cred || !key_fpr ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
+
if( key_fpr_size != 16 && key_fpr_size != 20 )
return GNUTLS_E_HASH_FAILED; /* only MD5 and SHA1 are supported */
@@ -1561,8 +1612,10 @@ gnutls_certificate_set_openpgp_keyserver(gnutls_certificate_credentials res,
char* keyserver,
int port)
{
- if ( !res || !keyserver )
- return GNUTLS_E_INVALID_VALUE;
+ if ( !res || !keyserver ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
if( !port )
port = 11371;
@@ -1580,8 +1633,10 @@ gnutls_certificate_set_openpgp_keyserver(gnutls_certificate_credentials res,
static int
xml_add_tag( gnutls_string *xmlkey, const char *tag, const char *val )
{
- if( !xmlkey || !tag || !val )
- return GNUTLS_E_INVALID_VALUE;
+ if( !xmlkey || !tag || !val ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
_gnutls_string_append_str( xmlkey, " <" );
_gnutls_string_append_str( xmlkey, tag );
@@ -1603,8 +1658,10 @@ xml_add_mpi2( gnutls_string *xmlkey, const uint8 *data, size_t count,
size_t i;
int rc = 0;
- if( !xmlkey || !data || !tag )
- return GNUTLS_E_INVALID_VALUE;
+ if( !xmlkey || !data || !tag ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
p = gnutls_calloc( 1, 2 * ( count + 3 ) );
if( !p ) {
@@ -1642,8 +1699,10 @@ xml_add_key_mpi( gnutls_string *xmlkey, cdkPKT_public_key *pk )
const char *s = " <KEY ENCODING=\"HEX\"/>\n";
int rc = 0;
- if( !xmlkey || !pk )
- return GNUTLS_E_INVALID_VALUE;
+ if( !xmlkey || !pk ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
_gnutls_string_append_str( xmlkey, s );
@@ -1684,8 +1743,10 @@ xml_add_key( gnutls_string *xmlkey, int ext, cdkPKT_public_key *pk, int sub )
unsigned long kid[2];
int i = 0, rc = 0;
- if( !xmlkey || !pk )
- return GNUTLS_E_INVALID_VALUE;
+ if( !xmlkey || !pk ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
s = sub? " <SUBKEY>\n" : " <MAINKEY>\n";
_gnutls_string_append_str( xmlkey, s );
@@ -1758,8 +1819,10 @@ xml_add_userid( gnutls_string *xmlkey, int ext,
char *p, *name, tmp[32];
int rc = 0;
- if ( !xmlkey || !dn || !id )
- return GNUTLS_E_INVALID_VALUE;
+ if ( !xmlkey || !dn || !id ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
s = " <USERID>\n";
_gnutls_string_append_str( xmlkey, s );
@@ -1814,8 +1877,10 @@ xml_add_sig( gnutls_string *xmlkey, int ext, cdkPKT_signature *sig )
unsigned long kid[2];
int rc = 0;
- if( !xmlkey || !sig )
- return GNUTLS_E_INVALID_VALUE;
+ if( !xmlkey || !sig ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
s = " <SIGNATURE>\n";
_gnutls_string_append_str( xmlkey, s );
@@ -1900,8 +1965,10 @@ gnutls_openpgp_key_to_xml( const gnutls_datum *cert,
int idx = 0, rc = 0;
gnutls_string string_xml_key;
- if( !cert || !xmlkey )
- return GNUTLS_E_INVALID_VALUE;
+ if( !cert || !xmlkey ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
rc = datum_to_kbnode( cert, &knode );
if( rc )
@@ -1974,8 +2041,10 @@ int
gnutls_certificate_set_openpgp_trustdb( gnutls_certificate_credentials res,
char* trustdb )
{
- if( !res || !trustdb )
- return GNUTLS_E_INVALID_VALUE;
+ if( !res || !trustdb ) {
+ gnutls_assert( );
+ return GNUTLS_E_INVALID_REQUEST;
+ }
/* the old v2 format was used with 1.0.6, do we still need to check
it now because GPG 1.0.7, 1.2.0, 1.21 and even 1.3.0 is out? */