]>
git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/x509/x509cset.c
2 * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
11 #include "internal/cryptlib.h"
12 #include "internal/refcount.h"
13 #include <openssl/asn1.h>
14 #include <openssl/objects.h>
15 #include <openssl/evp.h>
16 #include <openssl/x509.h>
17 #include "crypto/x509.h"
19 int X509_CRL_set_version(X509_CRL
*x
, long version
)
23 if (x
->crl
.version
== NULL
) {
24 if ((x
->crl
.version
= ASN1_INTEGER_new()) == NULL
)
27 return ASN1_INTEGER_set(x
->crl
.version
, version
);
30 int X509_CRL_set_issuer_name(X509_CRL
*x
, const X509_NAME
*name
)
34 return X509_NAME_set(&x
->crl
.issuer
, name
);
37 int X509_CRL_set1_lastUpdate(X509_CRL
*x
, const ASN1_TIME
*tm
)
41 return ossl_x509_set1_time(&x
->crl
.lastUpdate
, tm
);
44 int X509_CRL_set1_nextUpdate(X509_CRL
*x
, const ASN1_TIME
*tm
)
48 return ossl_x509_set1_time(&x
->crl
.nextUpdate
, tm
);
51 int X509_CRL_sort(X509_CRL
*c
)
56 * sort the data so it will be written in serial number order
58 sk_X509_REVOKED_sort(c
->crl
.revoked
);
59 for (i
= 0; i
< sk_X509_REVOKED_num(c
->crl
.revoked
); i
++) {
60 r
= sk_X509_REVOKED_value(c
->crl
.revoked
, i
);
63 c
->crl
.enc
.modified
= 1;
67 int X509_CRL_up_ref(X509_CRL
*crl
)
71 if (CRYPTO_UP_REF(&crl
->references
, &i
, crl
->lock
) <= 0)
74 REF_PRINT_COUNT("X509_CRL", crl
);
75 REF_ASSERT_ISNT(i
< 2);
76 return ((i
> 1) ? 1 : 0);
79 long X509_CRL_get_version(const X509_CRL
*crl
)
81 return ASN1_INTEGER_get(crl
->crl
.version
);
84 const ASN1_TIME
*X509_CRL_get0_lastUpdate(const X509_CRL
*crl
)
86 return crl
->crl
.lastUpdate
;
89 const ASN1_TIME
*X509_CRL_get0_nextUpdate(const X509_CRL
*crl
)
91 return crl
->crl
.nextUpdate
;
94 #ifndef OPENSSL_NO_DEPRECATED_1_1_0
95 ASN1_TIME
*X509_CRL_get_lastUpdate(X509_CRL
*crl
)
97 return crl
->crl
.lastUpdate
;
100 ASN1_TIME
*X509_CRL_get_nextUpdate(X509_CRL
*crl
)
102 return crl
->crl
.nextUpdate
;
106 X509_NAME
*X509_CRL_get_issuer(const X509_CRL
*crl
)
108 return crl
->crl
.issuer
;
111 const STACK_OF(X509_EXTENSION
) *X509_CRL_get0_extensions(const X509_CRL
*crl
)
113 return crl
->crl
.extensions
;
116 STACK_OF(X509_REVOKED
) *X509_CRL_get_REVOKED(X509_CRL
*crl
)
118 return crl
->crl
.revoked
;
121 void X509_CRL_get0_signature(const X509_CRL
*crl
, const ASN1_BIT_STRING
**psig
,
122 const X509_ALGOR
**palg
)
125 *psig
= &crl
->signature
;
127 *palg
= &crl
->sig_alg
;
130 int X509_CRL_get_signature_nid(const X509_CRL
*crl
)
132 return OBJ_obj2nid(crl
->sig_alg
.algorithm
);
135 const ASN1_TIME
*X509_REVOKED_get0_revocationDate(const X509_REVOKED
*x
)
137 return x
->revocationDate
;
140 int X509_REVOKED_set_revocationDate(X509_REVOKED
*x
, ASN1_TIME
*tm
)
146 in
= x
->revocationDate
;
148 in
= ASN1_STRING_dup(tm
);
150 ASN1_TIME_free(x
->revocationDate
);
151 x
->revocationDate
= in
;
157 const ASN1_INTEGER
*X509_REVOKED_get0_serialNumber(const X509_REVOKED
*x
)
159 return &x
->serialNumber
;
162 int X509_REVOKED_set_serialNumber(X509_REVOKED
*x
, ASN1_INTEGER
*serial
)
168 in
= &x
->serialNumber
;
170 return ASN1_STRING_copy(in
, serial
);
174 const STACK_OF(X509_EXTENSION
) *X509_REVOKED_get0_extensions(const X509_REVOKED
*r
)
176 return r
->extensions
;
179 int i2d_re_X509_CRL_tbs(X509_CRL
*crl
, unsigned char **pp
)
181 crl
->crl
.enc
.modified
= 1;
182 return i2d_X509_CRL_INFO(&crl
->crl
, pp
);