Statistics
| Branch: | Revision:

iof-bird / bird-2.0.1 / nest / password.c @ 6b3f1a54

History | View | Annotate | Download (1.5 KB)

1
/*
2
 *        BIRD -- Password handling
3
 *
4
 *        (c) 1999 Pavel Machek <pavel@ucw.cz>
5
 *        (c) 2004 Ondrej Filip <feela@network.cz>
6
 *
7
 *        Can be freely distributed and used under the terms of the GNU GPL.
8
 */
9

    
10
#include "nest/bird.h"
11
#include "nest/password.h"
12
#include "lib/string.h"
13
#include "lib/timer.h"
14
#include "lib/mac.h"
15

    
16
struct password_item *last_password_item = NULL;
17

    
18
struct password_item *
19
password_find(list *l, int first_fit)
20
{
21
  struct password_item *pi;
22
  struct password_item *pf = NULL;
23
  btime now_ = current_real_time();
24

    
25
  if (l)
26
  {
27
    WALK_LIST(pi, *l)
28
    {
29
      if ((pi->genfrom < now_) && (pi->gento > now_))
30
      {
31
        if (first_fit)
32
          return pi;
33

    
34
        if (!pf || pf->genfrom < pi->genfrom)
35
          pf = pi;
36
      }
37
    }
38
  }
39
  return pf;
40
}
41

    
42
struct password_item *
43
password_find_by_id(list *l, uint id)
44
{
45
  struct password_item *pi;
46
  btime now_ = current_real_time();
47

    
48
  if (!l)
49
    return NULL;
50

    
51
  WALK_LIST(pi, *l)
52
    if ((pi->id == id) && (pi->accfrom <= now_) && (now_ < pi->accto))
53
      return pi;
54

    
55
  return NULL;
56
}
57

    
58
struct password_item *
59
password_find_by_value(list *l, char *pass, uint size)
60
{
61
  struct password_item *pi;
62
  btime now_ = current_real_time();
63

    
64
  if (!l)
65
    return NULL;
66

    
67
  WALK_LIST(pi, *l)
68
    if (password_verify(pi, pass, size) && (pi->accfrom <= now_) && (now_ < pi->accto))
69
      return pi;
70

    
71
  return NULL;
72
}
73

    
74
uint
75
max_mac_length(list *l)
76
{
77
  struct password_item *pi;
78
  uint val = 0;
79

    
80
  if (!l)
81
    return 0;
82

    
83
  WALK_LIST(pi, *l)
84
    val = MAX(val, mac_type_length(pi->alg));
85

    
86
  return val;
87
}