~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.2.1/third_party/srtp/crypto/math/gf2_8.c

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2015-01-07 14:51:16 UTC
  • mfrom: (4.3.5 sid)
  • Revision ID: package-import@ubuntu.com-20150107145116-yxnafinf4lrdvrmx
Tags: 1.4.1-0.1ubuntu1
* Merge with Debian, remaining changes:
 - Drop soprano, nepomuk build-dep
* Drop ubuntu patches, now upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * gf2_8.c
 
3
 *
 
4
 * GF(256) finite field implementation, with the representation used
 
5
 * in the AES cipher.
 
6
 * 
 
7
 * David A. McGrew
 
8
 * Cisco Systems, Inc.
 
9
 */
 
10
 
 
11
/*
 
12
 *      
 
13
 * Copyright (c) 2001-2006, Cisco Systems, Inc.
 
14
 * All rights reserved.
 
15
 * 
 
16
 * Redistribution and use in source and binary forms, with or without
 
17
 * modification, are permitted provided that the following conditions
 
18
 * are met:
 
19
 * 
 
20
 *   Redistributions of source code must retain the above copyright
 
21
 *   notice, this list of conditions and the following disclaimer.
 
22
 * 
 
23
 *   Redistributions in binary form must reproduce the above
 
24
 *   copyright notice, this list of conditions and the following
 
25
 *   disclaimer in the documentation and/or other materials provided
 
26
 *   with the distribution.
 
27
 * 
 
28
 *   Neither the name of the Cisco Systems, Inc. nor the names of its
 
29
 *   contributors may be used to endorse or promote products derived
 
30
 *   from this software without specific prior written permission.
 
31
 * 
 
32
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
33
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
34
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 
35
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 
36
 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 
37
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
38
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
39
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
40
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 
41
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
42
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 
43
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 
44
 *
 
45
 */
 
46
 
 
47
 
 
48
#include "datatypes.h"
 
49
#include "gf2_8.h"
 
50
 
 
51
/* gf2_8_shift() moved to gf2_8.h as an inline function */
 
52
 
 
53
inline gf2_8
 
54
gf2_8_multiply(gf2_8 x, gf2_8 y) {
 
55
  gf2_8 z = 0;
 
56
 
 
57
  if (y &   1) z ^= x; x = gf2_8_shift(x);
 
58
  if (y &   2) z ^= x; x = gf2_8_shift(x);
 
59
  if (y &   4) z ^= x; x = gf2_8_shift(x);
 
60
  if (y &   8) z ^= x; x = gf2_8_shift(x);
 
61
  if (y &  16) z ^= x; x = gf2_8_shift(x);
 
62
  if (y &  32) z ^= x; x = gf2_8_shift(x);
 
63
  if (y &  64) z ^= x; x = gf2_8_shift(x);
 
64
  if (y & 128) z ^= x; 
 
65
  
 
66
  return z;
 
67
}
 
68
 
 
69
 
 
70
/* this should use the euclidean algorithm */
 
71
 
 
72
gf2_8
 
73
gf2_8_compute_inverse(gf2_8 x) {
 
74
  unsigned int i;
 
75
 
 
76
  if (x == 0) return 0;    /* zero is a special case */
 
77
  for (i=0; i < 256; i++)
 
78
    if (gf2_8_multiply((gf2_8) i, x) == 1)
 
79
      return (gf2_8) i;
 
80
 
 
81
    return 0;
 
82
}
 
83