annotate utils/fcsim1-mkprov.c @ 103:3477438b5706 default tip

new fc-simtool command script: oper-sim-test
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 06 Aug 2022 16:34:43 +0000
parents 6041c601304d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This utility is the provisioning data generator for FCSIM1 cards.
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <sys/types.h>
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/file.h>
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <unistd.h>
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 static u_char iccid_bin[19], imsi_bin[15], msisdn_bin[20];
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 static int msisdn_set, msisdn_plus;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 static unsigned num_cards = 1, access_class, msisdn_digits;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 static char *random_file = "/dev/urandom";
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 static int random_fd;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 static void
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 set_iccid(arg)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 char *arg;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 int rc;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 rc = parse_decimal_shorthand(arg, iccid_bin, 18);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 if (rc < 0)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 exit(1); /* error msg already printed */
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 static void
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 set_imsi(arg)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 char *arg;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 int rc;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 rc = parse_decimal_shorthand(arg, imsi_bin, 15);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (rc < 0)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 exit(1); /* error msg already printed */
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 static void
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 set_msisdn(arg)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 char *arg;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 int rc;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 if (*arg == '+') {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 msisdn_plus = 1;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 arg++;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 rc = parse_decimal_string_arg(arg, msisdn_bin, 20);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 if (rc < 0)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 exit(1); /* error msg already printed */
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 msisdn_digits = rc;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 msisdn_set = 1;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 static void
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 parse_cmdline(argc, argv)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 char **argv;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 extern int optind;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 extern char *optarg;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 int c;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 while ((c = getopt(argc, argv, "a:m:n:r:")) != EOF) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 switch (c) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 case 'a':
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 if (optarg[0] < '0' || optarg[0] > '9' || optarg[1]) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 fprintf(stderr, "error: invalid -a argument\n");
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 exit(1);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 access_class = optarg[0] - '0';
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 continue;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 case 'm':
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 set_msisdn(optarg);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 continue;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 case 'n':
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 num_cards = atoi(optarg);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 continue;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 case 'r':
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 random_file = optarg;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 continue;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 case '?':
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 default:
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 usage: fprintf(stderr,
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 "usage: %s [options] start-iccid start-imsi\n",
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 argv[0]);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 exit(1);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 if (argc - optind != 2)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 goto usage;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 set_iccid(argv[optind]);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 set_imsi(argv[optind+1]);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 static void
93
6041c601304d fcsim1-mkprov: revert OTA key addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
97 get_random_ki(strbuf)
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 char *strbuf;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 {
36
38c14fa89937 fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents: 35
diff changeset
100 u_char bin[16];
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 char *dp;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 unsigned n;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 int rc;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
36
38c14fa89937 fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents: 35
diff changeset
105 rc = read(random_fd, bin, 16);
38c14fa89937 fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents: 35
diff changeset
106 if (rc != 16) {
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 fprintf(stderr, "error reading from %s\n", random_file);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 exit(1);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 dp = strbuf;
36
38c14fa89937 fcsim1-mkprov: fix wrong length for Ki
Mychaela Falconia <falcon@freecalypso.org>
parents: 35
diff changeset
111 for (n = 0; n < 16; n++) {
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 sprintf(dp, "%02X", bin[n]);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 dp += 2;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 *dp = '\0';
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 static void
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 make_one_card()
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 unsigned acc_mask;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 char iccid_str[20], imsi_str[16], ki_str[33];
93
6041c601304d fcsim1-mkprov: revert OTA key addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
123 char msisdn_str[21];
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 nibbles_to_ascii(iccid_bin, 19, iccid_str);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 nibbles_to_ascii(imsi_bin, 15, imsi_str);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 acc_mask = 1 << access_class;
93
6041c601304d fcsim1-mkprov: revert OTA key addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
128 get_random_ki(ki_str);
6041c601304d fcsim1-mkprov: revert OTA key addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
129 printf("ICCID=%s IMSI=%s ACC=%04X Ki=%s", iccid_str, imsi_str,
6041c601304d fcsim1-mkprov: revert OTA key addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
130 acc_mask, ki_str);
35
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 if (msisdn_set) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 fputs(" MSISDN=", stdout);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 if (msisdn_plus)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 putchar('+');
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 nibbles_to_ascii(msisdn_bin, msisdn_digits, msisdn_str);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 fputs(msisdn_str, stdout);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 putchar('\n');
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 main(argc, argv)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 char **argv;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 unsigned n;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 parse_cmdline(argc, argv);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 random_fd = open(random_file, O_RDONLY);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 if (random_fd < 0) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 perror(random_file);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 exit(1);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 for (n = 0; n < num_cards; n++) {
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 iccid_bin[18] = compute_iccid_luhn(iccid_bin);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 make_one_card();
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 decimal_string_increment(iccid_bin, 18);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 decimal_string_increment(imsi_bin, 15);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 if (msisdn_set)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 decimal_string_increment(msisdn_bin, msisdn_digits);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 access_class++;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 if (access_class >= 10)
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 access_class = 0;
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 }
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 exit(0);
26d2ef843a99 fcsim1-mkprov utility implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 }