~ubuntu-branches/ubuntu/saucy/gnutls28/saucy

« back to all changes in this revision

Viewing changes to lib/algorithms/sign.c

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2013-07-30 21:40:07 UTC
  • mfrom: (14.1.9 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130730214007-9mrd08xo61kla008
Tags: 3.2.3-1ubuntu1
* Sync with Debian (LP: #1068029). Remaining change:
  - Drop gnutls-bin and -doc since we want to use the versions
    in gnutls26 as the defaults instead

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
 *
8
8
 * The GnuTLS is free software; you can redistribute it and/or
9
9
 * modify it under the terms of the GNU Lesser General Public License
10
 
 * as published by the Free Software Foundation; either version 3 of
 
10
 * as published by the Free Software Foundation; either version 2.1 of
11
11
 * the License, or (at your option) any later version.
12
12
 *
13
13
 * This library is distributed in the hope that it will be useful, but
45
45
 
46
46
static const gnutls_sign_entry sign_algorithms[] = {
47
47
  {"RSA-SHA1", SIG_RSA_SHA1_OID, GNUTLS_SIGN_RSA_SHA1, GNUTLS_PK_RSA,
48
 
   GNUTLS_MAC_SHA1, {2, 1}},
 
48
   GNUTLS_DIG_SHA1, {2, 1}},
49
49
  {"RSA-SHA224", SIG_RSA_SHA224_OID, GNUTLS_SIGN_RSA_SHA224, GNUTLS_PK_RSA,
50
 
   GNUTLS_MAC_SHA224, {3, 1}},
 
50
   GNUTLS_DIG_SHA224, {3, 1}},
51
51
  {"RSA-SHA256", SIG_RSA_SHA256_OID, GNUTLS_SIGN_RSA_SHA256, GNUTLS_PK_RSA,
52
 
   GNUTLS_MAC_SHA256, {4, 1}},
 
52
   GNUTLS_DIG_SHA256, {4, 1}},
53
53
  {"RSA-SHA384", SIG_RSA_SHA384_OID, GNUTLS_SIGN_RSA_SHA384, GNUTLS_PK_RSA,
54
 
   GNUTLS_MAC_SHA384, {5, 1}},
 
54
   GNUTLS_DIG_SHA384, {5, 1}},
55
55
  {"RSA-SHA512", SIG_RSA_SHA512_OID, GNUTLS_SIGN_RSA_SHA512, GNUTLS_PK_RSA,
56
 
   GNUTLS_MAC_SHA512, {6, 1}},
 
56
   GNUTLS_DIG_SHA512, {6, 1}},
57
57
  {"RSA-RMD160", SIG_RSA_RMD160_OID, GNUTLS_SIGN_RSA_RMD160, GNUTLS_PK_RSA,
58
 
   GNUTLS_MAC_RMD160, TLS_SIGN_AID_UNKNOWN},
 
58
   GNUTLS_DIG_RMD160, TLS_SIGN_AID_UNKNOWN},
59
59
  {"DSA-SHA1", SIG_DSA_SHA1_OID, GNUTLS_SIGN_DSA_SHA1, GNUTLS_PK_DSA,
60
 
   GNUTLS_MAC_SHA1, {2, 2}},
 
60
   GNUTLS_DIG_SHA1, {2, 2}},
61
61
  {"DSA-SHA224", SIG_DSA_SHA224_OID, GNUTLS_SIGN_DSA_SHA224, GNUTLS_PK_DSA,
62
 
   GNUTLS_MAC_SHA224, {3, 2}},
 
62
   GNUTLS_DIG_SHA224, {3, 2}},
63
63
  {"DSA-SHA256", SIG_DSA_SHA256_OID, GNUTLS_SIGN_DSA_SHA256, GNUTLS_PK_DSA,
64
 
   GNUTLS_MAC_SHA256, {4, 2}},
 
64
   GNUTLS_DIG_SHA256, {4, 2}},
65
65
  {"RSA-MD5", SIG_RSA_MD5_OID, GNUTLS_SIGN_RSA_MD5, GNUTLS_PK_RSA,
66
 
   GNUTLS_MAC_MD5, {1, 1}},
 
66
   GNUTLS_DIG_MD5, {1, 1}},
67
67
  {"RSA-MD2", SIG_RSA_MD2_OID, GNUTLS_SIGN_RSA_MD2, GNUTLS_PK_RSA,
68
 
   GNUTLS_MAC_MD2, TLS_SIGN_AID_UNKNOWN},
69
 
  {"ECDSA-SHA1", "1.2.840.10045.4.1", GNUTLS_SIGN_ECDSA_SHA1, GNUTLS_PK_EC, GNUTLS_MAC_SHA1, {2, 3}},
70
 
  {"ECDSA-SHA224", "1.2.840.10045.4.3.1", GNUTLS_SIGN_ECDSA_SHA224, GNUTLS_PK_EC, GNUTLS_MAC_SHA224, {3, 3}},
71
 
  {"ECDSA-SHA256", "1.2.840.10045.4.3.2", GNUTLS_SIGN_ECDSA_SHA256, GNUTLS_PK_EC, GNUTLS_MAC_SHA256, {4, 3}},
72
 
  {"ECDSA-SHA384", "1.2.840.10045.4.3.3", GNUTLS_SIGN_ECDSA_SHA384, GNUTLS_PK_EC, GNUTLS_MAC_SHA384, {5, 3}},
73
 
  {"ECDSA-SHA512", "1.2.840.10045.4.3.4", GNUTLS_SIGN_ECDSA_SHA512, GNUTLS_PK_EC, GNUTLS_MAC_SHA512, {6, 3}},
 
68
   GNUTLS_DIG_MD2, TLS_SIGN_AID_UNKNOWN},
 
69
  {"ECDSA-SHA1", "1.2.840.10045.4.1", GNUTLS_SIGN_ECDSA_SHA1, GNUTLS_PK_EC, GNUTLS_DIG_SHA1, {2, 3}},
 
70
  {"ECDSA-SHA224", "1.2.840.10045.4.3.1", GNUTLS_SIGN_ECDSA_SHA224, GNUTLS_PK_EC, GNUTLS_DIG_SHA224, {3, 3}},
 
71
  {"ECDSA-SHA256", "1.2.840.10045.4.3.2", GNUTLS_SIGN_ECDSA_SHA256, GNUTLS_PK_EC, GNUTLS_DIG_SHA256, {4, 3}},
 
72
  {"ECDSA-SHA384", "1.2.840.10045.4.3.3", GNUTLS_SIGN_ECDSA_SHA384, GNUTLS_PK_EC, GNUTLS_DIG_SHA384, {5, 3}},
 
73
  {"ECDSA-SHA512", "1.2.840.10045.4.3.4", GNUTLS_SIGN_ECDSA_SHA512, GNUTLS_PK_EC, GNUTLS_DIG_SHA512, {6, 3}},
74
74
  {"GOST R 34.10-2001", SIG_GOST_R3410_2001_OID, 0, 0, 0,
75
75
   TLS_SIGN_AID_UNKNOWN},
76
76
  {"GOST R 34.10-94", SIG_GOST_R3410_94_OID, 0, 0, 0, TLS_SIGN_AID_UNKNOWN},
108
108
}
109
109
 
110
110
/**
 
111
 * gnutls_sign_is_secure:
 
112
 * @algorithm: is a sign algorithm
 
113
 *
 
114
 * Returns: Non-zero if the provided signature algorithm is considered to be secure.
 
115
 **/
 
116
int 
 
117
gnutls_sign_is_secure (gnutls_sign_algorithm_t algorithm)
 
118
{
 
119
  gnutls_sign_algorithm_t sign = algorithm;
 
120
  gnutls_digest_algorithm_t dig = GNUTLS_DIG_UNKNOWN;
 
121
 
 
122
  /* avoid prefix */
 
123
  GNUTLS_SIGN_ALG_LOOP (dig = p->mac);
 
124
  
 
125
  if (dig != GNUTLS_DIG_UNKNOWN)
 
126
    return _gnutls_digest_is_secure(mac_to_entry(dig));
 
127
 
 
128
  return 0;
 
129
}
 
130
 
 
131
/**
111
132
 * gnutls_sign_list:
112
133
 *
113
134
 * Get a list of supported public key signature algorithms.
134
155
 
135
156
/**
136
157
 * gnutls_sign_get_id:
137
 
 * @name: is a MAC algorithm name
 
158
 * @name: is a sign algorithm name
138
159
 *
139
160
 * The names are compared in a case insensitive way.
140
161
 *
141
162
 * Returns: return a #gnutls_sign_algorithm_t value corresponding to
142
 
 *   the specified cipher, or %GNUTLS_SIGN_UNKNOWN on error.
 
163
 *   the specified algorithm, or %GNUTLS_SIGN_UNKNOWN on error.
143
164
 **/
144
165
gnutls_sign_algorithm_t
145
166
gnutls_sign_get_id (const char *name)
218
239
  return ret;
219
240
}
220
241
 
 
242
/**
 
243
 * gnutls_sign_get_hash_algorithm:
 
244
 * @sign: is a signature algorithm
 
245
 *
 
246
 * This function returns the digest algorithm corresponding to
 
247
 * the given signature algorithms.
 
248
 *
 
249
 * Since: 3.1.1
 
250
 *
 
251
 * Returns: return a #gnutls_digest_algorithm_t value, or %GNUTLS_DIG_UNKNOWN on error.
 
252
 **/
221
253
gnutls_digest_algorithm_t
222
 
_gnutls_sign_get_hash_algorithm (gnutls_sign_algorithm_t sign)
 
254
gnutls_sign_get_hash_algorithm (gnutls_sign_algorithm_t sign)
223
255
{
224
256
  gnutls_digest_algorithm_t ret = GNUTLS_DIG_UNKNOWN;
225
257
 
228
260
  return ret;
229
261
}
230
262
 
 
263
/**
 
264
 * gnutls_sign_get_pk_algorithm:
 
265
 * @sign: is a signature algorithm
 
266
 *
 
267
 * This function returns the public key algorithm corresponding to
 
268
 * the given signature algorithms.
 
269
 *
 
270
 * Since: 3.1.1
 
271
 *
 
272
 * Returns: return a #gnutls_pk_algorithm_t value, or %GNUTLS_PK_UNKNOWN on error.
 
273
 **/
231
274
gnutls_pk_algorithm_t
232
 
_gnutls_sign_get_pk_algorithm (gnutls_sign_algorithm_t sign)
 
275
gnutls_sign_get_pk_algorithm (gnutls_sign_algorithm_t sign)
233
276
{
234
277
  gnutls_pk_algorithm_t ret = GNUTLS_PK_UNKNOWN;
235
278