Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / btls / btls-x509-revoked.c
1 //
2 //  btls-x509-revoked.c
3 //  MonoBtls
4 //
5 //  Created by Martin Baulig on 3/23/16.
6 //  Copyright © 2016 Xamarin. All rights reserved.
7 //
8
9 #include <btls-x509-revoked.h>
10
11 struct MonoBtlsX509Revoked {
12         MonoBtlsX509Crl *owner;
13         X509_REVOKED *revoked;
14 };
15
16 MONO_API MonoBtlsX509Revoked *
17 mono_btls_x509_revoked_new (MonoBtlsX509Crl *owner, X509_REVOKED *revoked)
18 {
19         MonoBtlsX509Revoked *instance;
20
21         instance = OPENSSL_malloc (sizeof (MonoBtlsX509Revoked));
22         memset (instance, 0, sizeof (MonoBtlsX509Revoked));
23
24         instance->owner = mono_btls_x509_crl_ref (owner);
25         instance->revoked = revoked;
26         return instance;
27 }
28
29 MONO_API void
30 mono_btls_x509_revoked_free (MonoBtlsX509Revoked *revoked)
31 {
32         mono_btls_x509_crl_free (revoked->owner);
33         OPENSSL_free (revoked);
34 }
35
36 MONO_API int
37 mono_btls_x509_revoked_get_serial_number (MonoBtlsX509Revoked *revoked, char *buffer, int size)
38 {
39         ASN1_INTEGER *serial;
40
41         serial = revoked->revoked->serialNumber;
42         if (serial->length == 0 || serial->length+1 > size)
43                 return 0;
44
45         memcpy (buffer, serial->data, serial->length);
46         return serial->length;
47 }
48
49 MONO_API int64_t
50 mono_btls_x509_revoked_get_revocation_date (MonoBtlsX509Revoked *revoked)
51 {
52         ASN1_TIME *date;
53
54         date = revoked->revoked->revocationDate;
55         if (!date)
56                 return 0;
57
58         return mono_btls_util_asn1_time_to_ticks (date);
59 }
60
61 MONO_API int
62 mono_btls_x509_revoked_get_reason (MonoBtlsX509Revoked *revoked)
63 {
64         return revoked->revoked->reason;
65 }
66
67 MONO_API int
68 mono_btls_x509_revoked_get_sequence (MonoBtlsX509Revoked *revoked)
69 {
70         return revoked->revoked->sequence;
71 }
72