* Add gnutls_openpgp_key_get_key_usage().
* Use subkeys with the 0x20 flag in openpgp keys (if present),
instead of the main key.
+* Add function to extract the signers of an openpgp key. Should
+ be similar to gnutls_x509_crt_get_dn_oid().
+* Add function to verify an openpgp key against a plain key.
* Add support for generating and handling DSA keys
* Add support for extracting CRL distribution points.
* Add support for generating CRLs.
\begin{tabular}{|l|p{9cm}|}
\hline
-MAC\_MD5 & MD5 is a hash algorithm by Ron Rivest. Outputs 128 bits of data.
+MAC\_MD5 & MD5 is a cryptographic hash algorithm designed by Ron Rivest. Outputs 128 bits of data.
\\
\hline
-MAC\_SHA & SHA is a hash algorithm by NSA. Outputs 160 bits of data.
+MAC\_SHA & SHA is a cryptographic hash algorithm designed by NSA. Outputs 160 bits of data.
+\\
+\hline
+MAC\_RMD160 & RIPEMD is a cryptographic hash algorithm developed in the framework
+of the EU project RIPE. Outputs 160 bits of data.
\\
\hline
\end{tabular}
/* Calculate the size of a prime factor of (prime-1)/2.
* This is a bad emulation of Michael Wiener's table
*/
- qbits = 120 + (((bits / 256) - 1) * 20);
- if (qbits & 1) /* better have an even number */
- qbits++;
+ if (bits < 256) qbits = bits/2;
+ else {
+ qbits = 120 + (((bits / 256) - 1) * 20);
+ }
+
+ if (qbits & 1) /* better have an even number */
+ qbits++;
/* find a prime number of size bits.
*/
result = GNUTLS_E_INTERNAL_ERROR;
goto cleanup;
}
-
+
gcry_prime_release_factors (factors); factors = NULL;
if (ret_g)
**/
int gnutls_dh_params_generate2(gnutls_dh_params params, unsigned int bits)
{
+int ret;
- if (_gnutls_dh_generate_prime(¶ms->_generator,
- ¶ms->_prime, bits) < 0) {
+ ret = _gnutls_dh_generate_prime(¶ms->_generator,
+ ¶ms->_prime, bits);
+ if (ret < 0) {
gnutls_assert();
- return GNUTLS_E_MEMORY_ERROR;
+ return ret;
}
return 0;
size_t size;
+ if (params->_generator == NULL ||
+ params->_prime == NULL)
+ {
+ gnutls_assert();
+ return GNUTLS_E_INVALID_REQUEST;
+ }
+
size = 0;
_gnutls_mpi_print(NULL, &size, params->_generator);
{
int ret;
+ if (nbytes == NULL || a == NULL) return GNUTLS_E_INVALID_REQUEST;
+
ret = gcry_mpi_print( GCRYMPI_FMT_USG, buffer, *nbytes, nbytes, a);
if (!ret) return ret;
{
int ret;
+ if (nbytes == NULL || a == NULL) return GNUTLS_E_INVALID_REQUEST;
+
ret = gcry_mpi_print( GCRYMPI_FMT_STD, buffer, *nbytes, nbytes, a);
if (!ret) return ret;
int generate_prime(int bits)
{
unsigned int i;
+ int ret;
gnutls_dh_params dh_params;
gnutls_datum p, g;
fprintf(stderr, "Generating DH parameters...");
- gnutls_dh_params_generate2( dh_params, bits);
- gnutls_dh_params_export_raw( dh_params, &p, &g, NULL);
+ ret = gnutls_dh_params_generate2( dh_params, bits);
+ if (ret < 0) {
+ fprintf(stderr, "Error generating parameters: %s\n",
+ gnutls_strerror(ret));
+ exit(1);
+ }
+
+ ret = gnutls_dh_params_export_raw( dh_params, &p, &g, NULL);
+ if (ret < 0) {
+ fprintf(stderr, "Error exporting parameters: %s\n",
+ gnutls_strerror(ret));
+ exit(1);
+ }
if (cparams) {