~ubuntu-branches/ubuntu/utopic/nettle/utopic

« back to all changes in this revision

Viewing changes to pkcs1.c

  • Committer: Package Import Robot
  • Author(s): Magnus Holmgren
  • Date: 2013-05-07 22:57:14 UTC
  • mfrom: (8.1.8 sid)
  • Revision ID: package-import@ubuntu.com-20130507225714-s331yr8ov53dtt17
Tags: 2.7-2
Tag some (ECC related) symbols that only exist on some architectures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
/* nettle, low-level cryptographics library
7
7
 *
8
 
 * Copyright (C) 2003 Niels M�ller
 
8
 * Copyright (C) 2003 Niels Möller
9
9
 *  
10
10
 * The nettle library is free software; you can redistribute it and/or modify
11
11
 * it under the terms of the GNU Lesser General Public License as published by
19
19
 * 
20
20
 * You should have received a copy of the GNU Lesser General Public License
21
21
 * along with the nettle library; see the file COPYING.LIB.  If not, write to
22
 
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
23
 
 * MA 02111-1307, USA.
 
22
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
23
 * MA 02111-1301, USA.
24
24
 */
25
25
 
26
26
#if HAVE_CONFIG_H
34
34
 
35
35
/* Formats the PKCS#1 padding, of the form
36
36
 *
37
 
 *   0x01 0xff ... 0xff 0x00 id ...digest...
 
37
 *   0x00 0x01 0xff ... 0xff 0x00 id ...digest...
38
38
 *
39
39
 * where the 0xff ... 0xff part consists of at least 8 octets. The 
40
 
 * total size should be one less than the octet size of n.
 
40
 * total size equals the octet size of n.
41
41
 */
42
 
int
43
 
pkcs1_signature_prefix(unsigned size,
44
 
                       uint8_t *buffer,
45
 
                       unsigned id_size,
46
 
                       const uint8_t *id,
47
 
                       unsigned digest_size)
 
42
uint8_t *
 
43
_pkcs1_signature_prefix(unsigned key_size,
 
44
                        uint8_t *buffer,
 
45
                        unsigned id_size,
 
46
                        const uint8_t *id,
 
47
                        unsigned digest_size)
48
48
{
49
49
  unsigned j;
50
50
  
51
 
  if (size < 10 + id_size + digest_size)
52
 
    return 0;
 
51
  if (key_size < 11 + id_size + digest_size)
 
52
    return NULL;
53
53
 
54
 
  j = size - digest_size - id_size;
 
54
  j = key_size - digest_size - id_size;
55
55
 
56
56
  memcpy (buffer + j, id, id_size);
57
 
  buffer[0] = 1;
58
 
  buffer[--j] = 0;
59
 
 
60
 
  assert(j >= 9);
61
 
  memset(buffer + 1, 0xff, j - 1);
62
 
 
63
 
  return 1;
 
57
  buffer[0] = 0;
 
58
  buffer[1] = 1;
 
59
  buffer[j-1] = 0;
 
60
 
 
61
  assert(j >= 11);
 
62
  memset(buffer + 2, 0xff, j - 3);
 
63
 
 
64
  return buffer + j + id_size;
64
65
}