1/*
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3 *
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
8 */
9
10#include <stdio.h>
11#include "internal/cryptlib.h"
12#include <openssl/crypto.h>
13#include <openssl/x509.h>
14
15int X509_STORE_set_default_paths(X509_STORE *ctx)
16{
17 X509_LOOKUP *lookup;
18
19 lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_file());
20 if (lookup == NULL)
21 return 0;
22 X509_LOOKUP_load_file(lookup, NULL, X509_FILETYPE_DEFAULT);
23
24 lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_hash_dir());
25 if (lookup == NULL)
26 return 0;
27 X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT);
28
29 lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_store());
30 if (lookup == NULL)
31 return 0;
32 X509_LOOKUP_add_store(lookup, NULL);
33
34 /* clear any errors */
35 ERR_clear_error();
36
37 return 1;
38}
39
40int X509_STORE_load_file(X509_STORE *ctx, const char *file)
41{
42 X509_LOOKUP *lookup;
43
44 if (file == NULL
45 || (lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_file())) == NULL
46 || X509_LOOKUP_load_file(lookup, file, X509_FILETYPE_PEM) == 0)
47 return 0;
48
49 return 1;
50}
51
52int X509_STORE_load_path(X509_STORE *ctx, const char *path)
53{
54 X509_LOOKUP *lookup;
55
56 if (path == NULL
57 || (lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_hash_dir())) == NULL
58 || X509_LOOKUP_add_dir(lookup, path, X509_FILETYPE_PEM) == 0)
59 return 0;
60
61 return 1;
62}
63
64int X509_STORE_load_store(X509_STORE *ctx, const char *uri)
65{
66 X509_LOOKUP *lookup;
67
68 if (uri == NULL
69 || (lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_store())) == NULL
70 || X509_LOOKUP_add_store(lookup, uri) == 0)
71 return 0;
72
73 return 1;
74}
75
76/* Deprecated */
77#ifndef OPENSSL_NO_DEPRECATED_3_0
78int X509_STORE_load_locations(X509_STORE *ctx, const char *file,
79 const char *path)
80{
81 if (file == NULL && path == NULL)
82 return 0;
83 if (file != NULL && !X509_STORE_load_file(ctx, file))
84 return 0;
85 if (path != NULL && !X509_STORE_load_path(ctx, path))
86 return 0;
87 return 1;
88}
89#endif
90