1 | /*
|
---|
2 | * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.
|
---|
3 | * Copyright Nokia 2007-2019
|
---|
4 | * Copyright Siemens AG 2015-2019
|
---|
5 | *
|
---|
6 | * Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
7 | * this file except in compliance with the License. You can obtain a copy
|
---|
8 | * in the file LICENSE in the source distribution or at
|
---|
9 | * https://www.openssl.org/source/license.html
|
---|
10 | */
|
---|
11 |
|
---|
12 | #include "cmp_testlib.h"
|
---|
13 | #include <openssl/rsa.h> /* needed in case config no-deprecated */
|
---|
14 |
|
---|
15 | OSSL_CMP_MSG *load_pkimsg(const char *file, OSSL_LIB_CTX *libctx)
|
---|
16 | {
|
---|
17 | OSSL_CMP_MSG *msg;
|
---|
18 |
|
---|
19 | (void)TEST_ptr((msg = OSSL_CMP_MSG_read(file, libctx, NULL)));
|
---|
20 | return msg;
|
---|
21 | }
|
---|
22 |
|
---|
23 | /*
|
---|
24 | * Checks whether the syntax of msg conforms to ASN.1
|
---|
25 | */
|
---|
26 | int valid_asn1_encoding(const OSSL_CMP_MSG *msg)
|
---|
27 | {
|
---|
28 | return msg != NULL ? i2d_OSSL_CMP_MSG(msg, NULL) > 0 : 0;
|
---|
29 | }
|
---|
30 |
|
---|
31 | /*
|
---|
32 | * Compares two stacks of certificates in the order of their elements.
|
---|
33 | * Returns 0 if sk1 and sk2 are equal and another value otherwise
|
---|
34 | */
|
---|
35 | int STACK_OF_X509_cmp(const STACK_OF(X509) *sk1, const STACK_OF(X509) *sk2)
|
---|
36 | {
|
---|
37 | int i, res;
|
---|
38 | X509 *a, *b;
|
---|
39 |
|
---|
40 | if (sk1 == sk2)
|
---|
41 | return 0;
|
---|
42 | if (sk1 == NULL)
|
---|
43 | return -1;
|
---|
44 | if (sk2 == NULL)
|
---|
45 | return 1;
|
---|
46 | if ((res = sk_X509_num(sk1) - sk_X509_num(sk2)))
|
---|
47 | return res;
|
---|
48 | for (i = 0; i < sk_X509_num(sk1); i++) {
|
---|
49 | a = sk_X509_value(sk1, i);
|
---|
50 | b = sk_X509_value(sk2, i);
|
---|
51 | if (a != b)
|
---|
52 | if ((res = X509_cmp(a, b)) != 0)
|
---|
53 | return res;
|
---|
54 | }
|
---|
55 | return 0;
|
---|
56 | }
|
---|
57 |
|
---|
58 | /*
|
---|
59 | * Up refs and push a cert onto sk.
|
---|
60 | * Returns the number of certificates on the stack on success
|
---|
61 | * Returns -1 or 0 on error
|
---|
62 | */
|
---|
63 | int STACK_OF_X509_push1(STACK_OF(X509) *sk, X509 *cert)
|
---|
64 | {
|
---|
65 | int res;
|
---|
66 |
|
---|
67 | if (sk == NULL || cert == NULL)
|
---|
68 | return -1;
|
---|
69 | if (!X509_up_ref(cert))
|
---|
70 | return -1;
|
---|
71 | res = sk_X509_push(sk, cert);
|
---|
72 | if (res <= 0)
|
---|
73 | X509_free(cert); /* down-ref */
|
---|
74 | return res;
|
---|
75 | }
|
---|
76 |
|
---|
77 | int print_to_bio_out(const char *func, const char *file, int line,
|
---|
78 | OSSL_CMP_severity level, const char *msg)
|
---|
79 | {
|
---|
80 | return OSSL_CMP_print_to_bio(bio_out, func, file, line, level, msg);
|
---|
81 | }
|
---|