2016-12-13 12:46:53 +00:00
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
|
|
|
ossl_store - Store retrieval functions
|
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
|
|
|
=for comment generic
|
|
|
|
|
|
|
|
#include <openssl/store.h>
|
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
|
|
|
=head2 General
|
|
|
|
|
|
|
|
A STORE is a layer of functionality to retrieve a number of supported
|
|
|
|
objects from a repository of any kind, addressable as a file name or
|
|
|
|
as a URI.
|
|
|
|
|
|
|
|
The functionality supports the pattern "open a channel to the
|
|
|
|
repository", "loop and retrieve one object at a time", and "finish up
|
|
|
|
by closing the channel".
|
|
|
|
|
|
|
|
The retrieved objects are returned as a wrapper type B<OSSL_STORE_INFO>,
|
|
|
|
from which an OpenSSL type can be retrieved.
|
|
|
|
|
|
|
|
=head2 URI schemes and loaders
|
|
|
|
|
|
|
|
Support for a URI scheme is called a STORE "loader", and can be added
|
|
|
|
dynamically from the calling application or from a loadable engine.
|
|
|
|
|
2018-05-24 18:44:45 +00:00
|
|
|
Support for the 'file' scheme is built into C<libcrypto>.
|
|
|
|
See L<ossl_store-file(7)> for more information.
|
2016-12-13 12:46:53 +00:00
|
|
|
|
2018-06-05 13:58:43 +00:00
|
|
|
=head2 UI_METHOD and pass phrases
|
|
|
|
|
|
|
|
The B<OSS_STORE> API does nothing to enforce any specific format or
|
|
|
|
encoding on the pass phrase that the B<UI_METHOD> provides. However,
|
|
|
|
the pass phrase is expected to be UTF-8 encoded. The result of any
|
|
|
|
other encoding is undefined.
|
|
|
|
|
2016-12-13 12:46:53 +00:00
|
|
|
=head1 EXAMPLES
|
|
|
|
|
|
|
|
=head2 A generic call
|
|
|
|
|
|
|
|
OSSL_STORE_CTX *ctx = OSSL_STORE_open("file:/foo/bar/data.pem");
|
|
|
|
|
|
|
|
/*
|
|
|
|
* OSSL_STORE_eof() simulates file semantics for any repository to signal
|
|
|
|
* that no more data can be expected
|
2017-07-05 16:51:45 +00:00
|
|
|
*/
|
2016-12-13 12:46:53 +00:00
|
|
|
while (!OSSL_STORE_eof(ctx)) {
|
|
|
|
OSSL_STORE_INFO *info = OSSL_STORE_load(ctx);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Do whatever is necessary with the OSSL_STORE_INFO,
|
|
|
|
* here just one example
|
|
|
|
*/
|
|
|
|
switch (OSSL_STORE_INFO_get_type(info)) {
|
|
|
|
case OSSL_STORE_INFO_X509:
|
|
|
|
/* Print the X.509 certificate text */
|
|
|
|
X509_print_fp(stdout, OSSL_STORE_INFO_get0_CERT(info));
|
|
|
|
/* Print the X.509 certificate PEM output */
|
|
|
|
PEM_write_X509(stdout, OSSL_STORE_INFO_get0_CERT(info));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
OSSL_STORE_close(ctx);
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
2017-07-02 16:16:38 +00:00
|
|
|
|
2017-07-05 14:15:48 +00:00
|
|
|
L<OSSL_STORE_INFO(3)>, L<OSSL_STORE_LOADER(3)>,
|
2017-07-05 17:17:40 +00:00
|
|
|
L<OSSL_STORE_open(3)>, L<OSSL_STORE_expect(3)>,
|
|
|
|
L<OSSL_STORE_SEARCH(3)>
|
2016-12-13 12:46:53 +00:00
|
|
|
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
|
2017-07-05 17:17:40 +00:00
|
|
|
Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
|
2016-12-13 12:46:53 +00:00
|
|
|
|
|
|
|
Licensed under the OpenSSL license (the "License"). You may not use
|
|
|
|
this file except in compliance with the License. You can obtain a copy
|
|
|
|
in the file LICENSE in the source distribution or at
|
|
|
|
L<https://www.openssl.org/source/license.html>.
|
|
|
|
|
|
|
|
=cut
|