third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h
Go to the documentation of this file.
1 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
2  * project 1999.
3  */
4 /* ====================================================================
5  * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. All advertising materials mentioning features or use of this
20  * software must display the following acknowledgment:
21  * "This product includes software developed by the OpenSSL Project
22  * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
23  *
24  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
25  * endorse or promote products derived from this software without
26  * prior written permission. For written permission, please contact
27  * licensing@OpenSSL.org.
28  *
29  * 5. Products derived from this software may not be called "OpenSSL"
30  * nor may "OpenSSL" appear in their names without prior written
31  * permission of the OpenSSL Project.
32  *
33  * 6. Redistributions of any form whatsoever must retain the following
34  * acknowledgment:
35  * "This product includes software developed by the OpenSSL Project
36  * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
37  *
38  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
39  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
41  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
42  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49  * OF THE POSSIBILITY OF SUCH DAMAGE.
50  * ====================================================================
51  *
52  * This product includes cryptographic software written by Eric Young
53  * (eay@cryptsoft.com). This product includes software written by Tim
54  * Hudson (tjh@cryptsoft.com). */
55 
56 #ifndef OPENSSL_HEADER_PKCS8_INTERNAL_H
57 #define OPENSSL_HEADER_PKCS8_INTERNAL_H
58 
59 #include <openssl/base.h>
60 
61 #if defined(__cplusplus)
62 extern "C" {
63 #endif
64 
65 
70  STACK_OF(X509_ATTRIBUTE) *attributes;
71 };
72 
73 // pkcs8_pbe_decrypt decrypts |in| using the PBE scheme described by
74 // |algorithm|, which should be a serialized AlgorithmIdentifier structure. On
75 // success, it sets |*out| to a newly-allocated buffer containing the decrypted
76 // result and returns one. Otherwise, it returns zero.
77 int pkcs8_pbe_decrypt(uint8_t **out, size_t *out_len, CBS *algorithm,
78  const char *pass, size_t pass_len, const uint8_t *in,
79  size_t in_len);
80 
81 #define PKCS12_KEY_ID 1
82 #define PKCS12_IV_ID 2
83 #define PKCS12_MAC_ID 3
84 
85 // pkcs12_key_gen runs the PKCS#12 key derivation function as specified in
86 // RFC 7292, appendix B. On success, it writes the resulting |out_len| bytes of
87 // key material to |out| and returns one. Otherwise, it returns zero. |id|
88 // should be one of the |PKCS12_*_ID| values.
89 int pkcs12_key_gen(const char *pass, size_t pass_len, const uint8_t *salt,
90  size_t salt_len, uint8_t id, unsigned iterations,
91  size_t out_len, uint8_t *out, const EVP_MD *md);
92 
93 // pkcs12_pbe_encrypt_init configures |ctx| for encrypting with a PBES1 scheme
94 // defined in PKCS#12. It writes the corresponding AlgorithmIdentifier to |out|.
96  unsigned iterations, const char *pass,
97  size_t pass_len, const uint8_t *salt,
98  size_t salt_len);
99 
100 struct pbe_suite {
101  int pbe_nid;
104  const EVP_CIPHER *(*cipher_func)(void);
105  const EVP_MD *(*md_func)(void);
106  // decrypt_init initialize |ctx| for decrypting. The password is specified by
107  // |pass| and |pass_len|. |param| contains the serialized parameters field of
108  // the AlgorithmIdentifier.
109  //
110  // It returns one on success and zero on error.
112  const char *pass, size_t pass_len, CBS *param);
113 };
114 
115 #define PKCS5_SALT_LEN 8
116 
118  const char *pass, size_t pass_len, CBS *param);
119 
120 // PKCS5_pbe2_encrypt_init configures |ctx| for encrypting with PKCS #5 PBES2,
121 // as defined in RFC 2998, with the specified parameters. It writes the
122 // corresponding AlgorithmIdentifier to |out|.
124  const EVP_CIPHER *cipher, unsigned iterations,
125  const char *pass, size_t pass_len,
126  const uint8_t *salt, size_t salt_len);
127 
128 // pkcs12_iterations_acceptable returns one if |iterations| is a reasonable
129 // number of PBKDF2 iterations and zero otherwise.
130 int pkcs12_iterations_acceptable(uint64_t iterations);
131 
132 
133 #if defined(__cplusplus)
134 } // extern C
135 #endif
136 
137 #endif // OPENSSL_HEADER_PKCS8_INTERNAL_H
PKCS5_pbe2_encrypt_init
int PKCS5_pbe2_encrypt_init(CBB *out, EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, unsigned iterations, const char *pass, size_t pass_len, const uint8_t *salt, size_t salt_len)
Definition: p5_pbev2.c:164
gen_build_yaml.out
dictionary out
Definition: src/benchmark/gen_build_yaml.py:24
pkcs8_priv_key_info_st::pkeyalg
X509_ALGOR * pkeyalg
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:68
cbs_st
Definition: bytestring.h:39
ctx
Definition: benchmark-async.c:30
env_md_st
Definition: third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h:67
pbe_suite::pbe_nid
int pbe_nid
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:101
regress.suite
suite
Definition: regress/regress.py:22
PKCS5_pbe2_decrypt_init
int PKCS5_pbe2_decrypt_init(const struct pbe_suite *suite, EVP_CIPHER_CTX *ctx, const char *pass, size_t pass_len, CBS *param)
Definition: p5_pbev2.c:213
ctx
static struct test_ctx ctx
Definition: test-ipc-send-recv.c:65
pkcs12_pbe_encrypt_init
int pkcs12_pbe_encrypt_init(CBB *out, EVP_CIPHER_CTX *ctx, int alg, unsigned iterations, const char *pass, size_t pass_len, const uint8_t *salt, size_t salt_len)
Definition: pkcs8.c:333
pbe_suite::oid_len
uint8_t oid_len
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:103
pkcs8_priv_key_info_st::version
ASN1_INTEGER * version
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:67
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
evp_cipher_ctx_st
Definition: cipher.h:536
base.h
pkcs8_priv_key_info_st::pkey
ASN1_OCTET_STRING * pkey
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:69
in
const char * in
Definition: third_party/abseil-cpp/absl/strings/internal/str_format/parser_test.cc:391
evp_cipher_st
Definition: cipher.h:585
xds_interop_client.int
int
Definition: xds_interop_client.py:113
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
pkcs8_pbe_decrypt
int pkcs8_pbe_decrypt(uint8_t **out, size_t *out_len, CBS *algorithm, const char *pass, size_t pass_len, const uint8_t *in, size_t in_len)
Definition: pkcs8.c:360
pkcs12_key_gen
int pkcs12_key_gen(const char *pass, size_t pass_len, const uint8_t *salt, size_t salt_len, uint8_t id, unsigned iterations, size_t out_len, uint8_t *out, const EVP_MD *md)
Definition: pkcs8.c:109
x509_attributes_st
Definition: third_party/boringssl-with-bazel/src/crypto/x509/internal.h:104
pkcs8_priv_key_info_st::STACK_OF
STACK_OF(X509_ATTRIBUTE) *attributes
pbe_suite
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:100
X509_algor_st
Definition: x509.h:113
benchmark.md
md
Definition: benchmark.py:86
pbe_suite::decrypt_init
int(* decrypt_init)(const struct pbe_suite *suite, EVP_CIPHER_CTX *ctx, const char *pass, size_t pass_len, CBS *param)
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:111
pkcs12_iterations_acceptable
int pkcs12_iterations_acceptable(uint64_t iterations)
Definition: pkcs8_x509.c:78
pkcs8_priv_key_info_st
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:66
pbe_suite::oid
uint8_t oid[10]
Definition: third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h:102
asn1_string_st
Definition: asn1.h:543
cbb_st
Definition: bytestring.h:375


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:07