diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_gentm.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_gentm.c | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c index 86666e7a20..54016dc8e7 100644 --- a/src/lib/libcrypto/asn1/a_gentm.c +++ b/src/lib/libcrypto/asn1/a_gentm.c | |||
@@ -67,41 +67,41 @@ | |||
67 | #if 0 | 67 | #if 0 |
68 | 68 | ||
69 | int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp) | 69 | int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp) |
70 | { | 70 | { |
71 | return(i2d_ASN1_bytes((ASN1_STRING *)a,pp, | 71 | return(i2d_ASN1_bytes((ASN1_STRING *)a,pp, |
72 | V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL)); | 72 | V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL)); |
73 | } | 73 | } |
74 | 74 | ||
75 | 75 | ||
76 | ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, | 76 | ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a, |
77 | unsigned char **pp, long length) | 77 | unsigned char **pp, long length) |
78 | { | 78 | { |
79 | ASN1_GENERALIZEDTIME *ret=NULL; | 79 | ASN1_GENERALIZEDTIME *ret=NULL; |
80 | 80 | ||
81 | ret=(ASN1_GENERALIZEDTIME *)d2i_ASN1_bytes((ASN1_STRING **)a,pp,length, | 81 | ret=(ASN1_GENERALIZEDTIME *)d2i_ASN1_bytes((ASN1_STRING **)a,pp,length, |
82 | V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL); | 82 | V_ASN1_GENERALIZEDTIME,V_ASN1_UNIVERSAL); |
83 | if (ret == NULL) | 83 | if (ret == NULL) |
84 | { | 84 | { |
85 | ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ERR_R_NESTED_ASN1_ERROR); | 85 | ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ERR_R_NESTED_ASN1_ERROR); |
86 | return(NULL); | 86 | return(NULL); |
87 | } | 87 | } |
88 | if (!ASN1_GENERALIZEDTIME_check(ret)) | 88 | if (!ASN1_GENERALIZEDTIME_check(ret)) |
89 | { | 89 | { |
90 | ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ASN1_R_INVALID_TIME_FORMAT); | 90 | ASN1err(ASN1_F_D2I_ASN1_GENERALIZEDTIME,ASN1_R_INVALID_TIME_FORMAT); |
91 | goto err; | 91 | goto err; |
92 | } | 92 | } |
93 | 93 | ||
94 | return(ret); | 94 | return(ret); |
95 | err: | 95 | err: |
96 | if ((ret != NULL) && ((a == NULL) || (*a != ret))) | 96 | if ((ret != NULL) && ((a == NULL) || (*a != ret))) |
97 | M_ASN1_GENERALIZEDTIME_free(ret); | 97 | M_ASN1_GENERALIZEDTIME_free(ret); |
98 | return(NULL); | 98 | return(NULL); |
99 | } | 99 | } |
100 | 100 | ||
101 | #endif | 101 | #endif |
102 | 102 | ||
103 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) | 103 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) |
104 | { | 104 | { |
105 | static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; | 105 | static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; |
106 | static const int max[9]={99, 99,12,31,23,59,59,12,59}; | 106 | static const int max[9]={99, 99,12,31,23,59,59,12,59}; |
107 | char *a; | 107 | char *a; |
@@ -117,10 +117,10 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) | |||
117 | */ | 117 | */ |
118 | if (l < 13) goto err; | 118 | if (l < 13) goto err; |
119 | for (i=0; i<7; i++) | 119 | for (i=0; i<7; i++) |
120 | { | 120 | { |
121 | if ((i == 6) && ((a[o] == 'Z') || | 121 | if ((i == 6) && ((a[o] == 'Z') || |
122 | (a[o] == '+') || (a[o] == '-'))) | 122 | (a[o] == '+') || (a[o] == '-'))) |
123 | { i++; break; } | 123 | { i++; break; } |
124 | if ((a[o] < '0') || (a[o] > '9')) goto err; | 124 | if ((a[o] < '0') || (a[o] > '9')) goto err; |
125 | n= a[o]-'0'; | 125 | n= a[o]-'0'; |
126 | if (++o > l) goto err; | 126 | if (++o > l) goto err; |
@@ -130,28 +130,28 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) | |||
130 | if (++o > l) goto err; | 130 | if (++o > l) goto err; |
131 | 131 | ||
132 | if ((n < min[i]) || (n > max[i])) goto err; | 132 | if ((n < min[i]) || (n > max[i])) goto err; |
133 | } | 133 | } |
134 | /* Optional fractional seconds: decimal point followed by one | 134 | /* Optional fractional seconds: decimal point followed by one |
135 | * or more digits. | 135 | * or more digits. |
136 | */ | 136 | */ |
137 | if (a[o] == '.') | 137 | if (a[o] == '.') |
138 | { | 138 | { |
139 | if (++o > l) goto err; | 139 | if (++o > l) goto err; |
140 | i = o; | 140 | i = o; |
141 | while ((a[o] >= '0') && (a[o] <= '9') && (o <= l)) | 141 | while ((a[o] >= '0') && (a[o] <= '9') && (o <= l)) |
142 | o++; | 142 | o++; |
143 | /* Must have at least one digit after decimal point */ | 143 | /* Must have at least one digit after decimal point */ |
144 | if (i == o) goto err; | 144 | if (i == o) goto err; |
145 | } | 145 | } |
146 | 146 | ||
147 | if (a[o] == 'Z') | 147 | if (a[o] == 'Z') |
148 | o++; | 148 | o++; |
149 | else if ((a[o] == '+') || (a[o] == '-')) | 149 | else if ((a[o] == '+') || (a[o] == '-')) |
150 | { | 150 | { |
151 | o++; | 151 | o++; |
152 | if (o+4 > l) goto err; | 152 | if (o+4 > l) goto err; |
153 | for (i=7; i<9; i++) | 153 | for (i=7; i<9; i++) |
154 | { | 154 | { |
155 | if ((a[o] < '0') || (a[o] > '9')) goto err; | 155 | if ((a[o] < '0') || (a[o] > '9')) goto err; |
156 | n= a[o]-'0'; | 156 | n= a[o]-'0'; |
157 | o++; | 157 | o++; |
@@ -159,49 +159,49 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) | |||
159 | n=(n*10)+ a[o]-'0'; | 159 | n=(n*10)+ a[o]-'0'; |
160 | if ((n < min[i]) || (n > max[i])) goto err; | 160 | if ((n < min[i]) || (n > max[i])) goto err; |
161 | o++; | 161 | o++; |
162 | } | ||
163 | } | 162 | } |
163 | } | ||
164 | else | 164 | else |
165 | { | 165 | { |
166 | /* Missing time zone information. */ | 166 | /* Missing time zone information. */ |
167 | goto err; | 167 | goto err; |
168 | } | 168 | } |
169 | return(o == l); | 169 | return(o == l); |
170 | err: | 170 | err: |
171 | return(0); | 171 | return(0); |
172 | } | 172 | } |
173 | 173 | ||
174 | int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str) | 174 | int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str) |
175 | { | 175 | { |
176 | ASN1_GENERALIZEDTIME t; | 176 | ASN1_GENERALIZEDTIME t; |
177 | 177 | ||
178 | t.type=V_ASN1_GENERALIZEDTIME; | 178 | t.type=V_ASN1_GENERALIZEDTIME; |
179 | t.length=strlen(str); | 179 | t.length=strlen(str); |
180 | t.data=(unsigned char *)str; | 180 | t.data=(unsigned char *)str; |
181 | if (ASN1_GENERALIZEDTIME_check(&t)) | 181 | if (ASN1_GENERALIZEDTIME_check(&t)) |
182 | { | 182 | { |
183 | if (s != NULL) | 183 | if (s != NULL) |
184 | { | 184 | { |
185 | if (!ASN1_STRING_set((ASN1_STRING *)s, | 185 | if (!ASN1_STRING_set((ASN1_STRING *)s, |
186 | (unsigned char *)str,t.length)) | 186 | (unsigned char *)str,t.length)) |
187 | return 0; | 187 | return 0; |
188 | s->type=V_ASN1_GENERALIZEDTIME; | 188 | s->type=V_ASN1_GENERALIZEDTIME; |
189 | } | ||
190 | return(1); | ||
191 | } | 189 | } |
190 | return(1); | ||
191 | } | ||
192 | else | 192 | else |
193 | return(0); | 193 | return(0); |
194 | } | 194 | } |
195 | 195 | ||
196 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | 196 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, |
197 | time_t t) | 197 | time_t t) |
198 | { | 198 | { |
199 | return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0); | 199 | return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0); |
200 | } | 200 | } |
201 | 201 | ||
202 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, | 202 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, |
203 | time_t t, int offset_day, long offset_sec) | 203 | time_t t, int offset_day, long offset_sec) |
204 | { | 204 | { |
205 | char *p; | 205 | char *p; |
206 | struct tm *ts; | 206 | struct tm *ts; |
207 | struct tm data; | 207 | struct tm data; |
@@ -217,29 +217,29 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, | |||
217 | return(NULL); | 217 | return(NULL); |
218 | 218 | ||
219 | if (offset_day || offset_sec) | 219 | if (offset_day || offset_sec) |
220 | { | 220 | { |
221 | if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec)) | 221 | if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec)) |
222 | return NULL; | 222 | return NULL; |
223 | } | 223 | } |
224 | 224 | ||
225 | p=(char *)s->data; | 225 | p=(char *)s->data; |
226 | if ((p == NULL) || ((size_t)s->length < len)) | 226 | if ((p == NULL) || ((size_t)s->length < len)) |
227 | { | 227 | { |
228 | p=malloc(len); | 228 | p=malloc(len); |
229 | if (p == NULL) | 229 | if (p == NULL) |
230 | { | 230 | { |
231 | ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ, | 231 | ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ, |
232 | ERR_R_MALLOC_FAILURE); | 232 | ERR_R_MALLOC_FAILURE); |
233 | return(NULL); | 233 | return(NULL); |
234 | } | 234 | } |
235 | if (s->data != NULL) | 235 | if (s->data != NULL) |
236 | free(s->data); | 236 | free(s->data); |
237 | s->data=(unsigned char *)p; | 237 | s->data=(unsigned char *)p; |
238 | } | 238 | } |
239 | 239 | ||
240 | (void) snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, | 240 | (void) snprintf(p,len,"%04d%02d%02d%02d%02d%02dZ",ts->tm_year + 1900, |
241 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); | 241 | ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); |
242 | s->length=strlen(p); | 242 | s->length=strlen(p); |
243 | s->type=V_ASN1_GENERALIZEDTIME; | 243 | s->type=V_ASN1_GENERALIZEDTIME; |
244 | return(s); | 244 | return(s); |
245 | } | 245 | } |